Skip to content

mbed-os-5.7.0

Compare
Choose a tag to compare
@adbridge adbridge released this 20 Dec 14:57
· 21387 commits to master since this release

Mbed OS 5.7.0 release

We are pleased to announce the Mbed OS 5.7.0 release is now available.

Summary

The Arm Mbed OS 5.7.0 release helps to further simplify the internet of things (IoT) and embedded product development with the addition of several new features, such as the high-integrity embedded file system, which provides power loss resilient operation and maximizes the life of the external memory block device by implementing wear leveling techniques. The release also includes an open-source mesh networking stack, which is IPv6, 6LoWPAN and one of the only two open-source certified Thread networking stacks.

This release also continues our efforts to add comprehensive documentation for Mbed OS. Our ongoing efforts in this area include adding documentation about contributing and using our platform, drivers, RTOS, connectivity and storage APIs, as well as information about our tools. This release also includes improvements to the user experience of our documentation.

In addition, this release contains many minor fixes and enhancements and brings support for 103 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.7.0 release.

Core OS and storage

High-integrity embedded file system

Mbed OS introduces a robust, high-integrity embedded file system, which prevents risks of serious data loss due to power loss and significantly improves the life of external block memory by implementing dynamic wear leveling algorithms. Some of the key features are:

Power loss resilience - The high-integrity embedded file system works consistently through random power failures. During file system operations, the storage on disk is always kept in a valid state. Also, to protect failure, in case of updating a file, the original file remains unmodified until the file is closed or sync is called.

Wear awareness - The high-integrity embedded file system considers write errors reported by the underlying block device and uses dynamic wear leveling to manage blocks that go bad during the lifetime of the file system.

Support to SPI NOR Flash and SD cards – We specifically designed it to work on SPI NOR flash and SD cards.

Along with the traditional FAT file system, the high-integrity embedded file system enhances the storage portfolio of Mbed OS by providing robust and power resilient operation. More information on the high-integrity embedded file system is available at https://os.mbed.com/docs/v5.7/reference/littlefilesystem.html and is currently in early release.

New drivers and platform APIs

In the Mbed OS 5.7.0 release, we have also added several new drivers and platform APIs. One of the notable additions includes the ConditionVariable class.

ConditionVariable class: The ConditionVariable class provides a mechanism to safely wait for or signal state changes. A common scenario when writing multithreaded code is to protect shared resources with a mutex and then release that mutex to wait for a change of that data. If you do not do this carefully, this can lead to a race condition in the code. A condition variable provides a safe solution to this problem by handling the wait for a state change, along with releasing and acquiring the mutex automatically during this waiting period. For more information, please visit https://os.mbed.com/docs/v5.7/reference/conditionvariable.html

Connectivity

Open-source mesh networking stack

We’ve invested many years of effort in building a robust and scalable mesh networking stack, which runs on the 802.15.4 radios. Some of the key principles of this technology are an ability to self-heal the mesh routing and also optimize for low power. The mesh stack has many uses, and the key features are:

  • IPv6/6LoWPAN for 2.4GHz and subGHz.

  • Thread® 1.1 certified for interoperability in connected home applications.

  • Mesh link establishment (MLE) for safe, dynamic and reconfigurable radio link establishment.

  • RPL routing protocol.

The IPv6 and 6LoWPAN components are Apache 2.0 licensed, and the Thread extensions are under a BSD 3-clause license. Mbed OS applications can use the Mesh and Socket APIs. To use the mesh stack, check the example application mbed-os-example-mesh-minimal. More information on the open-source mesh networking stack is available at https://os.mbed.com/docs/v5.7/tutorials/mesh.html#nanostack

Upcoming features

Mbed OS thrives on the large ecosystem and support from leading silicon vendors. Mbed OS has several MCU targets and 103 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 and enabled by silicon and device Partners. To know more, please visit https://github.com/ARMmbed/mbed-os/

LoRaWAN

We are adding a LoRaWAN API to Mbed OS to enable building LoRaWAN end points with the integrated Mbed OS stack. We will integrate the LoRaWAN stack as part of Mbed OS and provide developers an easy way to connect and use LoRaWAN technology. We will test the integrated stack with several modules to enable fast product integration.

QuadSPI

A quad SPI driver enables multiple I/O SPI devices capable of supporting increased bandwidth or throughput from a single device. Some of the advantages of quad SPI include high speeds and that it requires few pins. Several MCUs and memory vendors are adding support for Quad SPI, and it is popular among the use cases that need high bandwidth, such as multimedia, richer graphics and other data-intensive content needing external memory.

Watchdog

We are looking to add a watchdog API to Mbed OS to detect and recover from system malfunctions during remote management operations, such as updating the device firmware. The initial watchdog use cases that would be supported are; setting the watchdog, feeding the watchdog, reading the current watchdog status and reading the MCU reset reason.

MicroSecond and LowPower Ticker

Power consumption is one of the most important design requirements for IoT devices. Meeting the power budget is becoming challenging because systems today include more sensors, faster responses and more connectivity. We are looking to add a low-power timer with lower accuracy to Mbed OS, which would help to enable the tickless mode and save power. We are also looking to add a unified 64-bit time stamp, allowing devices to seamlessly handle different widths of timers. We plan to enable better low-power performance by adding the feature to turn off the time when the time is not in use.

RTC

The real-time clock (RTC) keeps track of the current time in computers and embedded devices. We are looking to update the RTC API to specify behavior that enables it to survive reset and provide the true time.

Targets and tools

Thanks to our partners’ hard work, Mbed OS 5.7 added 10 new target platforms and now supports 103 target platforms. We’ll continue to add targets in our biweekly patch releases as partners work with us on support.

Testing

