We use custom code in the #[entry] macro to unlock the spinlocks on start-up. But, if you use rtic, you don't use macro and the spinlocks can remain locked (see knurling-rs/defmt#975 for real-world consequences).
embassy rp-rs uses a _pre_init function to clear all the locks, which is executed by cortex-m-rt before main and regardless of which mechanism you use to get to main. See https://github.com/embassy-rs/embassy/blob/main/embassy-rp/src/lib.rs#L633. However, a pre-init function written in Rust is UB, so we should probably write it in assembly language.
We use custom code in the
#[entry]macro to unlock the spinlocks on start-up. But, if you use rtic, you don't use macro and the spinlocks can remain locked (see knurling-rs/defmt#975 for real-world consequences).embassy rp-rs uses a
_pre_initfunction to clear all the locks, which is executed by cortex-m-rt beforemainand regardless of which mechanism you use to get to main. See https://github.com/embassy-rs/embassy/blob/main/embassy-rp/src/lib.rs#L633. However, a pre-init function written in Rust is UB, so we should probably write it in assembly language.