Skip to content
Snippets Groups Projects
Forked from card10 / firmware
1038 commits behind the upstream repository.
Rahix's avatar
rahix authored
Sometimes during initialization, one `log_msg()` intercepts another one,
leading to a whole lot of weird issues in other modules (like I2C).  I
suspect this to be memory corruption of some kind.  The issues can be
fixed by performing serial prints in a critical section, thus ensuring
atomicity of prints.  Note that this does not mean log messages will not
interleave.

The CDC-ACM and BLE-Serial writes cannot be put into a critical section
and are thus a point where this code can still fail.  For now, however,
this fix ensures the race-conditions during startup, where USB and BLE
are not yet running, don't happen anymore.

Signed-off-by: default avatarRahix <rahix@rahix.de>
32681478
History