Serial implementation uses different vector handlers for sync/async calls respectively. The issue can be reproduced with the following flow: 1. Register sync mode callback with Serial.attach(). 2. Sync call with Serial.putc()/getc(). 3. Change to async call with Serial.write()/read(). 4. Change back to sync call with Serial.putc()/getc(). Now, vector handller is still for async mode, not for sync mode. To fix it: 1. Introduce internal function serial_enable_interrupt() for both sync/async vector handler enable/disable. Original HAL function serial_irq_set() is reduced to call it for sync mode vector handler enable/disable. 2. Introduce internal function serial_rollback_interrupt() to roll back sync mode vector handler at end of async transfer. |
||
|---|---|---|
| .github | ||
| TESTS | ||
| cmsis | ||
| drivers | ||
| events | ||
| features | ||
| hal | ||
| platform | ||
| rtos | ||
| targets | ||
| tools | ||
| .gitattributes | ||
| .gitignore | ||
| .pylintrc | ||
| .travis.yml | ||
| CONTRIBUTING.md | ||
| DOXYGEN_FRONTPAGE.md | ||
| Jenkinsfile | ||
| LICENSE | ||
| README.md | ||
| mbed.h | ||
| requirements.txt | ||
README.md
ARM mbed OS
mbed OS is an open-source embedded operating system designed specifically for the "things" in the Internet of Things (IoT). It includes all the features you need to develop a connected product based on an ARM Cortex-M microcontroller.
mbed OS accelerates the process of creating a connected product by providing a platform operating system that includes robust security foundations, standards based communication capabilities, built-in cloud management services, and drivers for sensors, I/O devices and connectivity. mbed OS is built as a modular, configurable software stack so that you can readily customize it to the device you're developing for, and reduce memory requirements by excluding unnecessary software components.
Current release
The current release, along with a selection of previous versions are detailed here: Release Notes
Getting Started for Developers
Please note that you will require mbed CLI to build mbed OS. For more details, please read the getting started guide for developers using mbed OS in applications:
Getting Started for Contributors
We have a getting started guide for contributors working on mbed OS:
- Have a look in the docs directory