embassy-rs / embassy

Modern embedded framework, using Rust and async.
https://embassy.dev
Apache License 2.0
4.83k stars 654 forks source link

STM32WB5x wpan examples don't seem to work #2684

Open DeppLearning opened 3 months ago

DeppLearning commented 3 months ago

I'm trying to run the stm32wb mac_ffd example on my NUCLEO-WB55RG board but get stuck here. I followed the instructions in the comments and was able to "Start Wireless Stack" eventually in Stm32 Cube Programmer. I am missing the teleprobe tool, so I used the commented line above, maybe that is an issue?

This is the log output

0.000000 TRACE BDCR ok: 00008113
└─ embassy_stm32::rcc::bd::{impl#3}::init @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
0.000000 DEBUG rcc: Clocks { hclk1: Some(Hertz(64000000)), hclk3: Some(Hertz(64000000)), hse: Some(Hertz(32000000)), hsi: None, hsi48: Some(Hertz(48000000)), lse: None, lsi: None, msi: None, pclk1: Some(Hertz(64000000)), pclk1_tim: Some(Hertz(64000000)), pclk2: Some(Hertz(64000000)), pclk2_tim: Some(Hertz(64000000)), pll1_p: Some(Hertz(64000000)), pll1_q: Some(Hertz(48000000)), pllsai1_p: None, pllsai1_q: None, pllsai1_r: None, rtc: Some(Hertz(32768)), sai1_extclk: None, sys: Some(Hertz(64000000)) }
└─ embassy_stm32::rcc::set_freqs @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:130
0.000000 INFO  Hello World!
└─ mac_ffd::____embassy_main_task::{async_fn#0} @ src/bin/mac_ffd.rs:55
0.000122 TRACE ipcc: ch 1: wait for rx occupied
└─ embassy_stm32::ipcc::{impl#2}::receive::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
0.003387 TRACE ipcc: ch 1: read data
└─ embassy_stm32::ipcc::{impl#2}::receive::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
0.003417 INFO  sys event: [0, 146, 0]
└─ mac_ffd::____embassy_main_task::{async_fn#0} @ src/bin/mac_ffd.rs:63
0.003479 TRACE ipcc: ch 1: send data
└─ embassy_stm32::ipcc::{impl#2}::send::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
0.003540 TRACE ipcc: ch 1: wait for tx free
└─ embassy_stm32::ipcc::{impl#2}::flush::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
0.003601 TRACE ipcc: ch 3: send data
└─ embassy_stm32::ipcc::{impl#2}::send::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117

This is my memory.x file:

/* Change this as required for your MCU */

MEMORY
{
  /* NOTE 1 K = 1 KiBi = 1024 bytes */
  FLASH : ORIGIN = 0x08000000, LENGTH = 256K 
  RAM : ORIGIN = 0x20000000, LENGTH = 64K
}

I guess instead of LENGTH = 256K, I should use 226K but changing that didn't get me any other results.

I get similar results from running the other examples. Of the radio ones, only the tl_mbox example finishes successfully. I also tried following the flashing procedure described in the release-notes file mentioned in the comments (which is slightly different) of the embassy examples, but got the same results. Any ideas what I'm doing wrong? I am new to IEEE 802.15.4 and STM32 so I might have missed sth very obvious.

Edit: I tried an older commit (8b36a32ed5d834b23e970d5b723dd7df1f1c94a2), from around the time these examples where last updated and that seems to do the trick

DeppLearning commented 3 months ago

I tried again, the above result was probably due to some problem with the binary blobs which got fixed after trying the main branch and before trying 8b36a32ed5d834b23e970d5b723dd7df1f1c94a2. I can reproduce this, i.e. by "Delete Firmaware" in CubeProgrammer.

However, now after I got the flashing of binary blobs fixed, when I start the mac_ffd example on one board and the mac_rfd example on another, I'll get a panic on the board running mac_ffd as soon as it receives the message from the board running mac_rfd:

0.000000 TRACE BDCR ok: 00008113
└─ embassy_stm32::rcc::bd::{impl#3}::init @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
0.000000 DEBUG rcc: Clocks { hclk1: Some(Hertz(64000000)), hclk3: Some(Hertz(64000000)), hse: Some(Hertz(32000000)), hsi: None, hsi48: Some(Hertz(48000000)), lse: None, lsi: None, msi: None, pclk1: Some(Hertz(64000000)), pclk1_tim: Some(Hertz(64000000)), pclk2: Some(Hertz(64000000)), pclk2_tim: Some(Hertz(64000000)), pll1_p: Some(Hertz(64000000)), pll1_q: Some(Hertz(48000000)), pllsai1_p: None, pllsai1_q: None, pllsai1_r: None, rtc: Some(Hertz(32768)), sai1_extclk: None, sys: Some(Hertz(64000000)) }
└─ embassy_stm32::rcc::set_freqs @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:130
0.000000 INFO  Hello World!
└─ mac_ffd::____embassy_main_task::{async_fn#0} @ src/bin/mac_ffd.rs:67
0.000122 TRACE ipcc: ch 1: wait for rx occupied
└─ embassy_stm32::ipcc::{impl#2}::receive::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
0.003387 TRACE ipcc: ch 1: read data
└─ embassy_stm32::ipcc::{impl#2}::receive::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
0.003417 INFO  sys event: [0, 146, 0]
└─ mac_ffd::____embassy_main_task::{async_fn#0} @ src/bin/mac_ffd.rs:75
0.003479 TRACE ipcc: ch 1: send data
└─ embassy_stm32::ipcc::{impl#2}::send::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
0.003509 TRACE ipcc: ch 1: wait for tx free
└─ embassy_stm32::ipcc::{impl#2}::flush::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
0.003601 TRACE ipcc: ch 3: send data
└─ embassy_stm32::ipcc::{impl#2}::send::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
0.021972 INFO  initialized mac: Ok(ShciSuccess)
└─ mac_ffd::____embassy_main_task::{async_fn#0} @ src/bin/mac_ffd.rs:80
0.022033 INFO  resetting
└─ mac_ffd::____embassy_main_task::{async_fn#0} @ src/bin/mac_ffd.rs:82
0.022064 TRACE ipcc: ch 2: send data
└─ embassy_stm32::ipcc::{impl#2}::send::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
0.022094 TRACE ipcc: ch 2: wait for tx free
└─ embassy_stm32::ipcc::{impl#2}::flush::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
0.031341 TRACE ipcc: ch 2: wait for rx occupied
└─ embassy_stm32::ipcc::{impl#2}::receive::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
0.031402 TRACE ipcc: ch 2: read data
└─ embassy_stm32::ipcc::{impl#2}::receive::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
0.031433 INFO  MlmeResetCnf(ResetConfirm { status: Success, a_stuffing: [0, 0, 0] })
└─ mac_ffd::____embassy_main_task::{async_fn#0} @ src/bin/mac_ffd.rs:90
0.031494 TRACE mac drop event
└─ embassy_stm32_wpan::sub::mac::{impl#1}::drop_event_packet @ /home/me/git/embassy/embassy-stm32-wpan/src/fmt.rs:117
0.031524 TRACE ipcc: ch 2: read data
└─ embassy_stm32::ipcc::{impl#2}::receive::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
0.031555 TRACE ipcc: ch 2: clear rx
└─ embassy_stm32::ipcc::{impl#2}::receive::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
0.031585 TRACE ipcc: ch 2: wait for rx occupied
└─ embassy_stm32::ipcc::{impl#2}::receive::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
0.031646 INFO  setting extended address
└─ mac_ffd::____embassy_main_task::{async_fn#0} @ src/bin/mac_ffd.rs:92
0.031677 TRACE ipcc: ch 2: send data
└─ embassy_stm32::ipcc::{impl#2}::send::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
0.031707 TRACE ipcc: ch 2: wait for tx free
└─ embassy_stm32::ipcc::{impl#2}::flush::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
0.032806 TRACE ipcc: ch 2: read data
└─ embassy_stm32::ipcc::{impl#2}::receive::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
0.032836 INFO  MlmeSetCnf(SetConfirm { status: Success, pin_attribute: ExtendedAddress, a_stuffing: [0, 0] })
└─ mac_ffd::____embassy_main_task::{async_fn#0} @ src/bin/mac_ffd.rs:101
0.032897 TRACE mac drop event
└─ embassy_stm32_wpan::sub::mac::{impl#1}::drop_event_packet @ /home/me/git/embassy/embassy-stm32-wpan/src/fmt.rs:117
0.032958 TRACE ipcc: ch 2: read data
└─ embassy_stm32::ipcc::{impl#2}::receive::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
0.032989 TRACE ipcc: ch 2: clear rx
└─ embassy_stm32::ipcc::{impl#2}::receive::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
0.033020 TRACE ipcc: ch 2: wait for rx occupied
└─ embassy_stm32::ipcc::{impl#2}::receive::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
0.033050 INFO  setting short address
└─ mac_ffd::____embassy_main_task::{async_fn#0} @ src/bin/mac_ffd.rs:103
0.033111 TRACE ipcc: ch 2: send data
└─ embassy_stm32::ipcc::{impl#2}::send::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
0.033142 TRACE ipcc: ch 2: wait for tx free
└─ embassy_stm32::ipcc::{impl#2}::flush::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
0.034545 TRACE ipcc: ch 2: read data
└─ embassy_stm32::ipcc::{impl#2}::receive::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
0.034576 INFO  MlmeSetCnf(SetConfirm { status: Success, pin_attribute: ShortAddress, a_stuffing: [0, 0] })
└─ mac_ffd::____embassy_main_task::{async_fn#0} @ src/bin/mac_ffd.rs:112
0.034637 TRACE mac drop event
└─ embassy_stm32_wpan::sub::mac::{impl#1}::drop_event_packet @ /home/me/git/embassy/embassy-stm32-wpan/src/fmt.rs:117
0.034698 TRACE ipcc: ch 2: read data
└─ embassy_stm32::ipcc::{impl#2}::receive::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
0.034729 TRACE ipcc: ch 2: clear rx
└─ embassy_stm32::ipcc::{impl#2}::receive::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
0.034759 TRACE ipcc: ch 2: wait for rx occupied
└─ embassy_stm32::ipcc::{impl#2}::receive::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
0.034790 INFO  setting association permit
└─ mac_ffd::____embassy_main_task::{async_fn#0} @ src/bin/mac_ffd.rs:114
0.034851 TRACE ipcc: ch 2: send data
└─ embassy_stm32::ipcc::{impl#2}::send::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
0.034881 TRACE ipcc: ch 2: wait for tx free
└─ embassy_stm32::ipcc::{impl#2}::flush::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
0.035003 TRACE ipcc: ch 2: read data
└─ embassy_stm32::ipcc::{impl#2}::receive::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
0.035034 INFO  MlmeSetCnf(SetConfirm { status: Success, pin_attribute: AssociationPermit, a_stuffing: [0, 0] })
└─ mac_ffd::____embassy_main_task::{async_fn#0} @ src/bin/mac_ffd.rs:123
0.035125 TRACE mac drop event
└─ embassy_stm32_wpan::sub::mac::{impl#1}::drop_event_packet @ /home/me/git/embassy/embassy-stm32-wpan/src/fmt.rs:117
0.035156 TRACE ipcc: ch 2: read data
└─ embassy_stm32::ipcc::{impl#2}::receive::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
0.035186 TRACE ipcc: ch 2: clear rx
└─ embassy_stm32::ipcc::{impl#2}::receive::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
0.035217 TRACE ipcc: ch 2: wait for rx occupied
└─ embassy_stm32::ipcc::{impl#2}::receive::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
0.035247 INFO  setting TX power
└─ mac_ffd::____embassy_main_task::{async_fn#0} @ src/bin/mac_ffd.rs:125
0.035308 TRACE ipcc: ch 2: send data
└─ embassy_stm32::ipcc::{impl#2}::send::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
0.035339 TRACE ipcc: ch 2: wait for tx free
└─ embassy_stm32::ipcc::{impl#2}::flush::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
0.036285 TRACE ipcc: ch 2: read data
└─ embassy_stm32::ipcc::{impl#2}::receive::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
0.036315 INFO  MlmeSetCnf(SetConfirm { status: Success, pin_attribute: TransmitPower, a_stuffing: [0, 0] })
└─ mac_ffd::____embassy_main_task::{async_fn#0} @ src/bin/mac_ffd.rs:134
0.036376 TRACE mac drop event
└─ embassy_stm32_wpan::sub::mac::{impl#1}::drop_event_packet @ /home/me/git/embassy/embassy-stm32-wpan/src/fmt.rs:117
0.036437 TRACE ipcc: ch 2: read data
└─ embassy_stm32::ipcc::{impl#2}::receive::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
0.036468 TRACE ipcc: ch 2: clear rx
└─ embassy_stm32::ipcc::{impl#2}::receive::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
0.036499 TRACE ipcc: ch 2: wait for rx occupied
└─ embassy_stm32::ipcc::{impl#2}::receive::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
0.036529 INFO  starting FFD device
└─ mac_ffd::____embassy_main_task::{async_fn#0} @ src/bin/mac_ffd.rs:136
0.036590 TRACE ipcc: ch 2: send data
└─ embassy_stm32::ipcc::{impl#2}::send::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
0.036621 TRACE ipcc: ch 2: wait for tx free
└─ embassy_stm32::ipcc::{impl#2}::flush::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
0.036743 TRACE ipcc: ch 2: wait for rx occupied
└─ embassy_stm32::ipcc::{impl#2}::receive::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
0.049072 TRACE ipcc: ch 2: read data
└─ embassy_stm32::ipcc::{impl#2}::receive::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
0.049102 INFO  MlmeStartCnf(StartConfirm { status: Success, a_stuffing: [170, 16, 0] })
└─ mac_ffd::____embassy_main_task::{async_fn#0} @ src/bin/mac_ffd.rs:149
0.049194 TRACE mac drop event
└─ embassy_stm32_wpan::sub::mac::{impl#1}::drop_event_packet @ /home/me/git/embassy/embassy-stm32-wpan/src/fmt.rs:117
0.049224 TRACE ipcc: ch 2: read data
└─ embassy_stm32::ipcc::{impl#2}::receive::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
0.049255 TRACE ipcc: ch 2: clear rx
└─ embassy_stm32::ipcc::{impl#2}::receive::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
0.049285 TRACE ipcc: ch 2: wait for rx occupied
└─ embassy_stm32::ipcc::{impl#2}::receive::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
0.049316 INFO  setting RX on when idle
└─ mac_ffd::____embassy_main_task::{async_fn#0} @ src/bin/mac_ffd.rs:151
0.049377 TRACE ipcc: ch 2: send data
└─ embassy_stm32::ipcc::{impl#2}::send::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
0.049407 TRACE ipcc: ch 2: wait for tx free
└─ embassy_stm32::ipcc::{impl#2}::flush::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
0.049560 TRACE ipcc: ch 2: read data
└─ embassy_stm32::ipcc::{impl#2}::receive::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
0.049591 INFO  MlmeSetCnf(SetConfirm { status: Success, pin_attribute: RxOnWhenIdle, a_stuffing: [0, 0] })
└─ mac_ffd::____embassy_main_task::{async_fn#0} @ src/bin/mac_ffd.rs:160
0.049682 TRACE mac drop event
└─ embassy_stm32_wpan::sub::mac::{impl#1}::drop_event_packet @ /home/me/git/embassy/embassy-stm32-wpan/src/fmt.rs:117
0.049713 TRACE ipcc: ch 2: read data
└─ embassy_stm32::ipcc::{impl#2}::receive::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
0.049743 TRACE ipcc: ch 2: clear rx
└─ embassy_stm32::ipcc::{impl#2}::receive::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
0.049774 TRACE ipcc: ch 2: wait for rx occupied
└─ embassy_stm32::ipcc::{impl#2}::receive::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
0.049835 TRACE ipcc: ch 2: wait for rx occupied
└─ embassy_stm32::ipcc::{impl#2}::receive::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
10.293853 TRACE ipcc: ch 2: read data
└─ embassy_stm32::ipcc::{impl#2}::receive::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
10.293884 INFO  parsed mac event
└─ mac_ffd::____embassy_main_task::{async_fn#0} @ src/bin/mac_ffd.rs:165
10.293914 INFO  MlmeAssociateInd(AssociateIndication { device_address: [2, 0, 0, 0, 0, 72, 222, 172], capability_information: ALLOCATE_ADDRESS, security_level: Unsecure, key_id_mode: Implicite, key_index: 0x0, key_source: [0, 0, 0, 0, 0, 0, 0, 0] })
└─ mac_ffd::____embassy_main_task::{async_fn#0} @ src/bin/mac_ffd.rs:166
10.294067 TRACE ipcc: ch 2: send data
└─ embassy_stm32::ipcc::{impl#2}::send::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
10.294097 TRACE ipcc: ch 2: wait for tx free
└─ embassy_stm32::ipcc::{impl#2}::flush::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
10.294219 TRACE mac drop event
└─ embassy_stm32_wpan::sub::mac::{impl#1}::drop_event_packet @ /home/me/git/embassy/embassy-stm32-wpan/src/fmt.rs:117
10.294250 TRACE ipcc: ch 2: read data
└─ embassy_stm32::ipcc::{impl#2}::receive::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
10.294311 TRACE ipcc: ch 2: clear rx
└─ embassy_stm32::ipcc::{impl#2}::receive::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
10.294342 TRACE ipcc: ch 2: wait for rx occupied
└─ embassy_stm32::ipcc::{impl#2}::receive::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
10.294403 TRACE ipcc: ch 2: wait for rx occupied
└─ embassy_stm32::ipcc::{impl#2}::receive::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
10.787872 TRACE ipcc: ch 2: read data
└─ embassy_stm32::ipcc::{impl#2}::receive::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
10.787902 INFO  parsed mac event
└─ mac_ffd::____embassy_main_task::{async_fn#0} @ src/bin/mac_ffd.rs:165
10.787933 INFO  MlmePollInd(PollIndication { addr_mode: Extended, request_address: MacAddress { short: [2, 0], extended: [2, 0, 0, 0, 0, 72, 222, 172] } })
└─ mac_ffd::____embassy_main_task::{async_fn#0} @ src/bin/mac_ffd.rs:166
10.788055 INFO  other mac event
└─ mac_ffd::____embassy_main_task::{async_fn#0} @ src/bin/mac_ffd.rs:192
10.788085 TRACE mac drop event
└─ embassy_stm32_wpan::sub::mac::{impl#1}::drop_event_packet @ /home/me/git/embassy/embassy-stm32-wpan/src/fmt.rs:117
10.788146 TRACE ipcc: ch 2: read data
└─ embassy_stm32::ipcc::{impl#2}::receive::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
10.788177 TRACE ipcc: ch 2: clear rx
└─ embassy_stm32::ipcc::{impl#2}::receive::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
10.788238 TRACE ipcc: ch 2: wait for rx occupied
└─ embassy_stm32::ipcc::{impl#2}::receive::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
10.788269 TRACE ipcc: ch 2: wait for rx occupied
└─ embassy_stm32::ipcc::{impl#2}::receive::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
10.791839 TRACE ipcc: ch 2: read data
└─ embassy_stm32::ipcc::{impl#2}::receive::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
10.791870 INFO  parsed mac event
└─ mac_ffd::____embassy_main_task::{async_fn#0} @ src/bin/mac_ffd.rs:165
10.791900 INFO  MlmeCommStatusInd(CommStatusIndication { pan_id: PanId([26, 170]), src_addr_mode: Extended, dst_addr_mode: Extended, src_address: MacAddress { short: [1, 0], extended: [1, 0, 0, 0, 0, 72, 222, 172] }, dst_address: MacAddress { short: [2, 0], extended: [2, 0, 0, 0, 0, 72, 222, 172] }, status: Success, security_level: Unsecure, key_id_mode: Implicite, key_index: 0x0, key_source: [0, 0, 0, 0, 0, 0, 0, 0] })
└─ mac_ffd::____embassy_main_task::{async_fn#0} @ src/bin/mac_ffd.rs:166
10.792144 INFO  other mac event
└─ mac_ffd::____embassy_main_task::{async_fn#0} @ src/bin/mac_ffd.rs:192
10.792175 TRACE mac drop event
└─ embassy_stm32_wpan::sub::mac::{impl#1}::drop_event_packet @ /home/me/git/embassy/embassy-stm32-wpan/src/fmt.rs:117
10.792205 TRACE ipcc: ch 2: read data
└─ embassy_stm32::ipcc::{impl#2}::receive::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
10.792236 TRACE ipcc: ch 2: clear rx
└─ embassy_stm32::ipcc::{impl#2}::receive::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
10.792266 TRACE ipcc: ch 2: wait for rx occupied
└─ embassy_stm32::ipcc::{impl#2}::receive::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
10.792327 TRACE ipcc: ch 2: wait for rx occupied
└─ embassy_stm32::ipcc::{impl#2}::receive::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
10.800384 TRACE ipcc: ch 2: read data
└─ embassy_stm32::ipcc::{impl#2}::receive::{async_fn#0} @ /home/me/git/embassy/embassy-stm32/src/fmt.rs:117
10.800415 INFO  parsed mac event
└─ mac_ffd::____embassy_main_task::{async_fn#0} @ src/bin/mac_ffd.rs:165
────────────────────────────────────────────────────────────────────────────────
(HOST) INFO  program has used at least 3.34/150.27 KiB (2.2%) of stack space
stack backtrace:
   0: HardFaultTrampoline
      <exception entry>
   1: defmt::export::integers::i8
        at /home/me/.cargo/registry/src/index.crates.io-6f17d22bba15001f/defmt-0.3.6/src/export/integers.rs:7:20
   2: defmt::export::fmt
        at /home/me/.cargo/registry/src/index.crates.io-6f17d22bba15001f/defmt-0.3.6/src/export/mod.rs:138:11
   3: <embassy_stm32_wpan::mac::indications::DataIndication as defmt::traits::Format>::_format_data
        at /home/me/git/embassy/embassy-stm32-wpan/src/mac/indications.rs:193:38
   4: <embassy_stm32_wpan::mac::event::MacEvent as defmt::traits::Format>::_format_data
        at /home/me/git/embassy/embassy-stm32-wpan/src/mac/event.rs:25:51
   5: $t.19
   6: embassy_executor::raw::util::SyncUnsafeCell<T>::get
        at /home/me/git/embassy/embassy-executor/src/raw/util.rs:55:9
   7: embassy_executor::raw::timer_queue::TimerQueue::update
        at /home/me/git/embassy/embassy-executor/src/raw/timer_queue.rs:31:28
   8: embassy_executor::raw::SyncExecutor::poll::{{closure}}
        at /home/me/git/embassy/embassy-executor/src/raw/mod.rs:412:17
   9: embassy_executor::raw::run_queue::RunQueue::dequeue_all
        at /home/me/git/embassy/embassy-executor/src/raw/run_queue_atomics.rs:84:13
  10: embassy_executor::raw::SyncExecutor::poll
        at /home/me/git/embassy/embassy-executor/src/raw/mod.rs:386:13
  11: embassy_executor::raw::Executor::poll
        at /home/me/git/embassy/embassy-executor/src/raw/mod.rs:526:9
  12: embassy_executor::arch::thread::Executor::run
        at /home/me/git/embassy/embassy-executor/src/arch/cortex_m.rs:106:21
  13: mac_ffd::__cortex_m_rt_main
        at src/bin/mac_ffd.rs:31:1
  14: main
        at src/bin/mac_ffd.rs:31:1
  15: Reset
(HOST) ERROR the program panicked

The same thing doesn't happen on 8b36a32ed5d834b23e970d5b723dd7df1f1c94a2 where I'll get the Hello from embassy message on the receiver and both programs keep running without panic.

DeppLearning commented 1 week ago

I'm still seeing this on latest master. If I delete this line, the problem is gone: https://github.com/embassy-rs/embassy/blob/a2acb3e3dceddb4752f8fb1c17aa65e1959a2180/examples/stm32wb/src/bin/mac_ffd.rs#L153.

I think it's just a problem with logging the MacEvent::McpsDataInd variant. Maybe there are others, didn't try all of them but this one seems to have a problem.

I played with the wpan impl quite a bit with 3 devices and a mixture of different STM32WB55 boards (official and proprietary ones) and it seems to work well. What I noticed though is that when running with a debug probe attached (in --release) I'm seeming to lose way more packets. Same thing when I don't use a debug probe and power the device via a low-quality AC (i.e. cheapo for charging mobile phones). I guess that's somewhat expected :). Didn't see this though with other peripherals/wlan but I guess that's due to more sophisticated transport protocols there (rather than my crappy handrolled one :smile: )