Skip to content

mbed-os-5.14.0

Compare
Choose a tag to compare
@adbridge adbridge released this 25 Sep 12:15
· 8215 commits to master since this release
b6e5a0a

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

Summary

This release continues to improve and stabilize Mbed OS. We added a static mode for the event queue, which doesn't require using dynamic memory. This aligns the event queue's memory usage with other parts of the system, including RTOS. You can still use dynamic memory, but if you are worried about memory fragmentation or know your memory requirements upfront you can only rely on static memory. We updated the version of C++ standard to C++14, to leverage modern features of the language. We implemented multiple changes to our connectivity, including PPP support for the Nanostack and enterprise security for WiFi. A big item that we started working on is splitting our public interfaces from the internal code; the work for the OS core is done, and we'll continue this work in future releases for other parts of the system. It will add clarity and help our users use only public and stable APIs. We introduced a minimal version of the standard library printf family calls, which addresses most of the common use cases in a fraction of the memory footprint. We continued to update our PSA support to track the upstream development in PSA and Trusted Firmware. We doubled our effort in tracking and fixing Coverity warnings, reducing the number by 50%.

Compatibility

This release is compatible with Device Management Client 4.0.0

Migration Guide

This section lists changes that may require your attention.

Update Mbed OS for PSA Crypto API 1.0b3

11315

Background

Mbed Crypto is our implementation of the PSA Crypto APIs. We shipped an implementations of prerelease versions of the PSA Crypto API in Mbed OS 5.11, 5.12, and 5.13, with a warning in the documentation that these APIs were subject to change and that we did not intend to maintain backwards compatibility with them. The PSA Crypto API has continued to develop and change over the past few months and a number of breaking changes have been made since the pre-release version we based our Mbed Crypto implementation on.

What is being broken?

The PSA Crypto APIs in Mbed OS as shipped in Mbed OS 5.13 are breaking.

