Skip to content

@adbridge adbridge released this Sep 25, 2019 · 497 commits to master since this release

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


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%.


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



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.


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()


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


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


  • 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


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


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


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



Port aes cc310 driver


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


  • 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


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


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


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


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

Nanostack release for mbed OS 5.14


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


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


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

Add Atomic template


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

PSA storage: Conform to "PSA 1.0.0" spec release


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

Changed EventQueue::cancel to return boolean value


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


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


  • 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


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] ( and [p-l496g-cell02.] ( packs.

The STMOD+ Connector specification can be found [here] (

BLE: allow overriding event signal


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

Add minimal printf


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


  • 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/ for more information.

Created PPP interface and PPP service classes to netsocket


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


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


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

Enterprise security support


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


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


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


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 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: (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


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
  • K64F
  • LPC55S69
  • UBLOX_C030_U201


  • 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.


Ports for Upcoming Targets

Support Nuvoton's new target NUMAKER_IOT_M263A

Fixes and Changes

STM32L4 USB device

nsapi_dns: cleanup dns queue when running out or memory

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

Driver Updates + ARMC6 driver support + WIFI fixes

Specify QSPI frequency for more Cypress targets

Cypress 5.14 rollup

Update mbed-coap to version 5.1.0

Fix WHD link state change event handling

Initial support for Serial Flash on PSoC Devices

Update linker scripts based on latest PDL 1.3

Add reserved resources metadata to Cypress BSPs

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

Mutex: _count incrementation brought back

Fix bare-metal configuration to support Pelion Device Management Client

S2-LP: Sync with development repository

ESP8266: Support power pin in custom wiring

add queue static allocation support

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

Updating SDP-K1 PinNames.h.

Nanostack release for mbed OS 5.14

I2 c sequential communication rework

Update PDL for Cypress Targets

PSOC6: Update CSP to latest

Updated the LWIP buffer pool size for PSoC6

Update WHD to 1.30.0

Update Mbed OS for PSA Crypto API 1.0b3

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

At handler improvements

RSSI getter fixed for ESP8266

NUCLEO_H743ZI2 : increase system clock from 400 MHz to 480 MHz

Enable json overriding ESP8266 default baud rate

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

Explicitly set rbp_internal_size for TARGET_PSOC6

Fix missing offset in TBStore read from flash

KL43Z: Enable FALSHIAP storage

K82F: Add USBDEVICE support

Stm32 ospi qspi fallback support

MX25LM51245G QSPI test config file

Replace TEST_ASSERT_INT_WITHIN usage in netsocket tests

Add integration tests

Enable building feature storage with a bare metal profile

mbed fault handler: fix mbed_fault_context parameter

storage: fix potential memory corruption and check return values

ADC internal temperature support and EMAC header fix

Add <mstd_tuple> and ARMC5

Make AT_CellularSMS::list_messages support index 0 in SMS inbox

Allow ATHandler::read_int to return 0 successfully

AT_CellularSMS: set "international" flag in PDU when applicable

Cellular: Fix BG96 AT driver for IPv6

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

Netsocket: Change DNS retry and total attempt counts

crypto: Copy legacy crypto from Mbed Crypto

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

minimal-printf should not bypass the retargetting code

Vision export: Handle more C++ language standards

Coverity issues fixed

Fix cellular dns test with IAR compiled binary

Moved partial profile to a subdirectory

Change default optimisation level to O1 when exporting to uVision

Review follow-up mstd fixes

Atomics: GCC fix for M23 (again)

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

Cellular: moved string_to_pdp_type from AT_CellularContext to Cellula

Cellular: move RAT reading to better support ublox custom boards

Cellular: failure when deleting created context is not considered error

Move rtos & platform TARGET directories to source

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

Cellular API shutdown to stop state machine

Nuvoton: Fix FPGA CI test failing

Cellular: Remove unnecessary local variables

Cellular: Fix SIM pin enter command

Implement queue.count()

Relocate USB target specific code to root targets directory

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

Optimize debug profile flags for size

Support Nuvoton's new target NUMAKER_IOT_M263A

Riot Micro cellular device

Enterprise security support

Update EP_AGORA target pinout

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

Cellular: Add BG96 AT driver with DNS support

ARMC5 extensions

Add a gpio-irq pinmap

Feature public headers

STM32L4: update drivers version to CUBE V1.14.0

IAR: Suppress "exceptions are disabled" warning

Add Unittest equeue tests

BLE: allow overriding event signal

Add Mbed bootloader support to CY8CKIT_062_WIFI_BT and CY8CPROTO_062_4343W

Add minimal printf

DISCO_L4R9I new target

Add <mstd_xxx> C++ headers

Extend the GPIO HAL API tests

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

PSOC6_SB: initial integration of Cypress Secure Boot target CY8CPROTO_064_SB

FPGA SPI: remove 4 and 12 bits size support

LwIP: make TCPIP_THREAD_PRIO configurable

Created PPP interface and PPP service classes to netsocket

Nanostack: sync libservice with changes in master copy

Port the cryptocell 310 cmac driver

STMOD_CELLULAR: readme file additional information

AT Cellular Network: mutex lock issue

Port CC 310 sha 512 driver

Port aes cc310 driver

Armcc5 compilation fixes

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

Reduce Callback.h using C++11

Cellular: Ublox cellular context activation updated for C030_R412M

Add C++11/14 support utility file

Adding stmod_cellular component

PSA storage: Conform to "PSA 1.0.0" spec release

TARGET_STM: Add DEVICE_SPI_COUNT to use SPIs without interference

Toolchain attributes - use C++11/C11

PSA: TFM import

Cellular: Refactor APN db implementation to reduce memory usage

Make ARMC5 and IAR develop profile also size optimized

Fix: Allow target size restriction for LPC55S69

Changed EventQueue::cancel to return boolean value

M2351: Override wait_ns to provide more accurate implementation

Add i2cee-driver to components

Cellular: Removed boilerplate code

MbedCRC: make buffers const void *

Cellular: add method to set authentication type to CellularContext

Export wait_ns to be overridable

Add SCLK and SIN stats to SPIMasterTester

Replace uses of ArrayView with mbed::Span

Add a gpio pinmap

Add Atomic template

Sleep rework, RTOS API for bare metal, wait deprecations

Convert TZ target name to test spec platform name

Minimal-printf: Set default configurations to false

Organize source files and add Doxygen labels

Update to Mbed TLS 2.19.0 and Mbed Crypto 2.0.0

Adds missing include required by fixed-width format specifiers

NRF52: fix config

Kinetis update to fix tickless

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

Fix problem with low level lp_ticker STM wrapper

Update PDL documentation and metadata

Fix added to unlock AT handler mutex

Sys timer should let deep sleep happen

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

Update to Mbed TLS 2.19.1

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

Delaying message id random initialization to later stage.

no-systick targets: fix systick irq handler setup

Nanostack release for mbedos 5 14

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.

Assets 2
You can’t perform that action at this time.