diff options
| author | xoviat <[email protected]> | 2023-06-13 17:12:34 -0500 |
|---|---|---|
| committer | xoviat <[email protected]> | 2023-06-13 17:12:34 -0500 |
| commit | 6c13f381c45aefece76f39d5b14da6b60e02b7ee (patch) | |
| tree | d4e2768835a8f4b9bfffc411ebc61ab88e6a0707 /embassy-stm32-wpan/src/lib.rs | |
| parent | 38891c29ea708a86ec42c6106ad2fdb1466a0cde (diff) | |
stm32/wpan: get --release working
Diffstat (limited to 'embassy-stm32-wpan/src/lib.rs')
| -rw-r--r-- | embassy-stm32-wpan/src/lib.rs | 78 |
1 files changed, 61 insertions, 17 deletions
diff --git a/embassy-stm32-wpan/src/lib.rs b/embassy-stm32-wpan/src/lib.rs index c37b67dc4..000282f2b 100644 --- a/embassy-stm32-wpan/src/lib.rs +++ b/embassy-stm32-wpan/src/lib.rs | |||
| @@ -4,6 +4,7 @@ | |||
| 4 | pub mod fmt; | 4 | pub mod fmt; |
| 5 | 5 | ||
| 6 | use core::mem::MaybeUninit; | 6 | use core::mem::MaybeUninit; |
| 7 | use core::sync::atomic::{compiler_fence, Ordering}; | ||
| 7 | 8 | ||
| 8 | use cmd::CmdPacket; | 9 | use cmd::CmdPacket; |
| 9 | use embassy_futures::block_on; | 10 | use embassy_futures::block_on; |
| @@ -189,33 +190,76 @@ impl<'d> TlMbox<'d> { | |||
| 189 | into_ref!(ipcc); | 190 | into_ref!(ipcc); |
| 190 | 191 | ||
| 191 | unsafe { | 192 | unsafe { |
| 192 | TL_REF_TABLE = MaybeUninit::new(RefTable { | 193 | TL_REF_TABLE.as_mut_ptr().write_volatile(RefTable { |
| 193 | device_info_table: TL_DEVICE_INFO_TABLE.as_mut_ptr(), | 194 | device_info_table: TL_DEVICE_INFO_TABLE.as_ptr(), |
| 194 | ble_table: TL_BLE_TABLE.as_ptr(), | 195 | ble_table: TL_BLE_TABLE.as_ptr(), |
| 195 | thread_table: TL_THREAD_TABLE.as_ptr(), | 196 | thread_table: TL_THREAD_TABLE.as_ptr(), |
| 196 | sys_table: TL_SYS_TABLE.as_ptr(), | 197 | sys_table: TL_SYS_TABLE.as_ptr(), |
| 197 | mem_manager_table: TL_MEM_MANAGER_TABLE.as_ptr(), | 198 | mem_manager_table: TL_MEM_MANAGER_TABLE.as_ptr(), |
| 198 | traces_table: TL_TRACES_TABLE.as_ptr(), | 199 | traces_table: TL_TRACES_TABLE.as_ptr(), |
| 199 | mac_802_15_4_table: TL_MAC_802_15_4_TABLE.as_ptr(), | 200 | mac_802_15_4_table: TL_MAC_802_15_4_TABLE.as_ptr(), |
| 201 | // zigbee_table: TL_ZIGBEE_TABLE.as_ptr(), | ||
| 202 | // lld_tests_table: TL_LLD_TESTS_TABLE.as_ptr(), | ||
| 203 | // ble_lld_table: TL_BLE_LLD_TABLE.as_ptr(), | ||
| 200 | }); | 204 | }); |
| 201 | 205 | ||
| 202 | TL_SYS_TABLE = MaybeUninit::zeroed(); | 206 | TL_SYS_TABLE |
| 203 | TL_DEVICE_INFO_TABLE = MaybeUninit::zeroed(); | 207 | .as_mut_ptr() |
| 204 | TL_BLE_TABLE = MaybeUninit::zeroed(); | 208 | .write_volatile(MaybeUninit::zeroed().assume_init()); |
| 205 | TL_THREAD_TABLE = MaybeUninit::zeroed(); | 209 | TL_DEVICE_INFO_TABLE |
| 206 | TL_MEM_MANAGER_TABLE = MaybeUninit::zeroed(); | 210 | .as_mut_ptr() |
| 207 | TL_TRACES_TABLE = MaybeUninit::zeroed(); | 211 | .write_volatile(MaybeUninit::zeroed().assume_init()); |
| 208 | TL_MAC_802_15_4_TABLE = MaybeUninit::zeroed(); | 212 | TL_BLE_TABLE |
| 209 | 213 | .as_mut_ptr() | |
| 210 | EVT_POOL = MaybeUninit::zeroed(); | 214 | .write_volatile(MaybeUninit::zeroed().assume_init()); |
| 211 | SYS_SPARE_EVT_BUF = MaybeUninit::zeroed(); | 215 | TL_THREAD_TABLE |
| 212 | BLE_SPARE_EVT_BUF = MaybeUninit::zeroed(); | 216 | .as_mut_ptr() |
| 213 | 217 | .write_volatile(MaybeUninit::zeroed().assume_init()); | |
| 214 | CS_BUFFER = MaybeUninit::zeroed(); | 218 | TL_MEM_MANAGER_TABLE |
| 215 | BLE_CMD_BUFFER = MaybeUninit::zeroed(); | 219 | .as_mut_ptr() |
| 216 | HCI_ACL_DATA_BUFFER = MaybeUninit::zeroed(); | 220 | .write_volatile(MaybeUninit::zeroed().assume_init()); |
| 221 | |||
| 222 | TL_TRACES_TABLE | ||
| 223 | .as_mut_ptr() | ||
| 224 | .write_volatile(MaybeUninit::zeroed().assume_init()); | ||
| 225 | TL_MAC_802_15_4_TABLE | ||
| 226 | .as_mut_ptr() | ||
| 227 | .write_volatile(MaybeUninit::zeroed().assume_init()); | ||
| 228 | // TL_ZIGBEE_TABLE | ||
| 229 | // .as_mut_ptr() | ||
| 230 | // .write_volatile(MaybeUninit::zeroed().assume_init()); | ||
| 231 | // TL_LLD_TESTS_TABLE | ||
| 232 | // .as_mut_ptr() | ||
| 233 | // .write_volatile(MaybeUninit::zeroed().assume_init()); | ||
| 234 | // TL_BLE_LLD_TABLE | ||
| 235 | // .as_mut_ptr() | ||
| 236 | // .write_volatile(MaybeUninit::zeroed().assume_init()); | ||
| 237 | |||
| 238 | EVT_POOL | ||
| 239 | .as_mut_ptr() | ||
| 240 | .write_volatile(MaybeUninit::zeroed().assume_init()); | ||
| 241 | SYS_SPARE_EVT_BUF | ||
| 242 | .as_mut_ptr() | ||
| 243 | .write_volatile(MaybeUninit::zeroed().assume_init()); | ||
| 244 | BLE_SPARE_EVT_BUF | ||
| 245 | .as_mut_ptr() | ||
| 246 | .write_volatile(MaybeUninit::zeroed().assume_init()); | ||
| 247 | |||
| 248 | { | ||
| 249 | BLE_CMD_BUFFER | ||
| 250 | .as_mut_ptr() | ||
| 251 | .write_volatile(MaybeUninit::zeroed().assume_init()); | ||
| 252 | HCI_ACL_DATA_BUFFER | ||
| 253 | .as_mut_ptr() | ||
| 254 | .write_volatile(MaybeUninit::zeroed().assume_init()); | ||
| 255 | CS_BUFFER | ||
| 256 | .as_mut_ptr() | ||
| 257 | .write_volatile(MaybeUninit::zeroed().assume_init()); | ||
| 258 | } | ||
| 217 | } | 259 | } |
| 218 | 260 | ||
| 261 | compiler_fence(Ordering::SeqCst); | ||
| 262 | |||
| 219 | Ipcc::enable(config); | 263 | Ipcc::enable(config); |
| 220 | 264 | ||
| 221 | sys::Sys::enable(); | 265 | sys::Sys::enable(); |
