Go to file
Russ Butler 131eed9b4f Fix rare NRF52 serial TX lockup
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.
2018-11-29 19:09:04 -06:00
.github Edit issue_template.md 2018-10-25 15:04:50 -05:00
TESTS Merge pull request #8871 from c1728p9/mpu 2018-11-28 10:28:32 +01:00
TEST_APPS Merge pull request #8342 from JuhPuur/icetea_missing_test_doc 2018-11-22 13:20:39 +01:00
UNITTESTS Add stats stub functions to rest of the cmake files 2018-11-26 11:04:37 -06:00
cmsis Change the reboot-max value semantics and code style and other fixes 2018-11-16 14:00:00 -06:00
components Merge pull request #8804 from mohammad1603/inject_entropy_spm 2018-11-28 09:40:31 +01:00
docs Remove MPU design doc 2018-11-27 09:29:32 +00:00
drivers Rename lock functions and classes 2018-11-27 09:29:32 +00:00
events MBED_NO_GLOBAL_USING_DIRECTIVE is added to remove auto-addition of namespace 2018-11-26 09:23:16 -06:00
features BLE: Reintroduce changes to address types lost. 2018-11-28 11:29:40 +00:00
hal Merge pull request #8871 from c1728p9/mpu 2018-11-28 10:28:32 +01:00
platform Merge pull request #8871 from c1728p9/mpu 2018-11-28 10:28:32 +01:00
rtos Merge pull request #8871 from c1728p9/mpu 2018-11-28 10:28:32 +01:00
targets Fix rare NRF52 serial TX lockup 2018-11-29 19:09:04 -06:00
tools Merge pull request #8863 from offirko/offir-examples-kvstore 2018-11-28 13:53:51 +01:00
.astyleignore astyleignore: add nanostack targets folder 2018-11-15 07:20:10 +00:00
.astylerc AStyle: fix indentation for longer lines 2018-05-24 14:15:52 +01:00
.coveragerc Exclude libraries and tests from coverage numbers 2017-09-25 11:51:31 -05:00
.gitattributes Added .gitattributes for automatic LF line ending conversion 2013-08-08 13:19:34 +03:00
.gitignore PSA SPM 2018-11-27 09:16:35 +02:00
.pylintrc Add pylint configuration file 2016-08-16 11:48:45 -05:00
.travis.yml travis: astyle anchor fix 2018-11-20 14:50:10 +00:00
CONTRIBUTING.md Remove comma in CONTRIBUTING.md 2018-11-06 13:47:38 -06:00
DOXYGEN_FRONTPAGE.md Very minimal text 2016-08-04 14:09:59 +01:00
Jenkinsfile Updated file comment 2018-08-20 12:31:40 +03:00
LICENSE Add Apache v2 LICENSE file 2013-08-06 12:05:04 +01:00
README.md Edits in README.md 2018-11-06 13:47:11 -06:00
doxyfile_options Add a formal HAL specification for the MPU API 2018-11-27 09:29:32 +00:00
doxygen_options.json Add a formal HAL specification for the MPU API 2018-11-27 09:29:32 +00:00
logo.png Readme updates for style and branding 2017-12-04 14:59:16 -06:00
mbed.h Rename lock functions and classes 2018-11-27 09:29:32 +00:00
requirements.txt Updated and pinned version for requests 2018-11-01 11:17:21 -05:00

README.md

Mbed OS

Build status release Build status master Tools coverage status PR progress

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.