Skip to content

mbed-os-6.10.0

Compare
Choose a tag to compare
@mbedmain mbedmain released this 26 Apr 13:16
· 1699 commits to master since this release

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

Summary

The main feature we are releasing is to introduce a new standard for the definition and usage of pin-names, with the goal of simplifying this for Mbed developers looking to port their code between development boards. We'll publish a blog providing more details shortly, and would like to publicly thank both Analog Devices and ST Microelectronics for their contributions and collaboration on these changes.

Migration Guide

This section lists specific changes which are part of this release and may
need special attention.

Remove ownership/acquire in QSPI/OSPI driver

14437

Summary of changes

This PR removes the concept of peripheral acquisition and ownership in the QSPI driver. Its implementation is currently incomplete and undocumented, and has caused problems in some cases (see 11230 12678 12680).

Impact of changes

In cases where multiple instances of QSPI/OSPI are used with the same underlying peripheral, the QSPI/OSPI driver will no longer re-initialize the underlying peripheral to the appropriate configuration when switching instances. The application must call init when switching instances.

BLE: replace obsolete services with the new services repo

14436

Summary of changes

We are removing the old and broken ble services in favour of the external services repository.

Standard Pin Names

14381

Summary of changes

This PR introduces standard pin names for Mbed and migrates a number of ST targets to this standard. It also includes compliance testing tools based on static analysis and Greentea tests, and adds target markers to PinNames.h files so that they can be reliably matched to their corresponding target.

Implement polymorphism for DigitalIn/Out/InOut

13209

Summary of changes

In some IO-constrained applications, it is necessary to use a GPIO expander like the I2C-based MCP23008. To maintain compatibility with existing libraries that require a DigitalIn/Out/InOut handle, it would be beneficial to be able to subclass one of these classes and retarget the read/write, etc calls. This would enable an MCP23008 driver to provide DigitalOut-like objects that abstract away the intermediate I2C transfers. These objects can then be passed to older APIs using DigitalOut pointers.
For this to work properly, some of the DigitalIn/Out/InOut class methods must be made virtual. This PR accomplishes this.
I would encourage Mbed to consider "virtualizing" many of the other hardware drivers for similar use cases.
See #12387 for a similar discussion concerning retargetting Mbed's CAN API to an external SPI-based CAN controller/transceiver.

Impact of changes

None. This should not affect current users of these APIs in any functional way. Code size may be slightly increased due to the addition of virtual tables and new functions.

Migration actions required

None

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 in mbedtls/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

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.10.0-RC1

Results for the tests we run in CI on mbed-os 6.10.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
  • Build CMAKE Cloud Examples ARMC6 - ALL PASSED
  • Build CMAKE Cloud Examples GCC_ARM - ALL PASSED
  • Unittest Test matrix - ALL PASSED
  • GreenTea test matrix - ALL PASSED
  • 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.10.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.10.0, the compilation test targets scope has not changed and remains all mbed OS enabled targets.

At the time of the mbed-os 6.10.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
  • FPGAs on K64F, NRF52840_DK, NUCLEO_F429ZI, NUCLEO_F767ZI, NUCLEO_WB55RG, and DISCO_L457VG_IOT01A

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 1721 (+0)
Unittest number 742 (-1)

Code Coverage

Test Code Coverage been tracked and information is published on COVERALLS

Memory Monitoring

Observed no significant changes from mbed-os-6.9.0

Contents

Ports for Upcoming Targets

14259
Support STM Nucleo-G431RB

Fixes and Changes

14546
CMake: Fix mbed-802.15.4-rf driver

14545
examples: Deprecate mbed-os-example-bootloader

14543
Fix Unbuffered serial enable/disable issue on Cypress kits

14541
Increase baud rate of mbed-os-example-crash-reporting to 115200

14532
Make ticker computation use shift-by-0

14529
CMake: Fix Mbed TLS compilation on Cortex-M0/0+/1/M23

14527
Tests: use only NUCLEO_F401RE for the NFC examples

14524
M487: Adjust placement of SYS_UnlockReg in WDT reset code

14521
Updated TARGET_STM32 board pinMap_PWM table with GPIO_NOPULL

14516
CMake: remove MBED_PATH and use _SOURCE_DIR/MODULE_PATH instead

14511
BLE: Fix start scan command not returning error if parameters haven't been set

14507
make target list for applications in examples_cmake.json consistent with examples.json

14506
Add GattUpdatesEnabledCallbackParams struct

14499
STM32F1 update drivers version to CUBE V1.8.3

14496
STM32: cleanup around devicename information from CMSIS pack

14491
Update FPGA documentation

14486
CMake COMPONENT_BlueNRG_MS: fix mbed-ble

14485
STM32: RTC HSE support review changes

14483
Improve HeapBlockDevice, TDBStore and tests

14482
STM32L4: align all system_clock files

14481
STM32WL: update "lora.max-sys-rx-error"

14480
STM32: Standard Pin Names

14479
STM32L1: enable USBDEVICE

14478
STM32L1 : enable ADC after deepsleep

14477
STM32: Add STM32L5 in arm_pack_manager index file

14473
Update cmake supported example list

14472
CMake: support OUTPUT_EXT from targets.json

14469
STM32: remove critical sections in flash_program_page

14467
Musca targets: align and clean up configurations

14466
GigaDevice: Add bare metal support for targets

14465
Maxim: Add bare metal support to targets

14463
Wisun: Add new start methods to Wi-SUN BR with WisunInterface parameter and deprecated the old ones

14460
Ambiq: Fix baremetal build profile when using CLI 1

14457
Update UART pin names & add MBED_CONF_TARGET_STDIO_UART overrides

14455
Fix RTOS & OS wrapper header conflicts for Mbed CLI 1

14450
FPGA SPI : decrease test frequency for ASYNC test cases

14447
Remove paths to fetched TF-M repos from .gitignore

14445
STM32WB/STM32WL: watchdog LSI frequency

14444
STM32: reset GPIO value is analog mode

14442
Improve WisunInterface set_network_size docs

14438
Update Event Queue Documentation

14437
Remove ownership/acquire in QSPI/OSPI driver

14436
BLE: replace obsolete services with the new services repo

14435
Fix missing linkage of mbed-mbedtls-cryptocell310 to mbed-mbedtls

14429
CMake: Fix STM target build failures

14428
CMake targets: remove labels usage, not required anymore

14424
WIO_BG96: fix macro exclusion - use cellular

14421
SDP-K1: enable IAR compilation

14396
TF-M: Switch to vanilla TF-M's OS wrapper

14381
Standard Pin Names

14359
Add bare metal support to NXP targets

14259
Support STM Nucleo-G431RB

14243
STM32: Add HSE support to RTC

14198
Feature bluetooth traces

13209
Implement polymorphism for DigitalIn/Out/InOut

Using this release

You can fetch this release from the mbed-os GitHub repository, using the tag "mbed-os-6.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.