Mbed OS 2 and Mbed OS 5
This is the handbook for Mbed OS 2. If you’re working with Mbed OS 5, please see the new handbook.
Changelogs of the libraries officially supported by the mbed team:
[Rev 58] changelog:
- [IAR toolchain] Position Stack and Heap in the same ordered block, reserve memory area for NVIC.
[Rev 57] changelog:
- Add semihosting support for IAR toolchain
- Improve IAR stdio retargeting
[Rev 55-56] changelog:
- Add initial IAR toolchain support
- LPC I2C: better handling of status
- GCC: Correct "_isatty" retargeting and "semihost" definition
- Include "sleep_api.h" in "mbed.h"
- Add sleep mode support for the LPC1768
[Rev 54] changelog:
- Support "stream as file" use case
- Unify binary libraries
- Update copyright
[Rev 53] changelog:
- I2C LPC: fix status after start bit
[Rev 52] changelog:
- Fix a bug in the LPC1768 InterruptIn handler
[Rev 51] changelog:
- Duplicate Serial enums for backward compatibility.
[Rev 50] changelog:
- Do not generate error in the InterruptIn constructor in case of NC pin.
[Rev 49] changelog:
- Rename "
debug.h" to "
mbed_debug.h" to avoid clashes with legacy debug headers.
[Rev 48] changelog:
- Fix a bug in "opendir" (libc retargeting).
[Rev 47] changelog:
- Add a debug API
[Rev 46] changelog:
- Update CMSIS-CORE to v3.02
[Rev 45] changelog:
- Fix a bug in the LPC1768 serial interrupt handler
[Rev 44] changelog: This is a complete refactoring of the mbed library to move the target dependent code to a thin well defined layer, defining a proper object oriented C API.
- Remove RTTI
RPCto a separate open source library.
- Introduce MIT license file header
- Properly define an Object Oriented C API.
- Move parameter type definitions from the C++ layer to the C API.
- Move target dependent logic from the C++ layer to the C layer.
- Separate C API implementations by silicon vendor.
SPIHalfDuplexto a separate library.
For further details see:
Revision 44 is a complete refactoring of the mbed library to move the target dependent code to a thin well defined layer, defining a proper object oriented C API. This introduced few minor changes to the mbed API:
- We moved the RPC logic in a separate library. Now the RPC class is not the base class of every mbed library class, for this reason the constructors do not take any more an optional "char* name" argument. If you are getting a compilation error of the type "No instance of constructor mbed::ClassName::ClassName" matches the argument list, you probably just need to drop the name parameter.
- The protected
int _uidx;is now a field of the serial_t structure:
_uidx -> _serial.index
[Rev 43] changelog:
- Update CMSIS core to V3.0
[Rev 40-42] changelog:
- Move export toolchain builds
Build System Change
Starting from these revisions the build system builds C files as C syntax and C++ files as C++ syntax. See: Compile C as C and C++ as C++
If updating the mbed library you get "odd" compilation errors about unidentified C++ keywords (like: "identifier namespace is undefined"), you have a quick and simple fix: rename your "*.c" file to "*.cpp".
[Rev 39] changelog:
- Make sure stdio retargeting gets always linked in, even when no other symbol from the mbed library is used.
[Rev 38] changelog:
- Fix a M0 sleep bug (properly track if the interface chip is attached)
[Rev 37] changelog:
- Revert few system configuration changes from "system_LPC17xx.c"
[Rev 36] changelog:
- Fix SPI set frequency rounding
[Rev 35] changelog:
- Move CAN::attach template implementation to header.
- CMSIS v3 updates
[Rev 34] changelog:
- API to directly access the local file system without passing through the C standard library file system (unbuffered in the microlib).
[Rev 33] changelog:
- Fix I2C set
LPC11U24/core_cm0.hto latest CMSIS version
[Rev 32] changelog:
- Add library build with latest ARM GCC toolchain: https://launchpad.net/gcc-arm-embedded/4.6/2011-q4-major
- Add M0 support for SPISlave, I2CSlave, SerialHalfDuplex, SPIHalfDuplex
- Update "system_LPC17xx.c" to v1.11
[Rev 31] changelog:
- Add M0 implementations of:
- PortIn, PortOut and PortInOut
- RPC support
- Bugfix in stdio retargeting for GCC toolchains: avoid resetting the baud of UART0 if it is already initialized
[Rev 29] changelog: This release of the library introduce support for new toolchains and a new target:
- LPC11U24 (Cortex-M0) support
- Multiple toolchain support:
- ARM compiler with standard libraries
- ARM compiler with a version of the microlib libraries patched to support C++
- CodeSourcery GCC
- CodeRed GCC
- ARM GCC
[Rev 8] changelog: Add "Thread::get_state" method.
[Rev 7] changelog: Avoid using C++ keyword for C structure filed name
[Rev 6] changelog:
- Merge RTOS C++ API and RTX under the same library
- Update RTX to version 4.60
- Add proper Thread destructor
[Rev 5] changelog: Move the RTX configuration file in the RTX library
[Rev 4] changelog: Implement new RTOS memory model for LPC11U24
[Rev 3] changelog: Update stack sizes configuration
[Rev 2] changelog: Improve RTOS memory usage
[Rev 1] changelog: Remove requirement for additional static memory pool