When using UARTSerial sending data over the uart follows the sequence below: <-TX done ISR runs and sets a software interrupt to pending <-Software interrupt fires: -disables TX done interrupt -calls UARTSerial TX handler which sends bytes until the uart buffer filled (writeable returns false). Sending a byte re-enables the TX done interrupt continuing the cycle Due to this sequence, if the UARTSerial TX handler does not send a byte then the transmit state machine mentioned above will get stuck with the TX done interrupt disabled. The events causing this failure: <-TX done ISR runs and sets a software interrupt to pending <-Software interrupt fires: -disables TX done interrupt -calls UARTSerial TX handler: -checks writeable which is true and sends a byte <- interrupted by a higher priority interrrupt <- TX done ISR runs, setting software interrupt to pending again -checks writeable which is true and sends a second byte -Software interrupt finishes <-Software interrupt fires: -disables TX done interrupt -calls UARTSerial TX handler: -checks writeable which is false and DOES NOT SEND A BYTE -Software interrupt finishes, the TX interrupt is still disabled *-Byte gets sent but TX done ISR does not fire This patch prevents the TX lockup by removing the code in the software interrupt which disables the TX done interrupt. Disabling the TX done interrupt at this point is not necessary so this code is safe to remove. |
||
---|---|---|
.github | ||
TESTS | ||
TEST_APPS | ||
UNITTESTS | ||
cmsis | ||
components | ||
docs | ||
drivers | ||
events | ||
features | ||
hal | ||
platform | ||
rtos | ||
targets | ||
tools | ||
.astyleignore | ||
.astylerc | ||
.coveragerc | ||
.gitattributes | ||
.gitignore | ||
.pylintrc | ||
.travis.yml | ||
CONTRIBUTING.md | ||
DOXYGEN_FRONTPAGE.md | ||
Jenkinsfile | ||
LICENSE | ||
README.md | ||
doxyfile_options | ||
doxygen_options.json | ||
logo.png | ||
mbed.h | ||
requirements.txt |
README.md
Arm Mbed OS is an open source embedded operating system designed specifically for the "things" in the Internet of Things. It includes all the features you need to develop a connected product based on an Arm Cortex-M microcontroller, including security, connectivity, an RTOS and drivers for sensors and I/O devices.
Mbed OS provides a platform that includes:
- Security foundations.
- Cloud management services.
- Drivers for sensors, I/O devices and connectivity.
Release notes
The release notes detail the current release. You can also find information about previous versions.
License and contributions
The software is provided under Apache-2.0 license. Contributions to this project are accepted under the same license. Please see contributing.md for more info.
This project contains code from other projects. The original license text is included in those source files. They must comply with our license guide
Getting started for developers
We have a developer website for asking questions, engaging with others, finding information on boards and components, using an online IDE and compiler, reading the documentation and learning about what's new and what's coming next in Mbed OS.
Getting started for contributors
We also have a contributing and publishing guide that covers licensing, contributor agreements and style guidelines.
Documentation
For more information about Mbed OS, please see our published documentation. It includes Doxygen for our APIs, step-by-step tutorials, porting information and background reference materials about our architecture and tools.
To contribute to this documentation, please see the mbed-os-5-docs repository.