Skip to content

mbed-os-5.8.0

Compare
Choose a tag to compare
@adbridge adbridge released this 27 Mar 09:38
· 19814 commits to master since this release
ad284b2

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 the CellularBase abstract class. This means it may not work if OnboardCellularInterface is not a PPPCellularInterface.
  • 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

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.