mbed-os-5.10.0
We are pleased to announce the Mbed OS 5.10.0 release is now available.
Summary
In Mbed OS 5.10, we are improving the firmware update user experience. Mbed OS provides integrated firmware over-the-air (OTA) update capability enabled by Pelion Device Management. Mbed OS now makes it seamless and provides secure and flexible IoT firmware update and device management capabilities right from Arm Mbed CLI tool itself. Bluetooth Low Energy (BLE) is quickly becoming the IoT connectivity protocol of choice for a variety of use cases. In Mbed OS 5.10, we are launching Arm Mbed Cordio stack, the world’s first open-source, fully-qualified and production-ready BLE software stack that supports BLE 5 and gives developers even more flexibility in developing new IoT solutions with BLE connectivity.
Security is the most important challenge for the IoT developers. Mbed OS is supporting Arm V8M which has built in Trustzone functionality and laying the foundation for you to build highly secure devices. In Mbed OS 5.10, we are now supporting the Nuvoton M2351 based on the latest ARM V8M core. We are also integrating storage components, such as SPIF, SD and FlashIAP block devices, into the Mbed OS repository to simplify the use of storage components.
In addition, this release contains many minor fixes and enhancements and brings support for 145 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.10.0 release.
Core OS
Enhancing the user experience for firmware OTA updates
Firmware OTA updates are critical for IoT devices to ensure that the IoT device can be maintained throughout its lifecycle. Firmware OTA updates can significantly increase your device’s lifespan. If a device cannot update its firmware over the air, you must go to the field where the device is deployed and update its firmware, which is expensive and not scalable. Mbed OS supports firmware updates enabled by Pelion Device Management and provides flexible, secure and simple IoT device management for any device. It enables the provisioning and connection of IoT end nodes with cost-effective, secure and reliable software updates, ensuring a long product lifetime. In Mbed OS 5.10, we are simplifying the user experience of doing firmware updates. This enhancement means you can seamlessly enable firmware update capabilities in your IoT device. Using Mbed CLI, you can perform firmware updates to your device in fewer commands. You can also prepare firmware updates for one or multiple devices. For more information, please refer to our documentation about updating devices.
Support for ARMv8-M with Nuvoton M2351
Mbed OS supports building highly secure IoT embedded solutions based on the ARMv8-M platform. The most significant enhancement in the ARMv8-M architecture is the inclusion of the TrustZone security extension, a technology that adds a new dimension of security control and allows multiple security domains within a single processor system. This results in enhanced security and simplified development. TrustZone enables a “secure world” that keeps important data, such as private keys or pre-shared keys, isolated from the main operating system and apps. Mbed OS 5.10 supports Nuvoton M2351, based on the Cortex-M23 processor. Mbed OS also provides all necessary tools to support building and deploying both secure and nonsecure sides of application. Please see our tools documentation for more information.
Integration of storage components inside Mbed OS
Storage functionality is an essential requirement for building IoT devices that store data, firmware images and credentials on external MCU memory. Throughout the past few Mbed OS releases, we have developed functionality to support many different types of external memories, such as SPI flash and SD card. The storage drivers were developed as external components to allow continuous development and maturity of those drivers before bringing them inside Mbed OS. In Mbed OS 5.10, we are moving the SD, SPI Flash (SPIF) and FlashIAP drivers into Mbed OS. Integration of storage components into the Mbed OS repository makes it easy to use them and allows the simple add-on of default block device and default file system functionality. We added SD, SPIF and FlashIAP block devices under the new component label configured in target.json. Any board with an SD or SPI Flash component enabled has a default block device and file system. For more information, please visit the SDBlockDevice, SPIFBlockDevice and FlashIAPBlockDevice API documentation.
Quad SPI (QSPI) block device driver
With the cost of memory going down rapidly and performance on MCUs increasing every day, devices are storing more data than ever before. QSPI enables faster data transfer compared to traditional flash and used with components such as connectivity modules, displays and others. With QSPI, Mbed OS can communicate with external memories much faster than through SPI because the communication can be up to four lines between the host and a device. We are releasing the QSPI block device driver to enable NOR-based QSPI flash devices that support SFDP. For more information, please visit the QSPI documentation.
Connectivity
Arm Mbed Cordio Bluetooth Low Energy (BLE) stack
Production-ready open source BLE software stack: BLE is quickly becoming the Internet of Things (IoT) connectivity protocol of choice for a variety of use cases, including smart lighting, smart cities and asset tracking, where low cost, power consumption and a small footprint are fundamental requirements. According to the 2018 Bluetooth Market Update, there will be more than 5 billion Bluetooth device shipments by 2022, with 97% of them containing BLE technology. The advances in Bluetooth 5 technology, along with the introduction of Bluetooth Mesh, are driving new market opportunities across building automation, sensor networks and other IoT solutions.
In Mbed OS 5.10, we are adding Arm Mbed Cordio BLE stack to make it easier and more secure for organizations and developers to add BLE to their IoT devices to drive adoption levels to new heights. Arm Mbed Cordio BLE stack is the world’s first open-source, fully-qualified and production-ready BLE software stack, which gives developers even more flexibility in developing new IoT solutions with BLE connectivity. Using Arm Mbed Cordio BLE stack, you can innovate through Bluetooth 5 which supports 2x the data rate, 4x the range and 8x the broadcast capability compared to the previous version, Bluetooth 4.2.
Near field communication (NFC) card emulation mode support
NFC is a short-range radio technology that enables use cases such as contactless payments, access control and device pairing. We are enabling the card emulation mode in Mbed OS 5.10 through an NFC controller or NFC EEPROM. With Mbed OS 5.10, it is now possible to create NDEF messages that can contain device identification, pairing or sensing data. For more information, please visit the NFC API documentation.
Default network interfaces
Mbed OS 5.10 targets that provide network connectivity also provide a default network interface. This can be Ethernet, Wi-Fi, mesh or cellular. Using a default interface allows you to port applications to different targets and connectivity options. Applications no longer require libraries, such as Easy-connect, to be portable.
Refactored Socket API
This release refactors the Mbed OS Socket API by bringing it closer to the POSIX equivalent. The new design contains an abstract socket interface that applications can use directly. Casting Socket pointers back to TCPSocket or UDPSocket is no longer necessary. For most of the applications, these changes are not noticeable because the TCPSocket and UDPSocket classes still emulate previous behavior. The new design also renders the TCPServer API unnecessary, moving its functionality directly into TCPSocket itself. The legacy TCPServer class still exists and is fully functional.
Connectivity stack always builtin
Applications are no longer required to specify FEATURE_NANOSTACK, FEATURE_LWIP or FEATURE_COMMON_PAL to use any of the connectivity stacks that Mbed OS supplies. Those are always included in the build. This change does not increase any flash use because the linker can drop any unused functions.
Connectivity drivers
For easier integration and testing, this release includes some connectivity drivers for external modules, such as the ESP8266 Wi-Fi driver, AT86RF233 driver and MCR20A driver. Now applications using those drivers receive any applicable bug fixes every time they update Mbed OS.
Security
Update to Mbed TLS 2.13
Mbed TLS 2.13.0 introduces several new features improving our support for DTLS over low-bandwidth, high-latency networks with high packet loss.
Specifically:
-
Support for fragmentation of outgoing handshake messages. This allows the use of Mbed TLS across networks with datagram links with MTUs as low as 512 bytes, making it suitable for NB-IOT networks.
-
Grouping outgoing handshake messages in a single datagram, reducing both the network load and the likelihood of reordering effects.
-
Reordering handshake packets that have been received out of order, reducing the number of retransmissions necessary to complete a handshake and therefore increasing handshake efficiency and reducing network load.
For more information, please visit https://tls.mbed.org/tech-updates/releases/mbedtls-2.13.0-2.7.6-and-2.1.15-released
Targets and tools
Thanks to our Partners’ hard work, Mbed OS 5.10 added 10 new target platforms and now supports 145 target platforms. Here’s a sneak peek at the new Mbed Enabled targets added since Mbed OS 5.9 in alphabetical order:
-
Advantech WISE 1530 - https://os.mbed.com/modules/advantech-wise-1530/
-
Avnet AT&T WNC M14A2A Cellular LTE kit - https://os.mbed.com/components/Avnet-ATT-WNC-14A2A-Cellular-IoT-Kit/.
-
Nuvoton NUMAKER_PFM_M2351 - https://os.mbed.com/platforms/NUMAKER-PFM-M2351/.
-
NXP FRDM-KL82Z - https://os.mbed.com/platforms/FRDM-KL82Z.
-
NXP I.MXRT1050_EVK - https://os.mbed.com/platforms/MIMXRT1050-EVK/.
-
NXP LPCXpresso54628 - https://os.mbed.com/platforms/LPCXpresso54628/.
-
Sigma Delta Tech SDT51822B - https://os.mbed.com/platforms/SDT51822B/.
-
Sigma Delta Tech SDT52832B - https://os.mbed.com/platforms/SDT52832B/.
-
ST Discovery L496AG - https://os.mbed.com/platforms/ST-Discovery-L496AG/.
-
Toshiba TMPM46B - https://os.mbed.com/platforms/TMPM3H6/.
-
Toshiba TMPM3H6 - https://os.mbed.com/platforms/TMPM46B/.
We’ll continue to add targets in our biweekly patch releases as Partners work with us on support.
Compatibility Issues
Mbed-bootloader (https://github.com/ARMmbed/mbed-bootloader), is the repository used to create the bootloader binary which is used by Pelion Client. Currently this repository is not compatible with MbedOS 5.10 but with Mbed OS 5.9.4. It will however create a bootloader binary which is compatible with Pelion Device Management Client 2.0.0 compiled with MbedOS 5.10.
We will be adding MbedOS 5.10 compatibility in upcoming releases of Mbed bootloader
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.
TLS: 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 EXPERIMENTAL stage, use it on your own responsibility!
- Reported Issue: Issue reported by a customer in email.
- Priority: MAJOR
TLS: 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
TLS: 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 is very dependent on the application, and what features of the library it chooses to use. Obviously 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
TLS: 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
Tools: 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
Tools: Mbed OS tools have issues with python 3.x
- Description: A number of issues have been found when using Python 3.x with the Mbed OS tools
- Workaround: Use Python > 2.7
- Reported Issues: #8146 , #8202
- Priority: Major
Tools: Error when running mbed test --compile/run list
- Description: The error, "pkg_resources.DistributionNotFound: The 'mbed-ls==1.*,>=1.5.1' distribution was not found and is required by icetea, mbed-flasher" is observed when running the command "mbed test -m K64F -t ARM --icetea --compile-list -vv".
- Workaround: None
- Reported Issues: #8064
- Priority: Major
Platform: Realtek RTL8195AM does not define flash algorithms for uvision
- Description: No flashing support in uvision for Realtek RTL8195AM
- Workaround: Use drag-n-drop programming
- Reported Issue: #4651
- Priority: Minor
Platform: 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.
- Workaround: None
- Reported Issue: #5640
- Priority: Major
Platform: ARM_CM3DS_MPS2 targets do not have Ethernet driver
- Description: Ethernet driver interface was refactored for Mbed OS 5.9. ARM_CM3DS is not yet ported.
- Workaround: None
- Reported Issue: -
- Priority: Major
Platform: Ublox ODIN W2 crashing with latest client
- Description: Ublox ODIN W2 board is often crashing when using Mbed Cloud Client. Root cause unclear.
- Workaround: None
- Reported Issue: Internal issues: ONME-3665, ONME-3672, ONME-3692
- Priority: Major
Core: Some boards are crashing when lots of data is sent and received through buffered serial.
- Description: This is currently known to affect Ublox ODIN W2 and RTL8195AM.
- Workaround: None
- Reported Issue: #8081
- Priority: Major
Platform: Realtek RTL8195AM not passing networking tests
- Description: RTL8195AM is not passing Mbed OS socket or WiFi tests. Various problems exist.
- Workaround: None
- Reported Issue: #8124
- Priority: Major
Tools: Mbed CLI dm init fails to load certificate
- Description: When running the command mbed dm init -d "xxxxxx" --model-name "yyyyyy" ,
the following error is observed: "[CRITICAL] 2018-09-05 14:19:28 - manifesttool.init - Error setting
defaults: Error loading .update-certificates\default.der: Unable to load certificate". - Workaround: None
- Reported Issue: Internal reference: IOTUC-593
- Priority: Major
Tools: Mbed CLI dm init command - reports bad country code when certificate expiration changed
- Description: Run the command, mbed dm init -d "xxxxxxx" --model-name "yyyyyy" --force, using values
that are known to work and a country code of 'US'. The following error is observed:
"[CRITICAL] 2018-09-05 14:28:42 - manifesttool.cert - Error creating certificate: Country name must be a 2 character country code"
A fix will be added for this in mbed-os-5.10.1. - Workaround: Using the -q flag will stop the country, region code etc from being requested and instead
take default values. - Reported Issue: Internal reference: IOTUC-597
- Priority: Major
Contents
Fixes and Changes
DAPLink 0250 release: During the 5.10 development cycle, we created DAPLink 0250. This improves the drag-and-drop programming experience when using the Mbed OS bootloader. We recommend anyone using DAPLink upgrade to this version.
7974
Update Mbed TLS to version 2.13.0
7967
ESP8266: Fix compilation error when default interface is enabled
7952
Prevent sector-unaligned erase
7910
Cellular: Fix Greentea test for network attach
7907
Update mbed-coap to version 4.6.2
7899
Bluetooth 5 Phy support
7895
Lora: Remove duplicate LinkCheckReq MAC command
7894
Cellular: CellularDevice unittests fix initialization
7878
Corrected mbed-mesh-api thread/6lowpan tasklets interface disconnect/connect
7875
Update CMSIS to 5.4.0
7873
realtek: fix #7829 - remove dhcps files
7872
Add ThisThread namespace and deprecate static Thread methods
7871
Update linker files for NUCLEO_F207ZG and enable bootloader functionality
7870
Cellular: Support for GPRS dial-up
7869
BLE: Cordio going open source
7868
Disable MBEDTLS_HAVE_DATE_TIME as ARMCC does not support gmtime
7860
Cellular: Allow cellular modules to override network registration mode
7857
Cellular: Make AT_CellularStack socket array multi-thread safe
7854
Nanostack patch release for Mbed OS 5.10
7851
littlefs: Fixed issue with cleanup in mount function on error
7848
Message ID in CAN constructor needs to be unsigned
7846
Tools: Use Distcc when it's configured
7844
Implement device management subcommand
7840
WISE_1570 greentea tests
7839
Lora: Change visibility of LoRaMac internal methods as private
7828
Platform: Add C++ Span class.
7825
Silicon Labs QSPI HAL implementation
7822
Add initial NFC support to Mbed OS
7819
Unit testing framework
7818
Allow ThreadInterface::device_eui64_get() before connect()
7817
standardise QSPI pin names
7816
Lora: Refactor duty-cycle configuration and introduce config for JOIN request
7815
Re-add Shared Pointer Class into platform features
7814
Connectivity drivers
7812
Update greentea tests to use default interface
7806
LoRaWAN: Fixing Hard fault in CN470 PHY layer
7805
Skip Greentea tests for Mbed OS code coverage on Fast Models
7802
LoRaWAN: Custom FSB selection in US and Australian regions
7795
Cellular: Add getters for device and serial to EasyCellularConnection
7794
Update Mbed 5 boot sequence
7793
Template specialization didnt work after addition of default constructor
7792
Build tool fixes for Musca support
7783
Add QSPI
7781
Add thread safety to CRC class
7780
Rename nanostack configuration (.cfg) files
7778
Fix MeshInterface::get_default_instance()
7774
Add default block device support (SD, SPIF and FLASHIAP)
7773
Add some logic related to initialization to various block devices
7770
LoRa: Fix MAC initialization for connection with parameters
7767
Lora: Fix TX_ERROR event if corrupted msg is received for CONFIRMED request
7757
Revert "Move BlockDevice classes inside mbed namespace"
7751
Realtek RTL8195A wifi interface to inherit EMAC interface
7745
Icetea support
7739
Update mbed-coap to version 4.6.1
7737
Nanostack release for Mbed OS 5.10
7735
Optimized CRC implementation - (32-bit ANSI polynomial)
7728
PR template: Feature -> functionality change
7727
CircularBuffer: volatile specifier removal
7726
Update BLE error calls to use new error codes and mbed_error
7714
Add BOOTLOADER feature
7713
LittleFS: Update to version 1.6
7705
FlashIAP: Add a ROM end macro
7692
netsocket: astyle fix
7683
Renesas : Improve LWIP speed
7677
Cellular: Gemalto Cinterion support for ELS61 and BGS2
7673
Fixing import paths of memap.py when excuted as a script
7667
Cellular: Add CellularDevice::init_module API to be called at startup
7663
Move BlockDevice classes inside mbed namespace
7662
Add Error Decoding URL to error report
7646
Tools: Fix incrimental compile dep tracking
7644
Tools: Scan for "components"
7623
Tools: Omit include path parents when they're scan rules
7619
UBLOX cellular api's for UDP and TCP
7608
Tools: Correct win_to_unix
path handling
7601
LoRaWAN: Reduced priority for automatic uplinks & higher data rate usage for connection establishment
7599
Fix double low power ticker interrupt
7592
Remove uVisor from mbed-os
7590
Tools: Differential Memap
7587
Allow legacy TCPServer::accept() to override inherited Socket::accept()
7579
Update ODIN drivers to v3.0.0 RC1
7569
Tools: Add Uvision6 exporter
7567
Tools: Generate update images with managed bl mode
7564
Cellular: Make ATHandler::cmd_start() virtual
7561
Design process and template for Mbed-OS
7559
Export: Support Make + ArmC6 + v8m
7558
Tools: Select compiler based on arch version
7524
Fixes for tickless and LPTICKER_DELAY_TICKS
7523
Add bootloader configuration parameters for MAX32625PICO
7508
Ticker free() - requirements, pseudo code, tests, implementation
7495
LoRaWAN: Reporting scheduling failures
7459
LoRaWAN: FRMPayload size validity
7430
Lora: Add support for runtime PHY selection
7426
NFC APIs Design Specification
7423
Fix issue #6872 - Mutex lock has possibility to fail at runtime (returning status flag)
7417
Cordio Documentation: Explain how to tests and what tools are available.
7414
Added json options for nanostack heap statictics
7402
Replace mbed_mem_tracing_enabled macro with config option
7399
Bug fix for receive windows
7389
Update nsdynmemlib in frameworks/nanostack-libservice
7364
Fix storage rtos types - remove including internal header file
7336
Fix connected UDPSocket filtering
7335
LoRaWAN: Refactoring LoRaRadio::receive(uint32_t) API
7294
Add CPU stats for greentea tests
7287
Remove FEATURE_LWIP
7277
Tools: Persist config errors until validation occurs
7243
Disable XTS cipher mode by default when importing Mbed TLS
7221
Cordio: Add tests that validates a cordio port.
7217
Cellular: Add AT+CCID and AT+CGSN
7212
FlashIAP & NVStore tests: Skip test if overwriting code in flash
7192
Create abstract Socket interface
7183
Tools: Extract resources object and implement incremental scan
7174
tools: crash_log_parser: make ELF and MAP parameters optional
7163
Cordio driver hook
7148
Tool, build_release: Return nonzero when builds fail
7145
NRF52: add a separate .nvictable section and allow .noinit to be used
7133
Override ROM/RAM start/size for TrustZone targets
7099
Add reference counter for platform context
7090
Add non-blocking write function for USBCDC
7061
Tools: Include configuration in ASM
6999
Extend feature which displays errors/warnings as Link
6929
STM32 : script to generate PeripheralPins.c for new target addition
6582
Implement zoomable html-flamegraph memap output
8022
Update Mbed TLS version to 2.13.1
8020
Update mbed-coap to version 4.6.3
8016
[OOB 5.10] Fix typo
8015
QSPI driver: API parameters fix
8012
IOTCORE-389 - bring back legacy alignment for Arm C6
7995
Reverting PinNames.h after PR #7774 changes
7991
fix example code in QSPI.h
7990
DISCO_L475VG_IOT01A remove old QSPI pins
7988
Unittesting: Update mutex stub
7985
Unittesting: Update Mbed CLI subcommand in Readme
7971
Fix memory reservation for Softdevice in NRF52_DK
7964
NFC: fix reading from NFC EEPROM
7950
Fix memory allocation on STM32L4 devices
7924
Add special handling for "/default" filesystem
7893
Lora: Improve description of callback methods
7824
Use MbedCRC for LittleFS
7803
Add Socket test plan
7720
python scripts : table print with github policy
8140
requiremnts: Bump IceTea
8137
Icetea hw restriction
8123
Unit tests: fix coverage exclude paths on Windows
8100
Allow storage doxy to build
8092
Fix quotes around gcovr install command for Windows
8086
Fix SocketAddress unittests
8079
BUGFIX: Remove account management API calls from DM
8075
Syncronize mbed-ls minimum version with icetea requirements
8066
Move unittest paths to hyphens
8063
mbed dm
: Accept api key and host on the command line
8031
Fix TCPServer::accept()
8017
IAR: Fix for #7662, only massage the error decode URL for the IAR .xcl
7945
Move SYNCHRONOUS_DNS_CACHE test to extended set
7909
Adjust STMF411xE IAR linker file to mbed-os memory needs.
Testing and improvements
Icetea test framework: Icetea is an automated testing framework for Mbed development. It automates the process of flashing Mbed boards, running tests and accumulating test results into reports. Developers use it for local development as well as for automation in a Continuous Integration Environment. Icetea allows you to execute commands remotely via the command line interface in a device under test. More information is available at https://github.com/ARMmbed/icetea
Support for unit tests: Unit tests enable testing of code in small sections on a host machine and don’t require embedded hardware. Unit testing takes place in a build environment where you test each C or C++ class or module in isolation. This means you build test suites into separate test binaries and stub all access outside to remove dependencies on any specific embedded hardware or software combination. This results in much faster testing using native compilers on the build machine. For more information, please visit our unit testing documentation.
Support for Fast Models: Arm Fast Models are software models of Arm cores, subsystems, peripherals and so on. Mbed OS has enabled working with Cortex-M family Fast Models. You can run Mbed OS on the software model instead of the hardware. This give users the flexibility of running and testing Mbed OS and its applications in a hardware-free environment. For the details of running Mbed OS on Fast Models, please visit the Fast Models documentation.
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 infrastructure, which tests the submitted code across multiple platforms using three toolchains: 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 exports properly to all the compilers.
-
We merge the PRs only if all the above procedures are successful.
Below are the summary results for testing conducted for Mbed OS 5.10.0:
-
Total test time is 40,293 hours on actual development boards.
-
We have added 292 new test cases since the Mbed OS 5.9.0 release to test new and existing features on Mbed OS. The number of total test cases is 1,316.
-
The total number of binaries built since the Mbed OS 5.9.0 release is 46,270,224.
Using this release
Arm Mbed CLI
When you create a new program, Mbed CLI automatically imports the latest Mbed OS release. Each release includes all the components: code, build tools and IDE exporters. If you want to update your Mbed OS version or existing program to Mbed OS 5.10.0, run the CLI command mbed update mbed-os-5.10.0.
Arm Mbed Online Compiler
When you create a new program, the Mbed Online Compiler automatically uses the latest Mbed OS release. If you want to update your Mbed OS version, right click on mbed-os library, and press update.
GitHub
You can also fetch this release from the mbed-os GitHub repository, using the tag "mbed-os-5.10.0".
If you need any help with this release please visit our support page, which provides reference links and details of our support channels.