diff options
| author | xoviat <[email protected]> | 2023-06-23 18:08:42 -0500 |
|---|---|---|
| committer | xoviat <[email protected]> | 2023-06-23 18:08:42 -0500 |
| commit | 91fdd76053c747c569b0eefe0715522465fe0194 (patch) | |
| tree | 59e1a8b7678e35fb2eee0864e30615f504e26577 | |
| parent | f23b34951a20f569997bbe028048f3943d7e4c56 (diff) | |
stm32/wpan: use align to align data
| -rw-r--r-- | embassy-stm32-wpan/Cargo.toml | 1 | ||||
| -rw-r--r-- | embassy-stm32-wpan/src/tables.rs | 34 |
2 files changed, 14 insertions, 21 deletions
diff --git a/embassy-stm32-wpan/Cargo.toml b/embassy-stm32-wpan/Cargo.toml index 6d78ca577..4b830cab3 100644 --- a/embassy-stm32-wpan/Cargo.toml +++ b/embassy-stm32-wpan/Cargo.toml | |||
| @@ -21,6 +21,7 @@ embassy-embedded-hal = { version = "0.1.0", path = "../embassy-embedded-hal" } | |||
| 21 | defmt = { version = "0.3", optional = true } | 21 | defmt = { version = "0.3", optional = true } |
| 22 | cortex-m = "0.7.6" | 22 | cortex-m = "0.7.6" |
| 23 | heapless = "0.7.16" | 23 | heapless = "0.7.16" |
| 24 | aligned = "0.4.1" | ||
| 24 | 25 | ||
| 25 | bit_field = "0.10.2" | 26 | bit_field = "0.10.2" |
| 26 | stm32-device-signature = { version = "0.3.3", features = ["stm32wb5x"] } | 27 | stm32-device-signature = { version = "0.3.3", features = ["stm32wb5x"] } |
diff --git a/embassy-stm32-wpan/src/tables.rs b/embassy-stm32-wpan/src/tables.rs index 3f26282c6..1b5dcdf2e 100644 --- a/embassy-stm32-wpan/src/tables.rs +++ b/embassy-stm32-wpan/src/tables.rs | |||
| @@ -1,5 +1,6 @@ | |||
| 1 | use core::mem::MaybeUninit; | 1 | use core::mem::MaybeUninit; |
| 2 | 2 | ||
| 3 | use aligned::{Aligned, A4}; | ||
| 3 | use bit_field::BitField; | 4 | use bit_field::BitField; |
| 4 | 5 | ||
| 5 | use crate::cmd::{AclDataPacket, CmdPacket}; | 6 | use crate::cmd::{AclDataPacket, CmdPacket}; |
| @@ -164,9 +165,6 @@ pub struct Mac802_15_4Table { | |||
| 164 | pub evt_queue: *const u8, | 165 | pub evt_queue: *const u8, |
| 165 | } | 166 | } |
| 166 | 167 | ||
| 167 | #[repr(C, align(4))] | ||
| 168 | pub struct AlignedData<const L: usize>([u8; L]); | ||
| 169 | |||
| 170 | /// Reference table. Contains pointers to all other tables. | 168 | /// Reference table. Contains pointers to all other tables. |
| 171 | #[derive(Debug, Copy, Clone)] | 169 | #[derive(Debug, Copy, Clone)] |
| 172 | #[repr(C)] | 170 | #[repr(C)] |
| @@ -222,10 +220,9 @@ pub static mut FREE_BUF_QUEUE: MaybeUninit<LinkedListNode> = MaybeUninit::uninit | |||
| 222 | #[link_section = "MB_MEM1"] | 220 | #[link_section = "MB_MEM1"] |
| 223 | pub static mut TRACES_EVT_QUEUE: MaybeUninit<LinkedListNode> = MaybeUninit::uninit(); | 221 | pub static mut TRACES_EVT_QUEUE: MaybeUninit<LinkedListNode> = MaybeUninit::uninit(); |
| 224 | 222 | ||
| 225 | const CS_BUFFER_SIZE: usize = TL_PACKET_HEADER_SIZE + TL_EVT_HEADER_SIZE + TL_CS_EVT_SIZE; | ||
| 226 | |||
| 227 | #[link_section = "MB_MEM2"] | 223 | #[link_section = "MB_MEM2"] |
| 228 | pub static mut CS_BUFFER: MaybeUninit<AlignedData<CS_BUFFER_SIZE>> = MaybeUninit::uninit(); | 224 | pub static mut CS_BUFFER: MaybeUninit<Aligned<A4, [u8; TL_PACKET_HEADER_SIZE + TL_EVT_HEADER_SIZE + TL_CS_EVT_SIZE]>> = |
| 225 | MaybeUninit::uninit(); | ||
| 229 | 226 | ||
| 230 | #[link_section = "MB_MEM2"] | 227 | #[link_section = "MB_MEM2"] |
| 231 | pub static mut EVT_QUEUE: MaybeUninit<LinkedListNode> = MaybeUninit::uninit(); | 228 | pub static mut EVT_QUEUE: MaybeUninit<LinkedListNode> = MaybeUninit::uninit(); |
| @@ -239,34 +236,29 @@ pub static mut SYSTEM_EVT_QUEUE: MaybeUninit<LinkedListNode> = MaybeUninit::unin | |||
| 239 | pub static mut MAC_802_15_4_CMD_BUFFER: MaybeUninit<CmdPacket> = MaybeUninit::uninit(); | 236 | pub static mut MAC_802_15_4_CMD_BUFFER: MaybeUninit<CmdPacket> = MaybeUninit::uninit(); |
| 240 | 237 | ||
| 241 | #[cfg(feature = "mac")] | 238 | #[cfg(feature = "mac")] |
| 242 | const MAC_802_15_4_NOTIF_RSP_EVT_BUFFER_SIZE: usize = TL_PACKET_HEADER_SIZE + TL_EVT_HEADER_SIZE + 255; | ||
| 243 | |||
| 244 | #[cfg(feature = "mac")] | ||
| 245 | #[link_section = "MB_MEM2"] | 239 | #[link_section = "MB_MEM2"] |
| 246 | pub static mut MAC_802_15_4_NOTIF_RSP_EVT_BUFFER: MaybeUninit<AlignedData<MAC_802_15_4_NOTIF_RSP_EVT_BUFFER_SIZE>> = | 240 | pub static mut MAC_802_15_4_NOTIF_RSP_EVT_BUFFER: MaybeUninit< |
| 247 | MaybeUninit::uninit(); | 241 | Aligned<A4, [u8; TL_PACKET_HEADER_SIZE + TL_EVT_HEADER_SIZE + 255]>, |
| 242 | > = MaybeUninit::uninit(); | ||
| 248 | 243 | ||
| 249 | #[link_section = "MB_MEM2"] | 244 | #[link_section = "MB_MEM2"] |
| 250 | pub static mut EVT_POOL: MaybeUninit<[u8; POOL_SIZE]> = MaybeUninit::uninit(); | 245 | pub static mut EVT_POOL: MaybeUninit<Aligned<A4, [u8; POOL_SIZE]>> = MaybeUninit::uninit(); |
| 251 | 246 | ||
| 252 | #[link_section = "MB_MEM2"] | 247 | #[link_section = "MB_MEM2"] |
| 253 | pub static mut SYS_CMD_BUF: MaybeUninit<CmdPacket> = MaybeUninit::uninit(); | 248 | pub static mut SYS_CMD_BUF: MaybeUninit<CmdPacket> = MaybeUninit::uninit(); |
| 254 | 249 | ||
| 255 | const SYS_SPARE_EVT_BUF_SIZE: usize = TL_PACKET_HEADER_SIZE + TL_EVT_HEADER_SIZE + 255; | ||
| 256 | |||
| 257 | #[link_section = "MB_MEM2"] | 250 | #[link_section = "MB_MEM2"] |
| 258 | pub static mut SYS_SPARE_EVT_BUF: MaybeUninit<AlignedData<SYS_SPARE_EVT_BUF_SIZE>> = MaybeUninit::uninit(); | 251 | pub static mut SYS_SPARE_EVT_BUF: MaybeUninit<Aligned<A4, [u8; TL_PACKET_HEADER_SIZE + TL_EVT_HEADER_SIZE + 255]>> = |
| 252 | MaybeUninit::uninit(); | ||
| 259 | 253 | ||
| 260 | #[link_section = "MB_MEM1"] | 254 | #[link_section = "MB_MEM1"] |
| 261 | pub static mut BLE_CMD_BUFFER: MaybeUninit<CmdPacket> = MaybeUninit::uninit(); | 255 | pub static mut BLE_CMD_BUFFER: MaybeUninit<CmdPacket> = MaybeUninit::uninit(); |
| 262 | 256 | ||
| 263 | const BLE_SPARE_EVT_BUF_SIZE: usize = TL_PACKET_HEADER_SIZE + TL_EVT_HEADER_SIZE + 255; | ||
| 264 | |||
| 265 | #[link_section = "MB_MEM2"] | 257 | #[link_section = "MB_MEM2"] |
| 266 | pub static mut BLE_SPARE_EVT_BUF: MaybeUninit<AlignedData<BLE_SPARE_EVT_BUF_SIZE>> = MaybeUninit::uninit(); | 258 | pub static mut BLE_SPARE_EVT_BUF: MaybeUninit<Aligned<A4, [u8; TL_PACKET_HEADER_SIZE + TL_EVT_HEADER_SIZE + 255]>> = |
| 267 | 259 | MaybeUninit::uninit(); | |
| 268 | const HCI_ACL_DATA_BUFFER_SIZE: usize = TL_PACKET_HEADER_SIZE + 5 + 251; | ||
| 269 | 260 | ||
| 270 | #[link_section = "MB_MEM2"] | 261 | #[link_section = "MB_MEM2"] |
| 271 | // fuck these "magic" numbers from ST ---v---v | 262 | // fuck these "magic" numbers from ST ---v---v |
| 272 | pub static mut HCI_ACL_DATA_BUFFER: MaybeUninit<[u8; HCI_ACL_DATA_BUFFER_SIZE]> = MaybeUninit::uninit(); | 263 | pub static mut HCI_ACL_DATA_BUFFER: MaybeUninit<Aligned<A4, [u8; TL_PACKET_HEADER_SIZE + 5 + 251]>> = |
| 264 | MaybeUninit::uninit(); | ||
