mbed-os-5.8.0
We are pleased to announce the mbed OS 5.8.0 release is now available.
Summary
Mbed OS 5.8 focuses on Mbed Enabled modules to reduce development cost, time and risk and provide go-to-market value compared to traditional chip down designs. We are continuing our focus on low power with our sleep/deep sleep profiling tool, with which you can identify objects that are stopping entry into low power modes. The 5.8 release continues to strengthen Arm's connectivity portfolio with an updated LPWAN stack and updated cellular stack with support for IoT-ready NB-IoT and CAT-M1 technologies. We have also launched the closed alpha developer trial of Mbed Studio, a free desktop IDE designed specifically for Mbed OS.
In addition, this release contains many minor fixes and enhancements and brings support for 121 target development boards. In the release note below, we summarize some of the key updates to Mbed OS that are part of the Mbed OS 5.8.0 release.
Mbed Enabled modules
Time to market and going to production are key challenges for IoT products. Many IoT products rely on modules to reduce time and cost because modules provide integration, certification and ease of going from prototyping to production. We have expanded the Mbed Enabled program to include production modules preverified to support Mbed OS and associated connectivity protocols. The program provides a simple entry point to the marketplace, with mass production quality modules running high-quality, open source software and supporting a diverse suite of connectivity drivers and protocols.
The Mbed Enabled Module program launched in February 2018 during Embedded World and Mobile World Congress where, along with our lead partners, we exhibited a range of mass production modules. For a list of modules currently available, please visit os.mbed.com/modules.
Core OS and storage
Sleep/Deep sleep profiling tool
Reducing power consumption is a key challenge for embedded devices. Sleep and deep sleep modes are some of the most used mechanisms to reduce power consumption. To better enable the use of sleep and deep sleep functions, you need to know which specific objects are blocking the device from entering sleep. The sleep/deep sleep profiling tool helps you determine what specific peripherals are blocking you from entering low power modes. The tool uses that information to optimize your system design to reduce power consumption when deployed. For more information on how to use this feature, please visit https://os.mbed.com/docs/v5.8/reference/power-management.html.
Generation of crash dump in fault exceptions
A fault exception occurs because of an error during normal or exception processing. There are several reasons for occurrence of fault exceptions. Some of the common reasons are execution of an undefined instruction, attempted load or store to an unaligned address and execution of an instruction from a never execute (XN) memory address. When system crashes or hard faults occur, a lack of crash information can make it difficult to triage the problem further. The system can appear to hang if there are no indications of fault exceptions. In such cases, the only way to find more information on the crashes is to reproduce the issue with an attached debugger to find the location and cause of the crash. Reproducing the issue can take longer if it is an intermittent or rare issue. Mbed OS has a new feature that generates crash dump in fault exceptions. Capturing the system context at the time of exception and emitting it through the serial port (or other mechanisms) provides valuable information, so you can triage the fault exceptions. For more information on how to use this feature, please visit https://os.mbed.com/docs/v5.8/tutorials/analyzing-mbed-os-crash-dump.html.
New drivers and platform APIs
In the Mbed OS 5.8.0 release, we have also added several new drivers and platform APIs. Two of the notable additions are the System_Reset and NVStore APIs.
System_Reset: This API is the official Mbed OS API to reset the processor and most of the subsystem. After the reset call, the processor and most components reset, but it does not affect the debug subsystem. For more information, please visit https://os.mbed.com/docs/v5.8/reference/power-management.html
MbedCRC class: The Mbed CRC class provides software CRC generation algorithms. We support precomputed ROM tables for 8/16-bit CCITT, 16-bit IBM and 32-bit ANSI polynomials. For more information, please visit https://os.mbed.com/docs/v5.8/reference/mbedcrc.html
NVStore: NVStore is a lightweight module that stores data by keys in the internal flash for security purposes. For each item key, the NVStore module provides the ability to set the item data or get it. Newly added values are added to the end of the existing data, superseding the previous value that was there for the same key. The NVStore module ensures that power failures don't harm existing data during any operation. For more information, please see https://os.mbed.com/docs/v5.8/reference/nvstore.html
Connectivity
The cellular stack now supports NB-IoT and CAT-M1.
Cellular is enabling connectivity without complicated setup using a gateway. For IoT use cases, power and cost are more significant considerations than data throughput. This is where NB-IoT and CAT-M1 come in. Cellular IoT aims for simpler, low-cost modems tailored for slower, periodic transmissions and is expected to deliver better signal penetration to support devices located deep inside buildings.
Mbed OS version 5.8 supports cellular-based low power, wide area technologies (CAT-NB1 and CAT-M1). Mbed OS cellular APIs are designed to ensure that applications use modems and modules in consistent ways. For more information, please visit https://os.mbed.com/teams/mbed_example/code/cellular-example/
LoRaWAN Stack: LoRaWAN is a low-power wide-area network technology that combines kilometers of range with low power consumption, a great fit for Internet of Things devices. Arm is continuing its investment in LoRaWAN by adding a native LoRaWAN stack to Mbed OS 5.8. The stable, well-tested and (EU) precertified stack makes it easy for device manufacturers to add long-range connectivity to their IoT devices. For more information, please visit https://os.mbed.com/docs/v5.8/reference/lorawan.html
Upcoming APIs and Features
Mbed OS thrives on the large ecosystem and support from leading silicon vendors. Mbed OS has several MCU targets and 121 development boards currently supported and Mbed Enabled. Adoption of Mbed OS APIs by the ecosystem ensures that you have a seamless experience. This section indicates what will be in the upcoming releases from the Mbed OS team, enabled by Silicon and Device Partners. To know more, please visit https://os.mbed.com/forum/upcoming-features/
Mbed Studio
One of the key pieces of feedback that we received is that you’d like to see desktop tools, allowing you to write applications easily on top of Mbed OS. For that reason, we decided to develop a desktop tool, Mbed Studio, that supports application development, building, debugging and, in the future, a great level of integration with our web services. With Mbed Studio, we're targeting application development as the focus, bringing together our command-line tools and utilities into an environment that allows you to begin quickly with a single installer. We currently provide desktop command-line tools and utilities, such as pyOCD and Mbed CLI, which you can use to build custom environments or for CI. However, we wanted to make the experience easier for users who are looking for a simple way to program and debug with Mbed. We now are almost ready to open Mbed Studio for closed alpha. If you’d like to volunteer as an alpha tester for Mbed Studio, please register your interest at https://os.mbed.com/studio/
USB device stack
One of the key peripherals used in embedded devices is USB. Many devices need the USB device peripheral to support connecting their devices to a USB host, such as a computer. We are adding USB device support to Mbed OS, which allows you to enable the functionality of USB devices. This is available on a feature branch at https://github.com/ARMmbed/mbed-os/tree/feature-hal-spec-usb-device/hal
PSA Secure Partition Manager
We are adding a Platform Security Architecture (PSA) Secure Partition Management (SPM). SPM comes with a set of IPC APIs used to exchange data between secure partitions. The PSA IPC API Null implementation lays the groundwork for future hardware-based Secure Partition isolation. Although the code is still experimental, you can try it early on at feature branch at https://github.com/ARMmbed/mbed-os/tree/feature-spm
Targets and tools
Thanks to our Partners’ hard work, Mbed OS 5.8 added 18 new target platforms and now supports 121 target platforms. We’ll continue to add targets in our biweekly patch releases as partners work with us on support.
Mbed CLI v1.5 update
We have added the repository caching feature to Mbed CLI to minimize traffic and reduce import times. Mbed CLI now caches repositories by storing their indexes under the Mbed CLI user config folder. Compared to a fully checked out repository, indexes are significantly smaller in size and number of files and contain the whole revision history of that repository. This allows Mbed CLI to quickly create copies of previously downloaded repository indexes and pull or fetch only the latest changes from the remote repositories. This dramatically reduces network traffic and download times, especially for big repositories such as mbed-os. For more information, please visit https://os.mbed.com/docs/v5.8/tools/working-with-mbed-cli.html#repository-caching
Known issues
We publish Mbed OS as a collection of modules on GitHub. Issues are raised in the specific repositories and then tracked internally. The purpose of this document is to provide a single view of the outstanding key issues that have not been addressed for this release. As such, it is a filtered and reviewed list based on priority and potential effect. Each item summarizes the problem and includes any known workarounds, along with a link to the GitHub issue (if applicable). We welcome any comments or proposed solutions.
For more information about an issue, contact us on the forum.
Misused variable in x509_crt_verify_top()
- Description: A bug in the X.509 module can potentially lead to two possible vulnerabilities if the application code has been configured to trust certain unusually formed certificates.
- If the chosen Certificate Authority (CA) certificate does not use DER compliant encoding, but does use DER compliant encoding in an issued certificate (or the adversary manages to get such a certificate signed by the CA), then the maximum path length limit can be overstepped by one, and CRL, time and verification-callback checks will be omitted for the said certificate.
- If the X.509 Distinguished Name of the chosen CA certificate has more than 11 components, then a remote attacker may be able to trigger a buffer overread. This could potentially crash the application on some platforms.
- Workaround: Only use standard DER compliant certificates, and use a CA that has an X.509 distinguished name with fewer than 11 components. Note: The overwhelming majority of Certificate Authorities have distinguished names with fewer than 11 components.
- Reported Issue: Mbed-TLS/mbedtls#825
- Priority: MAJOR
Handshake Messages are not fragmented as per MaxFragmentLength Extension Negotiation.
- Description: "Once a maximum fragment length other than 2^14 has been successfully negotiated, the client and server MUST immediately begin fragmenting messages (including handshake messages) to ensure that no fragment larger than the negotiated length is sent." In Mbed TLS, only the application data is fragmented, and the handshake messages are not.
- Workaround: Disable MaxFragmentLength Extension Negotiation.
- Reported Issue: Mbed-TLS/mbedtls#387
- Priority: MAJOR
IP addresses in the X.509 certificate subjectAltNames
- Description: Parsing IP addresses in the X.509 certificate subjectAltNames is not supported yet. In certificate chains relying on IP addresses in subjectAltNames, a
BADCERT_CN_MISMATCH
error is returned. - Workaround: Merge branch https://github.com/ARMmbed/mbedtls/tree/iotssl-602-san-ip into your copy of Mbed TLS before building the application. It is still in the EXPERIMENTAL stage; use it on your own responsibility!
- Reported Issue: Issue reported by a customer through email.
- Priority: MAJOR
Mismatch of root CA and issuer of CRL not caught
- Description: The
x509_crt_verifycrl()
function ignores the CRL when the CRL has an issuer different from the subject of root CA certificate. - Workaround: Make sure that the issuer of the CRL and the root CA certificate's subject are the same before passing them to
x509_crt_verifycrl()
. - Reported Issue: Reported by a Partner.
- Priority: MAJOR
Mbed TLS causes stack overflow in Mbed OS targets
- Description: The stack memory usage of some Mbed TLS features is higher than 4 KB, which may cause stack overflow errors when running in constrained embedded environments with Mbed OS, which are particularly limited in RAM.
- Workaround: The amount of stack required depends on the application and what features of the library it chooses to use. More intensive, demanding tasks may not be possible on more limited, constrained devices, so we recommend designing for the limitations of the target device or choosing a device suitable for your application.
- Reported Issue: ARMmbed/mbed-os-example-tls#14
- Priority: MAJOR
Commissioner does not retransmit message when it receives retransmission
- Description: There are two issues with DTLS handshake retransmission. First, the joiner fails to correctly parse received records because it does not correctly handle queued retransmissions received. Second, the commissioner may cause a deadlock as it does not retransmit certain records after it receives retransmission as instructed in RFC6347 Section 4.2.4.
- Workaround: There is no known workaround.
- Reported Issue: openthread/openthread#1207
- Priority: MAJOR
Self test failure with some hardware accelerators
- Description: Most HW acceleration engines (if not all) require the parameters to be from contiguous memory. All the self tests use test vectors that are defined in the .bss section, which means these are not contiguous. This causes the self test to possibly fail when implementing HW accelerated engines.
- Workaround: There is no known workaround.
- Reported Issue: Reported by the development team.
- Priority: MAJOR
uVisor does not support nested interrupts
- Description: When running an application with uVisor enabled, nested interrupts are not supported.
- Workaround: There is no available workaround at the moment.
- Reported Issue: ARMmbed/uvisor#345
- Priority: Major
On ARMv7-M targets supporting uVisor, the RTOS runs with the same privilege of uVisor
- Description: The current architecture of uVisor and of RTX require the RTOS to run with the same privilege of uVisor. As such, the RTOS is considered trusted.
- Workaround: There is no available workaround at the moment.
- Reported Issue: ARMmbed/uvisor#235
- Priority: Major
Realtek RTL8195AM does not define flash algorithms for uvision
- Description: No flashing support in uvision for Realtek RTL8195AM.
- Workaround: Use drag-and-drop programming.
- Reported Issue: #4651
- Priority: Minor
Traceback occurs when run with factory default firmware on Realtek RTL8195AM
- Description: When running mbed-ls on the Realtek board, a traceback happens.
- Workaround: Version of mbedls in Mbed OS does not have this fix. Workaround is to install mbedls from master until a release is made.
- Reported Issue: ARMmbed/mbed-ls#276
- Priority: Major
Export project to Keil - device not present
- Description: cmsis-pack-manager assumes that all information is stored in a device tag. According to the official CMSIS Pack specification, however, this is not the case. cmsis-pack-manager needs to be updated to index by variant, as well as device. We currently do not know how many devices are affected by this issue.
- Workaround: In this case, manual selection of the device and flash programming algorithm may be required.
- Reported Issue: ARMmbed/mbed-os-example-cellular#41
- Priority: Major
OnboardCellularInterface used incorrectly
- Description: This example invokes methods on
OnboardCellularInterface
that are not part of theCellularBase
abstract class. This means it may not work ifOnboardCellularInterface
is not aPPPCellularInterface
. - Workaround: There is no known workaround.
- Reported Issue: ARMmbed/mbed-os-example-cellular#54
- Priority: Major
Wi-Fi connection fails with client compiled by IAR IDE
- Description: Mbed connector client example programs do not connect to api.connector.mbed.com when built in the IAR Embedded Workbench IDE. They work when you build using Mbed CLI.
- Workaround: Do not export the Mbed connector example for IAR Embedded Workbench.
- Reported Issue: ARMmbed/mbed-os-example-client#355
- Priority: Major
Client fails to connect using UDP when the Mbed Online Compiler compiles the binary.
- Description: Using UDP fails when the binary is compiled with Online compiler but works if compiled with mbed-cli GCC_ARM .
- Workaround: Use TCP-based connections.
- Reported Issue: ARMmbed/mbed-os-example-client#357
- Priority: Major
Realtek RTL8195AM - CMSIS-RTOS error: ISR Queue overflow
- Description: Realtek RTL8195AM does not maintain a long running connection to Mbed device connector. The error manifests as an ISR Queue overflow. This works for the K64F, so it should work for the Realtek TRL8195AM.
- Workaround: There is no known workaround.
- Reported Issue: #5640
- Priority: Major
Failure to flash for MTB_ADV_WISE_1570 target
- Description: It is not possible to flash binaries built for the MTB_ADV_WISE_1570.
- Workaround: There is no known workaround.
- Reported Issue: #6252
- Priority: Major
Makefile export fails to build larger project in Windows
- Description: Make will fail with the error:
make (e=87): The parameter is incorrect.
- Workaround: Possible workarounds are 1) Use Linux instead 2) Follow advice here,
https://stackoverflow.com/questions/12598933/ndk-build-createprocess-make-e-87-the-parameter-is-incorrect - Reported Issue: #6335
- Priority: Minor
Fixes and changes
5363
Add support and tests for extended RTC
5311
BLE: Add generic GAP implementation
5633
BLE: added function converting error codes into strings
5578
CircularBuffer class modification and test
5559
Fix for default test config file
5748
Fix PR5578
5621
CriticalSectionLock class improvement
5457
Network interface: Add status callback register
5784
RTC test: fix __result variable
5768
Added statvfs API to get storage statistics
5313
Cordio: Pal Gap implementation
5802
RTC time conversion test - reduce test execution time.
5346
Add Critical Section HAL API specification
5597
critical: fix set exclusive access if not yet defined
5201
Test set for critical section
5789
Add tests for critical section HAL API
5926
bd: Add sync function to the block device API
5925
bd: Add get_erase_value function to the block device API
5022
Add JSON schema based validation to mbed config script
5998
Restrict target_overrides usage
5852
ScopedLock implementation
5848
Python2+3: mbed compile, mbed test --compile, python unit tests
5571
Complete mbed_retarget FileHandle rework
6033
Update mbed-coap to version 4.2.0
6025
Mesh-api setters for eui64 and pskd
5604
TESTS/NETSOCKET: Refinement of netsocket
tests
5847
Unify fault handling and add script to show faults
6053
Nanostack release for Mbed OS 5.8
5973
Update Mbed TLS HW acceleration partner code to new hashing API
5666
Add exporter for Analog Devices' CrossCore Embedded Studio
6032
Status callbacks
6096
Generate/Link secure object file
6049
Nuvoton: Rework RTC
6087
Integrating Mbed LoRaWAN Stack in Mbed-OS 5.8
5956
[feature-hal-itm] Instrumented Trace Macrocell HAL API for SWO debug output
6076
Remove ticker interface initialization while Ticker creation.
6141
Verifying datarate bug fix
6163
Revert "Update Mbed TLS HW acceleration partner code to new hashing API"
6154
Tools: Let unicode error messages through
6160
Fix issue 6150
6140
FlashIAP driver modifications
6120
fatfs: Update error code mapping
6170
CM3DS Maintenance Pull Request: Driver updates (4/4)
6186
Eventloop in main thread to master
6185
nanostack-hal: add alternative critical section implementation
6166
Make APN lookup the default behaviour for PPPCellularInterface
6167
CM3DS Maintenance Pull Request: Bug fixes (1/4)
5911
CRC class implementation
5548
Tests for SysTimer (the idle loop timer for tickless mode)
6240
Improve invalid configuration error messages
5950
Reserve and Render header in managed BL mode
6230
Add system_reset call
6179
littlefs: Update to version 1.3
5900
Add NVStore (A.K.A SOTP) feature
6188
BLE: Security Manager
6210
Update Mbed TLS to version 2.7.1
6142
Add optional tracing to sleep manager lock/unlock
6251
Fixed Thread Commissioning issue in CoAP service
6082
Mbed OS cellular connectivity
6341
Add lorawan and nvstore examples for testing
6328
MIMXRT: define PullUp default value
6327
Cellular doxygen updates
6323
fatfs: Revert "Update error code mapping"
6304
Add lorawan and nvstore examples for testing
6301
Cellular tests: fixed cellular greentea tests by adding timeout
6285
Improve json schema and schema errors
6280
NVStore: Enclose header file with DOXYGEN_ONLY option as well
6275
NRF52: Customize STDIO pins from config system
Using this release
You can fetch this release from the mbed-os GitHub repository, using the tag "mbed-os-5.8.0".
If you need any help with this release, please visit our support page, which provides reference links and details of our support channels.