Working towards the next version of Mbed OS


Some of the more curious amongst you may have noticed a new external Mbed OS release a couple of weeks ago on GitHub and we thought we’d give an update on what we’re doing in the Mbed OS team currently.

In the past four years we’ve invested heavily in adding the features we believe are necessary to simplify the development of IoT devices. This work has touched on all areas of the platform and has seen us add the following;

  • Connectivity
    • BLE
      • 5.1 compliant Cordio stack
    • Cellular
      • Modem interface APIs
        • AT Commands
        • PPP
        • RIL
      • Supported Cellular Standards
        • 2G
        • 3G
        • 4G including NB-IoT and CAT-M1
    • LoRaWAN
      • Full protocol stack
    • NFC
      • Card emulation mode
    • Thread
      • Full protocol stack
    • WiFi interface
      • Supports both on chip and native IP stack
    • Wi-SUN
  • Security
    • Entropy source using TNRG
    • Mbed TLS
    • PSA
      • Level 1 certification
      • PSA Crypto API
    • Secure element support
    • TrustZone support
    • TF-M integration
  • Storage
    • BlockDevice: Access to raw block-based storage device, such as (Q)SPI flash, SD card, EEPROM or internal flash
    • FileSystem: POSIX-style file system
    • FileHandle: POSIX-style files
    • KVStore: Key-value database
  • HAL
    • RTC and low power timers, including tickless where supported
    • Clearly defined and documented interfaces for all key peripherals
    • Test suite to test and validate peripheral drivers
    • FPGA test shield
  • Cloud management services
    • COAP and LWM2M
    • MQTT
    • Bootloader
    • Update client
    • Watchdog API

As we’ve added these features we’ve not always got the APIs right first time and have discovered new use cases that require API changes. We’ve tried to minimise disruption to developers who use Mbed OS, but as we prepare for our first major release in four years, we’re going through the process of removing APIs that have been marked for deprecation.

We appreciate this will have an impact on those of you who’ve developed code to run on Mbed OS and to mitigate the disruption we plan to do a small number of early pre-releases, starting with the release we made last week, that you can use to test your software and ensure it continues to work when we make the first proper release later this spring. For now, this pre-release only works with our command line tooling, support in Mbed Studio and the online compiler will be available later. We’ve also updated our documentation to ensure that where an API is marked as deprecated, the replacement API is linked and are working on updating our code examples.

The other major change we’re making, and one which we know will have a big impact on many of you, is to stop releasing Mbed OS 2. This has been a decision we’ve not taken lightly, as we know many Mbed users are still using this version of Mbed OS, but the cost of maintaining a separate code base is proving burdensome on our development teams and we’d like to focus our efforts on a single code base that serves everyone’s requirements.

We’ve been working on a new build profile – the Bare Metal Profile – that removes the RTOS and uses the event queue instead, which should, we think, give Mbed OS 2 users a replacement that is optimised for smaller microcontrollers, and will allow you to access the features we’ve added to Mbed OS 5.

To assist many of you, we’re enabling the Bare Metal Profile on some of the more popular Mbed 2 targets and we’ve been working with our silicon partners to assist them in migrating to the Bare Metal Profile on some of their boards that support Mbed OS 2. Over the coming weeks we’ll publish a series of blogs that will give more details on changes we’ve made, including the reasoning behind them, which we hope will ease the transition to the next major version of Mbed to our developer ecosystem.

You need to log in to post a discussion