-
Notifications
You must be signed in to change notification settings - Fork 3k
Description
Description of defect
When upgrading from Mbed OS 6.1 to 6.7, we saw weird behavior in our serial communication where most of our frames (about 40 bytes) are invalid because it usually drops at least one byte somewhere in communication. By one by one disabling components in, we managed to pin down the issue to a ticker somehow. When the ticker is disabled or replaced (for example using the 'call_every' function of the mbed event queue), the UART issue is resolved.
After some further testing the issue seems to appear from Mbed OS 6.6 and onwards, which makes sense as 6.6 saw an overhaul of the ticker system. When checking out the latest version of Mbed (6.9 as of time of writing) and reverting the commits in the ticker PR, the issue also goes away. This is also discussed in this PR.
Target(s) affected by this defect ?
STM32F030RC
Toolchain(s) (name and version) displaying this defect ?
- CMake (Clion bundled 3.17.5)
- GNU ARM embedded toolchain (2020 q2) arm-none-eabi-g++/gcc
What version of Mbed-os are you using (tag or sha) ?
- mbed-os-6.6.0 and higher
What version(s) of tools are you using. List all that apply (E.g. mbed-cli)
- mbed-cli 1.10.5 (used for mbed deploy and export)
- c++-17
How is this defect reproduced ?
UART (baud 115200) is started, with regular data being send to UART. When a Ticker that ticks each 3 ms is started, the incoming data gets dropped.