We designed Mbed OS to significantly reduce cost and time for embedded software development by providing a production-quality toolset and code. We are committed to delivering high-quality code working across all supported boards and platforms. To ensure all the features of code meet our quality control requirements, we have built an automated testing environment and processes that perform rigorous testing on every line of code. The continuous integration framework is a highlight of our testing framework.

Continuous integration framework:

The continuous integration framework ensures that every new feature and change in Mbed OS is tested, so that:

  • For every new feature, we create tests that we then deliver to our partners. For every board to be Mbed Enabled, we need our partners to successfully conduct these tests.

  • Partners must test the changes on their boards before submitting pull requests (PRs) on GitHub.

  • Once the PR is submitted, the Mbed OS gatekeepers manually review the code to ensure it meets the coding guidelines and code standards.

  • Once approved by gatekeepers, the code goes through the automated test setup, which adds code to Mbed OS for testing and builds examples across all the platforms, such as IAR, ARM and GCC.

  • During the testing phase, we select the combination of boards and devices that support a variety of peripherals, MCU cores and features for maximum coverage.

  • To ensure the Mbed OS code is compatible with all the IDEs, we test that the code is exporting properly to all the compilers.

  • We merge the PRs only if the all the above procedures are successful.

Following is the summary of results for testing conducted for Mbed OS 5.7.0:

  • Total test time is 10,125 hours on actual development boards. Time almost doubled because we are testing nightly on every PR.

  • We have added 111 new test cases since the Mbed OS 5.6.0 release to test new and existing features on Mbed OS. The number of total test cases is 423.

  • We performed 566,440 example builds since the Mbed OS 5.6.0 release.

  • The total number of binaries built is 17,869,800 since the Mbed OS 5.6.0 release.

We plan to share more details about testing processes, such as our out-of-box testing coverage and system testing, in upcoming release blogs.

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 forums.

Title: 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

Title: 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 an EXPERIMENTAL stage; use it at your own responsibility!
  • Reported Issue: Issue reported by a customer in email.
  • Priority: MAJOR

Title: 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

Title: 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 that 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

Title: 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 because 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

Title: 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 are no known workarounds.
  • Reported Issue: Reported by the development team.
  • Priority: MAJOR

Title: 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

Title: 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

Title: 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

Title: Traceback occurs when ran 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

Title: 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

Title: 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

Title: Client fails to connect via UDP when binary is compiled by Online Compiler

  • Description: Using UDP fails when 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

Title: Online Compiler error for the Realtek RTL8195AM board

  • Description: Compiling programs in the online IDE for the Realtek RTL8195AM fail with Error L6236E No section matches selector - no section to be FIRST/LAST.
  • Workaround: None. There is a pending pull request to fix this, which will come in a subsequent patch release.
  • Reported Issue: ARMmbed/mbed-os-example-blinky#102
  • Priority: Major

Title: 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: None.
  • Reported Issue: #5640
  • Priority: Major

Contents

Ports for upcoming targets

No new ports in this release

Fixes and changes

5060
BLE: Cordio port

5113
STM: I2C: Configure pins in OpenDrainNoPull by default (no pullup)

5200
Extend nRF51 AnalogIn voltage range to 3.6 V

5210
STM32: Add ADC calibration for L4, F1, F3 devices

5238
Include doxygen from test directories

5028
Update ticker to map closely to hardware

5325
Add fix for Timer test - provide missing get_info ticker interface

5365
Remove redundant ISR test

5385
SlicingBD: Replace second constructor with default parameter

5369
Add API to set ticker IRQ handler

5088
UARTSerial: Add flow control and format APIs

5410
BLE: Deprecate GapEvent

5158
RTOS: Add empty and full functions to Mail and Queue

5393
Deprecate CallChain and InterruptManager

5428
Shrink RTOS classes

5426
BLE: Fix initialization of GattHVXCallbackParams in Nordic port

3648
Add ConditionVariable to Mbed RTOS

5328
equeue: Add config option to use different timer classes

5295
BLE: Gap platform abstraction layer

5058
CircularBuffer(): Get available transactions

5471
Increase flash program granularity on Realtek RTL8195AM

5342
Update CMSIS/RTX with Cortex-A support

5508
Fix and add test for ConditionVariable

5485
Platform: Allow copy of noncopyable objects

5475
BLE: Update heart rate service definition

5392
Improve BLE docs

5296
BLE: Generic access service abstraction layer

5196
Add IPv4 and IPv6 multicast implementation for UDPSocket

5407
Python script to add CMSIS/RTX changes in mbed-os

5299
BLE: Generic event filter

5513
STM32: Initialize ADC peripheral for each AnalogIn object creation

5528
Use retarget defines when possible

5549
BLE gatt server doc update

5561
Definition for stat was missing in header file

5466
Make POSIX-like writes write everything when blocking

5511
Nanostack OSS release for mbed-os-5.7

5583
Remove pointless null check in operator delete

5601
Update ODIN drivers to v2.3 RC1

5596
Make LDREX/STREX CAS functions strong

5593
BLE: Fix greater than or equal to comparison in GattCharacteristic

5592
BLE: Fix GattServer::write on Nordic targets.

5490
Upgrade ChanFs to R0.13a

5300
BLE pal event queue

5602
Nanostack release v704

5538
Integrate littlefs into Mbed OS

5675
Update Cortex-A build errors

5685
Export: Fix link in gettingstarted template

5688
Mesh fix for Mbed OS 5.7 OOB

5704
Fixed LWIP k64f ethernet driver IPv6 multicast groups

5701
BLE doxy fixes

Using this release

You can fetch this release from the mbed-os GitHub repository, using the tag "mbed-os-5.7.0".

If you need any help with this release, please visit our support page, which provides reference links and details of our support channels.