aboutsummaryrefslogtreecommitdiff
path: root/embassy-stm32-wpan/src/lib.rs
diff options
context:
space:
mode:
authorxoviat <[email protected]>2023-06-13 17:12:34 -0500
committerxoviat <[email protected]>2023-06-13 17:12:34 -0500
commit6c13f381c45aefece76f39d5b14da6b60e02b7ee (patch)
treed4e2768835a8f4b9bfffc411ebc61ab88e6a0707 /embassy-stm32-wpan/src/lib.rs
parent38891c29ea708a86ec42c6106ad2fdb1466a0cde (diff)
stm32/wpan: get --release working
Diffstat (limited to 'embassy-stm32-wpan/src/lib.rs')
-rw-r--r--embassy-stm32-wpan/src/lib.rs78
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 @@
4pub mod fmt; 4pub mod fmt;
5 5
6use core::mem::MaybeUninit; 6use core::mem::MaybeUninit;
7use core::sync::atomic::{compiler_fence, Ordering};
7 8
8use cmd::CmdPacket; 9use cmd::CmdPacket;
9use embassy_futures::block_on; 10use 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();