PSA Crypto API 1.0b3 API breaking changes, addressed in Mbed OS 5.14 (see #11315)

  • Use key attributes structures for key creation
  • Make generating or importing a key also allocate the key
  • Update key derivation functions to accept chunked inputs
  • Update key agreement API
  • Align PSA Crypto error codes with other PSA error codes
  • Rename functions for consistency with each other and the rest of PSA
  • Be consistent in use of stdint types

Expected PSA Crypto API 1.0 API breaking changes, to be addressed in the next Mbed OS release

  • None

Why is it being broken?

Mbed Crypto needs to track the upstream PSA Crypto API as maintained by ATG in order to pass ATG's PSA Compliance Kit tests. The PSA Crypto API was not yet finalized in Mbed OS 5.13 and continues to evolve. We shipped an implementation in Mbed OS 5.13 to enable other teams working on Mbed OS to develop their services a top APIs that should be mostly similar to the final APIs, rather than save up all the integration pain for a later Mbed OS release when the APIs are finalized.

Analysis of impact on users

There should be no surprises to users based on our statements of PSA API instability. We've worked with Mbed TLS, Pelion Client, Storage (ITS), SPM, and Attestation teams to ensure the message of API instability was understood and to coordinate our changes to the API. There are potentially other users of the PSA Crypto API, and our documentation states the stability level of the API for these users.

Alternatives

We could continue to provide the version of the PSA Crypto API shipped with Mbed OS 5.13, but to save flash size and reduce the maintenance burden of maintaining an API we clearly communicated we'd be breaking in the next release, this was deemed not worth the cost.

Mitigation and migration path for users

Users must update to use the new version of the API.

Renaming of key pair names

Replace KEY_PAIR in names that would have used KEYPAIR in the previous API version. For example, PSA_KEY_TYPE_ECC_KEY_PAIR replaces PSA_KEY_TYPE_ECC_KEYPAIR.

Using persistent keys

Use psa_open_key() to open a persistent key. Previously, volatile keys could also be opened. With PSA Crypto API 1.0b3, keys are implicitly opened for you upon import, generation, or derivation.

psa_status_t psa_open_key(psa_key_id_t id,
                          psa_key_handle_t *handle);

Only persistent keys can be opened, so there is no need to pass the lifetime anymore.

It is no longer necessary to call psa_create_key() to make a key persistent. A key is persistent if it is created with a lifetime other than PSA_KEY_LIFETIME_VOLATILE. As part of key creation, use psa_set_key_id() to set both the key's persistent identifier and to set the lifetime to persistent and then call the key creation routine: like psa_generate_key() or psa_import_key()

Old New
psa_open_key() Only use for opening previously created persistent keys
psa_create_key() psa_set_key_id() Keys with IDs are made persistent implicitly upon creation

Allocating keys

Key creation will implicitly allocate resources as necessary, so psa_allocate_key() has been removed from the API and is no longer needed.

Old New
psa_allocate_key() Not necessary. Delete calls to psa_allocate_key().

Importing keys

Previously, you had create a policy structure and pass many function arguments to communicate the properties you wanted the imported key to have. Now, you describe them entirely within the attributes structure, passing only the attributes and data to psa_import_key().

Old New
psa_key_policy_init() psa_key_attributes_init()
psa_key_policy_set_usage() psa_set_key_usage_flags(), psa_set_key_algorithm()
Pass key type to psa_import_key() psa_set_key_type()
psa_set_key_policy() Pass the attributes to psa_import_key()
psa_import_key() psa_import_key()

Generating keys

Previously, you had create a policy structure and pass many function arguments to communicate the properties you wanted the imported key to have. Now, you describe them entirely within the attributes structure, passing only the attributes and data to psa_generate_key().

Old New
psa_key_policy_init() psa_key_attributes_init()
psa_key_policy_set_usage() psa_set_key_usage_flags(), psa_set_key_algorithm()
Pass key type to psa_import_key() psa_set_key_type()
psa_set_key_policy() Pass the attributes to psa_import_key()
psa_generate_key() psa_generate_key()

Reading key policy or information

What used to be two functions with many parameters each is now one function that returns the attributes in one structure, in the same format you'd use to create new keys.

Old New
psa_get_key_policy(), psa_get_key_information() psa_get_key_attributes()

Deriving keys

The previous "generator" class of functions has been renamed to "key_derivation". The psa_crypto_generator_t structure was previously used to derive keys. Use of the psa_key_derivation_operation_t structure replaces psa_crypto_generator_t for deriving keys.

Old New
psa_crypto_generator_t psa_key_derivation_operation_t
psa_generator_abort() psa_key_derivation_abort()
psa_get_generator_capacity() psa_key_derivation_get_capacity()
Function parameter psa_key_derivation_set_capacity()
psa_generator_read() psa_key_derivation_output_bytes()
Use of generator with PSA_ALG_SELECT_RAW psa_raw_key_agreement()
psa_key_derivation() Deriving keys now uses key derivation objects and consists of multiple parts. See the getting started guide for details.

Key agreement

Old New
psa_key_agreement() psa_key_derivation_setup(), psa_key_derivation_key_agreement(), psa_key_derivation_output_key()

Hashing

Note: Not yet implemented

The PSA Crypto API 1.0b3 adds a few new functions to help with hashing. Specifically, functions to perform one-shot computation or comparison of hashes.

Old New
Many hash function calls psa_hash_compute()
Many hash function calls psa_hash_compare()

Computing or verifying a MAC

Note: Not yet implemented

The PSA Crypto API 1.0b3 adds a few new functions to help with working with MACs. Specifically, functions to perform one-shot computation or comparison of MACs.

Old New
Many MAC function calls psa_mac_compute()
Many MAC function calls psa_mac_verify()

Symmetric cryptography

Note: Not yet implemented

The PSA Crypto API 1.0b3 adds a few new functions to help with working with symmetric ciphers. Specifically, functions to perform one-shot encryption or decryption. The types used by psa_cipher_generate_iv(), psa_cipher_set_iv(), and psa_cipher_update() have changed from unsigned char to uint8_t.

Old New
Many cipher function calls psa_cipher_encrypt()
Many cipher function calls psa_cipher_decrypt()

Authenticated encryption

Note: Not yet implemented

The PSA Crypto API 1.0b3 introduces multi-part authenticated encryption functions. The original one-shot AEAD functions still remain and aren't being replaced.

New functions for multipart AEAD

  • psa_aead_operation_init()
  • psa_aead_encrypt_setup()
  • psa_aead_decrypt_setup()
  • psa_aead_generate_nonce()
  • psa_aead_set_nonce()
  • psa_aead_set_lengths()
  • psa_aead_update_ad()
  • psa_aead_update()
  • psa_aead_finish()
  • psa_aead_verify()
  • psa_aead_abort()

Mbed Crypto entropy injection

Use of uint8_t replaces unsigned char in mbedtls_psa_inject_entropy(). The macro MBEDTLS_PSA_INJECT_ENTROPY replaces MBEDTLS_PSA_ENTROPY_INJECTION.

Netsocket: Change DNS retry and total attempt counts

11244

DNS lookup is done for each of five predefined servers twice. This change affects the previous DNS lookup functionality only when it's expected that DNS is made three times on the very first DNS server.
Although that's unlikely needed, the previous functionality can be restored reverting the changes to DNS configuration.

uVision export: Handle more C++ language standards

11225

  • Mbed OS now uses C++11 language and C++14 library constructs, so requires the C++ compiler to be set to C++14 standard or later. Custom build profiles that select C++98 or C++11 are no longer supported. (ARMC5 should work in its C++11 mode, as C++14 library replacements are provided in-tree, but ARMC5 is not officially supported).
  • uVision export now requires MDK 5.28a or later, as -std=gnu++14 mode cannot be selected in earlier versions. In Mbed OS 5.13, the Vision exporter was selecting -std=gnu++11, but this is no longer sufficient.

Cellular: moved string_to_pdp_type from AT_CellularContext to Cellular

11200

Moved string_to_pdp_type from AT_CellularContext to CellularUtil. string_to_pdp_type is a common method for AT and other layers. Without moving there will be duplicate methods.

Feature public headers

11073

This will break user code that was using an internal API using a prefixed path, for example #include "foo/bar.h" instead of #include "bar.h".

Port the cryptocell 310 cmac driver

10947

This is a target update, adding hw accelerated CMAC, however, it can also be considered as a breaking change, as it removes support for key sizes other than 128 bit keys, and removes support for DES CMAC.

Port CC 310 sha 512 driver

10913

SHA384 is not supported, returning MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED

Port aes cc310 driver

10907

This is a target update, adding hw accelerated AES, however, it can also be considered as a breaking change, as it removes support for AES other than 128 bit keys.

Sleep rework, RTOS API for bare metal, wait deprecations

10104

  • Subset of RTOS API now available in bare metal builds
  • Full power save functionality now available in bare metal builds via RTOS API
  • Consistent sleep vs wait API naming - wait() and wait_ms() deprecated

Migration notes

  • Use of wait and wait_ms should be reviewed to check whether sleeping is appropriate or not in the context the call occurs - if so, change to ThisThread::sleep_for/thread_sleep_for, else change to wait_us.

Update to Mbed TLS 2.19.1

11493

The Mbed TLS key export feature's export keys callback, new in Mbed TLS 2.19.0, now requires use of const on its hello.random buffers (7th and 8th parameters). This is an API change.

f_export_keys_ext in ssl.h now has signature:

int (*f_export_keys_ext)( void *, const unsigned char *,
const unsigned char *, size_t, size_t, size_t,
const unsigned char[32], const unsigned char[32],
mbedtls_tls_prf_types );

Convert TZ target name 'NPSA' to test spec platform name

11487

Define naming rule for TrustZone targets: 'PLATFORM'_['NPSA_']'S'/'NS', where:

  1. 'PLATFORM' for test spec platform name, which is registered in platform database of mbed-os-tools.
  2. 'NPSA' for non-PSA targets. Defaults to PSA target if absent.
  3. 'S'/'NS' for secure/non-secure targets.

M2351: Enhance secure/non-secure image build flow for non-PSA target

11288

Changes for NuMaker-PFM-M2351:

  1. Change target name to NU_PFM_M2351_NPSA_S for non-PSA secure target and and NU_PFM_M2351_NPSA_NS for non-PSA non-secure target. Original target name NUMAKER_PFM_M2351 is recycled.
  2. Combine secure image and non-secure image into one in non-secure target post-build. With this, user just needs to flash the combined image instead of flash secure image and then non-secure image separately.
  3. To drop pre-built secure image in mbed-os tree and provide custom one, add the line '"target.extra_labels_remove": ["NU_PREBUILD_SECURE"]' into 'mbed_app.json' instead of via .mbedignnore.

What's new

add queue static allocation support

11342

Adds UserAllocatedEvent API to provide mechanism for event posting and dispatching without utilization of queue internal memory.

Nanostack release for mbed OS 5.14

11335

This release contains updates for the Mesh protocols:

  • Stability improvements and bug fixes to Wi-SUN.
  • Enabled Nanostack PPP protocol support.

This version of Wi-SUN stack is inter-operable only with itself (development work still on-going).
Wi-SUN protocol is tested using functional protocol testing suites.
Wi-SUN non-functional testing is performed using more than 100 devices connected to single Wi-SUN network.
Thread stack is verified using protocol testing suite that includes certification test suite

Sys timer should let deep sleep happen

11522

When next SysTimer wake-up is scheduler far enough, always consider
that deep sleep may be entered and program an early wake-up.

So that even if deep sleep is only allowed some time later, it can be
entered. If not doing this, then the deep sleep would be prevented by
SysTimer itself and may not be entered at all.

This has been proved to happen in a simple blinly example.

Add a gpio pinmap

10644

Add a weak gpio_pinmap(), that every target has to override, to provide a set of pins for GPIO testing.

Add Atomic template

10274

  • Added Atomic<T> template to make atomics easier in C++.

PSA storage: Conform to "PSA 1.0.0" spec release

10847

PSA Storage: Add the integrity only and no replay protection flags.

Changed EventQueue::cancel to return boolean value

10750

EventQueue::cancel now returns the boolean value to indicate whether the cancel was successful or not.

Cellular: add method to set authentication type to CellularContext

10694

Add new method virtual void set_authentication_type(AuthenticationType type) to CellularContext so application can set the correct authentication type.

Add C++11/14 support utility file

10868

  • Various modern C++ forward-compatibility helpers have been added in mbed_cxxsupport.h to assist with C++11 and later code, including supporting ARM C 5 as much as possible.

Adding stmod_cellular component

10866

This library allows enabling the cellular module that is connected to the STMOD+ connector of the board.

Currently supported cellular modules are Quectel UG96 and BG96 expansion boards that are included in [p-l496g-cell01] (https://www.st.com/en/evaluation-tools/p-l496g-cell01.html) and [p-l496g-cell02.] (https://www.st.com/en/evaluation-tools/p-l496g-cell02.html) packs.

The STMOD+ Connector specification can be found [here] (https://www.st.com/content/ccc/resource/technical/document/technical_note/group0/04/7f/90/c1/ad/54/46/1f/DM00323609/files/DM00323609.pdf/jcr:content/translations/en.DM00323609.pdf).

BLE: allow overriding event signal

11058

This makes no change to existing code and users. Only affects future porters.

Add minimal printf

11051

To replace the standard implementation of the printf functions with the ones from the minimal-printf library, the custom minimal-printf profile should be used when compiling with mbed-cli. For example:

$ mbed compile -t <toolchain> -m <target> --profile release --profile minimal-printf

Add <mstd_xxx> C++ headers

11039

  • A set of C++11/14 library support headers have been included in platform/cxxsupport. These include standard-C++-like APIs, eg mstd::atomic in <mstd_atomic>, to improve on implementations provided with toolchains. See platform/cxxsupport/README.md for more information.

Created PPP interface and PPP service classes to netsocket

10974

Add Cellular PPP connection support to Nanostack. Support is made by creating a common PPP service class that both lwIP and Nanostack can use for cellular connectivity.

Affected components are lwIP and Nanostack on board IP stacks, new netsocket PPP interface and PPP service class. Cellular network interface, cellular classes and "nsapi_ppp.h" interface are not modified. No changes are required from the users of the Cellular network interface to continue using the lwIP as the default IP stack.

To use the Nanostack IP stack with the Cellular network interface instead of the lwIP stack, cellular application configuration must be modified in following way:

Set the default stack to nanostack

"nsapi.default-stack": "NANOSTACK"

Configure PPP to IPv6 only mode (Nanostack does not support IPv4)

"ppp.ipv4-enabled": false, "ppp.ipv6-enabled": true,

mbed-mesh-api: Add new API for Wi-SUN configuration

11181

Add new APIs to Wi-SUN network certificate handling and network configuration. This includes:

  • network name
  • regulatory domain, operating mode and operating class
  • setting own and trusted certificate
  • removing own and trusted certificates

Optimize debug profile flags for size

11126

Changed the Debug compiler profile to favor size optimization over speed optimization.

Enterprise security support

11104

Add NSAPI_SECURITY_WPA2_ENT type to nsapi_security enum.

  • Phrase helps to connect to an 802.1X capable network.
  • Phrase conforms to WPA2-AES and WPA-TKIP with enterprise security.

Add a gpio-irq pinmap

11074

Add a weak gpio_irq_pinmap(), that every target has to override, to provide a set of pins for GPIO IRQ testing.

AT_CellularSMS: allow configuring SMS encoding (7-bit/8-bit) at initialization

11245

AT_CellularSMS::initialize takes an additional encoding parameter that defaults to 7-bit (behavior of existing code does not change, one needs to opt-in to send 8-bit SMS)

Change default optimisation level to O1 when exporting to uVision

11212

Default uVision optimisation level changed to O1. It matches the debug profile.

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

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

NVStore and TDBStore objects can collide in internal flash

  • Description: NVStore and TDBStore are classes implementing storage solutions. By default they will allocate the last two sectors in internal flash.
    If both are used, a runtime error will happen. NVStore is deprecated, and TDBStore should be used instead.
  • Workaround: Use TDBStore instead of NVStore.
  • Priority: Minor

Cordio Link Layer: GAP Advertising parameters need to be set before advertising data is set

  • Description: This issue only affects users of the Cordio Link Layer. If this ordering is not respected, GAP advertising data will not be set correctly.
  • Workaround: If using the BLE API, apply changes from #10772. If using the Cordio Host Stack API, make sure Advertising parameters are set before advertising data is set when using the Cordio Link Layer.
  • Reported Issue: IOTPAN-486
  • Priority: Major

NRF52480: baremetal build fails due to cryptocell dependency

  • Description: The baremetal build on NRF52480 fails because the CryptoCell depends on Mbed TLS. Mbed TLS is not present in baremetal builds.
  • Workaround: Remove CRYPTOCELL310 feature via your application's target config.
  • Reported Issue: #11428
  • Priority: Major

Cellular stack receives corrupted data when there is a thread frequently calls wait()

  • Description: The low-power ticker of certain targets has been seen to sometimes cause interrupt latency problems, leading to symptoms such as loss of serial data.
  • Workaround: To work around this direct use of LowPowerTicker etc classes can be replaced by Ticker etc. The RTOS itself will be using the low-power ticker if MBED_TICKLESS is set for the target and target.tickless-from-us-ticker is false. Undefining MBED_TICKLESS or setting target.tickless-from-us-ticker to true will stop the RTOS from using the low-power ticker.
  • Reported Issue: https://jira.arm.com/browse/IOTCORE-1352 (Internal)
  • Priority: Major

Enabling MBED_SLEEP_TRACING_ENABLED crashes the system on STM boards

  • Description: MBED_SLEEP_TRACING_ENABLED is disabled by default. Enabling it on STM boards can cause the system to crash.
  • Workaround: Do not enable it on STM boards
  • Reported Issue: #11497
  • Priority: Major

Test Report

Overview

Numbers of improvements around testing had been made into product by mbed-5.14.0 release:
• Introduced FPGA test shield along with new peripheral test suites for Silicon Partners
• Reduced Coverity defects numbers by ~50%
• Merged Greentea test coverage and Unittest coverage, overall test code coverage reached ~61%
• Reduce CI testing time PR test (~2 hrs), Branch test (~4 hrs), nightly test (~8 hrs)
• Tracking down night test failures, fixed most of failures and keep the unfixed defect managed

Release automated CI test

Apart from regular Pull Request test and Nightly test, We also have Branch test executed on Mbed OS 5.14.0-RC3

Tests run on CI:

  • Compilation tests: ARM , GCC_ARM, IAR
  • Unittest Test matrix : Test Results (all passed)
  • GreenTea test matrix : Test Results (mostly passed)
  • Exporter test:
  • Cloud Client test:

With the above Greentea test failures: we identified the following failure reasons:

  • DISCO_L475VG_IOT01A failed on network-wifi tests ---- We believe this is a false positive, nightly tests on the same target(but different RaaS) are passed, the target on This RaaS will need RF-boxes
  • UBLOX_EVK_ODIN_W2 failed on network-wifi tests ---- Tracked by defect IOTPART-8659, waiting partner’s input for fixing
  • GR_LYCHEE failed on platform and rtos tests ---- Test code issue, fixed on master #11417, but not pulled in to 5.14 RC
  • LPC55S69 failed on storage devicekey and KVStore tests ---- Tracked by defect IOTSTOR-925 , under investigation by mbed teams
  • UBLOX_C030_U201 failed on netsocket tests ---- Tracked by defect ONME-4400, under investigation by mbed teams
  • UBLOX_C030_U201 failed on LP_ticker tests ---- Tracked by defect IOTHAL-528, not a regression, under investigation by mbed teams

Greentea test result matrix

Test Numbers:

  • Greentea test numbers increased from 1281 to 1454
  • New FPGA shield tests been add to Mbed OS
  • Integration tests for storage and connectivity has been added to Mbed OS
  • More event queue greentea tests has been added
  • More mbed platform tests has been added
  • Unittest numbers increased from 582 to 624
  • New event queue unit tests has been added
  • More cellular unit test has been added
  • New watchdog unit test has been added

Targets Coverage

In Mbed OS 5.14, compilation test targets scope has not changed, remains all Mbed OS enabled targets.
As of the time mbed-os 5.14.0 release, we run greentea test on 13 targets:

  • DISCO_F746NG
  • DISCO_L457VG_IOT01A
  • GR_LYCHEE
  • K64F
  • LPC55S69
  • NUCLEO_F207ZG
  • NUCLEO_F303RE
  • NUCLEO_F411RE
  • NUCLEO_F429ZI
  • NUCLEO_F746ZG
  • NUCLEO_L073RZ
  • UBLOX_C030_U201
  • UBLOX_EVK_ODIN_W2

Coverity

  • During the 5.14 time frame we started to focus on stabilizing and fixing the Coverity static analysis issues
  • We started with 145 total issues in the Coverity.
  • Now we have reduced the number to 73 ( 89 - 16 False Positive ) that is decrease of around 50%.

Code Coverage

Test Code Coverage has been tracked and information is published on COVERALLS

  • Over the period of mbed-OS 5.13 to 5.14, the coverage numbers increased from ~36% to ~61%
  • Part of the coverage increase is due to changes in how we run some of the tests, that allow us to measure the coverage including:
    • Converting some tests to greentea.
    • Merging unittest coverage with greentea test coverage.
  • Some of the Mbed OS modules are being tested outside of the main Mbed OS CI, this coverage data is not yet merged into the overall coverage (mbedtls, nanostack, FPGA shield etc.).
  • Because of the reasons above, the ~61% coverage number is not an absolute reflection of real code coverage.
  • We will continue working to bring missing coverage info into the overall coverage number, including FPGA HW coverage.

Memory Monitoring

  • NXP Enabled TICKLESS mode by default on K64F and other targets added ~2200 bytes ROM and ~200 bytes RAM PR#10796
  • Enabled async serial with DMA on K64F/K66F added about 200 bytes ROM and 400 bytes RAM PR#11443
  • Minimal printf feature is not enabled by default, so we didn’t see any memory savings

Release OOB manual test

  • Release manual OOB test been carried out against 5.14.0 RC1/RC2/RC3
  • OOB focused on out-of-box experience with official mbed OS examples
  • More than 10 issues been identified, blocking and critical issues been resolved.

Contents

Ports for Upcoming Targets

11122
Support Nuvoton's new target NUMAKER_IOT_M263A

Fixes and Changes

11402
STM32L4 USB device

11400
nsapi_dns: cleanup dns queue when running out or memory

11391
EvenQueue: fix template functions passing UserAllocatedEvent<...> as argument.

11370
Driver Updates + ARMC6 driver support + WIFI fixes

11369
Specify QSPI frequency for more Cypress targets

11367
Cypress 5.14 rollup

11359
Update mbed-coap to version 5.1.0

11356
Fix WHD link state change event handling

11355
Initial support for Serial Flash on PSoC Devices

11354
Update linker scripts based on latest PDL 1.3

11353
Add reserved resources metadata to Cypress BSPs

11349
TDBStore bugfix: won't rely on flash erase value to detect is a sector erased

11348
Mutex: _count incrementation brought back

11345
Fix bare-metal configuration to support Pelion Device Management Client

11344
S2-LP: Sync with development repository

11343
ESP8266: Support power pin in custom wiring

11342
add queue static allocation support

11339
mbed-os/LwIP changes and fixes in auto-IP for Bonjour Conformance Test

11337
Updating SDP-K1 PinNames.h.

11335
Nanostack release for mbed OS 5.14

11334
I2 c sequential communication rework

11326
Update PDL for Cypress Targets

11324
PSOC6: Update CSP to latest

11322
Updated the LWIP buffer pool size for PSoC6

11319
Update WHD to 1.30.0

11315
Update Mbed OS for PSA Crypto API 1.0b3

11309
MCUXpresso Kinetis SPI drive: Add a delay between CS assertion and first sclk edge

11306
At handler improvements

11304
RSSI getter fixed for ESP8266

11303
NUCLEO_H743ZI2 : increase system clock from 400 MHz to 480 MHz

11302
Enable json overriding ESP8266 default baud rate

11301
STM32L4+ : increase system clock from 80 MHz to 120 MHz

11298
Explicitly set rbp_internal_size for TARGET_PSOC6

11296
Fix missing offset in TBStore read from flash

11294
KL43Z: Enable FALSHIAP storage

11293
K82F: Add USBDEVICE support

11291
Stm32 ospi qspi fallback support

11290
MX25LM51245G QSPI test config file

11289
Replace TEST_ASSERT_INT_WITHIN usage in netsocket tests

11276
Add integration tests

11275
Enable building feature storage with a bare metal profile

11272
mbed fault handler: fix mbed_fault_context parameter

11269
storage: fix potential memory corruption and check return values

11266
ADC internal temperature support and EMAC header fix

11265
Add <mstd_tuple> and ARMC5

11249
Make AT_CellularSMS::list_messages support index 0 in SMS inbox

11248
Allow ATHandler::read_int to return 0 successfully

11247
AT_CellularSMS: set "international" flag in PDU when applicable

11246
Cellular: Fix BG96 AT driver for IPv6

11245
AT_CellularSMS: allow configuring SMS encoding (7-bit/8-bit) at initialization

11244
Netsocket: Change DNS retry and total attempt counts

11239
crypto: Copy legacy crypto from Mbed Crypto

11236
Force inline Timer::attach() to get rid of floating-point instructions

11235
minimal-printf should not bypass the retargetting code

11225
Vision export: Handle more C++ language standards

11224
Coverity issues fixed

11220
Fix cellular dns test with IAR compiled binary

11213
Moved partial profile to a subdirectory

11212
Change default optimisation level to O1 when exporting to uVision

11211
Review follow-up mstd fixes

11208
Atomics: GCC fix for M23 (again)

11201
Cellular: Fixed improper AT handler setup through virtual calls in co

11200
Cellular: moved string_to_pdp_type from AT_CellularContext to Cellula

11191
Cellular: move RAT reading to better support ublox custom boards

11190
Cellular: failure when deleting created context is not considered error

11185
Move rtos & platform TARGET directories to source

11181
mbed-mesh-api: Add new API for Wi-SUN configuration

11154
Cellular API shutdown to stop state machine

11152
Nuvoton: Fix FPGA CI test failing

11149
Cellular: Remove unnecessary local variables

11148
Cellular: Fix SIM pin enter command

11145
Implement queue.count()

11142
Relocate USB target specific code to root targets directory

11136
USBDevice: Avoid forcing end device to be derived from USBDevice class

11126
Optimize debug profile flags for size

11122
Support Nuvoton's new target NUMAKER_IOT_M263A

11119
Riot Micro cellular device

11104
Enterprise security support

11099
Update EP_AGORA target pinout

11084
NVStore.cpp (and KVStore) - run-time failure handling missing

11082
Cellular: Add BG96 AT driver with DNS support

11076
ARMC5 extensions

11074
Add a gpio-irq pinmap

11073
Feature public headers

11072
STM32L4: update drivers version to CUBE V1.14.0

11070
IAR: Suppress "exceptions are disabled" warning

11067
Add Unittest equeue tests

11058
BLE: allow overriding event signal

11053
Add Mbed bootloader support to CY8CKIT_062_WIFI_BT and CY8CPROTO_062_4343W

11051
Add minimal printf

11050
DISCO_L4R9I new target

11039
Add <mstd_xxx> C++ headers

11038
Extend the GPIO HAL API tests

11019
Nuvoton: Modify wait ns(...) to provide more accurate implementation

11018
PSOC6_SB: initial integration of Cypress Secure Boot target CY8CPROTO_064_SB

11009
FPGA SPI: remove 4 and 12 bits size support

10980
LwIP: make TCPIP_THREAD_PRIO configurable

10974
Created PPP interface and PPP service classes to netsocket

10971
Nanostack: sync libservice with changes in master copy

10947
Port the cryptocell 310 cmac driver

10921
STMOD_CELLULAR: readme file additional information

10919
AT Cellular Network: mutex lock issue

10913
Port CC 310 sha 512 driver

10907
Port aes cc310 driver

10900
Armcc5 compilation fixes

10895
Reduce Event.h and EventQueue.h using C++11

10885
Reduce Callback.h using C++11

10877
Cellular: Ublox cellular context activation updated for C030_R412M

10868
Add C++11/14 support utility file

10866
Adding stmod_cellular component

10847
PSA storage: Conform to "PSA 1.0.0" spec release

10841
TARGET_STM: Add DEVICE_SPI_COUNT to use SPIs without interference

10837
Toolchain attributes - use C++11/C11

10829
PSA: TFM import

10821
Cellular: Refactor APN db implementation to reduce memory usage

10813
Make ARMC5 and IAR develop profile also size optimized

10792
Fix: Allow target size restriction for LPC55S69

10750
Changed EventQueue::cancel to return boolean value

10741
M2351: Override wait_ns to provide more accurate implementation

10711
Add i2cee-driver to components

10703
Cellular: Removed boilerplate code

10699
MbedCRC: make buffers const void *

10694
Cellular: add method to set authentication type to CellularContext

10683
Export wait_ns to be overridable

10660
Add SCLK and SIN stats to SPIMasterTester

10659
Replace uses of ArrayView with mbed::Span

10644
Add a gpio pinmap

10274
Add Atomic template

10104
Sleep rework, RTOS API for bare metal, wait deprecations

11467
Convert TZ target name to test spec platform name

11450
Minimal-printf: Set default configurations to false

11441
Organize source files and add Doxygen labels

11435
Update to Mbed TLS 2.19.0 and Mbed Crypto 2.0.0

11419
Adds missing include required by fixed-width format specifiers

11418
NRF52: fix config

11412
Kinetis update to fix tickless

11410
Mesh API, Wi-SUN: Initialize Wi-SUN settings with values from json

11385
Fix problem with low level lp_ticker STM wrapper

11376
Update PDL documentation and metadata

11526
Fix added to unlock AT handler mutex

11522
Sys timer should let deep sleep happen

11521
Bux fix: Context can be cleared using CGDCONT after sim ready state

11493
Update to Mbed TLS 2.19.1

11487
Convert TZ target name 'NPSA' to test spec platform name

11484
Delaying message id random initialization to later stage.

11479
no-systick targets: fix systick irq handler setup

11423
Nanostack release for mbedos 5 14

11288
M2351: Enhance secure/non-secure image build flow for non-PSA target

Using this release

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

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