We are pleased to announce the Mbed OS 6.9.0 release is now available.
Summary
The main new functionality delivered as part of this release is support for the current 1.2 version of the TF-M reference software provided by the Trusted Firmware project. TF-M is our recommended secure side software for a Platform Security Architecture-compatible MCU platform. You can find out more on the 1.2 features here: https://www.trustedfirmware.org/blog/tfm-v1-2-blog/
Both the Arm provided PSA platforms, the Musca B1 and Musca B2 have been updated to support this new version of TF-M.
Migration Guide
This section lists specific changes which are part of this release and may
need special attention.
Fix Lora timer cancellation
Summary of changes
Fix abusive use of LoRaWANTimer::stop
. Events were cancelled even when they were being executed or after their execution.
This change reset the event ID to 0 before calling the callback.
A new API has been added to achieve this task: LoRaWANTimer::clear
CMake: support signing TF-M targets with post binary hooks
Summary of changes
Changes:
- Add a post binary hook to sign TF-M targets:
mbed_post_build_tfm_sign_image()
(should work for any TF-M v1.2+ targets with secure and non-secure images in separate MCUboot slots). This was refactored from the existingtools/targets/ARM_MUSCA.py
. - Apply the signing hook to ARM_MUSCA_B1 and ARM_MUSCA_S1 targets.
- Copy the signing keys to each target's own directory, as per the new tools' convention (the old key paths are kept for compatibility of CLI 1 - to be deleted eventually).
Impact of changes
Images built for Musca B1 and S1 with Mbed CLI 2 are now signed and able to run on the targets.
Migration actions required
None.
Update TF-M support to v1.2
Summary of changes
This PR brings in all the changes to update trusted-firmware-m support from v1.1 to v1.2:
- Mbed TLS 2.24.0 as required by TF-M v1.2
- TF-M v1.2 targets: PSA APIs from TF-M
- Support for ARM_MUSCA_B1 and ARM_MUSCA_S1 (configurations, bootloader binaries, secure binaries and signing scripts, etc.)
- Continued availability of
psa_set_key_enrollment_algorithm()
- deprecated, included for backward-compatibility only, to be removed from future TF-M updates - Miscellaneous fixes to make sure all supported PSA targets work, see the commit history for details
- Changes in the trusted-firmware-m (link) and tf-m-tests (link) repositories to enable Mbed OS integration. Note that some of the changes have been upstreamed.
Just as before this update - CYTFM_064B0S2_4343W remains on TF-M v1.0, supporting mbed-os-example-psa but not mbed-os-tf-m-regression-tests. Any updates to this target are maintained by Cypress.
- Mbed PSA (non-TF-M) targets (e.g. K64F) continue to support mbed-os-example-psa. Note that Mbed PSA's APIs currently lag behind these of TF-M.
The following have been removed: - ARM_MUSCA_A as an Mbed target
- Integration of TF-M v1.1 (replaced by v1.2)
<TARGET>_NS
aliases for ARM_MUSCA_B1 and ARM_MUSCA_S1
Not yet included in this PR, to be added in the very near future:- Image signing for ARM_MUSCA_B1 and ARM_MUSCA_S1 with Mbed CLI 2. Until we add this, please use Mbed CLI 1 for now.
Impact of changes
See the PR description for targets that are impacted.
Migration actions required
From the perspective of Mbed OS support, applications for ARM_MUSCA_B1 and ARM_MUSCA_S1 should continue to work as before.
A board running the TF-M v1.1 firmware should be able to update to the v1.2 firmware without resetting data (verified on Musca targets), though downgrading is not possible.
Any references to ARM_MUSCA_B1_NS
and ARM_MUSCA_S1_NS
as target names should be changed to have _NS
removed from the names.
Add lw ip opttion for rdnss
Summary of changes
Added Options to turn on RDNSS using from ICMPv6 Router Advertisements (RFC5006)
and output packet queueing.
Default setting in mbed_lib is the same as before and leaving features to be turned off.
Impact of changes
RDNSS option takes about 256 bytes of flash and each DNS entry needs 128 bytes of RAM.
Outgoing packet caching avoids dropping packets during MAC address resolution. Requires increased RAM size for lwIP.
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 section 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: 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
TLS: Hardware-accelerated hash creates CBC padding oracle in TLS
- Description: The current countermeasures against CBC padding oracle attacks in Mbed TLS call a low level internal API. The implementation of this API might not be possible with the hardware accelerator API and even if it is, the timing might still have detectable differences. The lower level API is called out of sequence and accelerators that are not aware of this might crash.
- Workaround: Keep
MBEDTLS_SSL_ENCRYPT_THEN_MAC
enabled inmbedtls/config.h
and enable the Encrypt-then-MAC extension (RFC7366) on the peers side. - Reported Issue: Reported by the development team.
- Priority: MAJOR
Crypto: Mbed OS ATECC608A example fails to build with IAR
- Description: The current ATECC608A secure element example fails to build with the IAR toolchain. The Microchip-provided cryptoauthlib library does not build with IAR.
- Workaround: Use a different toolchain, like GCC_ARM.
- Reported Issue: MicrochipTech/cryptoauthlib#116
- Priority: Minor
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
Wi-SUN Hardfaults with IAR compiled image with Mbed OS 5.15.0
- Description: Mesh Wi-SUN FAN may HardFault in rare occasions with IAR8 compiled binaries during initial network connection.
- Workaround: The workaround is to use other compilers.
- Reported Issue: IOTTHD-3898
- Priority: Major
Test Report
Release automated CI test
In addition to regular Pull Request tests and Nightly test, we also ran a nightly release test on mbed-os 6.9.0-RC1
Results for the tests we run in CI on mbed-os 6.9.0-RC1 (nightly):
- Build Greentea ARMC6 - SOME FAILS (Issue: MBEDOSTEST-1163 - ARMC6 Failed to build mbed OS with LTO options)
- Build Greentea GCC_ARM - ALL PASSED
- Build Examples ARMC6 - ALL PASSED
- Build Examples GCC_ARM - ALL PASSED
- Build Cloud Examples ARMC6 - ALL PASSED
- Build Cloud Examples GCC_ARM - ALL PASSED
- Build CMAKE Examples ARMC6 - ALL PASSED
- Build CMAKE Examples GCC_ARM - ALL PASSED
- Unittest Test matrix - ALL PASSED
- GreenTea test matrix - ALL PASSED
- Sporadic failure for connectivity-netsocket-tests-tests-network-interface test suite is observed on hardware boards such as K64, K66F, NUCLEO_F429ZI, and NUCLEO_F767ZI. These are observed only for test performed againt our hardare lab. Tests are passing consistently on local boards. This is strongly believed to be an infrastructure issue in our hardware lab and being addressed.
- Examples test matrix - ALL PASSED
- CMAKE Examples test matrix - ALL PASSED
- Exporter Test - SOME FAILS (Issue: IOTCORE-1663 - Nightly: Export uvision failing with missing context fault handler)
- Cloud Client integration Test - ALL PASSED
- Memory Usage Test - ALL PASSED
Toolchain Coverage
In the mbed OS 6.9.0 release. we are testing the following toolchains:
- ARM compiler 6.15.0
- GCC_ARM 9-2019-q4-major
Targets Coverage
In mbed OS 6.9.0, the compilation test targets scope has not changed and remains all mbed OS enabled targets.
At the time of the mbed-os 6.9.0 release, we run the greentea tests on the following targets:
- ARM_MUSCA_S1
- DISCO_L457VG_IOT01A
- K64F
- K66F
- NRF52840_DK
- NUCLEO_F429ZI
- NUCLEO_F767ZI
- NUCLEO_WB55RG
We have the following issues on the test jobs:
- MBEDOSTEST-1163 - ARMC6 Failed to build mbed OS with LTO options
- IOTCORE-1663 - Nightly: Export uvision failing with missing context fault handler
Test Numbers
Greentea test number 1675 (+0)
Unittest number 743 (+0)
Code Coverage
Test Code Coverage been tracked and information is published on COVERALLS
Memory Monitoring
Observed no significant changes from mbed-os-6.8.0
Contents
Ports for Upcoming Targets
Fixes and Changes
14423
STM32: AnalogOut: do not call HAL_DAC_Start in dac_write
14422
Fix Lora timer cancellation
14419
STM32: remove mbed.h include in connectivity
14418
EP_ATLAS: Fix mbedtools build errors
14416
CMake: Fix FF1705_L151CC build
14411
CMake: Fix Cortex-A9 flags for GCC_ARM toolchain
14410
CMake: Fix Renesas build error on Linux
14407
Add integer overflow check to the malloc wrappers
14403
update baud rate of CY8CKIT064B0S2_4343W to 115200
14402
Fix sys/stat.h issue for unit tests on macOS
14401
Workaround for Cortex-M33 Arm toochain linking
14393
Doc update: post build now supported on TF-M targets
14392
STM32WB: enable QSPI for custom boards
14391
Update secure binaries with platform init fix for ARM_MUSCA_S1
14390
Add extern "C" around am_hal_secure_ota.h functions
14387
Update serial_api.c - Issue #14353 - Setting BufferedSerial pin to NC throws runtime assertion
14386
Freescale: Remove IAR from list of supported toolchains
14380
CMake: Refactor target MCU_STM32F103xE library name
14379
Nuvoton: Enlarge NuMaker PWM duty cycle range
14378
CMake: Pass application/test name to post build operation
14376
CMake: Add mbed-cmsis-cortex-m into Nuvoton target
14375
CMake: Update readme for greentea test build procedure
14374
targets: Remove target. prefix from ARM-CM3DS-MPS2 override
14373
Add bare metal support to Nuvoton targets
14372
S1SBP6A: Add bare metal support
14368
Fix CMake include path for the minimal-printf test
14367
fix typo: replace underscore by hyphen in lwipstack/mbed_lib.json
14363
Add bare metal support to Silicon Labs targets
14362
Fix imgtool import for CYTFM_064B0S2_4343W signing
14361
CMake: support signing TF-M targets with post binary hooks
14355
CMake - Configure memory map per target to allow multiple add_executable
14354
Update TF-M support to v1.2
14351
STM32 - Add if !defined check for USE_HAL_XXX_REGISTER_CALLBACKS
14350
ARM_MPS2_Target: Fix conflicts in IAR configuration
14349
Add bare metal support to Nordic targets
14348
Add bare metal support to ARM FM targets
14347
Add bare metal support to Ambiq targets
14346
Add bare metal support to Analog Device targets
14345
Add bare metal support to Toshiba targets
14344
CMake: Fix PSOC6 post build script
14343
Add lw ip opttion for rdnss
14342
use calloc for new_interface_server
14341
Update stm32xx_emac driver traces
14340
STM32L5: enable USBDEVICE
14339
STM32F4 update drivers version to CUBE V1.26.0
14338
STM32: update readme with clock information
14337
STM32L1 update drivers version to CUBE V1.10.2
14334
CMake: Remove references of APP_TARGET
14328
CMake: Fix Greentea tests
14325
EP Atlas Target Updates
14323
Bring in MIMXRT1050_EVK changes from feature-wisun branch
14321
Mergify: remove stale label when PR is merged
14318
CMake: Fix path to STM32F0 GCC linker scripts
14316
MAX32625: Fix CMake build
14315
NUVOTON: Remove CMake listing of M261 include directory that do not exist
14314
CMake: Fix ARM MUSCA NS targets build
14313
CMake: Fix Cortex-M33 GCC build
14311
CMake: Fix Cortex-A9 builds with GCC_ARM
14306
CMake: Create CMSIS library targets to remove dependency on MBED_TARGET_LABELS
14305
BLE: fix indexing of array in Cordio host stack
14304
CMake: Refactor post-build hook to remove APP_TARGET references
14303
Add STM32F103xE SOC support
14301
Add bare metal support to Renesas targets
14300
Add bare metal support to ARM_MPS2_Target family of targets
14299
CMake: Refactor mapfile generation
14298
CMake: remove debug print
14295
CMake remove IAR references in the tree
14293
STM32L4 : align CMakeLists.txt with all STM32
14291
Add bare metal support to freescale targets
14271
Add .editorconfig file
Using this release
You can fetch this release from the mbed-os GitHub repository, using the tag "mbed-os-6.9.0".
If you need any help with this release please visit our support page, which provides reference links and details of our support channels.