mbed-os

Arm Mbed OS is a platform operating system designed for the internet of things

OTHER License

Stars
4.6K
Committers
859

Bot releases are hidden (Show)

mbed-os - mbed-os-6.2.1

Published by mbedmain about 4 years ago

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

Summary

In this Mbed OS 6 patch release we have added support for the following new targets:

  • Samsung Bioprocessor S1SBP6A target
  • M252 custom board
  • CYTFM_064B0S2 4343W

Note the original M252 platform has been renamed to NUMAKER_IOT_M252.

We have continued to progress our restructuring of the Mbed OS file hierarchy.

A number of changes have been added for PSOC64. These include:

  • Updating the TF-M release image
  • Updating the TF-M release package
  • Updating BSP startup code to match psoc6pdl-1.6.1

The STM32WB drivers have been updated to CUBE V1.7.0.

We've updated the MTS_DRAGONFLY_F411RE bootloader to work with Mbed OS 6.

And finally, as we continue to develop the new set of tools for Mbed OS 6 we will no longer be accepting PRs with changes to the existing tools.

Known Issues

There are no new known issues with this release.

Contents

Ports for Upcoming Targets

13392
Adding Samsung Bioprocessor S1SBP6A target

13382
M252: Support custom board

13358
Add CYTFM_064B0S2 4343W Target

Fixes and Changes

13447
psoc64: Update TF-M release image

13420
Updating with new links and correct branding

13419
PSOC6: update BSP startup code to match psoc6pdl-1.6.1

13418
Update PSoC64 TFM release package.

13414
Refactor NFC directory structure

13410
Refactoring \lorawan --> moving it inside \connectivity.

13409
Move BlueNRG-MS driver into connectivity/drivers/ble/FEATURE_BLE

13408
Fix memory leak in DNS cache

13404
Restructure cryptocell

13401
Added error checking to can_filter() for Classic CAN

13392
Adding Samsung Bioprocessor S1SBP6A target

13390
Fix cancel connect

13386
PSoC6: update to psoc6pdl-1.6.1

13385
Restructure Mbed TLS

13382
M252: Support custom board

13379
Fix baremetal nightly test build issue

13377
Move nanostack rf driver from features to connectivity

13374
Fixed ThisThread flag_wait_any functions (fix #13360)

13371
Restructure lwipstack directory

13366
Fix IAR assembler errors on except.S

13365
BLE streamlining

13363
Refactoring \nanostack --> moving it inside \connectivity.

13362
TESTS: update tests and fixing time drifting tests in rtos folder

13358
Add CYTFM_064B0S2 4343W Target

13357
Move emac-drivers from features into connectivity directory

13356
Drivers directory restructuring

13351
Fix MTS_DRAGONFLY_F413RH drag and drop failure

13349
travis: Reject changes to tools

13337
Fix Mbed TLS + TF-M integration issues

13335
Restructure netsocket directory

13333
Events directory restructuring

13332
Nuvoton: Update M252 target name

13330
Remove doubly defined symbol from mbed_lib.json

13326
Adding NUCLEO_F429ZI to AWS example

13325
Nuvoton: Revise the pin name of M263A button

13323
Travis: fix scandcode failure

13317
Fixed doxygen for Kernel::Clock::time_point argument

13314
Storage system_storage directory restructure

13307
Restructure storage kvstore directory

13306
Include mbed_assert.h in Queue

13304
STM32WB update drivers version to CUBE V1.7.0

13301
Remove MTS_DRAGONFLY_F411RE post binary hook that adds the bootloader

13300
Restructure storage filesystem directory

13298
Refactoring \platform directory

13294
Update MTS_DRAGONFLY_F411RE bootloader to work with mbed 5 & 6

13293
BLE Fix read and write callbacks for descriptors not firing if characteristic is not readable or writable

13284
Refactor PPP library

13283
BLE: Cordio bugfix fixed size writes under size must be allowed

13279
TESTS: removed mbed OS 6 unsupported target in examples test

13276
MASTER - LICENSE.md - clarify filesystem licensing

13273
Restructure storage blockdevice directory

13264
Moving around a few items within \rtos

13261
Refactor cellular directory structure

13255
Move mbed-coap to connectivity/libraries

13254
Move nanostack-libservice into connectivity/libraries

13253
Allow unit tests defined anywhere in mbed-os

13244
Move storage from features into mbed-os root directory

13234
Move drivers from components to connectivity

13229
STM32 custom target: create MCU_STM32xx for each family

Using this release

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

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

mbed-os - mbed-os-5.15.5

Published by adbridge about 4 years ago

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

Summary

This is the latest support release from the Mbed OS 5.15 branch.

This release adds non-PSA support to Mbed OS 5.15 via the new target NU_M2354_NPSA_S/NS. The M2354 is Nuvoton's Cortex-M23 based, TrustZone enabled chip and is an upgraded version of the M2351.

The Wi-SUN Interface APIs have been improved by the addition of the following API calls:

  • info_get API for Wi-SUN router to get RPL information.
  • info_get API for Wi-SUN BR to get RPL information.
  • routing_table_get API for Wi-SUN BR.

The release also includes:

  • Renaming of NUMAKER_M252KG to NUMAKER_IOT_M252.
  • Adding QSPI support to the SDP-K1 board support package.
  • Bootloader support for Olimex STM32-E407 board.

plus a number of other bug fixes.

Migration Guide

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

Nuvoton: Update M252 target name (5.15)

13381

Summary of changes

The target name for Nuvoton's M252 board is resolved to NUMAKER_IOT_M252 from NUMAKER_M252KG (https://github.com/ARMmbed/mbed-os-tools/pull/220). This PR is backport of #13332 to mbed-os 5.15 to also synchronize this change.

Cleaning up SDP-K1 board support package.

13338

Summary of changes

Removing unused pins from SDP-K1 board support package.

Nuvoton: Add new target NU_M2354_NPSA_S/NS

13245

Summary of changes

M2354 is Nuvoton's Cortex-M23 based, TrustZone enabled chip and is an upgraded version M2351. This PR tries to add non-PSA support into Mbed OS 5.15.

[mbed-os-5.15] Added Wi-SUN Interface APIs

13151

Summary of changes

Implemented
-info_get API for Wi-SUN router to get RPL information.
-info_get API for Wi-SUN BR to get RPL information.
-routing_table_get API for Wi-SUN BR.
This is upstreaming PR https://github.com/ARMmbed/mbed-os/pull/13084.

Nuvoton: Support EMAC bus reset as while bus err (5.15)

13150

Summary of changes

This PR is backport of #12991 into Mbed OS 5.15 to refine EMAC error handling of bus error on both of M487 and NUC472 platforms.

Ws management API missing lib

13147

Summary of changes

New include to ws_management_api.h file to include fhss_config.h

Known Issues

There are no new known issues with this release.

Contents

Ports for Upcoming Targets

Fixes and Changes

13381
Nuvoton: Update M252 target name (5.15)

13373
Adding QSPI support to SDP-K1 board support package.

13342
Support for Olimex STM32-E407 bootloader

13338
Cleaning up SDP-K1 board support package.

13320
Updating targets.json file for SDP-K1 board.

13275
5.15 - LICENSE.md - clarify filesystem licensing

13245
Nuvoton: Add new target NU_M2354_NPSA_S/NS

13184
Nordic NRF52 GPIO API: Fix failure to clear the field 'skip_gpio_setup' in a local

13164
ESP8266: Avoid duplicate data sends (5.15)

13151
[mbed-os-5.15] Added Wi-SUN Interface APIs

13150
Nuvoton: Support EMAC bus reset as while bus err (5.15)

13147
Ws management API missing lib

13114
Fix issue #13023, CAN constructor ignores passed speed.

Using this release

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

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

mbed-os - mbed-os-6.2.0

Published by adbridge over 4 years ago

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

Summary

This release mainly provides updates for some of the connectivity protocols that Mbed OS supports, specifically BLE and WiSUN.

For BLE, we've updated the Cordio stack to version 20.05, which is the latest 5.2 specification qualified version. We've also made some changes to the BLE Security Manager to better support the handling of identity addresses when privacy is enabled.

For Wi-SUN, we've made API updates to the border router support we offer for Wi-SUN networks. A border router is a network gateway between a wireless 6LoWPAN mesh network and a backhaul network. It controls and relays traffic between the two networks and, in this release, we've added additional APIs to allow developers to access routing table data from border routers.

The other major change is to upgrade the version of the Arm Compiler to the latest 6.14 version as part of our commitment to track the latest stable versions of the compilers we support.

Migration Guide

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

psa: Update TF-M for ARM_MUSCA_B1

13263

Summary of changes

Upgrade the version of TF-M shipped within Mbed OS to version 1.1 (TF-Mv1.1 a6b336c1509f) with patches to support the integration of Mbed OS and TF-M from https://github.com/ARMmbed/trusted-firmware-m/tree/dev/feature-dualcore (52261ca41663).

Impact of changes

Please refer to the TF-M releases notes for information on what's contained in the TF-M release. https://ci.trustedfirmware.org/view/TF-M/job/tf-m-nightly/lastStableBuild/artifact/docs/trusted-firmware-m/build/install/doc/user_guide/html/docs/reference/changelog.html

Migration actions required

None.

Implements iterators for the Span class to be compatible with std::span

13252

Summary of changes

Implements iterators for the Span class to be compatible with std::span.
This makes it possible, among other things, to use range based for loops on a span.

Add Wi-SUN Interface APIs

13152

Summary of changes

Implemented
-info_get API for Wi-SUN router to get RPL information.
-info_get API for Wi-SUN BR to get RPL information.
-routing_table_get API for Wi-SUN BR.
This is upstreaming PR https://github.com/ARMmbed/mbed-os/pull/13084.

BLE: Add KVStore Security DB

13038

Summary of changes

This adds a new Security DB type for BLE Security Manager. This is optional and disabled by default. The presence of filesystem and kvstore DBs is now set in the mbed_lib.json file with the default values retaining the current setup.
Requires preceding PR: https://github.com/ARMmbed/mbed-os/pull/13037
(so ignore the first commit)

Always build both .hex and .bin files

13011

Summary of changes

  • This change will cause build-system to produce both .bin and .hex files.
  • Files are small and their creation is fast, thus there are no negative impact
    on build time and storage requirements.
  • .bin files are required for updating the device
  • .hex files are very handy for post build (external to build system) custom
    scripts (e.g. image signing)
  • Configuration still allows selecting either .bin or .hex files, this settings is still
    relevant as it specifies what file is flashed to a device for tests or by
    --flash argument.

Impact of changes

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: https://github.com/MicrochipTech/cryptoauthlib/issues/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: https://github.com/ARMmbed/mbed-os/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 test and Nightly test, we also ran a branch test on mbed-os 6.2.0-RC1

Results for the tests we run on CI (PR, Nightly, Branch):

  • Compilation tests: ARMC6 - SOME FAILS
  • Compilation tests: GCC_ARM - ALL PASSED
  • Unittest - ALL PASSED
  • Greentea Test - SOME FAILS
  • Example Test - ALL PASSED
  • Exporter Test - SOME FAILS
  • Cloud Client integration Test - ALL PASSED
  • Memory Usage Test - ALL PASSED
  • Wisun Mesh Test - ALL PASSED

We have the following issues on the test jobs:

  • LTO failed on ARM compiler compile tests ---- Tracked by defect MBEDOSTEST-1083 - ARMC6 Failed to build mbed OS with LTO options
  • Export uvision failing with missing context fault handler IOTCORE-1663 - Nightly: Export uvision failing with missing context fault handler
  • NUCLEO_F767ZI failed on storage tests ---- Tracked by defect IOTSTOR-1032 - NUCLEO_F767ZI failed with features-storage-tests-kvstore-general_tests_phase_1&2
  • MBOTRIAGE-2756 - CY8CPROTO_062_4343W failed at cordio-tests-cordio_hci-driver Greentea Test
  • IOTSTOR-960 - K66F failed on mbed-os nightly "filesystem-general" test

Test Numbers

  • Greentea test number 1495 (+0)
  • Unittest number 735 (+0)

Toolchain Coverage

In the mbed OS 6.2.0 release. we are testing the following toolchains:

  • ARM compiler 6.14
  • GCC_ARM 9-2019-q4-major

The following toolchains have been dropped since the mbed OS 5.15.0 release

  • ARM compiler 5.06 update 6
  • IAR 8.42

Targets Coverage

In mbed OS 6, the compilation test targets scope has not changed and remains all mbed OS enabled targets.

Greentea test targets have been changed slightly:

At the time of the mbed-os 6.2.0 release, we run the greentea tests on the following 8 targets:

  • NRF52840_DK
  • DISCO_L457VG_IOT01A
  • K64F
  • K66F
  • NUCLEO_F411RE
  • NUCLEO_F429ZI
  • NUCLEO_F767ZI
  • CY8CPROTO_062_4343W

Coverity

In mbed OS 6.2.0 release,there are 92 coverity issues.

Code Coverage

Test Code Coverage been tracked and information is published on COVERALLS

Memory Monitoring

No change from mbed-os-6.1.0

Contents

Ports for Upcoming Targets

Fixes and Changes

13291
Update TF-M for ARM_MUSCA_B1

13285
Use a different key to sign Non-secure image for ARM_MUSCA_B1 target

13263
psa: Update TF-M for ARM_MUSCA_B1

13258
Fix deprecated warning messages in Cypress code

13257
Remove invalid unicode characters from mesh-api/mbed_lib.json

13252
Implements iterators for the Span class to be compatible with std::span

13247
GreenTea: Fix inconsistency of Greentea KV message

13237
STM32 custom target: Add missing information in arm pack manager for bootloader

13230
Fix duplication of KW41Z Nanostack driver

13227
Revert "Fix kv parsing bug in greentea client."

13225
BLE remove unused CYW4343X file

13224
ADV_WISE TLS config duplication

13223
PSoC Targets: Increase greentea sync timeout

13222
STM32 PWM : avoid glitch after duty cycle change

13221
STM32 ANALOGOUT and DEEPSLEEP

13219
STM32WB RNG: enable use from both M4 and M0+ cores

13217
Feature cordio update 20 05

13213
Reduce LED use in automatic CI tests

13210
Fix hal-sleep/sleep_manager Tests on Cypress Targets

13207
TEST: update NRF52840_DK with correct FPAG configuration

13206
Usb device init: wait_us fix

13205
LWIPStack: set sockets non-blocking

13199
TEST: Update kvstore tests with shorter timeout

13198
Cypress: Update WHD to version 1.91.2

13191
Fix ordering in adjust config.sh

13188
TEST: Add spif-driver support for baremetal test build

13180
Update mbed-coap to version 5.1.6

13174
tests-mbed_timing_fpga_ci_test_shield-watchdog update with clock accuracy

13173
STM32L4: I2C init parameters for L4+ MCU

13172
Cypress: Fix internal JIRA. Add check if cybsp_init() is successful

13171
Re-enable AWS example, limit targets

13152
Add Wi-SUN Interface APIs

13038
BLE: Add KVStore Security DB

13011
Always build both .hex and .bin files

Using this release

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

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

mbed-os - mbed-os-6.1.0

Published by adbridge over 4 years ago

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

Summary

The major feature we introduce in this release aims to improve your experience with Arm’s Platform Security Architecture when used in conjunction with Mbed OS. Platform Security Architecture, or PSA, is an Arm- led framework for securing IoT devices. In Mbed OS we support PSA in conjunction with the TF-M (www.trustedfirmware.org) project, and we have made major changes in how we integrate TF-M into Mbed in this release, with the overall goal of simplifying how Mbed users consume it. The main change is that we now support building the Secure side binary directly, using the latest supported TF-M version for the target and linking that into the Mbed build.

We are working with our silicon partners to assist them in migrating their PSA platforms to support this change,

Migration Guide

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

Remove Musca A1 target

13165

Summary of changes

The Musca A1 target hasn't been Mbed Enabled nor considered supported in 6.0.
Although support exists in Mbed OS 5.15 and 6.0, it is not officially supported and hence removed.However, it continues to be available in 5.15.

Impact of changes

NA - continues to be available in the mbed-os-5.15 branch.

Migration actions required

Switch to the mbed-os-5.15 branch.

Cellular: ALT1250: Store RAT to permament memory

13149

Summary of changes

Save RAT selection to modem's permanent memory.

Impact of changes

This avoid unnecessary changing of RAT on every reboot if it is different than the default saved in modem's permanent memory.

M2351: Remove from master

13148

Summary of changes

Since Mbed OS 6.0, secure build is not supported yet. Remove it from master temporarily.
For non-TF-M support (NU_PFM_M2351_NPSA_S/NS), go to mbed-os-5.15 branch and Mbed OS 5.15 release.
For TF-M support (NU_PFM_M2351_S/NS), this needs M2351 integrated into TF-M repo first.
Expect M2351 TF-M support can come back into master after integration with TF-M is finished.

Impact of changes

M2351 non-TF-M targets NU_PFM_M2351_NPSA_S/NS are removed from Mbed OS 6.0. Its support is kept on Mbed OS 5.15.

Fix esp8266 driver compilation warning

13144

Summary of changes

Removed the unused variable and the redundant const return from set_ip_addr() function to fix compilation warnings.

Impact of changes

With these changes, no more compilation warning get reported during the build.

Migration actions required

None.

EMAC: Fix Chrono compliation warnings

13142

Summary of changes

Fixed the Chrono compilation warning in EMAC drivers by using Chrono based time argument in EventQueue call_every() API call.

Impact of changes

With these changes, no more compilation warning get reported during the build.

Cypress: us_ticker fixes

13130

Summary of changes

  • Explicitly disable the timer used for the us_ticker before attempting to enter DeepSleep.
    A running timer will block DeepSleep, which would normally be good because we don't want the timer to accidentally lose counts. We don't care about that for us_ticker (If we're requesting deepsleep the upper layers already determined that they are okay with that), so explicitly stop the us_ticker timer before we go to sleep and start it back up afterwards.
  • Add optional post-bsp-init hook
    This allows the application to inject its own resource reservations immmediately after the BSP (and therefore HAL) is initialized, ensuring that they can claim require resources before mbed tries to use them for more flexible purposes. For example, the application might want to claim a particular timer to make sure that it doesn't get picked for us_ticker (which can use any arbitrary timer instance).

Cypress: Add target CY8CKIT_064B0S2_4343W, update psoc6pdl, psoc6cm0p

13122

Summary of changes

This is final PR to add Cypress new secure boot target CY8CKIT_064B0S2_4343W to mbed-os.
This PR also includes update of psoc6pdl and psoc6cm0p libraries for Cypress targets.

Impact of changes

  • Target CY8CKIT_064B0S2_4343W BSP code will be added
  • psoc6pdl will be updated - impacts all Cypress targets
  • CY8CKIT_064S2_4343W, CY8CPROTO_064_SB, CYESKIT_064B0S2_4343W will be removed as obsolete due to production release of PSOC64 chips and thus new Secure Boot flow, represented in this PR
  • Secure Boot post build scripts will be substituted to new implementation for this and all following Secure Boot targets
  • psoc6cm0p will be updated - impacts all Cypress targets
    All existing Cypress targets BSP will switched to new versions assets in next PRs.

Migration actions required

Configuration of mbed-os CI need to be updated per new post build hooks.

  • CY8CKIT_064S2_4343W, CY8CPROTO_064_SB, CYESKIT_064B0S2_4343W will be removed as obsolete due to production release of PSOC64 chips and thus new Secure Boot flow, represented in this PR.
    New release of mbed-os 6.0 will no longer support targets above, updated PSOC64 targets instead will be added to support new tools.

Fix BOOT_HEADER_SIZE allocation in ARM scatter files (#13058)

13100

Summary of changes

PSoC 64 secure BSP post-build hook (cysecuretools image signing)
expects the HEX file with start address 0x10000400 (first KB of
internal FLASH is reserved for MCUboot headers area).
In order to get the correct HEX file produced by ARM fromELF tool,
the ELF file should allocate LR_IROM1 starting from address
0x10000400, not 0x10000000. Otherwise the generated HEX file
allocates rows at addresses 0x10000000 ~ 010000400 and the
final application image is not signed correctly.
Fixes https://github.com/ARMmbed/mbed-os/issues/13058.

Impact of changes

Fix TARGET_CY8CPROTO_064_SB and TARGET_CYESKIT_064B0S2_4343W signed HEX image generation with TOOLCHAIN=ARM.

STM32F1 update drivers version to CUBE V1.8.0

13086

Summary of changes

ST Cube drivers version is updated from V1.6.0 to V1.8.0,
which is the latest official version from:
https://www.st.com/en/embedded-software/stm32cubef1.html
@ARMmbed/team-st-mcd

Impact of changes

  • TARGET_STM32F1 directory has been reworked to match the same structure as other STM32 families
  • MCU_STM32F103xB created in targets.json. NUCLEO_F103RB now inherits from it like any custom boards.
  • MCU_STM32F103x8 created in targets.json to ease BLUEPILL_F103C8 use.

STM32H7 update drivers version to CUBE V1.7.0

13083

Summary of changes

ST Cube drivers version is updated from V1.5.0 to V1.7.0,
which is the latest official version from:
https://www.st.com/en/embedded-software/stm32cubeh7.html
@ARMmbed/team-st-mcd

Impact of changes

  • TARGET_STM32H7 directory has been reworked to match the same structure as other STM32 families
  • MCU_STM32H745I renamed in MCU_STM32H745xI
  • MCU_STM32H747xI created in targets.json. DISCO_H747I now inherits from it like any custom boards.

Nanostack release v12.3.0 to master

13082

Summary of changes

Nanostack release v12.3.0 to master branch
Nanostack v12.3.0 contains bug fixes and stability improvements to the Wi-SUN protocol stack.
802.15.4 RF drivers has been updated to match functionality in Nanostack v12.3.0.
This is upstream of PR: #13079

Impact of changes

Wi-SUN protocol stack is more stable and is scaling to larger number of devices.
Mesh applications that are using Wi-SUN protocol can define S2LP RF driver PIN configuration in the application configuration file.

Python reference equality changed to value equality

13077

Summary of changes

In tools/config/__init__.py a reference comparison (is) was used to compare a variable with a string literal, but a value comparison (==) should be used instead.
This shows up as a python warning during compilation. Python documentation is here for the obsolete Python 2.7, the minimum supported version (by the Python foundation) 3.5, and the latest 3.9.

Impact of changes

This will remove the warning emitted during compilation with the cli (and probably elsewhere).
This should fix any potential issues if cpython and friends decide to change how string caching works.

Migration actions required

None.

Allowed to set Wi-SUN certificates in DISCONNECTED state

13048

Summary of changes

Allow setting of Wi-SUN certificates after disconnect for the reconnection.
Support changing of certificates when stack is already running.
Fixes the following bug https://github.com/ARMmbed/mbed-os/issues/12798

Impact of changes

This only extends the usability of the API allowing new way to use the interface

Migration actions required

No Actions

ST boards: Fix sleep tracing

13034

Summary of changes

Prevent singleton lock if the RTOS is not yet ready.
lp_ticker is used during the RTOS initialization process.
ST lp_ticker implementation calls sleep functions
which in turn attempts to print to the console when sleep tracing
is enabled. Console initialization attempts to lock the singleton mutex.
fixes https://github.com/ARMmbed/mbed-os/issues/11497
fixes https://github.com/ARMmbed/mbed-os/issues/12593
To test:

  1. Clone mbed-os-example-blinky.
  2. Build, program, and open a serial terminal with: mbed compile -t <TOOLCHAIN> -m <ST_TARGET> -f --sterm -DMBED_SLEEP_TRACING_ENABLED.
  3. Sleep tracing is enabled (and printing on the console), the board does not reboot.

Impact of changes

Sleep tracing can be enabled with ST boards.

Migration actions required

N/A

Deprecate MBED_STATIC_ASSERT and MBED_STRUCT_STATIC_ASSERT for built-in keyword

13002

Summary of changes

Deprecates (in doxygen only) MBED_STATIC_ASSERT and MBED_STRUCT_STATIC_ASSERT macros as these uses are now provided with the built-in static_assert (or for C without <assert.h>: _Static_assert).
Cuts down the number of MBED_STATIC_ASSERT and MBED_STRUCT_STATIC_ASSERT macro definition #if cases to just C++ or not C++.
If static_assert is not recognized by the compiler, it implies it is before either C11 or C++11. I do not consider this a breaking change as C11 and C++14 are now the minimum supported language versions.
These changes also clean up some of the code documentation as well.

Impact of changes

This should only go in v6.0.0, so no issues assuming at least C11 or C++14 are used.

Migration actions required

Since the MBED_STATIC_ASSERT and MBED_STRUCT_STATIC_ASSERT macros are deprecated, users should use static_assert going forward as these could eventually be removed.

Fix Mbed TLS adjust-config.sh script

12998

Summary of changes

The Mbed TLS import script is quite fragile, and depends on certain lines to be present in the files it adjusts to be able to do the modifications it needs to to allow Mbed TLS to build within Mbed OS.
This commit changes the adjust-config.sh script to look for a the end of the config.h file, defined as #endif /* MBEDTLS_CONFIG_H */ rather than the include line for "check_config.h".
That's because the inclusion of "check_config.h" is being removed upstream in Mbed TLS to fix another issue, which you can see here.
I recommend to the maintainers that they put in their backlog to remove or replace these scripts. They were added as a temporary measure some years ago, and were never updated.

Impact of changes

This change should work with the current Mbed OS source, but critically, the change is necessary to allow a future version of Mbed TLS to work.

Migration actions required

None.

Cellular: Enable tac info for ALT1250

12973

Summary of changes

ALT1250 supports tac info in registration status, so this commit enables the feature.

Impact of changes

CellularNetwork::get_registration_params can now return cell info.

Replace Mbed PSA with TF-M PSA

12955

Summary of changes

Replace the Mbed implementation of PSA with the implementation from TrustedFirmware-M (TF-M).
PSA is and continues to be provided as an experimental feature (under FEATURE_EXPERIMENTAL_API). The PSA implementation provided by TF-M is not guaranteed to provide the same functionality or API as the previous Mbed PSA implmementation being replaced.

Impact of changes

v8-M NS targets are now the only v8-M targets supported in Mbed OS for PSA platforms, as the TF-M build system outputs the S binary that Mbed OS consumes as-is. As such, targets like ARM_MUSCA_A1_NS have been renamed to ARM_MUSCA_A1 (although old names are temporarily provided for backwards compatibility).

Migration actions required

How targets enable PSA has changed. Please refer to features/FEATURE_PSA/supporting_psa_in_mbed-os.md for updated instructions on adding PSA to your target as a new target porting person.

Modify the operation of setting qspi frequency when calling Octo controller

12937

Summary of changes

Modify the operation of setting qspi frequency when calling Octo controller in qspi_api.c.
Because the value of hospi->Init.ClockPrescaler has been subtracted 1 in stm32l4xx_hal_ospi.c.

Impact of changes

N/A

Migration actions required

N/A

Timer: minor revisions

12905

Summary of changes

  • C++11-ify a little.
  • Constify relevant methods. (already done in #12425)
  • Make it copy/move constructible.
  • Remove unneeded lock from destructor. (already done in #12425)

Impact of changes

Timer and LowPowerTimer are a little more flexible, and slightly optimised.

Migration actions required

n/a

Added kv store adaptation to nanostack file interface

12900

Summary of changes

This is port of https://github.com/ARMmbed/mbed-os/pull/12878 to Mbed OS master.
Added NS filesystem API module to mbed-os Nanostack HAL. Module provides kv_store interface for the Nanostack. Feature is disabled by default on .json configuration.

Impact of changes

None

Migration actions required

None

Added Wi-SUN statistics interface

12899

Summary of changes

This is port of https://github.com/ARMmbed/mbed-os/pull/12766 to Mbed OS master.
Added network, physical layer, MAC and FHSS statistics to Wi-SUN interface. There are new functions to enable/disable and read the statistics.

Impact of changes

None

Migration actions required

None

Add new configuration parameters to Wi-SUN network interface and Border Router class

12898

Summary of changes

This is port of https://github.com/ARMmbed/mbed-os/pull/12657 to Mbed OS master.
Added get/validate/set functions for following Wi-SUN mesh interface configuration options:

  • Network name
  • Regulatory domain
  • Network size
  • FHSS channel mask
  • FHSS unicast channel function related parameters
  • FHSS broadcast channel function related parameters
  • Timing parameters
    Moved Wi-SUN .json configuration parsing from wisun tasklet to Wi-SUN mesh interface class.
    Added Wi-SUN Border Router class. Class can be used to start and stop Wi-SUN Border Router.
    Border Router class supports following configuration options:
  • RPL DIO trickle parameters
  • PAN configuration
    Added support of network interface name method to Nanostack Mesh, EMAC and PPP interfaces.

Impact of changes

None

Migration actions required

None

Add enum class flag definition to platform

12772

Summary of changes

Add a macro for adding bitwise operators to enum class types.
This addition is necessary to use bitwise operators on enum class (scoped enums) introduced in C++11.
Without this macro, either the whole boilerplate would have to be written to take advantage of C++ namespaces and scope, or a C style, visible-to-the-world enum would need to be used.
This:

enum class MyEnum {
HasNose = (1 << 0),
HasEars = (1 << 1),
HasFur  = (1 << 2)
};
inline constexpr MyEnum operator |( T lhs, T rhs)
{
return (MyEnum) ( 
static_cast<std::underlying_type<MyEnum>::type>(lhs) |
static_cast<std::underlying_type<MyEnum>::type>(rhs));
}
inline constexpr MyEnum operator &( T lhs, T rhs)
{
return (MyEnum) ( 
static_cast<std::underlying_type<MyEnum>::type>(lhs) &
static_cast<std::underlying_type<MyEnum>::type>(rhs));
}
...
// Repeat for ~, ^=, |= overloads
...
inline MyEnum& operator &= (T & a, T b) { \
a = a & b; \
return a; \
}

becomes

MBED_SCOPED_ENUM_FLAGS(MyEnum)  {
HasNose = (1 << 0),
HasEars = (1 << 1),
HasFur  = (1 << 2)
};

Now, using the enum class allows for scope and bitwise operation:

MyEnum cat = MyEnum::HasNose | MyEnum::HasEars | MyEnum::HasFur;
MyEnum neighbor = MyEnum::HasNose | MyEnum::HasEars;

Impact of changes

The only impact is if the macro is used. If the macro is unused, standard enum class definitions are unaffected by the bitwise operators. If the macro is used, the implementing code becomes more concise (and hopefully readable), and the DRY principle is realized.
Regarding code size, the operations should be no different than if written out with static_cast calls.
In the future, standard C enum bit flags could be converted over to enum class for better scoping and collision avoidance.

Migration actions required

If a scoped enum bit flag is desired, include the header and use. Otherwise, none.

Extend AnalogIn API: read_voltage

12471

Summary of changes

For calculating real-world parameters (eg: ohms, amps) from ADC readings, it is often useful to know the actual voltage represented by the ADC's numerical output. This functionality can indeed be abstracted elsewhere, but I think it makes sense to put this in the ADC API itself.
As it stands, the AnalogIn API only provides a normalized output and leaves the application up to calculate the actual voltage based on the system's ADC reference.
This PR adds the ability for the user to configure a default ADC Vref by overriding target.default-adc-vref. Additionally, an AnalogIn instance's reference voltage can be set at runtime in case multiple ADC references are possible in the target (in the case of multiple ADC peripherals or internally configurable ADC references such as in the case of Nordic chips).

Impact of changes

Since this PR only extends the AnalogIn API, there should be no impacts on existing users.

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: https://github.com/MicrochipTech/cryptoauthlib/issues/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: https://github.com/ARMmbed/mbed-os/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 test and Nightly test, We also ran a branch test on mbed-os 6.1.0-RC1

Results for the tests we run on CI (PR, Nightly, Branch):

  • Compilation tests: ARMC6 - SOME FAILS
  • Compilation tests: GCC_ARM - SOME FAILS
  • Unittest - ALL PASSED
  • Greentea Test - SOME FAILS
  • Example Test - ALL PASSED
  • Exporter Test - SOME FAILS
  • Cloud Client integration Test - SOME FAILS
  • Memory Usage Test - ALL PASSED
  • Wisun Mesh Test - ALL PASSED

We have the following issues on the test jobs:

  • LTO failed on ARM compiler compile tests ---- Tracked by defect MBEDOSTEST-1083 - ARMC6 Failed to build mbed OS with LTO options Open
  • Export uvision failing with missing context fault handler IOTCORE-1663 - Nightly: Export uvision failing with missing context fault handler Open
  • NUCLEO_F767ZI failed on storage tests ---- Tracked by defect IOTSTOR-1032 - NUCLEO_F767ZI failed with features-storage-tests-kvstore-general_tests_phase_1&2 Open
  • CY8CPROTO_62_4343W failed on sleep/deepSleep tests ---- Tracked by defect IOTHAL-560 - CY8CPROTO_062_4343W target failed at sleep/deep sleep test Open
  • NUCLEO_F303 and NUCLEO_F411 failed on client example compile tests

Test Numbers

  • Greentea test number 1495 (+9 )
  • Unittest number 735 (+0 )

Toolchain Coverage

In mbed OS 6.1.0 release. we are testing following toolchains:

  • ARM compiler 6.13
  • GCC_ARM 9-2019-q4-major

The following toolchains have been dropped from the mbed OS 5.15.0 release

  • ARM compiler 5.06 update 6
  • IAR 8.42

Targets Coverage

In mbed OS 6, the compilation test targets scope has not changed, remains all mbed OS enabled targets.

Greentea test targets have been changed slightly:

At the time of the mbed-os 6.1.0 release, we run the greentea tests on the following 9 targets:

  • NRF52840_DK
  • DISCO_L457VG_IOT01A
  • K64F
  • K66F
  • NUCLEO_F303RE
  • NUCLEO_F411RE
  • NUCLEO_F429ZI
  • NUCLEO_F767ZI
  • CY8CPROTO_062_4343W

Coverity

In mbed OS 6.1.0 release,there are 94 coverity issues.

Code Coverage

Test Code Coverage been tracked and information is published on COVERALLS

Memory Monitoring

No change from mbed-os-6.0.0

Contents

Ports for Upcoming Targets

13128
Add support for Embedded Planet target Atlas

12482
NUCLEO_G474RE: Add new platform

Fixes and Changes

13175
psa: Remove not needed TF-M ITS KVStore adapter

13165
Remove Musca A1 target

13158
WIFI: Add NSAPI_PRESENT macro in the WicedInterface

13149
Cellular: ALT1250: Store RAT to permament memory

13148
M2351: Remove from master

13144
Fix esp8266 driver compilation warning

13143
STM32H7: correct Ethernet issue in baremetal

13142
EMAC: Fix Chrono compliation warnings

13135
Restore MTS_MDOT_F411RE bootloader binary

13130
Cypress: us_ticker fixes

13128
Add support for Embedded Planet target Atlas

13122
Cypress: Add target CY8CKIT_064B0S2_4343W, update psoc6pdl, psoc6cm0p

13119
Move target implementations of NanostackRfPhy into nanostack-interface

13118
Replaced rtos profile with full profile

13117
Fix compliation warnings

13115
MIMXRT1050_EVK: Add USB support

13100
Fix BOOT_HEADER_SIZE allocation in ARM scatter files (#13058)

13098
Cellular: Fix CellularContext destructor memory leak

13095
STM32: MCU_STM32 supports rtos and bare-metal profiles

13093
UNITTESTS: Fix TestPPPInterface::get_interface_name

13091
STM32 baremetal support step3/3 (F2/F4)

13090
STM: move us_ticker_defines.h include

13089
Add a coverage_patterns kwarg to ARM_MICRO

13086
STM32F1 update drivers version to CUBE V1.8.0

13083
STM32H7 update drivers version to CUBE V1.7.0

13082
Nanostack release v12.3.0 to master

13081
Reinstate post build hooks for legacy targets

13077
Python reference equality changed to value equality

13073
STM32H7: FPGA tests support

13070
add mbed-os-example-aws to the example list

13069
Cellular: Fix unittest for CellularNetwork

13066
mergify: add release type

13064
nxp: fix vector redefinition from CMSIS

13060
BLE: fix direct advertising on Cordio

13055
BLE: RF tester commands (and Cordio unhandled command complete)

13053
STM32 more information in README file

13052
BLE: fix conn params update

13048
Allowed to set Wi-SUN certificates in DISCONNECTED state

13047
NRF: Migrate ARM Compiler 5 feature re-locate zero initialized variables

13046
Use std::chrono based functions

13045
CYESKIT_064B0S2_4343W: Remove parentheses from arduino pins

13044
NRF: fix implicit declarations

13043
NRF serial: Use nrf_uarte_event_t enum to avoid implicit conversion

13042
Ensure all overridden virtual functions are marked with override

13041
Cordio: put parentheses to correct order of precedence in ternary expressions

13040
BLE: Add tx power control to cordio HCI driver

13039
BLE: remove limitation in the Cordio to update adv payload

13037
BLE: Fix privacy and signing handling in Security Manager

13036
STM32_gen_PeripheralPins.py script v1.12

13035
Fix capacity check when service data are added to BLE advertising payload

13034
ST boards: Fix sleep tracing

13030
Fix ThisThread::get_name definition

13022
STM32: add weak TargetBSP_Init function

13019
Documentation update - MBRBlockDevice::partition type parameter

13016
tests-mbed_hal-rtc patch to match IAR compilation issue

13015
Force callback non-trivial for IAR

13014
DISCO_H747I_CM4 is supporting now hex format

13013
Cellular: Fix packet data registration after CREG

13009
Add support for the Telit ME310 module

13002
Deprecate MBED_STATIC_ASSERT and MBED_STRUCT_STATIC_ASSERT for built-in keyword

13001
STM32 baremetal support step2 (L1/L4/WB)

12998
Fix Mbed TLS adjust-config.sh script

12996
STM32F412 bypass PLL configuration when already done by bootloader

12992
STM32 baremetal support step1 (F0/F1/F3/H7/L0)

12991
Nuvoton: Support EMAC bus reset as while bus err

12988
OS timer uses LPTICKER by default, then USTICKER

12985
Update CYSBSYSKIT_01

12983
Mutex::unlock - decrement _count inside lock

12979
stack_size_unification test: set expected stack sizes from config

12973
Cellular: Enable tac info for ALT1250

12966
DRAGONFLY_F413RH: Update power on and power off functionality

12955
Replace Mbed PSA with TF-M PSA

12937
Modify the operation of setting qspi frequency when calling Octo controller

12905
Timer: minor revisions

12900
Added kv store adaptation to nanostack file interface

12899
Added Wi-SUN statistics interface

12898
Add new configuration parameters to Wi-SUN network interface and Border Router class

12824
Optimise fault handler assembly

12772
Add enum class flag definition to platform

12751
STM32WB: enable USB Device

12747
STM32 MBEDTLS support with HW crypto

12615
FPGA UART test cases addition with 7 and 9 bits data length

12482
NUCLEO_G474RE: Add new platform

12471
Extend AnalogIn API: read_voltage

Using this release

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

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

mbed-os - mbed-os-5.15.4

Published by adbridge over 4 years ago

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

Summary

In this latest partner and customer support release from the 5.15 branch, there are a number of important fixes and updates. The highlights are as follows:

  • Nanostack release v12.3.0
    ** Bug fixes and stability improvements to the Wi-SUN protocol stack.
    ** 802.15.4 RF drivers have been updated

  • Mbed TLS upgraded from 2.21.0 to 2.22.0.
    ** Stand alone version of Mbed Crypto removed and reintegrated into Mbed TLS.

  • A number of Wi-SUN updates

For full details of these and other fixes in this release please see the contents list below.

Migration Guide

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

None

Known Issues

There are no new known issues with this release.

Contents

Ports for Upcoming Targets

No new target support

Fixes and Changes

13080
[mbed-os-5.15] Nanostack release v12.3.0

13072
[mbed-os-5.15] Allowed to set Wi-SUN certificates in DISCONNECTED state

13033
[Mbed OS 5.15] Upgrade to Mbed TLS 2.22.0

13031
Mbed OS 5.15: Warn on unrecognised error

12986
M2351: Enable non-PSA minimal secure build (5.15)

12972
Alt1250 enable tac info for registration status (mbed 5.15)

12970
Nuvoton: Refine more on watchdog HAL (5.15)

12969
Nuvoton: Fix watchdog reset failure on meeting Hard Fault (5.15)

12934
[mbed-os-5.15]Add possibility to configure Mesh MAC neighbourtable size.

12933
Backport Arm C static RAM fix to Mbed OS 5.15 (#12462) (Mbed OS 5.15)

12895
Added kv store adaptation to nanostack file interface (Mbed OS 5.15)

12894
Nanostack: Add config for Wi-SUN device type (Mbed OS 5.15)

12893
Add Wi-SUN statistics interface (Mbed OS 5.15)

12892
Add new configuration parameters to Wi-SUN network interface and Border Router class (Mbed OS 5.15)

12882
[Mbed OS 5.15] Add getsockopt option to read network property

Using this release

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

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

mbed-os - mbed-os-6.0.0

Published by adbridge over 4 years ago

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

Summary

The Arm Mbed team is delighted to announce the release of Mbed OS 6, our first major release in almost four years. We have invested heavily to add the features required for today’s IoT devices, and to back those features up with state of the art tooling to simplify development of IoT and embedded products.

This release includes:

  • Stable and mature APIs, alongside the introduction of the 'Experimental' tag to indicate new APIs that are subject to change.
  • Board support for the most popular boards.
  • The ability to support custom hardware.
  • The option of adding a community supported board.
  • Further enhancements to the Bare Metal Profile.
  • Integration with the AWS SDK, with other major cloud integrations to follow.

There have also been some significant changes to our BLE offering, as summarised below.

BLE changes

#12674, #12676, #12742, #12730

We have removed all deprecated APIs in BLE and adjusted other APIs to resolve dependencies on the deprecated ones. We have also removed target-specific stacks that are incompatible with the latest APIs.

Item Change Migration
SoftDevice stack Superseded/Removed * For nRF52* targets, please use the Cordio stack, which is already enabled by default.* nRF51* targets will be unsupported in future Mbed OS releases.
Maxim stack Removed BLE feature on Maxim targets is disabled until an updated version becomes available.
Non-SIG services based on third-party standard:DFUServiceUARTServiceEddystoneConfigService EddystoneServiceURIBeaconConfigServiceiBeacon Removed If needed, you can take services from Mbed OS 5.15 and update the code, or implement your own based on specifications.
Legacy APIs in BLE.h Superseded See functions marked with MBED_DEPRECATED() in Mbed OS 5.15's BLE.h for migration advice in comments.
Legacy APIs in GattCharacteristic.h Superseded See functions marked with MBED_DEPRECATED_SINCE() in Mbed OS 5.15's GattCharacteristic.h for migration advice in comments.
Legacy APIs in GattClient.h Superseded See functions marked with MBED_DEPRECATED() in Mbed OS 5.15's GattClient.h for migration advice in comments.
Legacy APIs in SecurityManager.h Superseded See functions marked with @deprecated in Mbed OS 5.15's SecurityManager.h. Applications should implement the SecurityManager::EventHandler interface and register it with SecurityManager::setSecurityManagerEventHandler(...).
Legacy APIs in Gap.h Superseded See functions marked with MBED_DEPRECATED_SINCE() in Mbed OS 5.15's Gap.h for migration advice in comments.
Gap::getMinAdvertisingInterval()Gap::getMinNonConnectableAdvertisingInterval()Gap::getMaxAdvertisingInterval() Removed The values are constant and target-agnostic. Use ble::adv_interval_t::min() and ble::adv_interval_t::max().
Gap::getDeviceName()Gap::getAppearance() Removed Device Name and Appearance are set by the application, which should already know the values.
Gap::setDeviceName()Gap::setAppearance() Superceded Use AdvertisingDataBuilder to add Device Name and Appearance to the payload, then apply the payload with Gap::setAdvertisingPayload().
Gap::getPreferredConnectionParams()Gap::setPreferredConnectionParams() Removed (temporarily) We plan to move them to GattServer in the future.
BLEProtocol::AddressType_tBLEProtocol::AddressBytes_t Superseded Replaced by ble::peer_address_type_tble::own_address_type_tble::address_tTo decide which ones to use, see the functions you want to call.
Gap::Whitelist_tBLEProtocol::Address_t Changed Replaced by ble::whitelist_t where each item on a whitelist is ble::whitelist_t::entry_t.This is used byGap::setWhitelist()SecurityManager::generateWhitelistFromBondTable().
Gap::ConnectionParams_t Superseded The latest GAP API requires full-fleged ble::ConnectionParameters.
ble::central_privay_configuration_t Typo fixed Renamed to ble::central_privacy_configuration_t.

Supported compilers

This release has been tested and is known to fully support the following compilers:

  • ARMC v6.13
  • GCC v9

Other versions of the compilers may not work as expected.

Migration Guide

This section lists specific changes in this release that may need special attention.

DeviceKey Root of Trust generation refactored

12385

Summary of changes

Removed automatic creation of the Root of Trust when DeviceKey::generate_derived_key(...) API is used.
You must generate or inject the key before the first use of the DeviceKey API.

Impact of changes

DeviceKey is not automatically generated anymore. This might impact test application that expect the key to be present, but do not explicitly generate it.

Migration actions required

Application developers must be aware that if their device does not have Root of Trust permanently injected, which is usually true in the development phase, they must generate a key before the first use of the DeviceKey API. Two options exist for key generation:

  • Generate a key using TRNG sources by calling DeviceKey::device_generate_root_of_trust()
  • If the device does not have a TRNG available, inject a secure key by calling DeviceKey::device_inject_root_of_trust(...)

Cellular: Move string_to_pdp_type method to CellularContext

12214

Summary of changes

string_to_pdp_type is only used in CellularContext classes, and having the conversion method in CellularContext means it can also be used to check the non-standard Non-IP PDP type string.

Impact of changes

None, if the application uses existing cellular classes. If you have implemented your own CellularContext class, then see Migration actions required below.

Migration actions required

Classes deriving from CellularContext must implement a new function:

virtual const char *get_nonip_context_type_str() = 0;

This API has already been implemented in AT_CellularContext though, so the current code does not change.

Blockdevice config changes to make it possible to run littlefs filesystem tests

12143

Summary of changes

Moves BlockDevice configurations used by SystemStorage as BlockDevice defaults. This makes it possible to use the defaults to execute littlefs filesystem tests.

Adds SPIF/QSPIF/SPIFReduced- and SDBlockDevice specific app configs for making it possible to run the aforementioned tests.

Thread: remove constructors deprecated in 5.1

12141

Summary of changes

Remove the immediate-start constructors deprecated in Mbed OS 5.1.

Impact of changes

Code using the old constructors will no longer compile.

Migration actions required

Code using immediate-start Thread constructors must be changed to use the Thread::start method.

Remove unsupported folder

12128

Summary of changes

Mbed OS has been carrying the unsupported directory for a long time, to give users a form of USB stack. This is no longer needed, since Mbed OS has its own implementation of USB.

Impact of changes

As the name suggest the 'unsupported' directory was not supported, but as it was there the community was free to use any of the functionality in it. So in theory it is a breaking change, even if the code was never properly supported.

Migration actions required

Removed functionality was never supported and its use was not recommended. If you used USB device mode, please port your code to use the supported version from the Drivers directory. If you need any other features please consider contributing them to Mbed.

Cellular: Refactor cellular variable visibilities

12123

Summary of changes

Cellular: Refactor cellular variable visibilities:

  • Some variables were public despite being used only internally.
  • Refactored variables to the end of class definitions.
  • Removed duplicate _property_array from CellularDevice
  • Changed _impl methods to protected.

Impact of changes

This can potentially be a breaking change, but none of the existing Mbed OS cellular targets required any changes.

Migration actions required

If you want to use a cellular variable marked as private, inform @ARMmbed/mbed-os-wan and we can review the case.

ATHandler refactoring

12122

Summary of changes

  • ATHandler is part of Cellular's public API, so we moved it to the /API folder.
  • Some functions and variables are refactored to be private/protected where applicable.
  • Virtual cmd_start() (and destructor) method(s) devirtualised because it was not needed.
  • Unittests updated to reflect changes.

Impact of changes

  • ATHandler is part of Cellular's public API, so we moved it to the /API folder.
  • Some functions and variables are refactored to be private/protected where applicable.
  • Virtual cmd_start() (and destructor) method(s) devirtualised because it was not needed.

Migration actions required

Visibility of some methods has been changed in ATHandler. This should not cause any issues if they were not used (as they shouldn't have been).

If the include path has been used correctly for ATHandler.h there are no cahnges needed.

ONME-4433 SocketAddress::operator== should also check port

12120

Summary of changes

SocketAddress::operator== did not check the port number. Adding this check can be considered as a breaking change. All greentests and unitests were checked and fixed.

Expose target_offset and header_offset parameters in targets.json

12081

Summary of changes

The app_offset and header_offset parameters have always been a part of the target configuration parameters. However, they were intercepted by the tools and never exposed to the application. The new FOTA (update client next generation) functionality requires these parameters in the code as well. So this PR adds them to the targets.json file. The only result of this PR is the addition of these two macros into the code.

Note that the tools already expose the macros APPLICATION_ADDR and HEADER_ADDR having the same values. However, these macros are only available when the application is built with the bootloader. If it isn't, these macros aren't available, hence this PR.

This change is required for new FOTA client.

Enabling small C library option and deprecating uARM toolchain

12068

Summary of changes

  1. In Mbed OS 2-region memory model, ARM Std and Microlib scatter files are common
    more info on https://github.com/ARMmbed/mbed-os/blob/master/docs/design-documents/platform/memory-model/ram_memory_model.md,
    so replaced ARM Std scatter file 1-region memory model with Microlib scatter file 2 region memory model.
  2. Moved the "__aeabi_assert" function from Microlib boot code file to mbed_retarget file so that it can be available for both RTOS Microlib and bare metal to resolve the undefined symbol linker issue.
  3. Copied ARM Microlib boot code into ARM std boot code and guarded with __MICROLIB. This is required in order to build an RTOS application with Microlib.
  4. Added a new target config "supported_c_libs" in targets.json and build tools to check if the selected "default_lib" is supported for the selected toolchain. If not, the build tool will raise an exception.
  5. Added the new test suite for testing the build tool changes for default_lib and supported_c_libs.
  6. PR changes tested with blinky and blinky bare metal examples and greentea bare metal tests run locally.

Impact of changes

These changes deprecate the uARM toolchain.

Migration actions required

As uARM toolchain is deprecated, you need to redefine a supported_c_libs configuration with "small" for arm toolchain on the target in targets.json to enable Microlib support, for example:

"supported_c_libs": {
"arm": ["std", "small"],
"gcc_arm": ["std", "small"],
"iar": ["std"]
}

You also need to change the scatter file to the 2-region memory model see more info.

Instead of -t uARM, use default_lib with "small" in mbed_app.json configuration for ARMC6 toolchain.

cmsis: remove arm math

12055

Summary of changes

This file was not needed; should be part of DSP. The functionality is part of the library provided
by CMSIS.

I would like to test this, for all devices. This header file should be removed in 6.0.0 as we do not provide DSP library. Thus I set this as Major update.

Fixes #12054

Impact of changes

Applications should use CMSIS DSP package. As the order of includes is not defined in our tools, this might cause an error - hard to tell which CMSIS math header was actually included. The removed math header we used in this code base was an older version.

Migration actions required

Use CMSIS DSP release (not part of Mbed OS at the moment) - the header file CMSIS math is included there.

SharedPtr: add nullptr constructor

12048

Summary of changes

For consistency with std::shared_ptr, and mbed::Callback, and as a
potential optimisation aid, give SharedPtr a distinct constructor for
nullptr.

Impact of changes

Optimise clearing by adding nullptr overload.

Migration actions required

The added nullptr overload means SharedPtr(NULL) or SharedPtr(0) will no longer work; you must use SharedPtr(nullptr) or SharedPtr().

Add MBED_FALLTHROUGH attribute

12032

Summary of changes

C++17 standardised [[fallthrough]] for switch statements to suppress compiler warnings. Provide access to it, or compiler-specific alternatives.

Impact of changes

MBED_FALLTHROUGH attribute added to mbed_toolchain.h - a portable equivalent for C++17's [[fallthrough]].

Migration actions required

None

NVStore: already deprecated implementation removed

12017

Summary of changes

NVStore: already deprecated implementation removal.

Impact of changes

People are advised to use KVStore.

Migration actions required

No migration path available.

Remove deprecated FunctionPointer class

11997

Summary of changes

  • Deprecated class FunctionPointer has been removed.

Impact of changes

  • Any code using FunctionPointer will no longer compile.

Migration actions required

  • Any remaining FunctionPointer users should switch to Callback.

CellularBase/AT_CellularBase removal

11996

Summary of changes

Removed CellularBase and AT_CellularBase from cellular stack and updated both code and unittests accordingly. Cellular drivers in Mbed OS have been updated.

APN lookup and SMS features are now disabled by default.

Impact of changes

Earlier cellular device properties were handled in AT_CellularBase class. After this change, they are correctly handled in the AT_CellularDevice class. The properties are always modem specific and must therefore be handled in the AT_CellularDevice class, which is common for all contexts using it.

CellularBase has been completely removed so those using it must now switch to use CellularInterface instead.
Disabling SMS will save ~4,5kB and APN lookup about ~2kB

Migration actions required

Cellular modem drivers must be updated (done for targets in Mbed OS) by removing references to CellularBase.

CellularBase must be changed to CellularInterface if still in use. (It was already typedef'ed so no other changes needed)

If the application needs SMS or APN lookup, they need to be enabled in mbed_app.json
(cellular.use-apn-lookup: true or cellular.use-sms: true).

TDBStore refactoring

11987

Summary of changes

TDBStore no longer requires Flash based block device.

Storage related test improvements and small fixes

11986

Summary of changes

SlicingBlockDevice does no longer accepts both parameters as zero, or size as zero. SlicingBlockDevice(block, 0,0) used to create a block device that took up the whole block device. There is no sense in doing this, and it has most probably been a programming error if used. Therefore, the constructor now does MBED_ASSERT() if both parameters, start and stop point to the same value. Effectively this prevents creating a slice that has size of zero, or takes the full block device.

Impact of changes

You can no longer create a SlicingBlockDevice that has size of zero, or take the full size of the underlying block device.

Migration actions required

No migration required for code that uses SlicingBlockDevice as intended.

UnbufferedSerial: Introduce the class to replace RawSerial

11961

Summary of changes

Add the UnbufferedSerial class to provide unbuffered I/O access.

Use it instead of RawSerial. See documentation section for more details.

MbedCRC and CRC HAL revisions (6.0 redo)

11957

Summary of changes

The MbedCRC class has been improved and optimised.

Impact of changes

We've added a global JSON configuration drivers.crc-table-size controlling table usage, and individual uses can be size-optimised via template parameters. However, some changes are backwards-incompatible.

Migration actions required

  • The special-case handling of POLY_32BIT_REV_ANSI has been removed - the same result can be obtained via POLY_32BIT_ANSI.
  • CRCs smaller than 8 bits now return results in the standard position at the bottom of the register - previously they were shifted with random bits at the bottom.
  • The previous precomputed table for POLY_16BIT_IBM had errors - this has been corrected, but CRC results will be different from the previous software calculation (but will match any hardware calculation)

minimal-printf: Enable using a target configuration parameter

11891

Summary of changes

Add ability to enable Minimal printf using configuration parameter.

A new configuration parameter target.printf_lib has been added to enable it.

Impact of changes

Convenient and familiar way to configure Mbed OS.

Remove deprecated Callback methods

11880

Summary of changes

Deprecated methods in Callback removed.

Impact of changes

Some code that was generating deprecation warnings will no longer compile at all.

Migration actions required

  • Replace construction using Callback(arg, func) with the reversed Callback(func, arg)
  • Replace use of attach with simple assignment, such as callback = func; or callback = { func, arg };

Add Getaddrinfo interface for multiple DNS adresses

11653

Summary of changes

Added getaddrinfo interface for multiple DNS addresses. It uses the existing nsapi_dns_query_multiple functions.

Sync and async versions added to the interface, so dependent libraries need to be rebuilt.

Impact of changes

New members are added to the network interface:
-getaddrinfo
-getaddrinfo_async
Both of them allocate space for results.

The function gethostbyname is unchanged, but the gethostbyname_async/getaddrinfo_async callback result parameter now contains the number of DNS records found instead of NSAPI_ERROR_OK =0, so a definition of a new callback for getaddrinfo_async is not needed.

Test cases for sync/async added added to DNS test folder.

SYNCHRONOUS_DNS_MULTI_IP
ASYNCHRONOUS_DNS_MULTI_IP

Add an exception for ARMC5 toolchain build

12400

Summary of changes

The Arm Compiler 5 is no longer supported, so we removed the deprecate warning and added the exception in the build tool to stop building with ARM compiler 5.

Impact of changes

With these changes, Arm compiler 5 build fails.

Migration actions required

Upgrade the environment to use Arm Compiler 6 see documentation

BLE driver set random static address

12321

Summary of changes

This PR adds the function set_random_address to the HCIDriver class. It allows drivers writer to set the Random Static Address of the controller without using the deprecated API Gap:: setAddress .

This PR supersedes #12235 .

Cellular: Remove support for multiple ATHandlers

12305

Summary of changes

This commit removes multi ATHandler support from cellular. This has not been used and causes unnecessary complexity and memory consumption.

Memory statistics of mbed-os-example-cellular with NRF52840_DK + BG96:
GCC:
Total Static RAM memory (data + bss): 29360(+296) bytes
Total Flash memory (text + data): 130660(-832) bytes

ARM:
Total Static RAM memory (data + bss): 261554(+8) bytes
Total Flash memory (text + data): 127573(-1193) bytes

IAR:
Total Static RAM memory (data + bss): 25479(+296) bytes
Total Flash memory (text + data): 102418(-527) bytes

The RAM increase is because ATHandler is no longer created with a new -operator, and is instead a member of AT_CellularDevice, so the image tool is able to count it. Actual total RAM consumption has decreased thanks to removing the variables.

Impact of changes

Major changes:

  • Dependency to FileHandle removed from base classes.
  • AT_CellularDevice owns the default FileHandle and shares it with AT -classes.
  • Controlling hang-up -detection moved as CellularContext::configure_hup(). It can no longer be configured via CellularDevice.

Migration actions required

  • Enabling hang-up detection is now configured using CellularContext::configure_hup(). CellularDevice::enable_hup() and context creation with BufferedSerial handle removed. Cellular will now automatically enable and disable HUP when switching between AT and PPP mode.
  • CellularDevice::create_context() no longer takes FileHandle as parameter
  • CellularDevice::get_file_handle() removed. ATHandler::get_file_handle() can be used instead.

Cellular: Remove API's empty default implemetations

12293

Summary of changes

Cleanup the Cellular API by removing empty default implementations and making them pure virtual.

Targeted for release-version 6.0.0.

Impact of changes

  • Classes inheriting CellularDevice will have to have implementation for the new pure virtual methods:
  • clear()
  • get_context_list()
  • Classes inheriting CellularContext do not have to have implementation for:
  • get_netmask()
  • get_gateway()
nsapi_error_t NetworkInterface::get_netmask(SocketAddress *)
{
return NSAPI_ERROR_UNSUPPORTED;
}

nsapi_error_t NetworkInterface::get_gateway(SocketAddress *)
{
return NSAPI_ERROR_UNSUPPORTED;
}

Migration actions required

See Impact of changes section.

Rename "default_lib" to "c_lib".

12278

Summary of changes

  • Rename target.default_lib to target.c_lib as it is more meaningful. These changes are done only for MBED OS 5 targets and in the build tool.

Impact of changes

With these changes, target.default_lib attribute is no longer being supported.

Migration actions required

  • The target.c_lib is the new attribute used for C library selection. The choice remains unchanged("std" or "small")

unittests: disable coverage report filtering

12273

Summary of changes

Disable coverage report filtering because of poor results.

e.g. mbed test --unittests -r Socket --coverage htmlg
This command will run all unittests with names containing Socket and then create coverage report with the same scheme, filtering all source files with names containing Socket.

The problem is that coverage report will be correct only when filtered test name will be the same as corresponding source file name (to be covered) - the same (-r) pattern is used to filter both test names and source file names used in coverage report

Due to described problems it was decided to disable coverage report filtering.
-r will only filter test names and pattern won't be passed to coverage report generator.

storage_abstraction: deprecated since Mbed OS 5.5 and now removed

12253

Summary of changes

Removes deprecated API's under hal/storage_abstraction and the folder itself. Only target which had implemented the functionality was K64F and the implementation gets removed with this PR.

Impact of changes

Removes deprecated storage_abstraction API.

Migration actions required

Migration not possible. Developers who were relying on this API should study Mbed OS Storage documentation.

Cellular: Remove friend definitions from cellular state machine

12251

Summary of changes

Instead of defining which classes can access state machine, CellularStateMachine
class is now "a normal" CPP class with public API.

Impact of changes

This is potentially a breaking change but as CellularStateMachine is only used internally there shouldn't be any impact.

Migration actions required

None, internal change

Cellular: Remove deprecated CellularDevice::stop()

12249

Summary of changes

Cellular: Remove deprecated CellularDevice::stop()

Impact of changes

Removed method CellularDevice::stop()

Migration actions required

CellularDevice::shutdown() should be used instead.

ESP8266: Add built-in hostname resolution handling (disabled by default)

12234

Summary of changes

Fixes https://github.com/ARMmbed/mbed-os/issues/11982 (some routers fail to work with the UDPSocket-approach, but are proved to work when ESP uses its embedded hostname resolution AT command).

The feature is disabled by default and can be enabled in mbed_app.json with "esp8266.built-in-dns": true. When enabled then the synchronous hostname resolution will use the ESP's CIPDOMAIN AT command, but asynchronous resolution will keep on using the UDPSockets as before (no point rewriting the nsapi_dns). Also caching does not work.

I tested with the netsocket-dns testsuite. Obviously caching tests often fail, but if lucky I can get 15/16 passes.

@zhiyong80, please verify if this works with your router.

Impact of changes

None, until user enables the esp8266.built-in-dns option.

Add BufferedSerial class to replace UARTSerial

12207

Summary of changes

Implement the BufferedSerial class to replace UARTSerial. BufferedSerial is UARTSerial renamed to convey the original purpose of the class. Also remove usage of UARTSerial in Mbed OS Core diretories

Update Mbed TLS and Mbed Crypto to latest as of 2019-12-20

12150

Summary of changes

Upgrade to Mbed TLS 2.20.0d1 and Mbed Crypto 3.0.0d0.

Impact of changes

What behavior changes are being made?
For security and NIST SP 800-90A compliance reasons, CTR DRBG now grabs a nonce from the entropy source if needed to provide the maximum security strength. A previously unused-before-seeding member of the CTR DRBG context, mbedtls_ctr_drbg_context::reseed_counter, is used to hold the number of bytes the user has requested to include from the nonce via mbedtls_ctr_drbg_set_nonce_len(), or -1 to indicate that the entropy nonce length was not set explicitly. This means applications that were depending on a reseed_counter value of 0 to mean "not yet seeded" will need to instead handle errors from calls to mbedtls_ctr_drbg_seed().

What is being deprecated?
A few PSA Crypto asymmetric cryptography functions and macros, key usage definitions, and error code definitions have been renamed to better reflect their operation and to improve readability.

Why is this being deprecated?
The PSA Crypto API continues to develop as it heads towards its 1.0 release. Mbed Crypto 3.0.0d0 implements more of PSA Crypto 1.0b3 than was implemented in Mbed Crypto 2.x, and this brings along some API deprecations.

Mbed Crypto includes backwards compatibility macros (by way of psa/crypto_compat.h) to provide source-level backwards compatibility, although it's recommended to stop using the deprecated APIs as soon as you are able to.

Migration actions required

To avoid using deprecated APIs, users of PSA Crypto should update to the new version of API.

Old New
psa_asymmetric_sign() psa_sign_hash()
psa_asymmetric_verify() psa_verify_hash()
PSA_ASYMMETRIC_SIGNATURE_MAX_SIZE() PSA_SIGNATURE_MAX_SIZE()
PSA_ASYMMETRIC_SIGN_OUTPUT_SIZE() PSA_SIGN_OUTPUT_SIZE()
PSA_KEY_USAGE_SIGN PSA_KEY_USAGE_SIGN_HASH
PSA_KEY_USAGE_VERIFY PSA_KEY_USAGE_VERIFY_HASH
PSA_ERROR_UNKNOWN_ERROR PSA_ERROR_GENERIC_ERROR
PSA_ERROR_OCCUPIED_SLOT PSA_ERROR_ALREADY_EXISTS
PSA_ERROR_EMPTY_SLOT PSA_ERROR_DOES_NOT_EXIST
PSA_ERROR_INSUFFICIENT_CAPACITY PSA_ERROR_INSUFFICIENT_DATA
PSA_ERROR_TAMPERING_DETECTED PSA_ERROR_CORRUPTION_DETECTED

Thread: remove methods deprecated in 5.10

12142

Summary of changes

Remove various Thread methods that were deprecated in Mbed OS 5.10

Impact of changes

Code using the old methods will no longer compile

Migration actions required

Uses of the following removed Thread methods need to be replaced:

  • Thread::signal_set -> Thread::flags_set
  • Thread::signal_clr -> ThisThread::flags_clear
  • Thread::signal_wait -> ThisThread::flags_wait_xxx
  • Thread::wait -> ThisThread::sleep_for
  • Thread::wait_until -> ThisThread::sleep_until
  • Thread::yield -> ThisThread::yield
  • Thread::gettid -> Thread::get_id or ThisThread::get_id
  • Thread::attach_idle_hook -> Kernel::attach_idle_hook
  • Thread::attach_terminate_hook -> Kernel::attach_thread_terminate_hook

HAL: Add a get_capabilities() function to ResetReason API

12139

Summary of changes

Add the hal_reset_reason_get_capabilities() function to the ResetReason HAL API to skip the unsupported reason values during HAL & driver tests.

Fixes #11792.

Updated tests:

  • tests-mbed_hal-reset_reason,
  • tests-mbed_drivers-reset_reason.

Impact of changes

Extend the ResetReason HAL API with the hal_reset_reason_get_capabilities() function. Unsupported reason values are skipped during the greentea tests.

Migration actions required

A default, weak implementation is provided. Every target has to override this weak implementation to provide the correct reset_reason_capabilities_t.

GCC: remove -fno-delete-null-pointer-checks

12023

Summary of changes

For GCC we're being cautious by passing the -fno-delete-null-pointer-checks. This option prevents some optimisation opportunities, so removing it can reduce code size.

One particular optimisation loss occurs in Callback where a test similar to this occurs:

extern void myfunc();

inline void foo(void (*fnptr)())
{
if (fnptr) {
do A;
} else {
do B;
}
};

foo(myfunc);

With -fno-delete-null-pointer-checks, the compiler does not assume that &myfunc is non-null, and inserts the "null check" - seeing if the address is 0. But performing that test of the address is incorrect anyway - if myfunc actually could be at address 0, we'd still want to doA.

Anyway, we do not have an equivalent option enabled for either Clang or IAR, and we have performed clean-ups avoiding issues with apparently-null vector tables in Clang already, for example #10534.

Therefore it should(TM) be safe to remove the option for GCC. We do not have general data or code at address 0, only vectors are likely to be there, so it does not make sense to be globally restricting code generation for that.

Impact of changes

Will reduce image size. Particularly when Callback is in use. Increased optimisation may require code adjustments, exposing undefined behaviour

Migration actions required

If code fails, address undefined behaviour. Eg this null check may now be removed:

int foo(int *ptr)
{
int a = ptr[0];
if (!ptr) { // may be optimised out - compiler can assume non-null because already accessed
return -1;
}
return bar(a);
}

Correct to:

int foo(int *ptr)
{
if (!ptr) {
return -1;
}
int a = ptr[0];
return bar(a);
}

ARMC6: Add a build profile extension with the link-time optimizer enabled

11874

Summary of changes

Added an lto build profile extension for ARMC6 toolchain.

  • added -flto to common flags,
  • added --lto & --lto_level=Oz to ld flags.
Results

Product: ARM Compiler 6.11 Professional Component: ARM Compiler 6.11 Tool: armclang [5d3b4200]

[email protected]

Mbed OS branch commit SHA RAM (data + bss) Flash (text + data) build time details
mbed-os-5.14.1 679d248 206047 39168 739.53 blinky-679d248.txt
armc6_build-enable_lto_for_release c6a655f 205848 36601 610.81 blinky-c6a655f.txt

[email protected]

Mbed OS branch commit SHA RAM (data + bss) Flash (text + data) build time details
mbed-os-5.14.1 679d248 252457 361038 828.68 ccexample-679d248.txt
armc6_build-enable_lto_for_release c6a655f 251580 329505 835.21 ccexample-c6a655f.txt
Build commands used to produce the above results

mbed-os-example-blinky

cd $(mktemp -d)
git clone [email protected]:ARMmbed/mbed-os-example-blinky.git
cd mbed-os-example-blinky/
git checkout mbed-os-5.14.1
git clean -dxff && git reset --hard

# Define Mbed OS rev
# 1. mbed-os-5.14.1
echo 'https://github.com/ARMmbed/mbed-os/#679d24833acf0a0b5b0d528576bb37c70863bc4e' > mbed-os.lib
# 2. LTO branch on top of mbed-os-5.14.1
echo 'https://github.com/fkjagodzinski/mbed-os/#d7df3e673144232d3e162de19ec13f0472d725c6' > mbed-os.lib

mbed deploy
cd mbed-os/ && git log --oneline -1 && cd ..
time -p mbed compile -t ARM -m K64F --profile mbed-os/tools/profiles/release.json

# More details
mbed compile -t ARM -m K64F --profile mbed-os/tools/profiles/release.json --stats-depth=100

mbed-cloud-client-example

cd $(mktemp -d)
git clone [email protected]:ARMmbed/mbed-cloud-client-example.git
cd mbed-cloud-client-example/
git checkout 4.0.0
git clean -dxff && git reset --hard
cp ../mbed_cloud_dev_credentials.c .

# Define Mbed OS rev
# 1. mbed-os-5.14.1
echo 'https://github.com/ARMmbed/mbed-os/#679d24833acf0a0b5b0d528576bb37c70863bc4e' > mbed-os.lib
# 2. LTO branch on top of mbed-os-5.14.1
echo 'https://github.com/fkjagodzinski/mbed-os/#d7df3e673144232d3e162de19ec13f0472d725c6' > mbed-os.lib

mbed deploy
cd mbed-os/ && git log --oneline -1 && cd ..
time -p mbed compile -t ARM -m K64F --profile mbed-os/tools/profiles/release.json

# More details
mbed compile -t ARM -m K64F --profile mbed-os/tools/profiles/release.json --stats-depth=100

Remove RtosTimer deprecated class

12601

Summary of changes

Removed RtosTimer deprecated class.

Impact of changes

Breaking change: RtosTimer has been deprecated since Mbed OS 5.2 and it is removed now.

Migration actions required

Use EverntQueue as it provides similar functionality with the additional features to handle deferring other events to multiple contexts.

Change Mutex lock and unlock APIs return value to void

12598

Summary of changes

Modified Mutex lock() and unlock() APIs to returnvoid as return status value deprecated.

Impact of changes

Breaking change: Mutex lock() and unlock() methods return status value have been deprecated since Mbed OS 5.9, so changed the return value to void.

Migration actions required

Use Mutex void lock(), void unlock() methods.

Remove Mutex deprecated API

12596

Summary of changes

Removed Mutex deprecated API.

Impact of changes

Breaking change: Mutex lock(uint32_t millisec) method have been deprecated since Mbed OS 5.10 and its removed now.

Migration actions required

Use Mutex lock, trylock, trylock_for methods.

crypto: Update to Mbed Crypto 3.0.1

12560

Summary of changes

Update the version of Mbed Crypto provided by Mbed OS to version 3.0.1.

For details of this update see the documentation here:
https://github.com/ARMmbed/mbed-crypto/releases/tag/mbedcrypto-3.0.1

Remove FileSystemLike deprecated APIs

12554

Summary of changes

Removed FileSystemLike deprecated APIs.

Impact of changes

Breaking change: FileSystemLike opendir and open methods have been deprecated since Mbed OS 5.5 and they are removed now.

Migration actions required

Use open(FileHandle **file, const char *filename, int flags) and open(DirHandle **dir, const char *path) methods.

Remove DirHandle deprecated APIs

12553

Summary of changes

Removed DirHandle deprecated APIs.

Impact of changes

Breaking change: DirHandle closedir, readdir, rewinddir, telldir and seekdir methods have been deprecated since Mbed OS 5.4 and they are removed now.

Migration actions required

Use DirHandle close, read, rewind, tell and seek methods.

Remove mbed power management deprecated API

12551

Summary of changes

Removed mbed power management deprecated API.

Impact of changes

Breaking change: deepsleep API has been deprecated since Mbed OS 5.6 and it is removed now.

Migration actions required

Use sleep()

Remove mbed interface deprecated API

12550

Summary of changes

Removed mbed interface deprecated API.

Impact of changes

Breaking change: mbed_error_vfprintf API has been deprecated since Mbed OS 5.11 and it is removed now.

Migration actions required

Use mbed_error_vprintf().

Remove FileHandle deprecated APIs

12549

Summary of changes

Removed FileHandle deprecated APIs.

Impact of changes

Breaking change: FileHandle lseek, fsync, and flen methods have been deprecated since Mbed OS 5.4 and they are removed now.

Migration actions required

Use FileHandle seek(), sync(), and size() methods.

Remove the deprecated CallChain class and its APIs

12534

Summary of changes

CallChain is never intended for public use and its no longer used in Mbed OS, therefore, it is removed.

Impact of changes

Breaking change: CallChain class and its methods have been deprecated since Mbed OS 5.6 and they are removed now.

Migration actions required

None

Remove CriticalSectionLock deprecated APIs

12533

Summary of changes

Removed the CriticalSectionLock deprecated APIs.

Impact of changes

Breaking change: CriticalSectionLock lock and unlock methods have been deprecated since Mbed OS 5.8 and they are removed now.

Migration actions required

Use the static methods CriticalSectionLock::enable() and CriticalSectionLock::disable().

Remove the deprecated ATCmdParser APIs.

12527

Summary of changes

Removed ATCmdParser deprecated APIs.

Impact of changes

Breaking change: ATCmdParser setTimeout, setDelimiter, and dubugOn methods have been deprecated since Mbed OS 5.5.0 and they are removed now.

Migration actions required

Use set_timeout(), set_delimiter(), and debug_on()

Remove the deprecated Ticker APIs

12525

Summary of changes

  • Removed the Ticker deprecated APIs
  • Updated the async greentea test to use attach with callback API

Impact of changes

Breaking change: Ticker attach and attach_us methods with cv-qualifiers have been deprecated since Mbed OS 5.1 and they are removed now.

Migration actions required

Use attach(callback(obj, method), t) and attach_us(callback(obj, method), t)

Remove InterruptIn deprecated APIs

12518

Summary of changes

Removed InterruptIn deprecated APIs.

Impact of changes

Breaking change: InterruptIn rise and fall methods with cv-qualifiers have been deprecated since Mbed OS 5.1 and they are removed now.

Migration actions required

Use rise(callback(obj, method)) and fall(callback(obj, method))

Remove the deprecated the InterruptManager APIs

12501

Summary of changes

Removed InterruptManager class as it was deprecated since Mbed 5.6.

Impact of changes

All users of InterruptManager class will need to modify their application.

Migration actions required

The interrupt handlers need to be attached directly using specific drivers, for example, Application handler can use one of the Ticker/Timer/Timeout classes for clock-related interrupts.

Remove the deprecated ethernet APIs

12500

Summary of changes

The Ethernet is no longer supported, so removed header and cpp files and its dependency.

Impact of changes

Breaking change: The Ethernet object is removed as it has been deprecated in the previous feature releases.

Migration actions required

Use NetworkInterface instead, for more details have a look at our documentation here

C++11-ify virtualisation in lwIP classes

12489

Summary of changes

Use override and final where appropriate, and eliminate unnecessary
virtual.

Fix up get_ip_address following string-based API removal (#11942).

Some other C++11 simplifications.

Marking as breaking change as it fixes up a previous breaking change.

Impact of changes

No new impact.

Migration actions required

No new migrations

C++11-ify virtualisation in netsocket

12487

Summary of changes

Use override and final where appropriate, and eliminate unnecessary
virtual.

Fixes some mismatches in string-based API removal (#11942)

Some other C++11 simplifications.

Reduces code size.

Marking as breaking change because it fixes up some work in a previous breaking change.

Impact of changes

No new implications.

Migration actions required

No new actions.

HAL: Add a get_capabilities() function to GPIO API

12477

Summary of changes

Add the gpio_get_capabilities() function to the GPIO HAL API to skip the unsupported input pull modes when testing with the FPGA-CI-test-shield.

Updated tests:

  • tests-mbed_hal_fpga_ci_test_shield-gpio.

Impact of changes

Extend the GPIO HAL API with the gpio_get_capabilities() function. Unsupported input pull modes are skipped during the greentea tests.

Migration actions required

A default, weak implementation is provided. Every target has to override this weak implementation to provide the correct gpio_capabilities_t.

Proposal to remove SPIFReducedBlockDevice

12475

Summary of changes

The blockdevice is not needed by the bootloader. Removes SPIFReducedBlockDevice fully.

Impact of changes

Applications relying to SPIFReducedBlockDevice are forced to switch to SPIFBlockDevice. This comes at a cost of ROM and RAM usage.

Migration actions required

Applications need to switch on SPIFBlockDevice

Add Eight-Bit-Addressing mode to I2CEEBlockDevice.

12446

Summary of changes

When dealing with EEPROMs without a 16 bit adressing, the current
implementation does not work, as it writes a 16 bit address to the chip.
This may cause undefined behaviour.
This change adds a new constructor argument to enable this new eight-bit
mode. It defaults to false to not break existing code.
This constructor argument should actually never be necessary to manually
set, except when dealing with cheap devices.

An example for such a device is the Hua Hong NEC K24C02. Datasheet.

Impact of changes

Added a new optional argument at the end of all existing constructors.

Migration actions required

None, as the new constructor argument is optional and at the end.
The default value does not change functionality in existing code.

Remove the deprecated CAN APIs.

12420

Summary of changes

Removed CAN deprecated APIs.

Impact of changes

With these changes, CAN attach APIs with cv-qualifiers sources are removed and this is the breaking changes for the user

Migration actions required

Use attach(callback(obj, method), type)

Enable minimal-printf by default for all builds

12233

Summary of changes

This PR enables minimal-printf library for all builds. That means that all calls to printf family (including snprintf) will be handled by the minimal-printf library. Main reason for the change are substantial ROM savings that can reach up to 20k. The below table shows result for simple RTOS blinky example in two variants (explicitly calling printf and without) for two boards and three profiles:

Impact of changes

Minimal-printf library supports most of the basic usecases:

* %d: signed integer [h, hh, (none), l, ll, z, j, t].
* %i: signed integer [h, hh, (none), l, ll, z, j, t].
* %u: unsigned integer [h, hh, (none), l, ll, z, j, t].
* %x: unsigned integer [h, hh, (none), l, ll, z, j, t], printed as hexadecimal number (e.g., ff).
* %X: unsigned integer [h, hh, (none), l, ll, z, j, t], printed as hexadecimal number (e.g., FF).
* %f: floating point (enabled by default).
* %F: floating point (enabled by default, treated as %f).
* %g: floating point (enabled by default, treated as %f).
* %G: floating point (enabled by default, treated as %f).
* %c: character.
* %s: string.
* %p: pointer (e.g. 0x00123456).

If your application requires more advanced functionality you'll have to revert to using standard library version.

Migration actions required

If your application requires advance features of printf family calls, you'll either simplify it or switch to the standard C library version. To do so modify your application configuration in mbed_app.json file to override the parameter target.printf_lib with the value std as shown below:

"target_overrides": {
"*": {
"target.printf_lib": "std"
}
}

IPCore String-based API removal

11942

Summary of changes

Remove the deprecated string-based APIs. This is a breaking change, targeted for mbed-os-6.0.
The APIs were deperecated in mbed-os-5.15, see https://github.com/ARMmbed/mbed-os/pull/11914. Their internal usage was given up in https://github.com/ARMmbed/mbed-os/pull/11941.

The following API functions are being removed:

TCPServer (whole class is deprecated already)
TCPSocket::connect(const char *host, uint16_t port);
TLSSocket::connect(const char *host, uint16_t port);
DTLSSocket::connect(const char *host, uint16_t port)
InternetDatagramSocket::sendto(const char *host, uint16_t port, data, size);
InternetSocket::bind(const char *address, uint16_t port);
L3IP:add_ipv4_multicast_group(const char *address);
L3IP:add_ipv6_multicast_group(const char *address)
L3IP:remove_ipv4_multicast_group(const char *address);
L3IP:remove_ipv6_multicast_group(const char *address)
NetworkInterface::get_ip_address()
NetworkInterface::get_netmask()
NetworkInterface::get_gateway()
NetworkInterface::set_network(const char *ip_address, const char *netmask, const char *gateway)
NetworkStack::get_ip_address()
NetworkStack::get_ip_address_if()

Impact of changes

Applications using the old APIs will not compile.

Migration actions required

Users are expected to use their SocketAddress-based counterparts and explicitly call gethostbyname() if DNS address resolution is needed.

GCC: Add a build profile extension with the link-time optimizer enabled

11856

Summary of changes

Add a build profile extension with the link-time optimizer enabled for GCC_ARM toolchain.

Impact of changes

Migration actions required

  • The minimal required version of the GCC_ARM is now the GNU Arm Embedded Toolchain Version 9-2019-q4-major. Earlier GCC_ARMversions can cause various issues when the -flto flag is used, e.g. a platform specific error during the final link stage on Windows hosts with GCC8.

  • The noinline attribute has to be used for every function that must be placed into a specific section (specified with a section(".section_name") attribute). In general, when a function is considered for inlining, the section attribute is always ignored. However, with the link-time optimizer enabled, the chances for inlining are much higher because the inliner works across multiple translation units. As a result, the output sections' sizes change compared to a non-lto build. This may lead to a section ".section_name" will not fit in region "region_name" type errors.

  • The common flags defined for the GCC_ARM toolchain are now appended to the ld flags during a mbed-cli build. Previously, the common flags were appended only to asm, c and cxx flags. Having the same flags for the compiler and the linker is required when using the link-time optimizer (which is the case for the lto build profile extension). Any options unrecognized by the linker should be moved from common to asm, c or cxx.

Correct Timeout rescheduling

12941

Summary of changes

Chrono changes "optimised" Timeout::handler in a way that broke users who rescheduled the timeout during their attached callback.

Attempted optimisation is less necessary now that platform.callback-nontrivial is set to false by default - that setting reduces overhead of copying the Callback to almost nothing.

Fixes #12940.

Impact of changes

Migration actions required

Correct core RTOS sleep routine timing

12938

Summary of changes

Chrono conversions inadvertantly changed the core timed sleep routine used by the RTOS idle to use OsTimer::update_and_get_tick() instead of OsTimer::get_tick().

Correct this, and expand/clarify documentation and naming to try to prevent recurrence.

Another minor fix observed while inspecting code - OsClock can't just use milliseconds, it should match the period of OsTimer, which theoretically can be different.

Fixes #12920.

Remove unsupported targets

12935

Summary of changes

This is another of a series of PRs (others https://github.com/ARMmbed/mbed-os/pull/12775, https://github.com/ARMmbed/mbed-os/pull/12810, https://github.com/ARMmbed/mbed-os/pull/12864) to remove targets that are not supported or retired as explained in recent blog post.

There are individual commits to remove targets from targets.json and files/folders for the corresponding targets.

Impact of changes

The following targets are being removed:

Migration actions required

  • The targets listed above continue to be available in the 5.15 branch.

Convert newlines on all terminal (tty) devices by default

12889

Summary of changes

Applications can reduce their ROM usage by replacing
"\r\n" by "\n".

Impact of changes

Breaks compatibility with applications built with Mbed 2.

Migration actions required

Update to the latest version of Mbed OS (possibly using the bare metal profile for ultra-constrained devices).

Bare metal profile: USB class device support

12873

Summary of changes

USBCDC_ECM class device uses RTOS thread APIs, so added MBED_CONF_RTOS_PRESENT conditional check to disable that class device in bare metal profile.

Impact of changes

With these changes, except USBCDC_ECM, all the below list of USB class devices can build and works in bare metal profile.

  • USBAudio
  • USBHID
  • USBKeyboard
  • USBMIDI
  • USBMouse
  • USBMouseKeyboard
  • USBMSD
  • USBSerial

Migration actions required

None.

Remove unsupported targets

12864

Summary of changes

This is the third of a series of PRs (others https://github.com/ARMmbed/mbed-os/pull/12775, https://github.com/ARMmbed/mbed-os/pull/12810) to remove targets that are not supported or retired as explained in recent blog post.

There are individual commits to remove targets from targets.json and files/folders for the corresponding targets.

Impact of changes

The following targets are being removed:

  • Delta: DELTA_DFBM_NQ620, DELTA_DFCM_NNN50, DELTA_DFCM_NNN40
  • NXP: LPC4088, LPC1124, LPC1347, LPC1769, LPC1549, XBED_1768
  • NXP: LPC810, LPC1800, LPC4330, LPC4337, LPC11U37H_401
  • NXP: KL26Z, KW24D, KL20D50, KL82Z, KL05Z
  • Silabs EFM32LG, EFM32WG, EFM32HG, EFM32ZG, EFM32PG, EFM32PG12, EFR32MG1
  • Advantech MTB_ADV_WISE_1570, 1510 (renamed)
  • WALLBOT_BLE, NRF51_DONGLE, NRF51822_Y5_MBUG
  • Maxim: MAXWSNENV, MAX32625NEXPAQ
  • Multitech: MTS_MDOT_F405RG, MTS_GAMBIT
  • Onsemi: NCS36510
  • Switch Science: HRM1017, TY51822R3, SSCI824 (PR https://github.com/ARMmbed/mbed-os/pull/12697)
  • Ublox EVK_NINA_B1, EVA_NINA, HI2110
  • Other: RBLAB, SDT51822, RAPIDIOT, MTM_MTCONNECT04S

Migration actions required

  • The targets listed above continue to be available in the 5.15 branch.

ARCH_PRO: Remove uARM tooolchain support

12853

Summary of changes

  • Update scatter file for the ARM toolchain to use 2 region memory model.
    The scatter file changes affect the following boards:
  • LPC1768, ARCH_PRO, UBLOX_C027, XBED_LPC1768 (LPC1768.sct)
  • Remove the TOOLCHAIN_ARM_MICRO directory.
  • Remove release_version as not necessary and as the target can also run
    Mbed OS 6.
  • Remove uARM toolchain in the list of supported toolchains for the target.
  • Indicate that the target supports the small ARM toolchain C library.

Impact of changes

It is no longer possible to use the uARM toolchain to build binaries for the ARCH_PRO board.

Migration actions required

Set the "target.c_lib" configuration option to "small" to build binaries using Microlib with the ARM toolchain.

Allow Devicekey::generate_root_of_trust() to define key size.

12823

Summary of changes

Allow Devicekey::generate_root_of_trust() to define key size.

By default, generate 16 byte keys, to be compatible with bootloader.
But allow user to generate 32 byte keys as well.

This fixes #12821

Impact of changes

Default key, generated by Devicekey::generate_root_of_trust() is now 16 bytes,
instead of 32 bytes.

Migration actions required

If you want to generate 32 byte keys with Devicekey::generate_root_of_trust(),
you need to explicitly supply key size as a parameter.

Remove deprecated Platform header files

12811

Summary of changes

Remove the deprecated header files as part of the Mbed 6 cleanup.

Impact of changes

Breaking change: Applications that include the removed files will no longer successfully build.

Migration actions required

Include the header files recommended in each removed header file:

platform/critical.h -> platform/mbed_critical.h
platform/mbed_sleep.h -> platform/platform/mbed_power_mgmt.h
platform/rtc_time.h -> platform/mbed_rtc_time.h
platform/semihost_api.h -> platform/mbed_semihost_api.h
platform/sleep.h -> platform/mbed_power_mgmt.h
platform/toolchain.h -> platform/mbed_toolchain.h
platform/wait_api.h -> platform/mbed_wait_api.h

Remove unsupported targets

12810

Summary of changes

This is the second of a series of PRs (first https://github.com/ARMmbed/mbed-os/pull/12775) to remove targets that are not supported or retired as explained in recent blog post.

There are individual commits to remove targets from targets.json and files/folders for the corresponding targets.

Impact of changes

The following targets are being removed:

  • MTBs (most)
  • nRF51/52
  • Ublox NINA B1
  • LAIRD_BL600, BL652, BL654
  • OSHCHIP
  • ACONNO_ACN52832
  • MURATA_WSM_BL241
  • LPC11u (most)
  • Misc unsupported

Migration actions required

  • The targets listed above continue to be available in the 5.15 branch.

Seeed: Removing unsupported Seeed targets for OS 6

12792

Summary of changes

Removing targets: Seeed Arch Link, Seeed Arch-RO359B, Seeed Arch BLE, Seeed Tiny BLE, Seeed Arch GPRS V2,Seeed Xadow M0

Impact of changes

These targets will no longer be supported.

LittleFSv2: Bring in v2.2

12783

Summary of changes

Introduces LittleFSv2.2 developed by @geky. Mbed OS adaption (LittleFSv1 -> LittleFSv2) is based on work done by @pilotak. The only thing the undersigned has done was to create this PR.

Impact of changes

No additional impact

Migration actions required

Brings in LittleFSv2 which will coexist with LittleFSv1 already found from Mbed OS. If you already a v1 filesystem you might try converting it to v2, but this isn't guaranteed to succeed. You should preferably create a new v2 filesystem instead.

Remove unsupported targets

12775

Summary of changes

This is the first of a series of PRs to remove targets that are not supported or retired as explained in recent blog post.

There are individual commits to remove targets from targets.json and files/folders for the corresponding targets.

Impact of changes

The following targets are being removed:

  • Thundersoft (all)
  • Realtek RTL8195A
  • Ublox ODIN and related (OKDO, MTB)
  • RDA (all)
  • Gigadevice GD32_E103VB
  • Atmel (all)
  • TI (all)
  • Etteplan Elmo
  • Wiznet (all)
  • Silica
  • Renesas VK_RZ_A1H
  • Rename MTB_MXCHIP_EMW3166 to WIO_EMW3166
  • VBLUNO51 and VBLUNO52

Migration actions required

  • The targets listed above continue to be available in the 5.15 branch.

Callback: Trivial default

12761

Summary of changes

Turn off callback.non-trivial by default to save ROM space.

Follow-up to #12036. Will need at least one example changed to turn the option back on.

Impact of changes

  • If application code uses Callback with a non-trivial functor, they will get a compilation error directing them to turn on platform.callback-nontrivial.

Migration actions required

  • Add "platform.callback-nontrivial": true to your mbed_app.json if a build error indicates that it is required - or change your code to only use trivial functors in Callback.

BLE: remove deprecated APIs from Gatt and SecurityManager

12742

Summary of changes

  • Remove deprecated APIs from Gatt
  • Remove deprecated APIs from SecurityManager

Impact of changes

Deprecated APIs from Gatt and SecurityManager do not exist anymore, applications that use them will not compile until updated with current APIs.

Migration actions required

Applications that compile without deprecation warnings on mbed-os-5.15 will continue to work. Otherwise, please fix any deprecated API usages, for example by referring to compilation warnings from mbed-os-5.15.

Add Semtech Lora radio drivers

12741

Summary of changes

Add Semtech Lora radio drivers for SX1272, SX1276 and SX126x radios.
Added as subtree from original repository: https://github.com/ARMmbed/mbed-semtech-lora-rf-drivers

Impact of changes

Enable using Lora with no additional repositories, all of them part of Mbed OS.

Migration actions required

None

Remove Mbed SPM

12738

Summary of changes

Remove FUTURE_SEQUANA and FUTURE_SEQUANA_M0 targets. These are not supported in Mbed 6.

After the removal of FUTURE_SEQUANA targets, there are no targets remaining that use Mbed SPM. Remove Mbed SPM as well, as it is unused.

Impact of changes

The following targets are being removed in Mbed 6:

  • FUTURE_SEQUANA
  • FUTURE_SEQUANA_M0

Migration actions required

Please use a version of Mbed OS 5 if you require support for FUTURE_SEQUANA or FUTURE_SEQUANA_M0

Remove PSA implementation for v8-M and dual CPU targets

12737

Summary of changes

With Mbed 6, TrustedFirmware-M (TF-M) is the source of Mbed's implementation of PSA. This means Mbed 6 doesn't need to contain any code or tooling to build the v8-M or dual CPU secure binaries.

This patch set removes tooling, code, and targets that would have been used to make PSA secure binaries for v8-M or dual CPU platforms.

Impact of changes

  • NXP LPC55S69 and Numaker M2351 support is temporarily dropped as compared to Mbed 5, as those targets are not supported in TF-M upstream.
  • Exporters for v8-M and dual CPU PSA targets are not supported, due to TF-M limitations.
  • It is no longer possible to use Mbed to build v8-M or dual CPU secure binaries.
  • The following targets are removed compared to Mbed 5:
  • ARM_MUSCA_A1_S
  • ARM_MUSCA_B1_S
  • LPC55S69_NS
  • LPC55S69_S
  • HANI_IOT
  • NU_PFM_M2351_NS
  • NU_PFM_M2351_S

Migration actions required

Use Mbed 5.15 if you require PSA targets with exporter support, or one of the removed targets. LPC55S69 and Numaker M2351 will be supported in Mbed 6 at a later date, after the targets are supported by TF-M.

rtos: Improve CMSIS-RTOSv2 app compatibility

12736

Summary of changes

Some non-Mbed-OS, pre-existing CMSIS-RTOSv2 applications depend on
CMSIS-RTOSv2 Automatic Dynamic Allocation, also known as Object-specific
memory pools. Mbed OS doesn't by default provide any memory to the
CMSIS-RTOSv2 Automatic Dynamic Allocation pool, as doing so would waste
memory if the feature is not used; even if the feature is used, as a
platform, Mbed OS can't know how many objects of which types will be
created by an application and therefore will either waste memory or not
provide enough memory in a hard to debug manner. Portable CMSIS-RTOSv2
applications depending on CMSIS-RTOSv2 Automatic Dynamic Allocation
should instead configure the memory pools themselves, as applications
know best their memory requirements.

Add Mbed configuration options which can be used by applications to
control the amounts of memory available to the CMSIS-RTOSv2 Automatic
Dynamic Allocation subsystem. This enables portable CMSIS-RTOSv2
applications, which can run on any CMSIS-RTOSv2 OS, to be able to run on
Mbed OS as well.

Signed-off-by: Devaraj Ranganna [email protected]
Signed-off-by: Jaeden Amero [email protected]

Impact of changes

Applications written for CMSIS-RTOSv2 that use CMSIS-RTOSv2 Automatic Dynamic Allocation can now also run on Mbed OS, when the application specifies how much memory to use in their mbed_app.json. CMSIS-RTOSv2 docs claim that Automatic Dynamic Allocation is "fully portable", and now that's at least more true than before where Mbed is concerned.

The TF-M regression tests are a concrete example of an application written making use of CMSIS-RTOSv2 Automatic Dynamic Allocation. We have an incredibly easier time running (and maintaining) those tests with Mbed OS, validating the TF-M integration with Mbed OS does not break TF-M functionality, when Mbed OS supports application-configured CMSIS-RTOSv2 Automatic Dynamic Allocation.

Migration actions required

None

odin targets: remove release version

12733

Summary of changes

This is a preparation for more upcoming changes. The latest master updates removed deprecated functionality and these targets do not compile anymore.

Impact of changes

Boards based on the ODIN module won't compile in Mbed OS 6.0.0.

Migration actions required

Staying with Mbed OS version up to 5.15.x.

BLE Gap deprecation cleanup/rework

12730

Summary of changes

  • Remove BLE LegacyGap class and implementations. Map ble::Gap to global Gap.
  • Add non-deprecated APIs (originally found in LegacyGap) to Gap and implementations into GenericGap.
  • Remove/replace legacy BLE event signalling (callback chains) in favour of EventHandler, where possible.
  • Remove BLEProtocol:: and replace AddressType_t with own_address_type_t/peer_address_type_t, AddressByte_t with address_t, etc.
  • Replace BLE::Address_t (for accessing address types + values in whitelists) with the new equivalent whitelist_t::entry_t.
  • Rename ConnectionParams_t -> PreferredConnectionParams_t and use it only for Generic Access Service.
  • Fix misspelt central_privay_configuration_t -> central_privacy_configuration_t
  • Remove legacy type definitions and replace internal usages with new types, e.g. address types, disconnection reason, etc.

Notes:

  • setDeviceName(), getDeviceName(), setAppearance(), getAppearance() from LegacyGap are removed, as device name and appearance can be set via AdvertisingDataBuilder and saved by the application. But there were previously no deprecation warnings for them.
  • get/setPreferredConnectionParams() are dropped from Gap - updated versions will be added to Gatt where they should belong to.

Impact of changes

Legacy BLE Gap APIs and related type definitions are no longer available.
Some APIs have been updated to take parameters of new type definitions of address types + values.

Migration actions required

  • Applications based on up-to-date BLE APIs should be able to make most BLE function calls as before.
  • However as mentioned above some deprecated types (e.g. address) were not warned previously - their usages need to be replaced with corresponding new types. The best clue is compilation errors which can be manually fixed. The PR to update mbed-os-example-ble is an example of how to do this: https://github.com/ARMmbed/mbed-os-example-ble/pull/289
  • Applications should set device name and appearance using AdvertisingDataBuilder and internally remember their values as needed, since APIs to get/set them are removed as explained above.

RZ_A1H remove usage of ethernet hal API

12715

Summary of changes

  • Removed ethernet_api from targets\TARGET_RENESAS\TARGET_RZ_A1XX.
  • Modified features\netsocket\emac-drivers\TARGET_RZ_A1_EMAC not to use ethernet_api.

Remove compatibility for Arm Compiler versions prior to 6.01.0050

12708

Summary of changes

Removed the pre-processor directive __ARMCC_VERSION >= 6010050 and the code added for versions before 6.01.0050.

Impact of changes

Breaking change: The binary generated from ARM Compiler 5 cannot be relied on as support has been dropped.

Migration actions required

Use Arm Compiler 6

Tests: Remove support for ARM Compiler 5

12706

Summary of changes

ARM Compiler 5 is no longer actively supported and was superseded in
Mbed OS by ARM Compiler 6.

Impact of changes

Breaking change: The binary generated from ARM Compiler 5 cannot be relied on as support has been dropped.

Migration actions required

Use Arm Compiler 6.

mbed-client-cli: Remove support for ARM Compiler 5

12705

Summary of changes

ARM Compiler 5 is no longer actively supported and was superseded in
Mbed OS by ARM Compiler 6.

Impact of changes

Breaking change: The binary generated from ARM Compiler 5 cannot be relied on as support has been dropped.

Migration actions required

Use Arm Compiler 6.

TFM: Remove ARM Compiler 5 considerations

12702

Summary of changes

ARM Compiler 5 is no longer actively supported and was superseded in
Mbed OS by ARM Compiler 6.

Impact of changes

Breaking change: The binary generated from ARM Compiler 5 cannot be relied on as support has been dropped.

Migration actions required

Use Arm Compiler 6.

Storage: Remove support for ARM Compiler 5

12699

Summary of changes

ARM Compiler 5 is no longer actively supported and was superseded in
Mbed OS by ARM Compiler 6.

Impact of changes

Breaking change: The binary generated from ARM Compiler 5 cannot be relied on as support has been dropped.

Migration actions required

Use Arm Compiler 6.

Drivers: Remove support for ARM Compiler 5

12698

Summary of changes

ARM Compiler 5 is no longer actively supported and was superseded in
Mbed OS by ARM Compiler 6.

Impact of changes

Breaking change: The binary generated from ARM Compiler 5 cannot be relied on as support has been dropped.

Migration actions required

Use Arm Compiler 6.

Remove netsocket icetea tests and TCPServer

12694

Summary of changes

Remove deprecated Netsocket Icetea tests and TCPServer class.

Impact of changes

  • Netsocket Icetea tests are removed
  • TCPServer class removed

Migration actions required

  • Use Netsocket Greentea tests (TESTS/netsocket)
  • TCPSocket can be used instead of TCPServer

Remove deprecated netsocket methods

12685

Summary of changes

Remove deprecated methods from netsocket

Impact of changes

Deprecated methods in netsocket (since Mbed OS 5.1) are removed.

Migration actions required

InternetSocket::attach -> Use Socket::sigio
TCPSocket(S *stack) -> Use default TCPSocket constructor and call open separately
UDPSocket(S *stack) -> Use default UDPSocket constructor and call open separately

SocketAddress rework

12683

Summary of changes

Original work: https://github.com/ARMmbed/mbed-os/pull/12468 . This PR contains also the UT fix.

  • Add optimised constexpr default constructor. Default construction was previously by a heavyweight defaulted nsapi_addr_t parameter.
  • Remove deprecated resolving constructor.
  • Take nsapi_addr_t inputs by constant reference rather than value.
  • Inline the trivial getters and setters.
  • Use unique_ptr to manage the text buffer.
  • Make operator bool explicit.
  • Optimise some methods.
  • Update to C++11 style (default initialisers, nullptr etc)

Impact of changes

  • Constructor deprecated in Mbed OS 5.1 removed.
  • Code size reductions, particularly on default initialisation.
  • Implicit assignments to bool or int or others no longer possible - any existing code which does not compile is most likely an error. (if (sockaddr) is still fine - such "contextual conversions to bool" can use the explicit operator).

Migration actions required

  • Code attempting resolution by passing a hostname to SocketAddress's constructor must be modified to use NetworkInterface::gethostbyname or NetworkStack::gethostbyname.
  • Code failing due to the now-explicit bool operator should be reviewed to check intent.

Remove deprecated BLE:: APIs and unsupported services

12676

Summary of changes

  • Remove deprecated APIs from BLE namespace.
  • Remove DFUService, UARTService and beacon-related services (iBeacon, EddyStone) whose standards/stacks are externally maintained.

Impact of changes

  • Legacy APIs in BLE namespace are no longer available.
  • DFUService, UARTService and beacon-related services (iBeacon, EddyStone) are no longer available.

Migration actions required

  • Applications that use legacy APIs in BLE namespace need to be updated to use up-to-date APIs.
  • Applications based on removed services can copy the service definitions over from previous mbed-os releases (with deprecated API usages manually fixed), or provide their own implementations.

Remove Maxim and SoftDevice BLE stacks which do not support the latest APIs

12674

Summary of changes

  • Remove Nordic SoftDevice stack (used by nRF51* targets). Notes: nRF52* targets are unaffected as they use Cordio stack.
  • Remove the current Maxim BLE stack (until a newer version based on up-to-date Cordio stack becomes available).
  • Disable BLE features of affected targets from targets.json.

Note: Some references/macros for SoftDevice are still present in the Nordic SDK (targets/TARGET_NORDIC/*) and not cleanly separated with other components.

Impact of changes

  • BLE feature will be unavailable on nRF51* targets and temporarily unavailable on Maxim targets until the driver gets updated in the future.

Migration actions required

  • For nRF51* targets, use Mbed OS release 5.15 - future support for those targets are under review.
  • For nRF52* targets, ensure the default BLE configurations that enable Cordio stack is used.
  • For Maxim targets, use Mbed OS release 5.15 until the BLE driver gets updated.

Remove deprecated ARMC5 reference from mbed compile -S output

12672

Summary of changes

Removed deprecated ARMC5 reference from mbed compile -S command output.

Impact of changes

With these changes, mbed compile -S will not produce any ARMC5 reference.

Migration actions required

None.

Netsocket/lwIP Stack: Remove support for ARM Compiler 5

12671

Summary of changes

ARM Compiler 5 is no longer actively supported and was superseded in
Mbed OS by ARM Compiler 6.

Impact of changes

Breaking change: The binary generated from ARM Compiler 5 cannot be relied on as support has been dropped.

Migration actions required

Use Arm Compiler 6.

Remove ARMC5 reference from Mbed OS platform

12655

Summary of changes

Removed ARMC5 reference from Mbed OS platform.

Impact of changes

Breaking change: The ARMC5 references are removed from platform as they have been deprecated in a previous Mbed OS release.

Migration actions required

Use Arm Compiler 6

Removed all references to __CC_ARM

12654

Summary of changes

Removed ARMC5 reference from FEATURE_BLE.
ARM Compiler 5 is no longer supported in Mbed OS and is superseded by ARM Compiler 6

Impact of changes

Breaking change: The ARMC5 references are removed from platform as they have been deprecated in a previous Mbed OS release.

Migration actions required

Use Arm Compiler 6

Remove minimal-printf extension profile

12640

Summary of changes

Removed minimal-printf extension profile. Usage of minimal-printf library is enabled via the target.printf_lib configuration parameter as described in minimal-printf README, see https://github.com/ARMmbed/mbed-os/tree/master/platform/source/minimal-printf#usage for more details.

Impact of changes

Applications can no longer use the obsolete minimal-printf extension profile.

Migration actions required

Usage of minimal-printf library is enabled via the target.printf_lib configuration parameter, see https://github.com/ARMmbed/mbed-os/tree/master/platform/source/minimal-printf#usage for more details.

Remove the deprecated ethernet hal APIs

12639

Summary of changes

Removed ethernet hal deprecated APIs.

Impact of changes

Breaking change: The Ethernet hal APIs are removed as they have been deprecated in a previous Mbed OS release.

Migration actions required

  • EthInterface is now the preferred way to get an Ethernet object.
  • Alternatively, use NetworkInterface to get an instance of an appropriate network interface (WiFi or Ethernet).

Add "rtos-api" to bare metal

12629

Summary of changes

Added the bare metal form of the RTOS API since it doesn't add any overhead (except for a little extra compilation time) and has the benefit of minimising differences between RTOS and bare metal modes.

Impact of changes

RTOS APIs are available in bare metal mode.

Migration actions required

None

Remove Semaphore deprecated APIs

12609

Summary of changes

Removed Semaphore deprecated APIs.

Impact of changes

Breaking change: Semaphore wait and wait_until methods have been deprecated since Mbed OS 5.13 and are removed now.

Migration actions required

Use Semaphore acquire, try_acquire, try_acquire_for and try_acquire_until methods.

Netsocket: Introduce set_ip_address and get_dns_server APIs

12606

Summary of changes

set_ip_address API can be used to set a static IPv4 address or IPv6 link-local address to network stack. This is needed for example in cellular use cases where device gets multiple IP addresses from cellular context.

With get_dns_server DNS servers can be queried from NetworkInterface object

Fully enforce NonCopyable

12581

Summary of changes

Make NonCopyable fully operational so it gives compile errors in all build profiles.

This removes the deprecated copy operators which let code compile with a warning.

Impact of changes

Code that copies non-copyable classes will now not compile in any profile - previously a link error would have been generated in debug profile, but other profiles would have only generated a "deprecated" warning at compile time and a debug message at runtime.

Migration actions required

Modify code to not copy non-copyable objects. Any code doing so would have likely led to problems such as memory leaks.

Remove mbed wait deprecated APIs

12572

Summary of changes

Removed mbed wait deprecated APIs.

Impact of changes

Breaking change: wait and wait_ms APIs have been deprecated since Mbed OS 5.14 and they are removed now.

Migration actions required

If you wish to sleep, use ThisThread::sleep_for (C++) or thread_sleep_for (C). If you wish to wait (without sleeping), call wait_us. wait_us is safe to call from ISR context.

Replace with weak mbed_error_hook implementation (deprecate the hook function)

12569

Summary of changes

mbed_set_error_hook() can only be called inside the application. Therefore it is not possible in the application to catch errors before calling mbed_set_error_hook().
I thought it would be simpler to create a mbed_error_hook() function which is weak and the application can catch errors at any time.

Impact of changes

Replace mbed_set_error_hook() with an application specific mbed_error_hook() implementation.

Migration actions required

Add property API to InternetSocket

12522

Summary of changes

Add new API to network interface.

Property API allows application to ask network specific properties
from the InternetSocket . Queried information can be used to avoid
network congestion by adjusting transmission jitter and retry
timeouts.

C++ Chrono support

12425

Summary of changes

Add Chronos versions of time-related APIs to RTOS classes, Ticker-related classes and EventQueue.

Kernel::Clock, HighResClock, LowPowerClock and RealTimeClock act as the Chrono clocks. (C++ standard clocks system_clock, steady_clock and high_resolution_clock are not supported, due to difficulty in consistent retargetting across toolchains).

Deprecate old non-Chrono APIs.

Impact of changes

Existing timing code will generate deprecation warnings, but there should be no functional change.

A follow-up PR will clean-up warnings in rest of code base.

Migration actions required

Users should migrate to use Chrono-based APIs as directed by the deprecation messages

Remove the deprecated RawSerial, UARTSerial, Serial

12410

Summary of changes

  • Removed RawSerial, Serial, UARTSerial deprecated classes.
  • Removed SerialBase deprecated APIs.

Impact of changes

Breaking change: RawSerial, Serial, UARTSerial classes have been deprecated since Mbed OS 6.0.0 and they are all removed now.

Migration actions required

Use BufferedSerial and UnbufferedSerial for serial communication.

Add get_time function to ESP8266

12300

Summary of changes

Fixes https://github.com/ARMmbed/mbed-os/issues/12192.

get_time() function allows access to (S)NTP functionalities of ESP8266 module.

I considered using std::chrono instead of ctime's std::tm, but then - to convert to chrono::time_point we'd have to go through std::tm anyway or write our own parser, which I just managed to avoid.

Side note: using std:: introduces some warnings due to -D_LIBCPP_EXTERN_TEMPLATE(...)= flag being used in all our compilation profiles. This flag seems obsolete and I hope I will get it removed soon.

I cannot really add any tests, as they are using WifiInterface::get_instance() to get the interface and there is no RTTI, that would allow casting to ESP8266Interface to call get_time(), but I tested the function locally and it works fine.

Impact of changes

None, other than user can check time with ESP8266Interface.

Migration actions required

None

Make cypress psoc64 TFM ready and also add TF-M initialization

12271

Summary of changes

Non-secure core IPC, Mailbox and Interface init for TFM_DUALCPU and TFM_V8M targets

These changes concentrate on getting mbed-os(Non-secure) working with TF-M(secure)
Changes reflect towards any Cypress based TFM_DUALCPU targets and TFM_V8M targets at the moment and making it more generic in the near future.

Key changes:

  • Init IPC, Mailbox and Non-secure Interface.
    These changes are for TFM_DUALCPU and TFM_V8M platforms.
    The initialization happens after mbed-os kernel is kicked off and
    when the thread is up and running.

We are initializing the following for TFM_DUALCPU platforms:

  • IPC Interrupts for syncing multi-core platforms.
  • NS Mailbox to receive messages.
  • NS interface.

We are only initializing a Non-secure interface for TFM_V8M platforms.

  • Cypress: CY8CKIT_064S2_4343W: Reserve timer channels used by TF-M.
  • Make CY8CKIT_064S2_4343W Cypress target TF-M compatible.

Impact of changes

This impacts CY8CKIT_064S2_4343W, TFM_V8M and TFM_DUALCPU targets.

Callback extension and optimisation

12036

Summary of changes

Extend Callback, and optimise it.

Impact of changes

  • Optimise clearing by adding nullptr overload.
  • Optimise clearing by not clearing storage - increases code size of comparison, but that is extremely rare.
  • Reduce ROM used by trivial functors - share copy/destroy code.
  • Config option to force trivial functors - major ROM saving by eliminating the "operations" table.
  • Config option to eliminate comparison altogether - minor ROM saving by eliminating zero padding.
  • Conform more to std::function API.
  • Force trivial functors by default to get major ROM saving. (now in #12761)

Migration actions required

  • The added nullptr overload means Callback(NULL) or Callback(0) will no longer work; users must use Callback(nullptr) or Callback().
  • If application code uses Callback with a non-trivial functor, they will get a compilation error directing them to turn on platform.callback-nontrivial.

Disable mbed 2 and unsupported targets

12984

Summary of changes

Mbed 2 targets are not expected to be supported on master and for the Mbed OS 6 release.
The following changes are introduced:

  • Remove "2" from release_versions as there is no Mbed 2 and these targets won't work as such
  • Remove LPC11U68 and KL27Z from targets.json as these are Mbed 2 only. They require migration to Mbed OS 6 Baremetal and can be introduced in the future.
  • Remove MAX32620HSP as there is no release_versions and is considered unsupported - see https://github.com/ARMmbed/mbed-os/issues/11233

Impact of changes

These targets continue to be available in the 5.15 branch.
Mbed OS 6 won't support these targets unless are re-introduced.

Migration actions required

none

build api: fix release version

12982

Summary of changes

This is non trivial fix as the function is being used outside of this repository.
Tools rely on it to return list of targets for 2 or 5. As we removed release_version from many targets,
this broke the logic. To keep the logic as it was, without updating all tools out there now,
lets just return full set of targets - all are supported.

In case for Mbed 2, returning all targets does not make sense, but rather raise an exception here. Not supported. This avoids suprised. If you look at build api functions there are many checks for 2 or 5 so more
clean up needed to actually get release_version out of the tools.

Remove nRF51 targets

12961

Summary of changes

This is another of a series of PRs (others https://github.com/ARMmbed/mbed-os/pull/12775, https://github.com/ARMmbed/mbed-os/pull/12810, https://github.com/ARMmbed/mbed-os/pull/12864, https://github.com/ARMmbed/mbed-os/pull/12935) to remove targets that are not supported or retired as explained in recent blog post.

Impact of changes

The following public nRF51 targets are being removed:

  • NRF51822
  • NRF51_DK
  • NRF51_MICROBIT

Migration actions required

  • The targets listed above continue to be available in the 5.15 branch.

STM32 code cleaning for MBED-OS6

12960

Summary of changes

This is following discussions with @MarceloSalazar

All ST targets are:

  • either keep as full MBED-OS6 target => these targets inherit then from "MCU_STM32"
  • either keep as constrained target => these targets inherit then from "MCU_STM32_BAREMETAL"
  • either removed (board is too constrained, no more available, or was not officially supported)

@ARMmbed/team-st-mcd

Impact of changes

Several targets are no more available in MBED-OS6

If you are still using it,
please use mbed-os-5.15 branch

Clean-up S2LP driver configuration

12951

Summary of changes

This PR adds the ability to configure the pins of the S2LP driver for any target (inside Mbed OS or custom target) using the standard mbed_lib.json and mbed_app.json config files.

Additionally, the MTB_STM_S2LP and MTB_STM_S2LP_CT targets are removed as are not supported in Mbed OS 6, and thus making the S2LP driver independent of targets.

Impact of changes

Note users can continue to use the 5.15 branch.
For Mbed OS 6, it should be possible to use the default pin config without changes (apart from MTBs).
Custom pin configuration can be done as shown next.

Migration actions required

Developers need to create a mbed_app.json (or other json config) including the pin configuration for their target.

An example of application configuration for the S2LP driver is shown here:
https://github.com/MarceloSalazar/mbed-os-example-mesh-minimal/blob/S2LP_cleanup/configs/mesh_wisun_S2LP.json#L34-L50

"NUCLEO_F429ZI":  {
"LED": "LED_RED",
"BUTTON": "USER_BUTTON",
"BUTTON_MODE": "PullDown",
"s2lp.SPI_SDI"           : "PA_7",
"s2lp.SPI_SDO"           : "PA_6",
"s2lp.SPI_SCLK"          : "PA_5",
"s2lp.SPI_CS"            : "PC_0",
"s2lp.SPI_SDN"           : "PF_13",
"s2lp.SPI_GPIO0"         : "PA_3",
"s2lp.SPI_GPIO1"         : "PC_3",
"s2lp.SPI_GPIO2"         : "PF_3",
"s2lp.SPI_GPIO3"         : "PF_10",
"s2lp.I2C_SDA"           : "PB_7",
"s2lp.I2C_SCL"           : "PB_6",
"s2lp.provide-default"   : true
}

The driver can be initialized as follow:

NanostackRfPhys2lp rf_phy(MBED_CONF_S2LP_SPI_SDI
,MBED_CONF_S2LP_SPI_SDO
,MBED_CONF_S2LP_SPI_SCLK
,MBED_CONF_S2LP_SPI_CS
,MBED_CONF_S2LP_SPI_SDN
,MBED_CONF_S2LP_SPI_GPIO0
,MBED_CONF_S2LP_SPI_GPIO1
,MBED_CONF_S2LP_SPI_GPIO2
,MBED_CONF_S2LP_SPI_GPIO3);

Add Timeout rescheduling test

12942

Summary of changes

The Timeout drift test uses rescheduling inside a callback, but it is currently disabled due to lack of stability. Rescheduling using relative timeouts inside the callback is a bad technique as it leads to drift, so I understand the test being disabled. It is better to use Ticker for a periodic callback or to use Timeout::attach_absolute.

Add a simpler test that just ensures the callback is called repeatedly - this test would detect issue #12940, and should not have stability problems.

Convert Timeout test to Chrono

Now tests only the Chrono attach(duration) method, not the deprecated attach and attach_us calls.

Cypress: Misc target updates

12909

Summary of changes

  • Fix incorrect ADC range (was 0-2.4V, is now 0 - VDDA) (af39f05)
  • Remove CY8CPROTO_063_BLE (96f9915) and CYW943012P6EVB_01 (d058586) targets
  • Disable QSPIF on CY8CPROTO_062S3_4343W. It is incompatible with the XIP mode currently used for storing wifi firmware in external flash; instantiating a QSPIFBlockDevice would break Wifi firmware download. (a63fe7d)

Impact of changes

  • ADC range is changed for PSoC targets to align with documented API behavior.
  • CY8CPROTO_063_BLE and CYW943012P6EVB_01 targets are no longer available
  • QSPIF component is removed on CY8CPROTO_062S3_4343W

Migration actions required

  • Applications which utilize the analogin driver should update to handle the new range.
  • Applications which target CY8CPROTO_063_BLE or CYW943012P6EVB_01 should migrate to a new, still supported target, or remain on the mbed-os-5.15 release.
  • Applications on CY8CPROTO_062S3_4343W which need QSPIF and do not use wifi functionality can re-enable the QSPIF component in mbed_app.json.

Work around C++14 assert problem

12906

Summary of changes

During testing of #12425, a problem in ARM Compiler 6.13's assert was identified. This adds a general workaround and restores original code from that PR.

(Problem will ultimately be fixed in ARM Compiler 6.15, but the workaround seems to have no downside)

SDBlockDevice: Convert to Chrono

12904

Summary of changes

Convert SDBlockDevice to use new APIs from #12425.

Impact of changes

Eliminate use of deprecated APIs

Migration actions required

n/a

Nanostack HAL: Convert to Chrono

12903

Summary of changes

Convert Nanostack HAL to use new APIs from #12425.

Impact of changes

Eliminate use of deprecated APIs

Migration actions required

n/a

USB: Convert to Chrono

12902

Summary of changes

Convert ESP8266 driver wrapper to use new APIs from #12425.

Impact of changes

Eliminate use of deprecated APIs

Migration actions required

n/a

Rationalise Mail/Queue/MemoryPool timing APIs

12901

Summary of changes

Follow-up adjusting #12425 , improving (in my opinion, at least) the timing for Mail, Queue and MemoryPool. I think 12425 was too conservative at cleaning up the unsatisfactory state of their timing.

alloc APIs were generally inconsistent - take the opportunity to align with other APIs like Semaphore.

alloc -> try_alloc
alloc_for -> try_alloc_for
alloc_until -> try_alloc_until

In future the name alloc can be used for an untimed blocking allocation.

To line up with MemoryPool/Mail alloc, rework naming of get/put

Queue::get -> try_get, try_get_for
Queue::put -> try_put, try_put_for
Mail::get -> try_get, try_get_for
Mail::put (no change, but assert that it works)

In the future the names get and put can be used for untimed blocking operations. In the interim, you have to use try_get_for(Kernel::wait_for_u32_forever).

Mail::put differs in that it has always been a non-blocking call, but it can be assumed to always succeed when used correctly, because the Queue has enough room to store a pointer to every block in the MemoryPool. It could in future be made a void return, similar to the change made to Mutex::lock.

Impact of changes

Existing timing code will generate deprecation warnings, but there should be no functional change.

Migration actions required

Users should migrate to use Chrono-based APIs as directed by the deprecation messages

ESP8266: static address configuration and dhcp enable/disable added

12721

Summary of changes

Fixes https://github.com/ARMmbed/mbed-os/issues/12552
I implemented the set_network function, which configures static network address and set_dhcp function.
This function is optional, so no greentea tests are available. I only tested on RAAS, but had no way of really allowing static IP address setting. @star297 , would you please check if this PR works for you?

Impact of changes

New functionalities of ESP8266 are now available.

Migration actions required

None.

ESP8266: Convert to Chrono

12433

Summary of changes

Convert ESP8266 driver wrapper to use new APIs from #12425.

Impact of changes

Eliminate use of deprecated APIs

Migration actions required

n/a

NFC: Convert to Chrono

12432

Summary of changes

Convert NFC code to use new APIs from #12425.

Impact of changes

Eliminate use of deprecated APIs

This work originally revealed off-by-1000 error on timing, but that has already been fixed in #12401, so no functional change.

Migration actions required

n/a

Cellular: Convert to Chrono

12430

Summary of changes

Covert cellular code to use new Chrono APIs from #12142

Note that documentation for random_max_start_delay config setting has
been changed to indicate that the setting is in seconds, and always has
been. No functional change.

Impact of changes

Eliminate use of deprecated core APIs.

Some public cellular APIs now have dual Chrono and non-Chrono forms - non-Chrono not yet deprecated.

DTLSSocketWrapper: Convert to Chrono

12429

Summary of changes

Convert DTLS wrapper to use new APIs from #12425.

Impact of changes

Eliminate use of deprecated APIs

Migration actions required

n/a

nsapi_dns: Convert to Chrono

12428

Summary of changes

Convert DNS client code to use new APIs from #12425.

Impact of changes

Eliminate use of deprecated APIs

Migration actions required

n/a

Mark PSA as an experimental API

13003

Summary of changes

This PR moves PSA to a FEATURE_EXPERIMENTAL_API folder. No change to feature in this folder will be considered breaking, so they can be changed in any release type.

Impact of changes

Migration actions required

The EXPERIMENTAL_API feature will need to be enabled after this PR to enable PSA.

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: https://github.com/MicrochipTech/cryptoauthlib/issues/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: https://github.com/ARMmbed/mbed-os/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 test and Nightly test, We also ran a branch test on mbed-os 6.0.0-RC2

Results for the tests we run on CI (PR, Nightly, Branch):

  • Compilation tests: ARMC6 - SOME FAILS
  • Compilation tests: GCC_ARM - ALL PASSED
  • Unittest - ALL PASSED
  • Greentea Test - SOME FAILS
  • Example Test - ALL PASSED
  • Exporter Test - ALL PASSED
  • Cloud Client integration Test - SOME FAILS
  • Memory Usage Test - ALL PASSED
  • Wisun Mesh Test - ALL PASSED

We have the following issues on the test jobs:

  • LTO failed on ARM compiler compile tests ---- Tracked by defect MBEDOSTEST-1083 - ARMC6 Failed to build mbed OS with LTO options Open
  • NUCLEO_F767ZI failed on storage tests ---- Tracked by defect IOTSTOR-1032 - NUCLEO_F767ZI failed with features-storage-tests-kvstore-general_tests_phase_1&2 Open
  • CY8CPROTO_62_4343W failed on sleep/deepSleep tests ---- Tracked by defect IOTHAL-560 - CY8CPROTO_062_4343W target failed at sleep/deep sleep test Open
  • NUCLEO_F303 and NUCLEO_F411 failed on client example compile tests

Test Numbers

  • Greentea test number 1486 (+65 )
  • Unittest number 735 (+27 )

Toolchain Coverage

In mbed OS 6.0.0 release. we are testing following toolchains:

  • ARM compiler 6.13
  • GCC_ARM 9-2019-q4-major

The following toolchains have been dropped from the mbed OS 5.15.0 release

  • ARM compiler 5.06 update 6
  • IAR 8.42

Targets Coverage

In mbed OS 6, the compilation test targets scope has not changed, remains all mbed OS enabled targets.

Greentea test targets have been changed slightly:

At the time of the mbed-os 6.0.0 release, we run the greentea tests on the following 9 targets:

  • NRF52840_DK
  • DISCO_L457VG_IOT01A
  • K64F
  • K66F
  • NUCLEO_F303RE
  • NUCLEO_F411RE
  • NUCLEO_F429ZI
  • NUCLEO_F767ZI
  • CY8CPROTO_062_4343W

Compared to mbed-os 5.15.0, the following targets been removed as they are not supported in mbed-os-6

  • LPC55S69
  • UBLOX_C030_U201
  • UBLOX_EVK_ODIN_W2

Coverity

In mbed OS 6.0.0 release, coverity issues increased from 49 to 94 .

Code Coverage

Test Code Coverage been tracked and information is published on COVERALLS

Memory Monitoring

mbed-OS ROM size improved for around 16K and static RAM size improved 1.5K compare to mbed OS 5.15 release. The main reason for the improvements is because we are enabled using minimal-printf by default.

Contents

Ports for Upcoming Targets

12338
STM32L5 : add DISCO-L562QE board support

12286
Add new target: NUCLEO_L452RE-P

12597
Cellular: Add ALT1250 PPP cellular target

12458
Add Musca B1 target

12787
Cypress: Add CYESKIT-064B0S2-4343W

12603
Add target CYSBSYSKIT_01

12576
M487: Support custom board

12801
Add base support for STM32H745

Fixes and Changes

12385
DeviceKey Root of Trust generation refactored.

12256
Update psa binaries for 6.0.0-alpha1

12238
Minimal-printf: Fix wrapping of printf functions for the ARM compiler

12236
Fix baremetal build failures

12218
tests tickers: adapt ticker_interrupt_test() test case for high frequency tickers

12217
Nuvoton: Add DEVICE_USBDEVICE detection in usbd implementation

12216
Fix dl_channel tests

12215
Cellular: Implementation of virtual get_ip_address funtion in ublox-api

12214
Cellular: Move string_to_pdp_type method to CellularContext

12202
Increase MSI clock frequency when exiting deep sleep

12200
Minor fixes for peripheral pins on Dragonfly Nano

12196
LWIP: don't pbuf_free(NULL) on socket close

12195
Corrected PPP debug trace flagging

12194
Nanostack Socket event handler fix

12193
Cellular: Move cellular event queue thread ownership to CellularDevice

12189
Removed hardcoded CY8CPROTO_062_4343W bt baudrate limit.

12188
Greentea test :Added the print in the exception handler

12186
STM serial init: Set pin function only if pin is defined (not NC)

12185
BLE: fix pointer not set to null on delete

12182
Update watchdog tests to run with bare metal profile

12181
Add DTLS in Connectivity's design document

12179
TESTS: Update testing of examples in mbed-os

12178
Fixes for LPC55S69_NS TLS tests

12176
Nuvoton: Support usbd

12175
Minimal-printf: Fix documentation as floating point is disabled by default

12173
Change size embedded in the temp_ram_page_data

12170
Nuvoton: Support dynamic heap configuration on IAR

12169
syntax error corrections - rm unnecessary semicolons

12162
CMSIS-pack update for STM32WB-family

12155
LPC11U24: Fix baremetal build and runtime error

12151
NRF5x: Fix baremetal linker error

12144
NRF52840: Use 2 region memory model for the ARM toolchain

12143
Blockdevice config changes to make it possible to run littlefs filesystem tests

12141
Thread: remove constructors deprecated in 5.1

12138
TESTS-MBED_HAL-COMMON_TICKERS no more executed

12133
Cellular: Suppress long AT traces

12132
LWIP: Remove unused MBOX configs

12131
Cellular: Fix Gemalto/Cinterion driver

12128
Remove unsupported folder

12123
Cellular: Refactor cellular variable visibilities

12122
ATHandler refactoring

12121
Serial: Deprecate the class and promote UnbufferedSerial instead

12120
ONME-4433 SocketAddress::operator== should also check port

12118
Fixed Serial ambiguity for enable_input and enable_output

12114
Cellular: Fix to not use all zero address for DNS

12113
Fix for issue #12104 (STM32 can_init_freq() ignores frequency)

12111
Microlib: Disable feof function usage in general filesystem test

12110
Moved CP Max recv len into mbed_lib.json

12109
Replace RawSerial as it has been deprecated

12108
Wi-sun network event handler update

12101
Bare metal: Retrieve error context after crash

12099
Implemented recommended fix from https://github.com/STMicroelectronic

12098
Wrong order of code fixed

12097
cypress target: fix iar warnings

12095
Update MXRT1050 to SDK 6.0

12092
Refactored away onboard_modem_api because it is not needed at all

12089
Update offloaded TLSSocket to TLSSocket design

12086
TARGET_STM: fix flash api 64bit address alignment on L4 and WB

12085
PSA setup template changes.

12083
Cellular: Add check for network congestion in BC95 driver

12081
Expose target_offset and header_offset parameters in targets.json

12080
Unittest cleanup made

12079
Coverity fixes

12078
Cellular: Add PPP/IP config flags in CellularInterface.json

12073
Unittests: fix for PRs 12051 and 11996

12071
Minimal Console: Use static pin map

12069
STM32: astyle update

12068
Enabling small C library option and deprecating uARM toolchain

12067
STM32 GPIO IRQ : add a critical section in gpio_irq_init

12065
Non-IP socket implementation for NIDD over CP

12064
Valgrind support added for unittests

12063
Move get_ip_address_if() to NetworkStack and include it in multihoming test

12061
NANO130: Support dynamic heap configuration on IAR

12057
NUC472/M487: Limit EMAC receive frame length as 1518

12055
cmsis: remove arm math

12052
fpga tests: clear uart fix

12051
Unittest configuration mechanism improved

12050
Fix TDBStore sizes for SecureStore tests

12048
SharedPtr: add nullptr constructor

12045
Netsocket test adjusted to Wisun

12044
increased qspi size for cypress integration fs tests

12043
Modify itm_api.c for EFM32 targets

12041
Add QSPI and relevant test support for target EP_AGORA

12038
Cypress: Remove qspi_frequency() call.

12037
SharedPtr: add move operations

12034
SysTimer: Suppress implicit virtual warning

12032
Add MBED_FALLTHROUGH attribute

12029
STM32F0: create STM32F091xC target

12027
Modify nsapi_dns tests to be module tests

12026
Update HAL file to Toshiba's TMPM4G9

12025
Platform: Delete an unused astyle output file

12024
ONME-4366 - Fix UBLOX_EVK_ODIN_W2 fails in emac tests due to heap mem

12020
Fix issues in setting radio access technology

12019
Cypress: rework lptimer hal

12018
STM32_EMAC cleanup

12017
NVStore: already deprecated implementation removed

12013
Add UDP ECHOTEST with connect/send/recv calls

12012
USB device HID test: remove duplicated define

12011
STMOD_CELLULAR: improve debug print

12008
Cellular: Fix ATHandler string handling

11997
Remove deprecated FunctionPointer class

11996
CellularBase/AT_CellularBase removal

11995
MCU_NRF52840 target configuration fixes

11988
Small fixes for SecureStore

11987
TDBStore refactoring

11986
Storage related test improvements and small fixes

11980
DISCO_L4R9I: update clock configuration for all clock sources

11976
LWIP system mailbox overflow fix

11975
PPPinterface: remove faulty address getter check for invalid pointer

11962
Bug in mbed_alloc_wrappers.cpp

11961
UnbufferedSerial: Introduce the class to replace RawSerial

11957
MbedCRC and CRC HAL revisions (6.0 redo)

11952
Fix for Dragonfly nano and registration for LTE-M plans

11927
Speed up unittests by not limitting Make to spawn more processes

11920
Simplify pull request template headers and instructions

11897
MbedCRC: improve init value handling and tests

11891
minimal-printf: Enable using a target configuration parameter

11880
Remove deprecated Callback methods

11878
Improve API documentation and test coverage

11866
Update pycryptodome version

11817
ESP8266 "busy s..." fix (ONME-4352)

11653
Add Getaddrinfo interface for multiple DNS adresses

11594
M2351: Pre-build secure image/lib to favor pelion application

10959
M2351: Support TFM level 1

12457
Update STM32 EMAC driver - limit RX frame length

12424
Nuvoton: Fix GPIO IRQ and RTC

12422
Cypress Asset Update

12419
Fix #12290: crash_log_parser on py3

12411
add FLASHIAP in targets.json for KVStore used in PDMC

12409
FIX: LPUART clock source selection should be left to serial driver

12408
LPC408X: Delete the ethernet_api.c files

12407
Disable restricted uart peripheral for NRF52840

12405
EthernetInterface fix detecting change of connection status on ARCH_MAX

12404
M2351: Update BSP and bugfix

12403
FPGA: Enlarge timeout with mbed_hal_fpga_ci_test_shield-i2c

12401
Remove float symbols from apps that use the NFCController class

12400
Add an exception for ARMC5 toolchain build

12399
Cellular: Delete created context if activation fails

12398
Add BlockDevice unittests and fix issues they revealed

12397
Testing: Fix buffer overflow in ATHandler_read_bytes UT test

12396
PDP Type needs to be IPV4V6

12395
I2CEEBlockdevice: fix i2c read return value

12394
Fix SDIO communication issue on Cypress 1M boards and other minor fixes

12393
Fix Musca-A1 gcc linker

12392
Fix psa_key_management_operations

12391
mergify: CI only if PR is without conflicts

12389
Update InterruptIn.h

12386
TEST: fix a bug in ATCmdParser test

12383
Fix thread_sleep_for with zero wake_delay

12382
Fix BufferedSerial visibility of private base class enum enumerators

12380
DISCO_L475VG_IOT01A: Add a list of restricted GPIO pins for testing

12379
Add STDIO UART as restricted for FPGA testing for all targets and support for restricting GPIO

12378
TEST: Refactor mbedmicro tests to use utest framework

12369
LPC1768: Fix ARM toolchain baremetal by defining 2 memory region

12368
Fix NRF52840_DK UART driver and adapt FPGA test

12366
M2351: Support GCC

12364
MIMXRT1050: Update for deep sleep latency

12363
Mergify: fix release version label

12362
TARGET_STM: L0 CUBE SPI async mode send next byte after previous one is read

12359
MXRT1050: Add bootloader support

12357
TARGET_STM32F1: don't set ADC common register when ADC doesn't support it

12356
Fix NRF51, NRF52 gpio_irq_init() function

12353
M2351: Support IAR

12350
implements i2c_free for STM

12349
Nanostack: Update Wi-SUN configuration

12345
USBMSD; NFCEEPROM; mbed_compat: Fix compiler warnings

12344
Unittests for DNS improvements

12342
LPC55S69: Fix UART & GPIO HAL to pass FPGA CI test shield tests

12341
STM32L4: Fix the UART RX & TX data reg bitmasks

12339
Cellular : add modem version in mbed trace

12338
STM32L5 : add DISCO-L562QE board support

12336
Disable write buffering on debug builds.

12335
Remove CPU usage example from CI build

12334
Update cellular drivers/tests for UBLOX_C030_R412M

12333
UDP echotests fix in case of no memory or device busy.

12332
FIX: Disable Analogin D13(PA_5) on some NUCLEO targets

12331
STM32: enable QSPI test with MX25LM51245G octo SPI

12330
Fix FAT filesystem ferror greentea test(SD Component)

12329
AT_CellularStack: crash during TCP test

12327
Doxygen: don't extract static members

12326
Correct SysTimer absolute time calculations

12324
Fix inconsistency between mbed crc and psoc6 crc implementations.

12322
minimal-printf: README correction

12321
Ble driver set random static address

12320
ONME-3433 ESP8266 driver support for UDP get - modified ESP8266 drive

12317
MXRT1050 Flash support

12316
Fix general filesystem greentea test

12315
Add check for APPLE & MACH to fix unit tests on macOS

12312
Fix to sending IPV6 UPD packet fails IPv6 enabled in SoftAP intf

12310
Greentea DNS tests workaround.

12308
Tests: add missing mbed_trace.h multihoming header

12307
Fix the missing retrieve error context function call.

12305
Cellular: Remove support for multiple ATHandlers

12304
QSPIF: Enable QPI mode as a second option, if available

12303
Fix ARM compiler warning for microlib

12302
Remove _LIBCPP_EXTERN_TEMPLATE ARMCC compilation flag

12299
MIMXRT1050: Add Watchdog support

12297
Corrected minimal-printf README

12296
FPGA_CI_TEST_SHIELD : force all peripheral to be tested

12295
STM32H7 correct PWMOUT instances

12293
Cellular: Remove API's empty default implemetations

12292
Multiple labels need to be in an array of strings

12291
Minor optimisation to ATCmdParser unit test code

12287
Fix unittests on windows(mingw)

12286
Add new target: NUCLEO_L452RE-P

12283
STM32WB - Update CubeDriver from v1.0.0 to v1.4.0

12282
Fix for issue #12268 (SerialBase.cpp: fix initialization list)

12281
Cellular: Refactor socket_stack_init() from generic to modem specific

12280
EFM32: add UART and LEUART for EFM32GG11

12278
Rename "default_lib" to "c_lib".

12275
Fix call to sorted by providing key to sort on.

12274
mergify: enable for any pull request

12273
unittests: disable coverage report filtering

12270
BUGFIX: SFDP Sector Map Table Parameter ID LSB is 0x81

12269
mergify: add fixes to the conditions

12267
Fix UDP socket test cases

12265
Refactor unnecessary functions from cellular driver

12263
unittest: fix coverage filtering

12262
Test: Increase the UART flush delay

12261
Cellular: Fix compilation fail with APN lookup enabled

12260
Add KSZ8041 as a supported PHY for the LPC17xx series

12258
Disable the cell AUX UART by default on EP_AGORA

12257
psa: Ensure spaces before partition name comment

12254
unittest: fix ATCmdParser test segfault

12253
storage_abstraction: deprecated since Mbed OS 5.5 and now removed

12251
Cellular: Remove friend definitions from cellular state machine

12249
Cellular: Remove deprecated CellularDevice::stop()

12245
NUCLEO_WB55RG - add device name "STM32WB55RGVx"

12243
Add timer shutdown after time stop on deinit

12241
M2351: Remove LPTICKER to spare memory for non-PSA minimal secure build

12240
Cypress: add SoftAP host tests

12239
Fix DNS multiple query hints to perform both IP4 and IP6 tests

12237
STM serial free: Set pin function only if pin is defined (not NC)

12234
ESP8266: Add built-in hostname resolution handling (disabled by default)

12231
Import latest python scripts and MCUBoot image

12230
TEST: use K64F replace DISCO_L475VG_IOT01A to run some example test

12228
Need RAM and ROM size for compilation

12227
Cellular: AT + QICSGP set up APN fix

12226
target_test - assert if sectors keyword missing

12225
Fix baremetal heap and stack initialisation

12223
RZ_A1H and GR_LYCHEE: Enable bootloader support

12220
NRF5x targets: Replace UARTSerial references with BufferedSerial

12213
ESP8266: Replace UARTSerial references with BufferedSerial

12211
Cellular: Replace UARTSerial references with BufferedSerial

12210
Fix for issue #10725: disable lp-ticker for STM targets which uses RTC/LSI for lp-ticker

12209
NXP target: Replace UARTSerial references with BufferedSerial

12208
ST targets: Replace UARTSerial references with BufferedSerial

12207
Add BufferedSerial class to replace UARTSerial

12201
TARGET_STM: FW driver files refactor proposition

12199
Format targets.json

12198
uARM: Fix deprecate warning printing wrongly for GCC_ARM/IAR toolchain build

12166
NRF52840_DK: Fix baremetal linker error

12160
nRF52: Properly configure nRF SDK for nRF52-series targets

12157
ESP8266: Avoid duplicate data sends

12154
NRF51822: Fix baremetal linker error

12153
Hackathon: Increase coverage of the SPI master FPGA test

12152
Updated 113 targets with missing detect_codes

12150
Update Mbed TLS and Mbed Crypto to latest as of 2019-12-20

12142
Thread: remove methods deprecated in 5.10

12139
HAL: Add a get_capabilities() function to ResetReason API

12060
Improve reliability of KVStore general tests

12035
Preparation for Callback changes

12023
GCC: remove -fno-delete-null-pointer-checks

11904
TOOLS: enable build greentea test coverage for HW

11874
ARMC6: Add a build profile extension with the link-time optimizer enabled

11433
FPGA CI shield: Add a watchdog timing test

12611
STM32F4 UART issue when parity enabled

12601
Remove RtosTimer deprecated class

12599
Greentea kvstorage tests Cypress targets fix.

12598
Change Mutex lock and unlock APIs return value to void

12597
Cellular: Add ALT1250 PPP cellular target

12596
Remove Mutex deprecated API

12595
Fixed typo 'timout'

12590
Importer script: remove apache-2.0.txt

12583
STM32F7: baremetal profile support

12580
Reverting #12312 as it breaking current WiFI connect()->Disconnect() sequence

12571
C++11-ify NonCopyable

12567
STM32 EMAC : increase thread size when mbed-trace is enabled

12560
crypto: Update to Mbed Crypto 3.0.1

12559
DISCO_L4R9I correct LED pins

12558
Fix issue when TDBStore has varying erase sizes between areas.

12557
M487: Fix crash on WDT reset from power-down

12554
Remove FileSystemLike deprecated APIs

12553
Remove DirHandle deprecated APIs

12551
Remove mbed power management deprecated API

12550
Remove mbed interface deprecated API

12549
Remove FileHandle deprecated APIs

12548
tests-integration-net-single: fix build error

12545
threads: fix timeout (set to 25)

12543
TLSSocket: Remove deprecated connect

12540
fix for suppress 'unknown object name' messages from memap.py

12537
Minor optimization to improve readability of code

12536
Fixed typo 'thead' in thread_neighbor_class.h

12534
Remove the deprecated CallChain class and its APIs

12533
Remove CriticalSectionLock deprecated APIs

12531
Add check so that FlashIAP does not allocate memory on flash_init failure

12530
Remove reset reason from Future Sequana targets.

12529
travis: scancode ret value not cat fix

12527
Remove the deprecated ATCmdParser APIs.

12526
GCC: Fix the toolchain LTO workaround for Python 3

12525
Remove the deprecated Ticker APIs

12524
Bugfix: Concurrent SFDP header address init fixed

12521
Remove explicit include of mbedtls/config.h

12520
Fix initialization order for I2CEEBlockDevice

12519
tests-mbed_hal-sleep_manager: fix counter wraparound handling

12518
Remove InterruptIn deprecated APIs

12514
mergify: add "mergify skip" label

12511
allow reconfiguring a running watchdog

12509
EFM32: RTCC bugfix for #12374

12508
Fix minimal-printf stack overflow

12507
Cellular: release _semaphore only once

12506
Fix 2 string based IP address removal regressions

12505
travis: ignore grep return value for scancode

12502
Fixed macro error

12501
Remove the deprecated the InterruptManager APIs

12500
Remove the deprecated ethernet APIs

12499
Cellular: For ublox modem, read '@' char first then send data.

12498
TEST: update usb tests and guard them with macro

12496
EFM32: fix mbed_hal-pinmap test

12495
C++11-ify virtualisation in FileHandle + Serials

12492
Update psoc6cm0p asset to version 1.1.1.

12491
Fixed error of function 'mac_fcf_lenght'

12490
Fixed error of structure mlme_key_descriptor_t

12489
C++11-ify virtualisation in lwIP classes

12488
C++11-ify virtualisation in Nanostack classes

12487
C++11-ify virtualisation in netsocket

12484
TDBStore magic number if endian sensitive fix comment

12481
Nanostack release for Mbed OS 6

12480
Fix SPDX identifiers and licenses (excluding features and targets)

12478
M2351: Fix some minor issues

12477
HAL: Add a get_capabilities() function to GPIO API

12476
Fix build failure when target's cmsis doesn't exist

12475
Proposal to remove SPIFReducedBlockDevice

12473
Fix Freescale MCUXpresso AnalogOut

12467
Inline nsapi_create_stack(NetworkStack)

12466
MBED_STACK_STATS_ENABLED : Add stack_name information in greentea metrics

12464
STM32 EMAC : add configuration choice and connection check

12462
Fix static ram memory statistics for arm compiler

12460
Allow MISO/MOSI set to NC during SPI initialisation (fix for issue #12435)

12458
Add Musca B1 target

12454
Nuvoton: Optimize spi_master_write(...) in case of no SPI MISO pin

12453
STM32 TRACE_GROUP update

12451
STM32 : enable MBED trace for QSPI

12450
SFDP: consolidation of SFDP parsing [3/5]

12449
Add missing pins def for ARDUINO_NANO33BLE

12447
fix targets device_name with nrf51822 32K SoC

12446
Add Eight-Bit-Addressing mode to I2CEEBlockDevice.

12445
Fixed typo: 'lenght' in ip6string.h

12444
Fixed typo: 'lenght' in ns_crc.h

12443
Fixed typo: 'lenght' in coap_service_api.h

12442
Fixed typo: 'lenght' in minimal-printf

12441
CAN: fix length calculation (fixes #12311)

12440
Implement reset_reason api for cypress targets

12438
Fix CY8CPROTO_062_4343W baremetal build

12437
travis: add PR license check for missing/not-valid license files

12436
Remove GPIO pin-maps used for FPGA testing

12431
Nordic NRF52 GPIO API: Fix non-deterministic failure to configure interrupt handling

12427
Minor optimisation to mcr20a-rf-driver code

12426
SFDP: consolidation of SFDP parsing [2/5]

12421
Cypress Targets Reorganization

12420
Remove the deprecated CAN APIs.

12415
STM32H7 : add readme file for dual core use

12384
STM32WB : update BLE part with better support

12358
FIX: add cbor module in the requirement.txt

12319
Fix userallocatedevent imp

12318
SFDP: Move Sector Map Parameter Table parsing under SFDP module

12233
Enable minimal-printf by default for all builds

12206
Kvstore tests

11942
IPCore String-based API removal

11856
GCC: Add a build profile extension with the link-time optimizer enabled

12941
Correct Timeout rescheduling

12938
Correct core RTOS sleep routine timing

12935
Remove unsupported targets

12924
STM32F4 bypass PLL configuration when already done by bootloader

12919
ExhaustibleBlockDevice: revert commit 10481f2

12913
usbcdc: provide doxygen only macro for doxy builder

12889
Convert newlines on all terminal (tty) devices by default

12876
802.15.4 STM S2LP driver update

12874
nRF: use Mbed-default boot-stack-size & fix stack_size_unification test

12873
Bare metal profile: USB class device support

12872
Add the Doxygen note to non-supported RTOS kernel APIs.

12866
Update mbed-coap to version v5.1.5

12864
Remove unsupported targets

12860
STM32F7 update drivers version to CUBE V1.16.0

12855
Bare metal: Enable signals greentea test

12853
ARCH_PRO: Remove uARM tooolchain support

12852
Update mbed-coap to version 5.1.4

12850
Fix intermittent sync fail in tests-filesystem-general_filesystem

12849
TEST: Update example test

12846
Revert "Remove MTB_STM_S2LP target"

12844
Add invalid data case to tdbstore ram init

12843
enable storage tests on baremetal

12841
Drops prebuild bootloaders not supported in Mbed OS 6

12840
Musca-B1: Grant Non-Secure access for MHU0 on EXP0

12839
Nuvoton: netsocket correction of judgment errors

12833
Override c_lib to small for all targets

12830
Cellular: Fix BG96 offloaded DNS query for new API

12828
Update CYSBSYSKIT_01

12827
enable common tickers & lp_tickers hal tests in baremetal mode

12825
Turn on ARM linker --inline

12823
Allow Devicekey::generate_root_of_trust() to define key size.

12819
Cypress: Fix unitialized memory in spi_master_write

12818
Add the Doxygen note to non-supported RTOS and Driver class.

12817
Cellular: Disable AT traces when mbed-trace is disabled

12816
Baremetal: Enable Semaphore greentea test

12815
Cellular: Fix build problem if cellular.debug-at is set as null

12811
Remove deprecated Platform header files

12810
Remove unsupported targets

12804
Cellular: Check if serial is supported

12802
Nuvoton: Add 'sectors' configuration option into targets.json

12799
TDBStore: Handle odd number of sectors in block

12797
Add custom board option to STM32 pins generation script

12792
Seeed: Removing unsupported Seeed targets for OS 6

12791
Fix for IPv6 Dual Stack support

12787
Cypress: Add CYESKIT-064B0S2-4343W

12786
Baremetal: Enable kernel_tick_count greentea test

12785
Cordio: Apply Packetcraft's fix for possible SweynTooth vulnerabilities

12783
LittleFSv2: Bring in v2.2

12779
Baremetal: Enable EventFlags greentea test

12778
Add I2C api to Musca-B1 target

12775
Remove unsupported targets

12769
Fix WIFI-GET-RSSI test case failure and remove extra label from CYW9P62S1_43438EVB_01 in target.json

12768
ESP8266 Drv support baud-rate switch

12765
Update MTS_MDOT_F411RE target and remove bootloader from tools

12763
Cellular: Fix ATHandler::read_string to handle delimiter inside string

12761
Callback: Trivial default

12758
Fix: Return the correct std I/O device handle for Microlib in retarget code

12757
Update Mbed OS with Mbed Crypto merged into Mbed TLS

12755
Update astyle filtering rules for Nanostack

12754
Nanostack release for Mbed OS 6

12752
PSoC 62/63: set correct mbed_ram_start and mbed_ram_size

12748
Fix build failure due to C lib selected

12746
Removed Toshiba targets (AdBun-M066, M3H6 & M3HQ).

12745
add config option for phy media interface

12744
Change files in TARGET_SDT64B

12743
mergify: Add 5.15 rule

12742
BLE: remove deprecated APIs from Gatt and SecurityManager

12741
Add Semtech Lora radio drivers

12739
FIX: update usb device tests for deprecated API

12738
Remove Mbed SPM

12737
Remove PSA implementation for v8-M and dual CPU targets

12736
rtos: Improve CMSIS-RTOSv2 app compatibility

12735
Make MUSCA B1 and MUSCA A1 TF-M ready

12734
NUCLEO_WB55RG : enable IAR export

12733
odin targets: remove release version

12731
Testing: Fix multihoming test compilation issues

12730
BLE Gap deprecation cleanup/rework

12729
Mbedtls fixes

12728
STM32 EMAC : increase thread-stacksize

12719
FPGA CI TEST SHIELD: add test config json file

12716
M487: Update BSP

12715
RZ_A1H remove usage of ethernet hal API

12712
Fix LTO issue with minimal-printf

12711
targets:MIMXRT1050: Add QSPI flash support

12708
Remove compatibility for Arm Compiler versions prior to 6.01.0050

12706
Tests: Remove support for ARM Compiler 5

12705
mbed-client-cli: Remove support for ARM Compiler 5

12704
LWIP: propagate the apimsg->err out of netconn_apimsg()

12702
TFM: Remove ARM Compiler 5 considerations

12701
Add custom BT Firmware image for CYW9P62S1_43012EVB_01

12699
Storage: Remove support for ARM Compiler 5

12698
Drivers: Remove support for ARM Compiler 5

12696
rtos: declare vector table type as in Technical Note 11578

12694
Remove netsocket icetea tests and TCPServer

12693
USBMSD security updates

12692
EFM32G11: Add RGB LEDs to PinNames.h

12691
Replace small with std C lib if not supported by a target's toolchain

12690
STM32: solve GCC Unspecified RTOS error

12686
STM32 EMAC : remove TIMEOUT issue when cable is not plugged yet

12685
Remove deprecated netsocket methods

12683
SocketAddress rework

12682
MBED TRACE default level is INFO

12681
SPIFBlockDevice doesn't play nice on shared SPI bus #11732.

12680
QSPI driver also acquires ownership upon initialization now.

12679
PSoC6: enable export to uVision and IAR

12677
STM32H7: enable QSPI

12676
Remove deprecated BLE:: APIs and unsupported services

12674
Remove Maxim and SoftDevice BLE stacks which do not support the latest APIs

12673
Mergify update

12672
Remove deprecated ARMC5 reference from mbed compile -S output

12671
Netsocket/lwIP Stack: Remove support for ARM Compiler 5

12670
ESP8266: Fix typo: gateway to netmask

12668
tests-integration-fs-threaded: makes tests independent from each other

12667
Add check for return code in DeviceKey to avoid injecting invalid ROT

12666
Makefile: render compatible with some GNU make versions (revert #12646)

12663
Migrate NUCLEO_F303K8 to Mbed OS 5 baremetal

12662
Add workaround for STM32F4 hardfault in sleep mode

12661
Adjusted SecurityManager Doxygen ASCII art

12660
M2351: Support custom board

12659
Rebuild WICED libraries after Mbed update

12658
tests-integration;tests-filesystem: fix code causing compiler warnings and enable more tests

12655
Remove ARMC5 reference from Mbed OS platform

12654
Removed all references to __CC_ARM

12652
Add moduletests for FileSystemStore

12651
Cellular: Make Quectel EC2x modem start up timeout configurable

12649
Expose SerialBase IrqType member to UnbufferedSerial class

12648
Nanostack: Add config for Wi-SUN device type

12646
Makefile: fix for overlong command line

12645
Storage: Use internal flash for KVStore always if default config

12642
M263: Support custom board

12640
Remove minimal-printf extension profile

12639
Remove the deprecated ethernet hal APIs

12638
Enable storage tests to all targets

12637
Cordio: fix for issue #12625

12636
Extend unit tests for TDBStore

12633
Cellular: Add offload TLSSocket implementation inside feature flag

12632
Fix snprintf in minimal-printf library

12631
Update psutils to address security issue

12630
mbed test with dual core targets

12629
Add "rtos-api" to bare metal

12626
STM32F4 update drivers version to CUBE V1.25.0

12624
Cellular: Support EC2x power control pin support no connect

12617
Correct doxygen for Mail::get

12612
TEST: add RTOS macro to enable integration test

12610
Add UBLOX_onboard_modem_api for power up UBLOX_C027.

12609
Remove Semaphore deprecated APIs

12607
Use toolchain's struct stat if available

12606
Netsocket: Introduce set_ip_address and get_dns_server APIs

12603
Add target CYSBSYSKIT_01

12589
Cellular: Add deativation of context associated with profile

12581
Fully enforce NonCopyable

12576
M487: Support custom board

12572
Remove mbed wait deprecated APIs

12570
Improve nsapi_create_stack

12569
Replace with weak mbed_error_hook implementation (deprecate the hook function)

12547
EFM32: update emlib to 5.9.1

12528
SFDP: consolidation of SFDP parsing [5/5]

12522
Add property API to InternetSocket

12472
Add WPA3 support in mbed-os for green tea tests

12463
Clean up and optimise socket statistics

12456
COMPONENT_BlueNRG_MS creation : ST Bluetooth Low Energy module

12425
C++ Chrono support

12410
Remove the deprecated RawSerial, UARTSerial, Serial

12387
Add Objects Extensions Configuration Parameter to HAL

12300
Add get_time function to ESP8266

12271
Make cypress psoc64 TFM ready and also add TF-M initialization

12161
nRF52 I2CSlave Implementation

12036
Callback extension and optimisation

11726
Disable C++ static destructors in ARMC6 compiler

11629
Refactor TDB internal bounds computation

12995
build tools: fix target toolchain

12984
Disable mbed 2 and unsupported targets

12982
build api: fix release version

12981
IOTSTOR-1044 - SPIFBlockDevice is broken in Mbed OS master(6),

12978
Update psoc6pdl to v1.5.2

12977
STM32: remove uARM toolchain

12971
MemoryPool fixes

12961
Remove nRF51 targets

12960
STM32 code cleaning for MBED-OS6

12959
STM32: targets json rework

12958
Fix vector table bug when using bootloader on STM32WB55

12956
NRFCordioHCIDriver: remove idle_hook (and RTOS dependency)

12951
Clean-up S2LP driver configuration

12949
CMSIS: update to CMSIS 5.7.0

12947
Fix setting the QE bit on ISSI Flash memories

12945
Cleaning up PinNames.h for SDP-K1 board.

12944
Fix the USB MSD greentea host side pyusb_msd.py script

12943
Cypress: Update assets to latest

12942
Add Timeout rescheduling test

12923
Nuvoton: Refine more on watchdog HAL

12917
Bare metal profile: Enable USB serial greentea test

12916
USB basic and hid greentea test cleanup and enable to the bare metal profile

12915
Optimise HAL_GetTick API

12914
Add possibility to configure Mesh MAC neighbourtable size.

12909
Cypress: Misc target updates

12906
Work around C++14 assert problem

12904
SDBlockDevice: Convert to Chrono

12903
Nanostack HAL: Convert to Chrono

12902
USB: Convert to Chrono

12901
Rationalise Mail/Queue/MemoryPool timing APIs

12896
Nuvoton: Fix watchdog reset failure on meeting Hard Fault

12890
[SX1272 & SX1276 Driver] Fix Fifo Pointer in Continuous Mode

12888
Musca-B1: Fix I2C pinmap array

12875
KVStore: Fix buffer overrun when device key size doesn't match

12865
Nuvoton: Support bare-metal profile on NANO130 and M453

12856
ST Boards: Remove uARM tooolchain support

12836
Wi-SUN added regulatory domain Brazil

12808
KVStore: Remove incorrect check with non-default configuration of FLASHIAP

12805
Tests: USBSerial: Handle minimal printf limitations

12801
Add base support for STM32H745

12721
ESP8266: static address configuration and dhcp enable/disable added

12623
LPC1114: baremetal profile support

12433
ESP8266: Convert to Chrono

12432
NFC: Convert to Chrono

12430
Cellular: Convert to Chrono

12429
DTLSSocketWrapper: Convert to Chrono

12428
nsapi_dns: Convert to Chrono

13008
tools: Warn when ARMC5 is no longer supported

13007
tools: Support default_lib and c_lib

13003
Mark PSA as an experimental API

Using this release

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

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

mbed-os - mbed-os-6.0.0-beta-1

Published by adbridge over 4 years ago

We are pleased to announce the Mbed OS 6.0.0-beta-1 release is now available.

Summary

This is the last pre-release before we make the full 6.0.0 release. It contains the remainder of the breaking changes and any other significant updates.

Migration Guide

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

Correct Timeout rescheduling

12941

Summary of changes

Chrono changes "optimised" Timeout::handler in a way that broke users who rescheduled the timeout during their attached callback.

Attempted optimisation is less necessary now that platform.callback-nontrivial is set to false by default - that setting reduces overhead of copying the Callback to almost nothing.

Fixes #12940.

Correct core RTOS sleep routine timing

12938

Summary of changes

Chrono conversions inadvertantly changed the core timed sleep routine used by the RTOS idle to use OsTimer::update_and_get_tick() instead of OsTimer::get_tick().

Correct this, and expand/clarify documentation and naming to try to prevent recurrence.

Another minor fix observed while inspecting code - OsClock can't just use milliseconds, it should match the period of OsTimer, which theoretically can be different.

Fixes #12920.

Remove unsupported targets

12935

Summary of changes

This is another of a series of PRs (others https://github.com/ARMmbed/mbed-os/pull/12775, https://github.com/ARMmbed/mbed-os/pull/12810, https://github.com/ARMmbed/mbed-os/pull/12864) to remove targets that are not supported or retired as explained in recent blog post.

There are individual commits to remove targets from targets.json and files/folders for the corresponding targets.

Impact of changes

The following targets are being removed:

Migration actions required

  • The targets listed above continue to be available in the 5.15 branch.

Convert newlines on all terminal (tty) devices by default

12889

Summary of changes

Applications can reduce their ROM usage by replacing
"\r\n" by "\n".

Impact of changes

Breaks compatibility with applications built with Mbed 2.

Migration actions required

Update to the latest version of Mbed OS (possibly using the bare metal profile for ultra-constrained devices).

Bare metal profile: USB class device support

12873

Summary of changes

USBCDC_ECM class device uses RTOS thread APIs, so added MBED_CONF_RTOS_PRESENT conditional check to disable that class device in bare metal profile.

Impact of changes

With these changes, except USBCDC_ECM, all the below list of USB class devices can build and works in bare metal profile.

  • USBAudio
  • USBHID
  • USBKeyboard
  • USBMIDI
  • USBMouse
  • USBMouseKeyboard
  • USBMSD
  • USBSerial

Migration actions required

None.

Remove unsupported targets

12864

Summary of changes

This is the third of a series of PRs (others https://github.com/ARMmbed/mbed-os/pull/12775, https://github.com/ARMmbed/mbed-os/pull/12810) to remove targets that are not supported or retired as explained in recent blog post.

There are individual commits to remove targets from targets.json and files/folders for the corresponding targets.

Impact of changes

The following targets are being removed:

  • Delta: DELTA_DFBM_NQ620, DELTA_DFCM_NNN50, DELTA_DFCM_NNN40
  • NXP: LPC4088, LPC1124, LPC1347, LPC1769, LPC1549, XBED_1768
  • NXP: LPC810, LPC1800, LPC4330, LPC4337, LPC11U37H_401
  • NXP: KL26Z, KW24D, KL20D50, KL82Z, KL05Z
  • Silabs EFM32LG, EFM32WG, EFM32HG, EFM32ZG, EFM32PG, EFM32PG12, EFR32MG1
  • Advantech MTB_ADV_WISE_1570, 1510 (renamed)
  • WALLBOT_BLE, NRF51_DONGLE, NRF51822_Y5_MBUG
  • Maxim: MAXWSNENV, MAX32625NEXPAQ
  • Multitech: MTS_MDOT_F405RG, MTS_GAMBIT
  • Onsemi: NCS36510
  • Switch Science: HRM1017, TY51822R3, SSCI824 (PR https://github.com/ARMmbed/mbed-os/pull/12697)
  • Ublox EVK_NINA_B1, EVA_NINA, HI2110
  • Other: RBLAB, SDT51822, RAPIDIOT, MTM_MTCONNECT04S

Migration actions required

  • The targets listed above continue to be available in the 5.15 branch.

ARCH_PRO: Remove uARM tooolchain support

12853

Summary of changes

  • Update scatter file for the ARM toolchain to use 2 region memory model.
    The scatter file changes affect the following boards:
  • LPC1768, ARCH_PRO, UBLOX_C027, XBED_LPC1768 (LPC1768.sct)
  • Remove the TOOLCHAIN_ARM_MICRO directory.
  • Remove release_version as not necessary and as the target can also run
    Mbed OS 6.
  • Remove uARM toolchain in the list of supported toolchains for the target.
  • Indicate that the target supports the small ARM toolchain C library.

Impact of changes

It is no longer possible to use the uARM toolchain to build binaries for the ARCH_PRO board.

Migration actions required

Set the "target.c_lib" configuration option to "small" to build binaries using Microlib with the ARM toolchain.

Allow Devicekey::generate_root_of_trust() to define key size.

12823

Summary of changes

Allow Devicekey::generate_root_of_trust() to define key size.

By default, generate 16 byte keys, to be compatible with bootloader.
But allow user to generate 32 byte keys as well.

This fixes #12821

Impact of changes

Default key, generated by Devicekey::generate_root_of_trust() is now 16 bytes,
instead of 32 bytes.

Migration actions required

If you want to generate 32 byte keys with Devicekey::generate_root_of_trust(),
you need to explicitly supply key size as a parameter.

Remove deprecated Platform header files

12811

Summary of changes

Remove the deprecated header files as part of the Mbed 6 cleanup.

Impact of changes

Breaking change: Applications that include the removed files will no longer successfully build.

Migration actions required

Include the header files recommended in each removed header file:

platform/critical.h -> platform/mbed_critical.h
platform/mbed_sleep.h -> platform/platform/mbed_power_mgmt.h
platform/rtc_time.h -> platform/mbed_rtc_time.h
platform/semihost_api.h -> platform/mbed_semihost_api.h
platform/sleep.h -> platform/mbed_power_mgmt.h
platform/toolchain.h -> platform/mbed_toolchain.h
platform/wait_api.h -> platform/mbed_wait_api.h

Remove unsupported targets

12810

Summary of changes

This is the second of a series of PRs (first https://github.com/ARMmbed/mbed-os/pull/12775) to remove targets that are not supported or retired as explained in recent blog post.

There are individual commits to remove targets from targets.json and files/folders for the corresponding targets.

Impact of changes

The following targets are being removed:

  • MTBs (most)
  • nRF51/52 (most)
  • Ublox NINA B1
  • LPC11u (most)
  • Misc unsupported

Migration actions required

  • The targets listed above continue to be available in the 5.15 branch.

Seeed: Removing unsupported Seeed targets for OS 6

12792

Summary of changes

Removing targets: Seeed Arch Link, Seeed Arch-RO359B, Seeed Arch BLE, Seeed Tiny BLE, Seeed Arch GPRS V2,Seeed Xadow M0

LittleFSv2: Bring in v2.2

12783

Summary of changes

Introduces LittleFSv2.2 developed by @geky. Mbed OS adaption (LittleFSv1 -> LittleFSv2) is based on work done by @pilotak. The only thing the undersigned has done was to create this PR.

Impact of changes

None

Migration actions required

Brings in LittleFSv2 which will coexist with LittleFSv1 already found from Mbed OS. If you already a v1 filesystem you might try converting it to v2, but this isn't guaranteed to succeed. You should preferably create a new v2 filesystem instead.

Remove unsupported targets

12775

Summary of changes

This is the first of a series of PRs to remove targets that are not supported or retired as explained in recent blog post.

There are individual commits to remove targets from targets.json and files/folders for the corresponding targets.

Impact of changes

The following targets are being removed:

  • Thundersoft (all)
  • Realtek RTL8195A
  • Ublox ODIN and related (OKDO, MTB)
  • RDA (all)
  • Gigadevice GD32_E103VB
  • Atmel (all)
  • TI (all)
  • Etteplan Elmo
  • Wiznet (all)
  • Silica
  • Renesas VK_RZ_A1H
  • Rename MTB_MXCHIP_EMW3166 to WIO_EMW3166
  • VBLUNO51 and VBLUNO52

Migration actions required

  • The targets listed above continue to be available in the 5.15 branch.

Callback: Trivial default

12761

Summary of changes

Turn off callback.non-trivial by default to save ROM space.

Follow-up to #12036. Will need at least one example changed to turn the option back on.

Impact of changes

  • If application code uses Callback with a non-trivial functor, they will get a compilation error directing them to turn on platform.callback-nontrivial.

Migration actions required

  • Add "platform.callback-nontrivial": true to your mbed_app.json if a build error indicates that it is required - or change your code to only use trivial functors in Callback.

BLE: remove deprecated APIs from Gatt and SecurityManager

12742

Summary of changes

  • Remove deprecated APIs from Gatt
  • Remove deprecated APIs from SecurityManager

Impact of changes

Deprecated APIs from Gatt and SecurityManager do not exist anymore, applications that use them will not compile until updated with current APIs.

Migration actions required

Applications that compile without deprecation warnings on mbed-os-5.15 will continue to work. Otherwise, please fix any deprecated API usages, for example by referring to compilation warnings from mbed-os-5.15.

Add Semtech Lora radio drivers

12741

Summary of changes

Add Semtech Lora radio drivers for SX1272, SX1276 and SX126x radios.
Added as subtree from original repository: https://github.com/ARMmbed/mbed-semtech-lora-rf-drivers

Impact of changes

Enable using Lora with no additional repositories, all of them part of Mbed OS.

Migration actions required

None

Remove Mbed SPM

12738

Summary of changes

Remove FUTURE_SEQUANA and FUTURE_SEQUANA_M0 targets. These are not supported in Mbed 6.

After the removal of FUTURE_SEQUANA targets, there are no targets remaining that use Mbed SPM. Remove Mbed SPM as well, as it is unused.

Impact of changes

The following targets are being removed in Mbed 6:

  • FUTURE_SEQUANA
  • FUTURE_SEQUANA_M0

Migration actions required

Please use a version of Mbed OS 5 if you require support for FUTURE_SEQUANA or FUTURE_SEQUANA_M0

Remove PSA implementation for v8-M and dual CPU targets

12737

Summary of changes

With Mbed 6, TrustedFirmware-M (TF-M) is the source of Mbed's implementation of PSA. This means Mbed 6 doesn't need to contain any code or tooling to build the v8-M or dual CPU secure binaries.

This patch set removes tooling, code, and targets that would have been used to make PSA secure binaries for v8-M or dual CPU platforms.

Impact of changes

  • NXP LPC55S69 and Numaker M2351 support is temporarily dropped as compared to Mbed 5, as those targets are not supported in TF-M upstream.
  • Exporters for v8-M and dual CPU PSA targets are not supported, due to TF-M limitations.
  • It is no longer possible to use Mbed to build v8-M or dual CPU secure binaries.
  • The following targets are removed compared to Mbed 5:
  • ARM_MUSCA_A1_S
  • ARM_MUSCA_B1_S
  • LPC55S69_NS
  • LPC55S69_S
  • HANI_IOT
  • NU_PFM_M2351_NS
  • NU_PFM_M2351_S

Migration actions required

Use Mbed 5.15 if you require PSA targets with exporter support, or one of the removed targets. LPC55S69 and Numaker M2351 will be supported in Mbed 6 at a later date, after the targets are supported by TF-M.

rtos: Improve CMSIS-RTOSv2 app compatibility

12736

Summary of changes

Some non-Mbed-OS, pre-existing CMSIS-RTOSv2 applications depend on
CMSIS-RTOSv2 Automatic Dynamic Allocation, also known as Object-specific
memory pools. Mbed OS doesn't by default provide any memory to the
CMSIS-RTOSv2 Automatic Dynamic Allocation pool, as doing so would waste
memory if the feature is not used; even if the feature is used, as a
platform, Mbed OS can't know how many objects of which types will be
created by an application and therefore will either waste memory or not
provide enough memory in a hard to debug manner. Portable CMSIS-RTOSv2
applications depending on CMSIS-RTOSv2 Automatic Dynamic Allocation
should instead configure the memory pools themselves, as applications
know best their memory requirements.

Add Mbed configuration options which can be used by applications to
control the amounts of memory available to the CMSIS-RTOSv2 Automatic
Dynamic Allocation subsystem. This enables portable CMSIS-RTOSv2
applications, which can run on any CMSIS-RTOSv2 OS, to be able to run on
Mbed OS as well.

Signed-off-by: Devaraj Ranganna [email protected]
Signed-off-by: Jaeden Amero [email protected]

Impact of changes

Applications written for CMSIS-RTOSv2 that use CMSIS-RTOSv2 Automatic Dynamic Allocation can now also run on Mbed OS, when the application specifies how much memory to use in their mbed_app.json. CMSIS-RTOSv2 docs claim that Automatic Dynamic Allocation is "fully portable", and now that's at least more true than before where Mbed is concerned.

The TF-M regression tests are a concrete example of an application written making use of CMSIS-RTOSv2 Automatic Dynamic Allocation. We have an incredibly easier time running (and maintaining) those tests with Mbed OS, validating the TF-M integration with Mbed OS does not break TF-M functionality, when Mbed OS supports application-configured CMSIS-RTOSv2 Automatic Dynamic Allocation.

Migration actions required

None

odin targets: remove release version

12733

Summary of changes

This is a preparation for more upcoming changes. The latest master updates removed deprecated functionality and these targets do not compile anymore.

Impact of changes

Boards based on the ODIN module won't compile in Mbed OS 6.0.0.

Migration actions required

Staying with Mbed OS version up to 5.15.x.

BLE Gap deprecation cleanup/rework

12730

Summary of changes

  • Remove BLE LegacyGap class and implementations. Map ble::Gap to global Gap.
  • Add non-deprecated APIs (originally found in LegacyGap) to Gap and implementations into GenericGap.
  • Remove/replace legacy BLE event signalling (callback chains) in favour of EventHandler, where possible.
  • Remove BLEProtocol:: and replace AddressType_t with own_address_type_t/peer_address_type_t, AddressByte_t with address_t, etc.
  • Replace BLE::Address_t (for accessing address types + values in whitelists) with the new equivalent whitelist_t::entry_t.
  • Rename ConnectionParams_t -> PreferredConnectionParams_t and use it only for Generic Access Service.
  • Fix misspelt central_privay_configuration_t -> central_privacy_configuration_t
  • Remove legacy type definitions and replace internal usages with new types, e.g. address types, disconnection reason, etc.

Notes:

  • setDeviceName(), getDeviceName(), setAppearance(), getAppearance() from LegacyGap are removed, as device name and appearance can be set via AdvertisingDataBuilder and saved by the application. But there were previously no deprecation warnings for them.
  • get/setPreferredConnectionParams() are dropped from Gap - updated versions will be added to Gatt where they should belong to.

Impact of changes

Legacy BLE Gap APIs and related type definitions are no longer available.
Some APIs have been updated to take parameters of new type definitions of address types + values.

Migration actions required

  • Applications based on up-to-date BLE APIs should be able to make most BLE function calls as before.
  • However as mentioned above some deprecated types (e.g. address) were not warned previously - their usages need to be replaced with corresponding new types. The best clue is compilation errors which can be manually fixed. The PR to update mbed-os-example-ble is an example of how to do this: https://github.com/ARMmbed/mbed-os-example-ble/pull/289
  • Applications should set device name and appearance using AdvertisingDataBuilder and internally remember their values as needed, since APIs to get/set them are removed as explained above.

RZ_A1H remove usage of ethernet hal API

12715

Summary of changes

  • Removed ethernet_api from targets\TARGET_RENESAS\TARGET_RZ_A1XX.
  • Modified features\netsocket\emac-drivers\TARGET_RZ_A1_EMAC not to use ethernet_api.

targets:MIMXRT1050: Add QSPI flash support

12711

Summary of changes

targets:MIMXRT1050:

  1. QSPI Flash boot support
  2. QSPI Flash FLASHIAP support
  3. Update link file for application and bootloader

Remove compatibility for Arm Compiler versions prior to 6.01.0050

12708

Summary of changes

Removed the pre-processor directive __ARMCC_VERSION >= 6010050 and the code added for versions before 6.01.0050.

Impact of changes

Breaking change: The binary generated from ARM Compiler 5 cannot be relied on as support has been dropped.

Migration actions required

Use Arm Compiler 6

Tests: Remove support for ARM Compiler 5

12706

Summary of changes

ARM Compiler 5 is no longer actively supported and was superseded in
Mbed OS by ARM Compiler 6.

Impact of changes

Breaking change: The binary generated from ARM Compiler 5 cannot be relied on as support has been dropped.

Migration actions required

Use Arm Compiler 6.

mbed-client-cli: Remove support for ARM Compiler 5

12705

Summary of changes

ARM Compiler 5 is no longer actively supported and was superseded in
Mbed OS by ARM Compiler 6.

Impact of changes

Breaking change: The binary generated from ARM Compiler 5 cannot be relied on as support has been dropped.

Migration actions required

Use Arm Compiler 6.

TFM: Remove ARM Compiler 5 considerations

12702

Summary of changes

ARM Compiler 5 is no longer actively supported and was superseded in
Mbed OS by ARM Compiler 6.

Impact of changes

Breaking change: The binary generated from ARM Compiler 5 cannot be relied on as support has been dropped.

Migration actions required

Use Arm Compiler 6.

Storage: Remove support for ARM Compiler 5

12699

Summary of changes

ARM Compiler 5 is no longer actively supported and was superseded in
Mbed OS by ARM Compiler 6.

Impact of changes

Breaking change: The binary generated from ARM Compiler 5 cannot be relied on as support has been dropped.

Migration actions required

Use Arm Compiler 6.

Drivers: Remove support for ARM Compiler 5

12698

Summary of changes

ARM Compiler 5 is no longer actively supported and was superseded in
Mbed OS by ARM Compiler 6.

Impact of changes

Breaking change: The binary generated from ARM Compiler 5 cannot be relied on as support has been dropped.

Migration actions required

Use Arm Compiler 6.

Remove netsocket icetea tests and TCPServer

12694

Summary of changes

Remove deprecated Netsocket Icetea tests and TCPServer class.

Impact of changes

  • Netsocket Icetea tests are removed
  • TCPServer class removed

Migration actions required

  • Use Netsocket Greentea tests (TESTS/netsocket)
  • TCPSocket can be used instead of TCPServer

Remove deprecated netsocket methods

12685

Summary of changes

Remove deprecated methods from netsocket

Impact of changes

Deprecated methods in netsocket (since Mbed OS 5.1) are removed.

Migration actions required

InternetSocket::attach -> Use Socket::sigio
TCPSocket(S *stack) -> Use default TCPSocket constructor and call open separately
UDPSocket(S *stack) -> Use default UDPSocket constructor and call open separately

SocketAddress rework

12683

Summary of changes

Original work: https://github.com/ARMmbed/mbed-os/pull/12468 . This PR contains also the UT fix.

  • Add optimised constexpr default constructor. Default construction was previously by a heavyweight defaulted nsapi_addr_t parameter.
  • Remove deprecated resolving constructor.
  • Take nsapi_addr_t inputs by constant reference rather than value.
  • Inline the trivial getters and setters.
  • Use unique_ptr to manage the text buffer.
  • Make operator bool explicit.
  • Optimise some methods.
  • Update to C++11 style (default initialisers, nullptr etc)

Impact of changes

  • Constructor deprecated in Mbed OS 5.1 removed.
  • Code size reductions, particularly on default initialisation.
  • Implicit assignments to bool or int or others no longer possible - any existing code which does not compile is most likely an error. (if (sockaddr) is still fine - such "contextual conversions to bool" can use the explicit operator).

Migration actions required

  • Code attempting resolution by passing a hostname to SocketAddress's constructor must be modified to use NetworkInterface::gethostbyname or NetworkStack::gethostbyname.
  • Code failing due to the now-explicit bool operator should be reviewed to check intent.

Remove deprecated BLE:: APIs and unsupported services

12676

Summary of changes

  • Remove deprecated APIs from BLE namespace.
  • Remove DFUService, UARTService and beacon-related services (iBeacon, EddyStone) whose standards/stacks are externally maintained.

Impact of changes

  • Legacy APIs in BLE namespace are no longer available.
  • DFUService, UARTService and beacon-related services (iBeacon, EddyStone) are no longer available.

Migration actions required

  • Applications that use legacy APIs in BLE namespace need to be updated to use up-to-date APIs.
  • Applications based on removed services can copy the service definitions over from previous mbed-os releases (with deprecated API usages manually fixed), or provide their own implementations.

Remove Maxim and SoftDevice BLE stacks which do not support the latest APIs

12674

Summary of changes

  • Remove Nordic SoftDevice stack (used by nRF51* targets). Notes: nRF52* targets are unaffected as they use Cordio stack.
  • Remove the current Maxim BLE stack (until a newer version based on up-to-date Cordio stack becomes available).
  • Disable BLE features of affected targets from targets.json.

Note: Some references/macros for SoftDevice are still present in the Nordic SDK (targets/TARGET_NORDIC/*) and not cleanly separated with other components.

Impact of changes

  • BLE feature will be unavailable on nRF51* targets and temporarily unavailable on Maxim targets until the driver gets updated in the future.

Migration actions required

  • For nRF51* targets, use Mbed OS release 5.15 - future support for those targets are under review.
  • For nRF52* targets, ensure the default BLE configurations that enable Cordio stack is used.
  • For Maxim targets, use Mbed OS release 5.15 until the BLE driver gets updated.

Remove deprecated ARMC5 reference from mbed compile -S output

12672

Summary of changes

Removed deprecated ARMC5 reference from mbed compile -S command output.

Impact of changes

With these changes, mbed compile -S will not produce any ARMC5 reference.

Migration actions required

None.

Netsocket/lwIP Stack: Remove support for ARM Compiler 5

12671

Summary of changes

ARM Compiler 5 is no longer actively supported and was superseded in
Mbed OS by ARM Compiler 6.

Impact of changes

Breaking change: The binary generated from ARM Compiler 5 cannot be relied on as support has been dropped.

Migration actions required

Use Arm Compiler 6.

Remove ARMC5 reference from Mbed OS platform

12655

Summary of changes

Removed ARMC5 reference from Mbed OS platform.

Impact of changes

Breaking change: The ARMC5 references are removed from platform as they have been deprecated in a previous Mbed OS release.

Migration actions required

Use Arm Compiler 6

Removed all references to __CC_ARM

12654

Summary of changes

Removed ARMC5 reference from FEATURE_BLE.
ARM Compiler 5 is no longer supported in Mbed OS and is superseded by ARM Compiler 6

Impact of changes

Breaking change: The ARMC5 references are removed from platform as they have been deprecated in a previous Mbed OS release.

Migration actions required

Use Arm Compiler 6

Remove minimal-printf extension profile

12640

Summary of changes

Removed minimal-printf extension profile. Usage of minimal-printf library is enabled via the target.printf_lib configuration parameter as described in minimal-printf README, see https://github.com/ARMmbed/mbed-os/tree/master/platform/source/minimal-printf#usage for more details.

Impact of changes

Applications can no longer use the obsolete minimal-printf extension profile.

Migration actions required

Usage of minimal-printf library is enabled via the target.printf_lib configuration parameter, see https://github.com/ARMmbed/mbed-os/tree/master/platform/source/minimal-printf#usage for more details.

Remove the deprecated ethernet hal APIs

12639

Summary of changes

Removed ethernet hal deprecated APIs.

Impact of changes

Breaking change: The Ethernet hal APIs are removed as they have been deprecated in a previous Mbed OS release.

Migration actions required

  • EthInterface is now the preferred way to get an Ethernet object.
  • Alternatively, use NetworkInterface to get an instance of an appropriate network interface (WiFi or Ethernet).

Add "rtos-api" to bare metal

12629

Summary of changes

Added the bare metal form of the RTOS API since it doesn't add any overhead (except for a little extra compilation time) and has the benefit of minimising differences between RTOS and bare metal modes.

Impact of changes

RTOS APIs are available in bare metal mode.

Migration actions required

None

Remove Semaphore deprecated APIs

12609

Summary of changes

Removed Semaphore deprecated APIs.

Impact of changes

Breaking change: Semaphore wait and wait_until methods have been deprecated since Mbed OS 5.13 and are removed now.

Migration actions required

Use Semaphore acquire, try_acquire, try_acquire_for and try_acquire_until methods.

Netsocket: Introduce set_ip_address and get_dns_server APIs

12606

Summary of changes

set_ip_address API can be used to set a static IPv4 address or IPv6 link-local address to network stack. This is needed for example in cellular use cases where device gets multiple IP addresses from cellular context.

With get_dns_server DNS servers can be queried from NetworkInterface object

Fully enforce NonCopyable

12581

Summary of changes

Make NonCopyable fully operational so it gives compile errors in all build profiles.

This removes the deprecated copy operators which let code compile with a warning.

Impact of changes

Code that copies non-copyable classes will now not compile in any profile - previously a link error would have been generated in debug profile, but other profiles would have only generated a "deprecated" warning at compile time and a debug message at runtime.

Migration actions required

Modify code to not copy non-copyable objects. Any code doing so would have likely led to problems such as memory leaks.

Remove mbed wait deprecated APIs

12572

Summary of changes

Removed mbed wait deprecated APIs.

Impact of changes

Breaking change: wait and wait_ms APIs have been deprecated since Mbed OS 5.14 and they are removed now.

Migration actions required

If you wish to sleep, use ThisThread::sleep_for (C++) or thread_sleep_for (C). If you wish to wait (without sleeping), call wait_us. wait_us is safe to call from ISR context.

Replace with weak mbed_error_hook implementation (deprecate the hook function)

12569

Summary of changes

mbed_set_error_hook() can only be called inside the application. Therefore it is not possible in the application to catch errors before calling mbed_set_error_hook().
I thought it would be simpler to create a mbed_error_hook() function which is weak and the application can catch errors at any time.

Impact of changes

None

Migration actions required

Replace mbed_set_error_hook() with an application specific mbed_error_hook() implementation.

Add property API to InternetSocket

12522

Summary of changes

Add new API to network interface.

Property API allows application to ask network specific properties
from the InternetSocket . Queried information can be used to avoid
network congestion by adjusting transmission jitter and retry
timeouts.

C++ Chrono support

12425

Summary of changes

Add Chronos versions of time-related APIs to RTOS classes, Ticker-related classes and EventQueue.

Kernel::Clock, HighResClock, LowPowerClock and RealTimeClock act as the Chrono clocks. (C++ standard clocks system_clock, steady_clock and high_resolution_clock are not supported, due to difficulty in consistent retargetting across toolchains).

Deprecate old non-Chrono APIs.

Impact of changes

Existing timing code will generate deprecation warnings, but there should be no functional change.

A follow-up PR will clean-up warnings in rest of code base.

Migration actions required

Users should migrate to use Chrono-based APIs as directed by the deprecation messages

Remove the deprecated RawSerial, UARTSerial, Serial

12410

Summary of changes

  • Removed RawSerial, Serial, UARTSerial deprecated classes.
  • Removed SerialBase deprecated APIs.

Impact of changes

Breaking change: RawSerial, Serial, UARTSerial classes have been deprecated since Mbed OS 6.0.0 and they are all removed now.

Migration actions required

Use BufferedSerial and UnbufferedSerial for serial communication.

Add get_time function to ESP8266

12300

Summary of changes

Fixes https://github.com/ARMmbed/mbed-os/issues/12192.

get_time() function allows access to (S)NTP functionalities of ESP8266 module.

I considered using std::chrono instead of ctime's std::tm, but then - to convert to chrono::time_point we'd have to go through std::tm anyway or write our own parser, which I just managed to avoid.

Side note: using std:: introduces some warnings due to -D_LIBCPP_EXTERN_TEMPLATE(...)= flag being used in all our compilation profiles. This flag seems obsolete and I hope I will get it removed soon.

I cannot really add any tests, as they are using WifiInterface::get_instance() to get the interface and there is no RTTI, that would allow casting to ESP8266Interface to call get_time(), but I tested the function locally and it works fine.

Impact of changes

None, other than user can check time with ESP8266Interface.

Migration actions required

None

Make cypress psoc64 TFM ready and also add TF-M initialization

12271

Summary of changes

Non-secure core IPC, Mailbox and Interface init for TFM_DUALCPU and TFM_V8M targets

These changes concentrate on getting mbed-os(Non-secure) working with TF-M(secure)
Changes reflect towards any Cypress based TFM_DUALCPU targets and TFM_V8M targets at the moment and making it more generic in the near future.

Key changes:

  • Init IPC, Mailbox and Non-secure Interface.
    These changes are for TFM_DUALCPU and TFM_V8M platforms.
    The initialization happens after mbed-os kernel is kicked off and
    when the thread is up and running.

We are initializing the following for TFM_DUALCPU platforms:

  • IPC Interrupts for syncing multi-core platforms.
  • NS Mailbox to receive messages.
  • NS interface.

We are only initializing a Non-secure interface for TFM_V8M platforms.

  • Cypress: CY8CKIT_064S2_4343W: Reserve timer channels used by TF-M.
  • Make CY8CKIT_064S2_4343W Cypress target TF-M compatible.

Impact of changes

This impacts CY8CKIT_064S2_4343W, TFM_V8M and TFM_DUALCPU targets.

Migration actions required

None

Callback extension and optimisation

12036

Summary of changes

Extend Callback, and optimise it.

Impact of changes

  • Optimise clearing by adding nullptr overload.
  • Optimise clearing by not clearing storage - increases code size of comparison, but that is extremely rare.
  • Reduce ROM used by trivial functors - share copy/destroy code.
  • Config option to force trivial functors - major ROM saving by eliminating the "operations" table.
  • Config option to eliminate comparison altogether - minor ROM saving by eliminating zero padding.
  • Conform more to std::function API.

Migration actions required

  • The added nullptr overload means Callback(NULL) or Callback(0) will no longer work; users must use Callback(nullptr) or Callback().

Known Issues

There are no new known issues with this release.

Contents

Ports for Upcoming Targets

12787
Cypress: Add CYESKIT-064B0S2-4343W

12603
Add target CYSBSYSKIT_01

12576
M487: Support custom board

Fixes and Changes

12941
Correct Timeout rescheduling

12938
Correct core RTOS sleep routine timing

12935
Remove unsupported targets

12924
STM32F4 bypass PLL configuration when already done by bootloader

12919
ExhaustibleBlockDevice: revert commit 10481f2

12913
usbcdc: provide doxygen only macro for doxy builder

12889
Convert newlines on all terminal (tty) devices by default

12876
802.15.4 STM S2LP driver update

12874
nRF: use Mbed-default boot-stack-size & fix stack_size_unification test

12873
Bare metal profile: USB class device support

12872
Add the Doxygen note to non-supported RTOS kernel APIs.

12866
Update mbed-coap to version v5.1.5

12864
Remove unsupported targets

12860
STM32F7 update drivers version to CUBE V1.16.0

12855
Bare metal: Enable signals greentea test

12853
ARCH_PRO: Remove uARM tooolchain support

12852
Update mbed-coap to version 5.1.4

12850
Fix intermittent sync fail in tests-filesystem-general_filesystem

12849
TEST: Update example test

12846
Revert "Remove MTB_STM_S2LP target"

12844
Add invalid data case to tdbstore ram init

12843
enable storage tests on baremetal

12841
Drops prebuild bootloaders not supported in Mbed OS 6

12840
Musca-B1: Grant Non-Secure access for MHU0 on EXP0

12839
Nuvoton: netsocket correction of judgment errors

12833
Override c_lib to small for all targets

12830
Cellular: Fix BG96 offloaded DNS query for new API

12828
Update CYSBSYSKIT_01

12827
enable common tickers & lp_tickers hal tests in baremetal mode

12825
Turn on ARM linker --inline

12823
Allow Devicekey::generate_root_of_trust() to define key size.

12819
Cypress: Fix unitialized memory in spi_master_write

12818
Add the Doxygen note to non-supported RTOS and Driver class.

12817
Cellular: Disable AT traces when mbed-trace is disabled

12816
Baremetal: Enable Semaphore greentea test

12815
Cellular: Fix build problem if cellular.debug-at is set as null

12811
Remove deprecated Platform header files

12810
Remove unsupported targets

12804
Cellular: Check if serial is supported

12802
Nuvoton: Add 'sectors' configuration option into targets.json

12799
TDBStore: Handle odd number of sectors in block

12797
Add custom board option to STM32 pins generation script

12792
Seeed: Removing unsupported Seeed targets for OS 6

12791
Fix for IPv6 Dual Stack support

12787
Cypress: Add CYESKIT-064B0S2-4343W

12786
Baremetal: Enable kernel_tick_count greentea test

12785
Cordio: Apply Packetcraft's fix for possible SweynTooth vulnerabilities

12783
LittleFSv2: Bring in v2.2

12779
Baremetal: Enable EventFlags greentea test

12778
Add I2C api to Musca-B1 target

12775
Remove unsupported targets

12769
Fix WIFI-GET-RSSI test case failure and remove extra label from CYW9P62S1_43438EVB_01 in target.json

12768
ESP8266 Drv support baud-rate switch

12765
Update MTS_MDOT_F411RE target and remove bootloader from tools

12763
Cellular: Fix ATHandler::read_string to handle delimiter inside string

12761
Callback: Trivial default

12758
Fix: Return the correct std I/O device handle for Microlib in retarget code

12757
Update Mbed OS with Mbed Crypto merged into Mbed TLS

12755
Update astyle filtering rules for Nanostack

12754
Nanostack release for Mbed OS 6

12752
PSoC 62/63: set correct mbed_ram_start and mbed_ram_size

12748
Fix build failure due to C lib selected

12746
Removed Toshiba targets (AdBun-M066, M3H6 & M3HQ).

12745
add config option for phy media interface

12744
Change files in TARGET_SDT64B

12743
mergify: Add 5.15 rule

12742
BLE: remove deprecated APIs from Gatt and SecurityManager

12741
Add Semtech Lora radio drivers

12739
FIX: update usb device tests for deprecated API

12738
Remove Mbed SPM

12737
Remove PSA implementation for v8-M and dual CPU targets

12736
rtos: Improve CMSIS-RTOSv2 app compatibility

12735
Make MUSCA B1 and MUSCA A1 TF-M ready

12734
NUCLEO_WB55RG : enable IAR export

12733
odin targets: remove release version

12731
Testing: Fix multihoming test compilation issues

12730
BLE Gap deprecation cleanup/rework

12729
Mbedtls fixes

12728
STM32 EMAC : increase thread-stacksize

12719
FPGA CI TEST SHIELD: add test config json file

12716
M487: Update BSP

12715
RZ_A1H remove usage of ethernet hal API

12712
Fix LTO issue with minimal-printf

12711
targets:MIMXRT1050: Add QSPI flash support

12708
Remove compatibility for Arm Compiler versions prior to 6.01.0050

12706
Tests: Remove support for ARM Compiler 5

12705
mbed-client-cli: Remove support for ARM Compiler 5

12704
LWIP: propagate the apimsg->err out of netconn_apimsg()

12702
TFM: Remove ARM Compiler 5 considerations

12701
Add custom BT Firmware image for CYW9P62S1_43012EVB_01

12699
Storage: Remove support for ARM Compiler 5

12698
Drivers: Remove support for ARM Compiler 5

12696
rtos: declare vector table type as in Technical Note 11578

12694
Remove netsocket icetea tests and TCPServer

12693
USBMSD security updates

12692
EFM32G11: Add RGB LEDs to PinNames.h

12691
Replace small with std C lib if not supported by a target's toolchain

12690
STM32: solve GCC Unspecified RTOS error

12686
STM32 EMAC : remove TIMEOUT issue when cable is not plugged yet

12685
Remove deprecated netsocket methods

12683
SocketAddress rework

12682
MBED TRACE default level is INFO

12681
SPIFBlockDevice doesn't play nice on shared SPI bus #11732.

12680
QSPI driver also acquires ownership upon initialization now.

12679
PSoC6: enable export to uVision and IAR

12677
STM32H7: enable QSPI

12676
Remove deprecated BLE:: APIs and unsupported services

12674
Remove Maxim and SoftDevice BLE stacks which do not support the latest APIs

12673
Mergify update

12672
Remove deprecated ARMC5 reference from mbed compile -S output

12671
Netsocket/lwIP Stack: Remove support for ARM Compiler 5

12670
ESP8266: Fix typo: gateway to netmask

12668
tests-integration-fs-threaded: makes tests independent from each other

12667
Add check for return code in DeviceKey to avoid injecting invalid ROT

12666
Makefile: render compatible with some GNU make versions (revert #12646)

12663
Migrate NUCLEO_F303K8 to Mbed OS 5 baremetal

12662
Add workaround for STM32F4 hardfault in sleep mode

12661
Adjusted SecurityManager Doxygen ASCII art

12660
M2351: Support custom board

12659
Rebuild WICED libraries after Mbed update

12658
tests-integration;tests-filesystem: fix code causing compiler warnings and enable more tests

12655
Remove ARMC5 reference from Mbed OS platform

12654
Removed all references to __CC_ARM

12652
Add moduletests for FileSystemStore

12651
Cellular: Make Quectel EC2x modem start up timeout configurable

12649
Expose SerialBase IrqType member to UnbufferedSerial class

12648
Nanostack: Add config for Wi-SUN device type

12646
Makefile: fix for overlong command line

12645
Storage: Use internal flash for KVStore always if default config

12642
M263: Support custom board

12640
Remove minimal-printf extension profile

12639
Remove the deprecated ethernet hal APIs

12638
Enable storage tests to all targets

12637
Cordio: fix for issue #12625

12636
Extend unit tests for TDBStore

12633
Cellular: Add offload TLSSocket implementation inside feature flag

12632
Fix snprintf in minimal-printf library

12631
Update psutils to address security issue

12630
mbed test with dual core targets

12629
Add "rtos-api" to bare metal

12626
STM32F4 update drivers version to CUBE V1.25.0

12624
Cellular: Support EC2x power control pin support no connect

12617
Correct doxygen for Mail::get

12612
TEST: add RTOS macro to enable integration test

12610
Add UBLOX_onboard_modem_api for power up UBLOX_C027.

12609
Remove Semaphore deprecated APIs

12607
Use toolchain's struct stat if available

12606
Netsocket: Introduce set_ip_address and get_dns_server APIs

12603
Add target CYSBSYSKIT_01

12589
Cellular: Add deativation of context associated with profile

12581
Fully enforce NonCopyable

12576
M487: Support custom board

12572
Remove mbed wait deprecated APIs

12570
Improve nsapi_create_stack

12569
Replace with weak mbed_error_hook implementation (deprecate the hook function)

12547
EFM32: update emlib to 5.9.1

12528
SFDP: consolidation of SFDP parsing [5/5]

12522
Add property API to InternetSocket

12472
Add WPA3 support in mbed-os for green tea tests

12463
Clean up and optimise socket statistics

12456
COMPONENT_BlueNRG_MS creation : ST Bluetooth Low Energy module

12425
C++ Chrono support

12410
Remove the deprecated RawSerial, UARTSerial, Serial

12387
Add Objects Extensions Configuration Parameter to HAL

12300
Add get_time function to ESP8266

12271
Make cypress psoc64 TFM ready and also add TF-M initialization

12161
nRF52 I2CSlave Implementation

12036
Callback extension and optimisation

11726
Disable C++ static destructors in ARMC6 compiler

11629
Refactor TDB internal bounds computation

Using this release

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

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

mbed-os - mbed-os-5.15.3

Published by adbridge over 4 years ago

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

Summary

This latest partner and customer support release on the 5.15 branch brings a number of important fixes and updates.
Highlights:

  • mbed-coap versions to 5.1.5
  • Updated Nanostack containing an improved version of Wi-SUN protocol stack.
  • Possible BLE Sweyntooth vulnerabilities fixed in Cordio

For full details of these and other fixes in this release please see the contents list below.

Migration Guide

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

None

Known Issues

There are no new known issues with this release.

Contents

Ports for Upcoming Targets

None

Fixes and Changes

12871
UpdateMbed version and secure binaries

12869
LWIP: don't pbuf_free(NULL) on socket close (5.15-branch)

12867
Update mbed-coap to version v5.1.5 for Mbed OS 5.15

12863
STM32 GCC Unspecified RTOS error

12859
Update mbed-coap to version 5.1.4

12854
Implement psa_hash_*() functions

12845
Backport SweynTooth fix for Cordio to 5.15

12842
Remove ethernet interface logic for SoftAP and STA

12813
[mbed-os-5.15] Nanostack release to mbed-os-5.15 branch

Using this release

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

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

mbed-os - mbed-os-5.15.2

Published by adbridge over 4 years ago

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

Summary

This latest patch release for the 5.15 branch continues to add support for our partners and customers needs whilst we continue to prepare for the next major version of Mbed OS.
It contains a branch specific Nanostack release to fix a number of outstanding issues, some important TLS updates and bootloader support for RZ_A1H and GR_LYCHEE. There are also a number of other essential fixes.

Please note that this release is NOT currently supported by the official Mbed OS examples or the online compiler.

Migration Guide

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

Upgrade to Mbed TLS 2.21.0 and Mbed Crypto 3.1.0

12767

Summary of changes

Upgrade to Mbed TLS 2.21.0 and Mbed Crypto 3.1.0

Impact of changes

  • Security fix for https://nvd.nist.gov/vuln/detail/CVE-2019-18222, without dropping Mbed TLS features by reverting back to an older LTS version of Mbed TLS (2.16.x). This requires bumping the version of Mbed Crypto to 3.1.0, which brings along with it an API break in the experimental PSA APIs

Migration actions required

What behavior changes are being made?
For security and NIST SP 800-90A compliance reasons, CTR DRBG now grabs a nonce from the entropy source if needed to provide the maximum security strength. A previously unused-before-seeding member of the CTR DRBG context, mbedtls_ctr_drbg_context::reseed_counter, is used to hold the number of bytes the user has requested to include from the nonce via mbedtls_ctr_drbg_set_nonce_len(), or -1 to indicate that the entropy nonce length was not set explicitly. This means applications that were depending on a reseed_counter value of 0 to mean "not yet seeded" will need to instead handle errors from calls to mbedtls_ctr_drbg_seed().

What is being deprecated?
A few PSA Crypto asymmetric cryptography functions and macros, key usage definitions, and error code definitions have been renamed to better reflect their operation and to improve readability.

Why is this being deprecated?
The PSA Crypto API continues to develop as it heads towards its 1.0 release. Mbed Crypto 3.0.0d0 implements more of PSA Crypto 1.0b3 than was implemented in Mbed Crypto 2.x, and this brings along some API deprecations.

Mbed Crypto includes backwards compatibility macros (by way of psa/crypto_compat.h) to provide source-level backwards compatibility, although it's recommended to stop using the deprecated APIs as soon as you are able to.

Migration
To avoid using deprecated APIs, users of PSA Crypto should update to the new version of API.

Old New
psa_asymmetric_sign() psa_sign_hash()
psa_asymmetric_verify() psa_verify_hash()
PSA_ASYMMETRIC_SIGNATURE_MAX_SIZE() PSA_SIGNATURE_MAX_SIZE()
PSA_ASYMMETRIC_SIGN_OUTPUT_SIZE() PSA_SIGN_OUTPUT_SIZE()
PSA_KEY_USAGE_SIGN PSA_KEY_USAGE_SIGN_HASH
PSA_KEY_USAGE_VERIFY PSA_KEY_USAGE_VERIFY_HASH
PSA_ERROR_UNKNOWN_ERROR PSA_ERROR_GENERIC_ERROR
PSA_ERROR_OCCUPIED_SLOT PSA_ERROR_ALREADY_EXISTS
PSA_ERROR_EMPTY_SLOT PSA_ERROR_DOES_NOT_EXIST
PSA_ERROR_INSUFFICIENT_CAPACITY PSA_ERROR_INSUFFICIENT_DATA
PSA_ERROR_TAMPERING_DETECTED PSA_ERROR_CORRUPTION_DETECTED

Known Issues

There are no new known issues with this release.

Contents

Ports for Upcoming Targets

Fixes and Changes

12780
Cypress: Remove CYSBSYSKIT_01 from 5.15

12776
Update stm32 emac ethernet driver

12771
Cypress: Partial backport of #12769

12767
Upgrade to Mbed TLS 2.21.0 and Mbed Crypto 3.1.0

12753
Cypress: Backport PRs from 6.0 to 5.15.2

12727
USBMSD security updates (bp #12693)

12724
RZ_A1H and GR_LYCHEE: Enable bootloader support (Mbed OS 5.15)

12723
Mbedtls fixes for 5.15.2

12717
Add fix for STM32F4 hardfault in sleep mode

12653
Fix issue when TDBStore has varying erase sizes between areas. (Backport)

12650
Cellular: ALT1250 PPP cellular driver for mbed-os 5.15

12485
Nanostack release for Mbed OS 5.15

Using this release

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

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

mbed-os - mbed-os-6.0.0-alpha-3

Published by adbridge over 4 years ago

We are pleased to announce the Mbed OS 6.0.0-alpha-3 release is now available.

Summary

In this pre-release of Mbed OS 6.0 we continue the theme of general cleanup. We also switched the default implementation of the printf family functions to the minimal-printf library. We will publish a blog post with more details on the subject in the coming days as it may have implications on your code. This release intentionally breaks compatibility both with Mbed OS 5 series and previous Mbed OS 6 previews. For details of the breaking changes please have a look at the release notes below.

Migration Guide

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

Remove RtosTimer deprecated class

12601

Summary of changes

Removed RtosTimer deprecated class.

Impact of changes

Breaking change: RtosTimer has been deprecated since Mbed OS 5.2 and it is removed now.

Migration actions required

Use EverntQueue as it provides similar functionality with the additional features to handle deferring other events to multiple contexts.

Change Mutex lock and unlock APIs return value to void

12598

Summary of changes

Modified Mutex lock() and unlock() APIs to returnvoid as return status value deprecated.

Impact of changes

Breaking change: Mutex lock() and unlock() methods return status value have been deprecated since Mbed OS 5.9, so changed the return value to void.

Migration actions required

Use Mutex void lock(), void unlock() methods.

Cellular: Add ALT1250 PPP cellular target

12597

Summary of changes

Add cellular support for Altair ALT1250 NB-IoT modem. This driver only supports PPP mode.

Remove Mutex deprecated API

12596

Summary of changes

Removed Mutex deprecated API.

Impact of changes

Breaking change: Mutex lock(uint32_t millisec) method have been deprecated since Mbed OS 5.10 and its removed now.

Migration actions required

Use Mutex lock, trylock, trylock_for methods.

crypto: Update to Mbed Crypto 3.0.1

12560

Summary of changes

Update the version of Mbed Crypto provided by Mbed OS to version 3.0.1.

Remove FileSystemLike deprecated APIs

12554

Summary of changes

Removed FileSystemLike deprecated APIs.

Impact of changes

Breaking change: FileSystemLike opendir and open methods have been deprecated since Mbed OS 5.5 and they are removed now.

Migration actions required

Use open(FileHandle **file, const char *filename, int flags) and open(DirHandle **dir, const char *path) methods.

Remove DirHandle deprecated APIs

12553

Summary of changes

Removed DirHandle deprecated APIs.

Impact of changes

Breaking change: DirHandle closedir, readdir, rewinddir, telldir and seekdir methods have been deprecated since Mbed OS 5.4 and they are removed now.

Migration actions required

Use DirHandle close, read, rewind, tell and seek methods.

Remove mbed power management deprecated API

12551

Summary of changes

Removed mbed power management deprecated API.

Impact of changes

Breaking change: deepsleep API has been deprecated since Mbed OS 5.6 and it is removed now.

Migration actions required

Use sleep()

Remove mbed interface deprecated API

12550

Summary of changes

Removed mbed interface deprecated API.

Impact of changes

Breaking change: mbed_error_vfprintf API has been deprecated since Mbed OS 5.11 and it is removed now.

Migration actions required

Use mbed_error_vprintf().

Remove FileHandle deprecated APIs

12549

Summary of changes

Removed FileHandle deprecated APIs.

Impact of changes

Breaking change: FileHandle lseek, fsync, and flen methods have been deprecated since Mbed OS 5.4 and they are removed now.

Migration actions required

Use FileHandle seek(), sync(), and size() methods.

Remove the deprecated CallChain class and its APIs

12534

Summary of changes

CallChain is never intended for public use and its no longer used in Mbed OS, therefore, it is removed.

Impact of changes

Breaking change: CallChain class and its methods have been deprecated since Mbed OS 5.6 and they are removed now.

Migration actions required

None

Remove CriticalSectionLock deprecated APIs

12533

Summary of changes

Removed the CriticalSectionLock deprecated APIs.

Impact of changes

Breaking change: CriticalSectionLock lock and unlock methods have been deprecated since Mbed OS 5.8 and they are removed now.

Migration actions required

Use the static methods CriticalSectionLock::enable() and CriticalSectionLock::disable().

Remove the deprecated ATCmdParser APIs.

12527

Summary of changes

Removed ATCmdParser deprecated APIs.

Impact of changes

Breaking change: ATCmdParser setTimeout, setDelimiter, and dubugOn methods have been deprecated since Mbed OS 5.5.0 and they are removed now.

Migration actions required

Use set_timeout(), set_delimiter(), and debug_on()

Remove the deprecated Ticker APIs

12525

Summary of changes

  • Removed the Ticker deprecated APIs
  • Updated the async greentea test to use attach with callback API

Impact of changes

Breaking change: Ticker attach and attach_us methods with cv-qualifiers have been deprecated since Mbed OS 5.1 and they are removed now.

Migration actions required

Use attach(callback(obj, method), t) and attach_us(callback(obj, method), t)

Remove InterruptIn deprecated APIs

12518

Summary of changes

Removed InterruptIn deprecated APIs.

Impact of changes

Breaking change: InterruptIn rise and fall methods with cv-qualifiers have been deprecated since Mbed OS 5.1 and they are removed now.

Migration actions required

Use rise(callback(obj, method)) and fall(callback(obj, method))

Remove the deprecated the InterruptManager APIs

12501

Summary of changes

Removed InterruptManager class as it was deprecated since Mbed 5.6.

Impact of changes

All users of InterruptManager class will need to modify their application.

Migration actions required

The interrupt handlers need to be attached directly using specific drivers, for example, Application handler can use one of the Ticker/Timer/Timeout classes for clock-related interrupts.

Remove the deprecated ethernet APIs

12500

Summary of changes

The Ethernet is no longer supported, so removed header and cpp files and its dependency.

Impact of changes

Breaking change: The Ethernet object is removed as it has been deprecated in the previous feature releases.

Migration actions required

Use NetworkInterface instead, for more details have a look at our documentation here

C++11-ify virtualisation in lwIP classes

12489

Summary of changes

Use override and final where appropriate, and eliminate unnecessary
virtual.

Fix up get_ip_address following string-based API removal (#11942).

Some other C++11 simplifications.

Marking as breaking change as it fixes up a previous breaking change.

Impact of changes

No new impact.

Migration actions required

No new migrations

C++11-ify virtualisation in netsocket

12487

Summary of changes

Use override and final where appropriate, and eliminate unnecessary
virtual.

Fixes some mismatches in string-based API removal (#11942)

Some other C++11 simplifications.

Reduces code size.

Marking as breaking change because it fixes up some work in a previous breaking change.

Impact of changes

No new implications.

Migration actions required

No new actions.

HAL: Add a get_capabilities() function to GPIO API

12477

Summary of changes

Add the gpio_get_capabilities() function to the GPIO HAL API to skip the unsupported input pull modes when testing with the FPGA-CI-test-shield.

Updated tests:

  • tests-mbed_hal_fpga_ci_test_shield-gpio.

Impact of changes

Extend the GPIO HAL API with the gpio_get_capabilities() function. Unsupported input pull modes are skipped during the greentea tests.

Migration actions required

A default, weak implementation is provided. Every target has to override this weak implementation to provide the correct gpio_capabilities_t.

Proposal to remove SPIFReducedBlockDevice

12475

Summary of changes

The blockdevice is not needed by the bootloader. Removes SPIFReducedBlockDevice fully.

Impact of changes

Applications relying to SPIFReducedBlockDevice are forced to switch to SPIFBlockDevice. This comes at a cost of ROM and RAM usage.

Migration actions required

Applications need to switch on SPIFBlockDevice

Add Eight-Bit-Addressing mode to I2CEEBlockDevice.

12446

Summary of changes

When dealing with EEPROMs without a 16 bit adressing, the current
implementation does not work, as it writes a 16 bit address to the chip.
This may cause undefined behaviour.
This change adds a new constructor argument to enable this new eight-bit
mode. It defaults to false to not break existing code.
This constructor argument should actually never be necessary to manually
set, except when dealing with cheap devices.

An example for such a device is the Hua Hong NEC K24C02. Datasheet.

Impact of changes

Added a new optional argument at the end of all existing constructors.

Migration actions required

None, as the new constructor argument is optional and at the end.
The default value does not change functionality in existing code.

Remove the deprecated CAN APIs.

12420

Summary of changes

Removed CAN deprecated APIs.

Impact of changes

With these changes, CAN attach APIs with cv-qualifiers sources are removed and this is the breaking changes for the user

Migration actions required

Use attach(callback(obj, method), type)

Enable minimal-printf by default for all builds

12233

Summary of changes

This PR enables minimal-printf library for all builds. That means that all calls to printf family (including snprintf) will be handled by the minimal-printf library. Main reason for the change are substantial ROM savings that can reach up to 20k. The below table shows result for simple RTOS blinky example in two variants (explicitly calling printf and without) for two boards and three profiles:

Impact of changes

Minimal-printf library supports most of the basic usecases:

* %d: signed integer [h, hh, (none), l, ll, z, j, t].
* %i: signed integer [h, hh, (none), l, ll, z, j, t].
* %u: unsigned integer [h, hh, (none), l, ll, z, j, t].
* %x: unsigned integer [h, hh, (none), l, ll, z, j, t], printed as hexadecimal number (e.g., ff).
* %X: unsigned integer [h, hh, (none), l, ll, z, j, t], printed as hexadecimal number (e.g., FF).
* %f: floating point (enabled by default).
* %F: floating point (enabled by default, treated as %f).
* %g: floating point (enabled by default, treated as %f).
* %G: floating point (enabled by default, treated as %f).
* %c: character.
* %s: string.
* %p: pointer (e.g. 0x00123456).

If your application requires more advanced functionality you'll have to revert to using standard library version.

Migration actions required

If your application requires advance features of printf family calls, you'll either simplify it or switch to the standard C library version. To do so modify your application configuration in mbed_app.json file to override the parameter target.printf_lib with the value std as shown below:

"target_overrides": {
"*": {
"target.printf_lib": "std"
}
}

IPCore String-based API removal

11942

Summary of changes

Impact of changes

Applications using the old APIs will not compile.

Migration actions required

Users are expected to use their SocketAddress-based counterparts and explicitly call gethostbyname() if DNS address resolution is needed.

GCC: Add a build profile extension with the link-time optimizer enabled

11856

Summary of changes

Add a build profile extension with the link-time optimizer enabled for GCC_ARM toolchain.

Impact of changes

Migration actions required

  • The minimal required version of the GCC_ARM is now the GNU Arm Embedded Toolchain Version 9-2019-q4-major. Earlier GCC_ARMversions can cause various issues when the -flto flag is used, e.g. a platform specific error during the final link stage on Windows hosts with GCC8.

  • The noinline attribute has to be used for every function that must be placed into a specific section (specified with a section(".section_name") attribute). In general, when a function is considered for inlining, the section attribute is always ignored. However, with the link-time optimizer enabled, the chances for inlining are much higher because the inliner works across multiple translation units. As a result, the output sections' sizes change compared to a non-lto build. This may lead to a section ".section_name" will not fit in region "region_name" type errors.

  • The common flags defined for the GCC_ARM toolchain are now appended to the ld flags during a mbed-cli build. Previously, the common flags were appended only to asm, c and cxx flags. Having the same flags for the compiler and the linker is required when using the link-time optimizer (which is the case for the lto build profile extension). Any options unrecognized by the linker should be moved from common to asm, c or cxx.

Known Issues

There are no new known issues with this release.

Contents

Ports for Upcoming Targets

12597
Cellular: Add ALT1250 PPP cellular target

12458
Add Musca B1 target

Fixes and Changes

12611
STM32F4 UART issue when parity enabled

12601
Remove RtosTimer deprecated class

12599
Greentea kvstorage tests Cypress targets fix.

12598
Change Mutex lock and unlock APIs return value to void

12597
Cellular: Add ALT1250 PPP cellular target

12596
Remove Mutex deprecated API

12595
Fixed typo 'timout'

12590
Importer script: remove apache-2.0.txt

12583
STM32F7: baremetal profile support

12580
Reverting #12312 as it breaking current WiFI connect()->Disconnect() sequence

12571
C++11-ify NonCopyable

12567
STM32 EMAC : increase thread size when mbed-trace is enabled

12560
crypto: Update to Mbed Crypto 3.0.1

12559
DISCO_L4R9I correct LED pins

12557
M487: Fix crash on WDT reset from power-down

12554
Remove FileSystemLike deprecated APIs

12553
Remove DirHandle deprecated APIs

12551
Remove mbed power management deprecated API

12550
Remove mbed interface deprecated API

12549
Remove FileHandle deprecated APIs

12548
tests-integration-net-single: fix build error

12545
threads: fix timeout (set to 25)

12543
TLSSocket: Remove deprecated connect

12540
fix for suppress 'unknown object name' messages from memap.py

12537
Minor optimization to improve readability of code

12536
Fixed typo 'thead' in thread_neighbor_class.h

12534
Remove the deprecated CallChain class and its APIs

12533
Remove CriticalSectionLock deprecated APIs

12531
Add check so that FlashIAP does not allocate memory on flash_init failure

12530
Remove reset reason from Future Sequana targets.

12529
travis: scancode ret value not cat fix

12527
Remove the deprecated ATCmdParser APIs.

12526
GCC: Fix the toolchain LTO workaround for Python 3

12525
Remove the deprecated Ticker APIs

12524
Bugfix: Concurrent SFDP header address init fixed

12521
Remove explicit include of mbedtls/config.h

12520
Fix initialization order for I2CEEBlockDevice

12519
tests-mbed_hal-sleep_manager: fix counter wraparound handling

12518
Remove InterruptIn deprecated APIs

12514
mergify: add "mergify skip" label

12511
allow reconfiguring a running watchdog

12509
EFM32: RTCC bugfix for #12374

12508
Fix minimal-printf stack overflow

12507
Cellular: release _semaphore only once

12506
Fix 2 string based IP address removal regressions

12505
travis: ignore grep return value for scancode

12502
Fixed macro error

12501
Remove the deprecated the InterruptManager APIs

12500
Remove the deprecated ethernet APIs

12499
Cellular: For ublox modem, read '@' char first then send data.

12498
TEST: update usb tests and guard them with macro

12496
EFM32: fix mbed_hal-pinmap test

12495
C++11-ify virtualisation in FileHandle + Serials

12492
Update psoc6cm0p asset to version 1.1.1.

12491
Fixed error of function 'mac_fcf_lenght'

12490
Fixed error of structure mlme_key_descriptor_t

12489
C++11-ify virtualisation in lwIP classes

12488
C++11-ify virtualisation in Nanostack classes

12487
C++11-ify virtualisation in netsocket

12484
TDBStore magic number if endian sensitive fix comment

12481
Nanostack release for Mbed OS 6

12480
Fix SPDX identifiers and licenses (excluding features and targets)

12478
M2351: Fix some minor issues

12477
HAL: Add a get_capabilities() function to GPIO API

12476
Fix build failure when target's cmsis doesn't exist

12475
Proposal to remove SPIFReducedBlockDevice

12473
Fix Freescale MCUXpresso AnalogOut

12467
Inline nsapi_create_stack(NetworkStack)

12466
MBED_STACK_STATS_ENABLED : Add stack_name information in greentea metrics

12464
STM32 EMAC : add configuration choice and connection check

12462
Fix static ram memory statistics for arm compiler

12460
Allow MISO/MOSI set to NC during SPI initialisation (fix for issue #12435)

12458
Add Musca B1 target

12454
Nuvoton: Optimize spi_master_write(...) in case of no SPI MISO pin

12453
STM32 TRACE_GROUP update

12451
STM32 : enable MBED trace for QSPI

12450
SFDP: consolidation of SFDP parsing [3/5]

12449
Add missing pins def for ARDUINO_NANO33BLE

12447
fix targets device_name with nrf51822 32K SoC

12446
Add Eight-Bit-Addressing mode to I2CEEBlockDevice.

12445
Fixed typo: 'lenght' in ip6string.h

12444
Fixed typo: 'lenght' in ns_crc.h

12443
Fixed typo: 'lenght' in coap_service_api.h

12442
Fixed typo: 'lenght' in minimal-printf

12441
CAN: fix length calculation (fixes #12311)

12440
Implement reset_reason api for cypress targets

12438
Fix CY8CPROTO_062_4343W baremetal build

12437
travis: add PR license check for missing/not-valid license files

12436
Remove GPIO pin-maps used for FPGA testing

12431
Nordic NRF52 GPIO API: Fix non-deterministic failure to configure interrupt handling

12427
Minor optimisation to mcr20a-rf-driver code

12426
SFDP: consolidation of SFDP parsing [2/5]

12421
Cypress Targets Reorganization

12420
Remove the deprecated CAN APIs.

12415
STM32H7 : add readme file for dual core use

12384
STM32WB : update BLE part with better support

12358
FIX: add cbor module in the requirement.txt

12319
Fix userallocatedevent imp

12318
SFDP: Move Sector Map Parameter Table parsing under SFDP module

12233
Enable minimal-printf by default for all builds

12206
Kvstore tests

11942
IPCore String-based API removal

11856
GCC: Add a build profile extension with the link-time optimizer enabled

Using this release

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

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

mbed-os - mbed-os-6.0.0-alpha-2

Published by adbridge over 4 years ago

We are pleased to announce the Mbed OS 6.0.0-alpha-2 release is now available.

Summary

This is the second preview of approaching Mbed OS 6.0 release. We continue our efforts to remove previously deprecated APIs and features. This release intentionally breaks compatibility both with Mbed OS 5 series and previous Mbed OS 6 preview. For details of breaking changes please have a look at the release notes below.

Migration Guide

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

Add an exception for ARMC5 toolchain build

12400

Summary of changes

The Arm Compiler 5 is no longer supported so removed the deprecate warning and added the exception in the build tool to stop building with ARM compiler 5.

Impact of changes

With these changes, Arm compiler 5 build fails

Migration actions required

Upgrade the enviroment to use Arm Compiler 6 refer

Remove CPU usage example from CI build

12335

Summary of changes

  • Removed the CPU usage example from the Mbed OS build tool CI configuration as it's deprecated.

Impact of changes

With these changes, Mbed OS CI will no longer build CPU usage example on every PR check.

Ble driver set random static address

12321

Summary of changes

This PR adds the function set_random_address to the HCIDriver class. It allows drivers writer to set the Random Static Address of the controller without using the deprecated API Gap:: setAddress .

This PR supersede #12235 .

MXRT1050 Flash support

12317

Summary of changes

Add Flash support for MXRT1050

Cellular: Remove support for multiple ATHandlers

12305

Summary of changes

This commit removes multi ATHandler support from cellular. This has not been used and causes unnecessary complexity and memory consumption.

Memory statistics of mbed-os-example-cellular with NRF52840_DK + BG96:
GCC:
Total Static RAM memory (data + bss): 29360(+296) bytes
Total Flash memory (text + data): 130660(-832) bytes

ARM:
Total Static RAM memory (data + bss): 261554(+8) bytes
Total Flash memory (text + data): 127573(-1193) bytes

IAR:
Total Static RAM memory (data + bss): 25479(+296) bytes
Total Flash memory (text + data): 102418(-527) bytes

RAM increase is because now ATHandler is no longer created with new -operator but is now member of AT_CellularDevice, so image tool is able to count it. Actual total RAM consumption has decreased due to removed variables.

Impact of changes

Major changes:

  • Dependency to FileHandle removed from base classes
  • AT_CellularDevice owns the default FileHandle and shares it with AT -classes
  • Controlling hang-up -detection moved as CellularContext::configure_hup(). Cannot be configured via CellularDevice any more.

Migration actions required

  • Enabling hang-up detection is now configured using CellularContext::configure_hup(). CellularDevice::enable_hup() and context creation with BufferedSerial handle removed. Cellular will now automatically enable and disable HUP when switching between AT and PPP mode.
  • CellularDevice::create_context() no longer takes FileHandle as parameter
  • CellularDevice::get_file_handle() removed. ATHandler::get_file_handle() can be used instead.

MIMXRT1050: Add Watchdog support

12299

Summary of changes

Add WatchDog support for MXRT1050 EVK

Cellular: Remove API's empty default implemetations

12293

Summary of changes

Cleanup the Cellular API by removing empty default implementations and making them pure virtual.

Targeted for release-version 6.0.0.

Impact of changes

  • Classes inheriting CellularDevice will have to have implementation for the new pure virtual methods:
  • clear()
  • get_context_list()
  • Classes inheriting CellularContext do not have to have implementation for:
  • get_netmask()
  • get_gateway()
nsapi_error_t NetworkInterface::get_netmask(SocketAddress *)
{
return NSAPI_ERROR_UNSUPPORTED;
}

nsapi_error_t NetworkInterface::get_gateway(SocketAddress *)
{
return NSAPI_ERROR_UNSUPPORTED;
}

Migration actions required

See Impact of changes section.

Rename "default_lib" to "c_lib".

12278

Summary of changes

  • Rename target.default_lib to target.c_lib as it is more meaningful. These changes are done only for MBED OS 5 targets and in the build tool.

Impact of changes

With these changes, target.default_lib attribute is no longer being supported.

Migration actions required

  • The target.c_lib is the new attribute used for C library selection. The choice remains unchanged("std" or "small")

unittests: disable coverage report filtering

12273

Summary of changes

Disable coverage report filtering because of poor results.

e.g. mbed test --unittests -r Socket --coverage htmlg
This command will run all unittests with names containing Socket and then create coverage report with the same scheme, filtering all source files with names containing Socket.

The problem is that coverage report will be correct only when filtered test name will be the same as corresponding source file name (to be covered) - the same (-r) pattern is used to filter both test names and source file names used in coverage report

Due to described problems it was decided to disable coverage report filtering.
-r will only filter test names and pattern won't be passed to coverage report generator.

Add KSZ8041 as a supported PHY for the LPC17xx series

12260

Summary of changes

Adds the Microchip KSZ8041 PHY as a supported device for the LPC17xx series.

storage_abstraction: deprecated since Mbed OS 5.5 and now removed

12253

Summary of changes

Removes deprecated API's under hal/storage_abstraction and the folder itself. Only target which had implemented the functionality was K64F and the implementation gets removed with this PR.

Impact of changes

Removes deprecated storage_abstraction API.

Migration actions required

Migration not possible. Developers who were relying on this API should study Mbed OS Storage documentation.

Cellular: Remove friend definitions from cellular state machine

12251

Summary of changes

Instead of defining which classes can access state machine, CellularStateMachine
class is now "a normal" CPP class with public API.

Impact of changes

This is potentially a breaking change but as CellularStateMachine is only used internally there shouldn't be any impact.

Cellular: Remove deprecated CellularDevice::stop()

12249

Summary of changes

Cellular: Remove deprecated CellularDevice::stop()

Impact of changes

Removed method CellularDevice::stop()

Migration actions required

CellularDevice::shutdown() should be used instead.

Cypress: add SoftAP host tests

12240

Summary of changes

Cypress: Initial commit of SoftAP host tests.
Basic SoftAP test with host as STA.

ESP8266: Add built-in hostname resolution handling (disabled by default)

12234

Summary of changes

Fixes https://github.com/ARMmbed/mbed-os/issues/11982 (some routers fail to work with the UDPSocket-approach, but are proved to work when ESP uses its embedded hostname resolution AT command).

The feature is disabled by default and can be enabled in mbed_app.json with "esp8266.built-in-dns": true. When enabled then the synchronous hostname resolution will use the ESP's CIPDOMAIN AT command, but asynchronous resolution will keep on using the UDPSockets as before (no point rewriting the nsapi_dns). Also caching does not work.

I tested with the netsocket-dns testsuite. Obviously caching tests often fail, but if lucky I can get 15/16 passes.

@zhiyong80, please verify if this works with your router.

Impact of changes

None, until user enables the esp8266.built-in-dns option.

Add BufferedSerial class to replace UARTSerial

12207

Summary of changes

Implement the BufferedSerial class to replace UARTSerial. BufferedSerial is UARTSerial renamed to convey the original purpose of the class. Also remove usage of UARTSerial in Mbed OS Core diretories

Update Mbed TLS and Mbed Crypto to latest as of 2019-12-20

12150

Summary of changes

Upgrade to Mbed TLS 2.20.0d1 and Mbed Crypto 3.0.0d0.

Thread: remove methods deprecated in 5.10

12142

Summary of changes

Remove various Thread methods that were deprecated in Mbed OS 5.10

Impact of changes

Code using the old methods will no longer compile

Migration actions required

Uses of the following removed Thread methods need to be replaced:

  • Thread::signal_set -> Thread::flags_set
  • Thread::signal_clr -> ThisThread::flags_clear
  • Thread::signal_wait -> ThisThread::flags_wait_xxx
  • Thread::wait -> ThisThread::sleep_for
  • Thread::wait_until -> ThisThread::sleep_until
  • Thread::yield -> ThisThread::yield
  • Thread::gettid -> Thread::get_id or ThisThread::get_id
  • Thread::attach_idle_hook -> Kernel::attach_idle_hook
  • Thread::attach_terminate_hook -> Kernel::attach_thread_terminate_hook

HAL: Add a get_capabilities() function to ResetReason API

12139

Summary of changes

Add the hal_reset_reason_get_capabilities() function to the ResetReason HAL API to skip the unsupported reason values during HAL & driver tests.

Fixes #11792.

Updated tests:

  • tests-mbed_hal-reset_reason,
  • tests-mbed_drivers-reset_reason.

Impact of changes

Extend the ResetReason HAL API with the hal_reset_reason_get_capabilities() function. Unsupported reason values are skipped during the greentea tests.

Migration actions required

A default, weak implementation is provided. Every target has to override this weak implementation to provide the correct reset_reason_capabilities_t.

GCC: remove -fno-delete-null-pointer-checks

12023

Summary of changes

For GCC we're being cautious by passing the -fno-delete-null-pointer-checks. This option prevents some optimisation opportunities, so removing it can reduce code size.

One particular optimisation loss occurs in Callback where a test similar to this occurs:

extern void myfunc();

inline void foo(void (*fnptr)())
{
if (fnptr) {
do A;
} else {
do B;
}
};

foo(myfunc);

With -fno-delete-null-pointer-checks, the compiler does not assume that &myfunc is non-null, and inserts the "null check" - seeing if the address is 0. But performing that test of the address is incorrect anyway - if myfunc actually could be at address 0, we'd still want to doA.

Anyway, we do not have an equivalent option enabled for either Clang or IAR, and we have performed clean-ups avoiding issues with apparently-null vector tables in Clang already, for example #10534.

Therefore it should(TM) be safe to remove the option for GCC. We do not have general data or code at address 0, only vectors are likely to be there, so it does not make sense to be globally restricting code generation for that.

Impact of changes

Will reduce image size. Particularly when Callback is in use. Increased optimisation may require code adjustments, exposing undefined behaviour

Migration actions required

If code fails, address undefined behaviour. Eg this null check may now be removed:

int foo(int *ptr)
{
int a = ptr[0];
if (!ptr) { // may be optimised out - compiler can assume non-null because already accessed
return -1;
}
return bar(a);
}

Correct to:

int foo(int *ptr)
{
if (!ptr) {
return -1;
}
int a = ptr[0];
return bar(a);
}

ARMC6: Add a build profile extension with the link-time optimizer enabled

11874

Summary of changes

Add a build profile extension with the link-time optimizer enabled for ARMC6 toolchain.

Known Issues

There are no new known issues with this release.

Contents

Ports for Upcoming Targets

12338
STM32L5 : add DISCO-L562QE board support

12286
Add new target: NUCLEO_L452RE-P

Fixes and Changes

12424
Nuvoton: Fix GPIO IRQ and RTC

12422
Cypress Asset Update

12419
Fix #12290: crash_log_parser on py3

12411
add FLASHIAP in targets.json for KVStore used in PDMC

12409
FIX: LPUART clock source selection should be left to serial driver

12408
LPC408X: Delete the ethernet_api.c files

12407
Disable restricted uart peripheral for NRF52840

12405
EthernetInterface fix detecting change of connection status on ARCH_MAX

12404
M2351: Update BSP and bugfix

12403
FPGA: Enlarge timeout with mbed_hal_fpga_ci_test_shield-i2c

12401
Remove float symbols from apps that use the NFCController class

12400
Add an exception for ARMC5 toolchain build

12399
Cellular: Delete created context if activation fails

12398
Add BlockDevice unittests and fix issues they revealed

12397
Testing: Fix buffer overflow in ATHandler_read_bytes UT test

12396
PDP Type needs to be IPV4V6

12395
I2CEEBlockdevice: fix i2c read return value

12394
Fix SDIO communication issue on Cypress 1M boards and other minor fixes

12393
Fix Musca-A1 gcc linker

12392
Fix psa_key_management_operations

12391
mergify: CI only if PR is without conflicts

12389
Update InterruptIn.h

12386
TEST: fix a bug in ATCmdParser test

12383
Fix thread_sleep_for with zero wake_delay

12382
Fix BufferedSerial visibility of private base class enum enumerators

12380
DISCO_L475VG_IOT01A: Add a list of restricted GPIO pins for testing

12379
Add STDIO UART as restricted for FPGA testing for all targets and support for restricting GPIO

12378
TEST: Refactor mbedmicro tests to use utest framework

12369
LPC1768: Fix ARM toolchain baremetal by defining 2 memory region

12368
Fix NRF52840_DK UART driver and adapt FPGA test

12366
M2351: Support GCC

12364
MIMXRT1050: Update for deep sleep latency

12363
Mergify: fix release version label

12362
TARGET_STM: L0 CUBE SPI async mode send next byte after previous one is read

12357
TARGET_STM32F1: don't set ADC common register when ADC doesn't support it

12356
Fix NRF51, NRF52 gpio_irq_init() function

12353
M2351: Support IAR

12350
implements i2c_free for STM

12349
Nanostack: Update Wi-SUN configuration

12345
USBMSD; NFCEEPROM; mbed_compat: Fix compiler warnings

12344
Unittests for DNS improvements

12342
LPC55S69: Fix UART & GPIO HAL to pass FPGA CI test shield tests

12341
STM32L4: Fix the UART RX & TX data reg bitmasks

12339
Cellular : add modem version in mbed trace

12338
STM32L5 : add DISCO-L562QE board support

12336
Disable write buffering on debug builds.

12335
Remove CPU usage example from CI build

12334
Update cellular drivers/tests for UBLOX_C030_R412M

12333
UDP echotests fix in case of no memory or device busy.

12332
FIX: Disable Analogin D13(PA_5) on some NUCLEO targets

12331
STM32: enable QSPI test with MX25LM51245G octo SPI

12330
Fix FAT filesystem ferror greentea test(SD Component)

12329
AT_CellularStack: crash during TCP test

12327
Doxygen: don't extract static members

12326
Correct SysTimer absolute time calculations

12324
Fix inconsistency between mbed crc and psoc6 crc implementations.

12322
minimal-printf: README correction

12321
Ble driver set random static address

12320
ONME-3433 ESP8266 driver support for UDP get - modified ESP8266 drive

12317
MXRT1050 Flash support

12316
Fix general filesystem greentea test

12315
Add check for APPLE & MACH to fix unit tests on macOS

12312
Fix to sending IPV6 UPD packet fails IPv6 enabled in SoftAP intf

12310
Greentea DNS tests workaround.

12308
Tests: add missing mbed_trace.h multihoming header

12307
Fix the missing retrieve error context function call.

12305
Cellular: Remove support for multiple ATHandlers

12304
QSPIF: Enable QPI mode as a second option, if available

12303
Fix ARM compiler warning for microlib

12302
Remove _LIBCPP_EXTERN_TEMPLATE ARMCC compilation flag

12299
MIMXRT1050: Add Watchdog support

12297
Corrected minimal-printf README

12296
FPGA_CI_TEST_SHIELD : force all peripheral to be tested

12295
STM32H7 correct PWMOUT instances

12293
Cellular: Remove API's empty default implemetations

12292
Multiple labels need to be in an array of strings

12291
Minor optimisation to ATCmdParser unit test code

12287
Fix unittests on windows(mingw)

12286
Add new target: NUCLEO_L452RE-P

12282
Fix for issue #12268 (SerialBase.cpp: fix initialization list)

12281
Cellular: Refactor socket_stack_init() from generic to modem specific

12280
EFM32: add UART and LEUART for EFM32GG11

12278
Rename "default_lib" to "c_lib".

12275
Fix call to sorted by providing key to sort on.

12274
mergify: enable for any pull request

12273
unittests: disable coverage report filtering

12270
BUGFIX: SFDP Sector Map Table Parameter ID LSB is 0x81

12269
mergify: add fixes to the conditions

12267
Fix UDP socket test cases

12265
Refactor unnecessary functions from cellular driver

12263
unittest: fix coverage filtering

12262
Test: Increase the UART flush delay

12261
Cellular: Fix compilation fail with APN lookup enabled

12260
Add KSZ8041 as a supported PHY for the LPC17xx series

12258
Disable the cell AUX UART by default on EP_AGORA

12257
psa: Ensure spaces before partition name comment

12254
unittest: fix ATCmdParser test segfault

12253
storage_abstraction: deprecated since Mbed OS 5.5 and now removed

12251
Cellular: Remove friend definitions from cellular state machine

12249
Cellular: Remove deprecated CellularDevice::stop()

12245
NUCLEO_WB55RG - add device name "STM32WB55RGVx"

12243
Add timer shutdown after time stop on deinit

12241
M2351: Remove LPTICKER to spare memory for non-PSA minimal secure build

12240
Cypress: add SoftAP host tests

12239
Fix DNS multiple query hints to perform both IP4 and IP6 tests

12237
STM serial free: Set pin function only if pin is defined (not NC)

12234
ESP8266: Add built-in hostname resolution handling (disabled by default)

12231
Import latest python scripts and MCUBoot image

12230
TEST: use K64F replace DISCO_L475VG_IOT01A to run some example test

12228
Need RAM and ROM size for compilation

12227
Cellular: AT + QICSGP set up APN fix

12226
target_test - assert if sectors keyword missing

12225
Fix baremetal heap and stack initialisation

12223
RZ_A1H and GR_LYCHEE: Enable bootloader support

12220
NRF5x targets: Replace UARTSerial references with BufferedSerial

12213
ESP8266: Replace UARTSerial references with BufferedSerial

12211
Cellular: Replace UARTSerial references with BufferedSerial

12210
Fix for issue #10725: disable lp-ticker for STM targets which uses RTC/LSI for lp-ticker

12209
NXP target: Replace UARTSerial references with BufferedSerial

12208
ST targets: Replace UARTSerial references with BufferedSerial

12207
Add BufferedSerial class to replace UARTSerial

12201
TARGET_STM: FW driver files refactor proposition

12199
Format targets.json

12198
uARM: Fix deprecate warning printing wrongly for GCC_ARM/IAR toolchain build

12166
NRF52840_DK: Fix baremetal linker error

12160
nRF52: Properly configure nRF SDK for nRF52-series targets

12157
ESP8266: Avoid duplicate data sends

12154
NRF51822: Fix baremetal linker error

12153
Hackathon: Increase coverage of the SPI master FPGA test

12152
Updated 113 targets with missing detect_codes

12150
Update Mbed TLS and Mbed Crypto to latest as of 2019-12-20

12142
Thread: remove methods deprecated in 5.10

12139
HAL: Add a get_capabilities() function to ResetReason API

12060
Improve reliability of KVStore general tests

12035
Preparation for Callback changes

12023
GCC: remove -fno-delete-null-pointer-checks

11904
TOOLS: enable build greentea test coverage for HW

11874
ARMC6: Add a build profile extension with the link-time optimizer enabled

11433
FPGA CI shield: Add a watchdog timing test

Using this release

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

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

mbed-os - mbed-os-5.15.1

Published by adbridge over 4 years ago

As we prepare for the release of the next major version of Mbed OS, we still need to ensure that the needs of partners and customers are met, so today we are releasing a patch release for Mbed OS 5.15 (Mbed OS 5.15.1) This release includes a mix of defect fixes required to support existing customers and the enablement of a small number of new targets to support marketing activities ahead of Embedded World later this month.

Our focus on the next major Mbed OS release continues and we’ll do our second alpha release next week.

Summary

In this release we have added the following targets:

  • Samsung Exynos i S111
  • NUCLEO_G071RB
  • HANI_IOT
  • NUCLEO-L552ZE-Q

We have fixed the following reported issues:

12361
OKDO odin driver - ARM in nightly error hciCmdAlloc not defined

12087
Bad AT+COPS command with plmn

12005
Build error with NUCLEO_H743ZI2 (Armc5, Mbed os 5.14)

There are also a number of other fixes and code improvements.

Known Issues

There are no new known issues with this release.

Contents

Ports for Upcoming Targets

12355
HANI_IOT: add new target board support

12106
Add Samsung Exynos i S111 target

12093
TARGET_STM: add support of board NUCLEO_G071RB

12306
STM32L5: NUCLEO-L552ZE-Q new target

Fixes and Changes

12377
Update psoc6cm0p asset to 1.1.0

12370
OKDO_ODIN_W2: Reenable lp-ticker and BLE

12355
HANI_IOT: add new target board support

12306
STM32L5: NUCLEO-L552ZE-Q new target

12167
Update Cypress Targets and Assets

12164
Pr dev/remove hardcoded timeout in cypress bt code

12147
mbed-coap uint16 overflow fix

12146
mbed-coap buffer overflow fix

12140
STM32 clean mbed_rtx.h file

12134
Fix LPC11U35_401 baremetal build

12126
Robustify equeue multithread unit test

12106
Add Samsung Exynos i S111 target

12093
TARGET_STM: add support of board NUCLEO_G071RB

12088
Cellular: Fix AT command for COPS manual network selection

12022
Make ESP8266 compatible with bare metal profile

12015
STM EMAC: compilation issue with ARMC5

Using this release

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

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

mbed-os - mbed-os-6.0.0-alpha1

Published by adbridge almost 5 years ago

We are pleased to announce the Mbed OS 6.0.0-alpha-1 release is now available.

Summary

This is our first engineering preview of Mbed OS 6.0 focusing on general cleanup and bug fixes. It contains everything that we worked on since December and was deemed ready to merge to master. Please note that this release intentionally breaks compatibility with Mbed OS 5 series. To find out more details please have a look at sections below.

Migration Guide

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

Cellular: Move string_to_pdp_type method to CellularContext

12214

Summary of changes

string_to_pdp_type is only used in CellularContext classes and by having the conversion method in CellularContext it can be used also to check the non-standard Non-IP PDP type string.

Impact of changes

Migration actions required

Classes derived from CellularContext must implement new function:
virtual const char *get_nonip_context_type_str() = 0;
This API has already been implemented in AT_CellularContext though, so current code does not change.

Blockdevice config changes to make it possible to run littlefs filesystem tests

12143

Summary of changes

Moves BlockDevice configurations used by SystemStorage as BlockDevice defaults. This makes it possible to use the defaults to execute littlefs filesystem tests.

Adds SPIF/QSPIF/SPIFReduced- and SDBlockDevice specific app configs for making it possible to run the forementioned tests.

Impact of changes

none

Migration actions required

Thread: remove constructors deprecated in 5.1

12141

Summary of changes

Remove the immediate-start constructors deprecated in Mbed OS 5.1.

Impact of changes

Code using the old constructors will no longer compile

Migration actions required

Code using immediate-start Thread constructors must be changed to use the Thread::start method.

Remove unsupported folder

12128

Summary of changes

Mbed OS was carrying the unsupported directory for a long time. The main reason was
to enable users to benefit from some form of USB stack. Now when there
is a proper implementation of USB stack in Mbed I think it's time for
unsupported to go. If any other functionality present in this
directory will be needed it'll need to be introduced in Mbed OS
properly.

Impact of changes

As the name suggest 'unsupported' directory was unsupported, but it was there that means our community was free to use any of the functionality present. So in theory it is breaking change, even if the code was never properly supported.

Migration actions required

Removed functionality was never supported and its use was not recommended. If you used USB device mode, please port your code to use the supported version from drivers directory. If you need any other features please consider contributing it properly to Mbed.

Cellular: Refactor cellular variable visibilities

12123

Summary of changes

Cellular: Refactor cellular variable visibilities

  • Earlier some variables were public even though used only internally
  • Also refactored variables to the end of class definitions
  • Removed duplicate _property_array from CellularDevice
  • Changed _impl methods as protected

Impact of changes

This can potentially be a breaking change but at least currently none of the existing mbed-os cellular targets required any changes.

Migration actions required

If customer wants to use some cellular variable marked as private, they need to inform @ARMmbed/mbed-os-wan and we can review the case.

ATHandler refactoring

12122

Summary of changes

As ATHandler is part of Cellular's public API it is now moved to /API folder
Also some functions and variables are refactored to be private/protected where applicable
Also virtual cmd_start() (and destructor) method(s) devirtualised because not needed.
Unittests updated to reflect changes

Impact of changes

As ATHandler is part of Cellular's public API it is now moved to /API folder
Also some functions and variables are refactored to be private/protected where applicable
Also virtual cmd_start() (and destructor) method(s) devirtualised because not needed.

Migration actions required

Visibility of some methods have been changed in ATHandler and should not cause any issues if those were not used (as they shouldn't have been).
Also if include path has been used correctly for ATHandler.h there are no cahnges needed

ONME-4433 SocketAddress::operator== should also check port

12120

Summary of changes

Currently SocketAddress::operator== does not check port number. Adding this check can be considered as a breaking change. Now SocketAddress::operator== checks port also. All greentests and unitests was checked and fixed.

Impact of changes

N/A

Migration actions required

N/A

Expose target_offset and header_offset parameters in targets.json

12081

Summary of changes

The app_offset and header_offset parameters have always been a part of the target configuration parameters. However, they were intercepted by the tools and never exposed to the application. The new FOTA (update client next generation) functionality requires these parameters in the code as well now. So this PR adds them to targets.json file. The only result of this PR is the addition of these two macros into the code.
Note that the tools already expose the macros APPLICATION_ADDR and HEADER_ADDR having the same values. However, these macros are only available when the application is built with the bootloader. If it isn't, these macros aren't available, hence this PR.
This change is required for new fota client.

Impact of changes

None

Migration actions required

None

Enabling small C library option and deprecating uARM toolchain

12068

Summary of changes

  1. In Mbed-OS 2-region memory model, ARM Std and Microlib scatter files are common
    more info on https://github.com/ARMmbed/mbed-os/blob/master/docs/design-documents/platform/memory-model/ram_memory_model.md,
    so replaced ARM Std scatter file 1-region memory model with Microlib scatter file 2 region memory model.
  2. Moved the "__aeabi_assert" function from Microlib boot code file to mbed_retarget file so that it can be available for both RTOS Microlib and bare metal to resolve the undefined symbol linker issue.
  3. Copied ARM Microlib boot code into ARM std boot code and guarded with __MICROLIB. This is required in order to build a RTOS application with Microlib.
  4. Added a new target config "supported_c_libs" in targets.json and build tools to check if the selected "default_lib" is supported for the selected toolchain. If not the build tool will raise an exception.
  5. Added the new test suite for testing the build tool changes for default_lib and supported_c_libs.
  6. PR changes tested with blinky and blinky bare metal examples and greentea bare metal tests run locally.

Impact of changes

With these changes, uARM toolchain is being deprecated.

Migration actions required

As uARM toolchain is deprecated, the user has to redefine a supported_c_libs configuration with "small" for arm toolchain on the target in targets.json to enable Microlib support like

"supported_c_libs": {
"arm": ["std", "small"],
"gcc_arm": ["std", "small"],
"iar": ["std"]
}

and change the scatter file to the 2-region memory model see more info.
Instead of -t uARM, use default_lib with "small" in mbed_app.json configuration for ARMC6 toolchain.

cmsis: remove arm math

12055

Summary of changes

Not needed file, should be part of DSP. The functionality is part of the library provided
by CMSIS.

I would like to test this, for all devices. This header file should be removed in 6.0.0 as we do not provide DSP library. Thus I set this as Major update.

Fixes #12054

Impact of changes

Applications should use CMSIS DSP package. As the order of includes is not defined in our tools, this might cause an error - hard to tell which cmsis math header was actually included. The removed math header we used in this code base was much older version.

Migration actions required

Use CMSIS DSP release (not part of Mbed OS at the moment) - the header file cmsis math is included there.

SharedPtr: add nullptr constructor

12048

Summary of changes

For consistency with std::shared_ptr, and mbed::Callback, and as a
potential optimisation aid, give SharedPtr a distinct constructor for
nullptr.

Impact of changes

  • Optimise clearing by adding nullptr overload.

Migration actions required

  • The added nullptr overload means SharedPtr(NULL) or SharedPtr(0) will no longer work; users must use SharedPtr(nullptr) or SharedPtr().

Add MBED_FALLTHROUGH attribute

12032

Summary of changes

C++17 standardised [[fallthrough]] for switch statements to suppress compiler warnings. Provide access to it, or compiler-specific alternatives.

Impact of changes

MBED_FALLTHROUGH attribute added to mbed_toolchain.h - a portable equivalent for C++17's [[fallthrough]].

Migration actions required

None

NVStore: already deprecated implementation removed

12017

Summary of changes

NVStore: already deprecated implementation removal

Impact of changes

People are adviced to use KVStore

Migration actions required

No migration path available.

Remove deprecated FunctionPointer class

11997

Summary of changes

  • Deprecated class FunctionPointer has been removed.

Impact of changes

  • Any code using FunctionPointer will no longer compile.

Migration actions required

  • Any remaining FunctionPointer users should switch to Callback.

CellularBase/AT_CellularBase removal

11996

Summary of changes

Removed CellularBase and AT_CellularBase from cellular stack and updated both code and unittests accordingly. Cellular drivers in Mbed OS have been updated.

APN lookup and SMS features are now disabled by default

Impact of changes

Earlier cellular device properties were handled in AT_CellularBase class and after this change they are handled now correctly in AT_CellularDevice class. The properties are always modem specific and must be therefore handled in AT_CellularDevice class which is common for all contexts using it.

CellularBase has been completely removed so those using must now switch to use CellularInterface instead.
Disabling SMS will save ~4,5kB and APN lookup about ~2kB

Migration actions required

Cellular modem drivers must be updated (done for targets in Mbed OS) by removing references to CellularBase.
CellularBase must be changed to CellularInterface if still in use. (was already typedef'ed so no other changes needed)
If SMS or APN lookup are needed by application, those needs to be enabled in mbed_app.json
(cellular.use-apn-lookup: true or cellular.use-sms: true)

Small fixes for SecureStore

11988

Summary of changes

  • SecureStore: Deinitialize also member TDBStorages on deinit()
  • SecureStore: Validate internal RBP data first
  • SecureStore: Don't use flags of corrupted data. Allow removing.
  • SecureStore: Validate internal header size before using its values.

Impact of changes

N/A

Migration actions required

N/A

TDBStore refactoring

11987

Summary of changes

TDBStore does not anymore require Flash based block device.

Impact of changes

N/A

Migration actions required

N/A

Storage related test improvements and small fixes

11986

Summary of changes

SlicingBlockDevice does not anymore accept both parameters as zero, or size as zero. SlicingBlockDevice(block, 0,0) used to create a block device that took up the whole block device. There is no sense on doing so, and if used like this, it has most probably been a programming error. Therefore the constructor now does MBED_ASSERT() if both parameters, start and stop point to same value. Effectively this prevents creating a slice that has size of zero, or take the full block device.

Impact of changes

You cannot anymore create a SlicingBlockDevice that has size of zero, or take the full size of underlying block device.

Migration actions required

No migration required for code that uses SlicingBlockDevice as it is intended.

UnbufferedSerial: Introduce the class to replace RawSerial

11961

Summary of changes

Add the UnbufferedSerial class to provide unbuffered I/O access.
It is intended to be used instead of RawSerial. See documentration section for more details.

Impact of changes

Migration actions required

MbedCRC and CRC HAL revisions (6.0 redo)

11957

Summary of changes

The MbedCRC class has been improved and optimised.

Impact of changes

There is now a global JSON configuration drivers.crc-table-size controlling table usage, and individual uses can be size-optimised via template parameters. However some changes are backwards-incompatible:

Migration actions required

  • The special-case handling of POLY_32BIT_REV_ANSI has been removed - the same result can be obtained via POLY_32BIT_ANSI.
  • CRCs smaller than 8 bits now return results in the standard position at the bottom of the register - previously they were shifted with random bits at the bottom.
  • The previous precomputed table for POLY_16BIT_IBM had errors - this has been corrected, but CRC results will be different from the previous software calculation (but will match any hardware calculation)

minimal-printf: Enable using a target configuration parameter

11891

Summary of changes

Add ability to enable Minimal printf using configuration parammeter.
A new configuration parameter target.printf_lib has been added to enable it.

Impact of changes

Convenient and familiar way to configure Mbed OS.

Migration actions required

N/A

Remove deprecated Callback methods

11880

Summary of changes

Deprecated methods in Callback removed.

Impact of changes

Some code that was generating deprecation warnings will no longer compile at all.

Migration actions required

  • Replace construction using Callback(arg, func) with the reversed Callback(func, arg)
  • Replace use of attach with simple assignment, such as callback = func; or callback = { func, arg };

Add Getaddrinfo interface for multiple DNS adresses

11653

Summary of changes

Impact of changes

Migration actions required

Known Issues

There are no new known issues with this release.

Contents

Ports for Upcoming Targets

Fixes and Changes

12256
Update psa binaries for 6.0.0-alpha1

12238
Minimal-printf: Fix wrapping of printf functions for the ARM compiler

12236
Fix baremetal build failures

12218
tests tickers: adapt ticker_interrupt_test() test case for high frequency tickers

12217
Nuvoton: Add DEVICE_USBDEVICE detection in usbd implementation

12216
Fix dl_channel tests

12215
Cellular: Implementation of virtual get_ip_address funtion in ublox-api

12214
Cellular: Move string_to_pdp_type method to CellularContext

12202
Increase MSI clock frequency when exiting deep sleep

12200
Minor fixes for peripheral pins on Dragonfly Nano

12196
LWIP: don't pbuf_free(NULL) on socket close

12195
Corrected PPP debug trace flagging

12194
Nanostack Socket event handler fix

12193
Cellular: Move cellular event queue thread ownership to CellularDevice

12189
Removed hardcoded CY8CPROTO_062_4343W bt baudrate limit.

12188
Greentea test :Added the print in the exception handler

12186
STM serial init: Set pin function only if pin is defined (not NC)

12185
BLE: fix pointer not set to null on delete

12182
Update watchdog tests to run with bare metal profile

12181
Add DTLS in Connectivity's design document

12179
TESTS: Update testing of examples in mbed-os

12178
Fixes for LPC55S69_NS TLS tests

12176
Nuvoton: Support usbd

12175
Minimal-printf: Fix documentation as floating point is disabled by default

12173
Change size embedded in the temp_ram_page_data

12170
Nuvoton: Support dynamic heap configuration on IAR

12169
syntax error corrections - rm unnecessary semicolons

12167
Update Cypress Targets and Assets

12164
Pr dev/remove hardcoded timeout in cypress bt code

12162
CMSIS-pack update for STM32WB-family

12155
LPC11U24: Fix baremetal build and runtime error

12151
NRF5x: Fix baremetal linker error

12144
NRF52840: Use 2 region memory model for the ARM toolchain

12143
Blockdevice config changes to make it possible to run littlefs filesystem tests

12141
Thread: remove constructors deprecated in 5.1

12138
TESTS-MBED_HAL-COMMON_TICKERS no more executed

12133
Cellular: Suppress long AT traces

12132
LWIP: Remove unused MBOX configs

12131
Cellular: Fix Gemalto/Cinterion driver

12128
Remove unsupported folder

12123
Cellular: Refactor cellular variable visibilities

12122
ATHandler refactoring

12121
Serial: Deprecate the class and promote UnbufferedSerial instead

12120
ONME-4433 SocketAddress::operator== should also check port

12118
Fixed Serial ambiguity for enable_input and enable_output

12114
Cellular: Fix to not use all zero address for DNS

12113
Fix for issue #12104 (STM32 can_init_freq() ignores frequency)

12111
Microlib: Disable feof function usage in general filesystem test

12110
Moved CP Max recv len into mbed_lib.json

12109
Replace RawSerial as it has been deprecated

12108
Wi-sun network event handler update

12101
Bare metal: Retrieve error context after crash

12099
Implemented recommended fix from https://github.com/STMicroelectronic

12098
Wrong order of code fixed

12097
cypress target: fix iar warnings

12095
Update MXRT1050 to SDK 6.0

12092
Refactored away onboard_modem_api because it is not needed at all

12089
Update offloaded TLSSocket to TLSSocket design

12088
Cellular: Fix AT command for COPS manual network selection

12086
TARGET_STM: fix flash api 64bit address alignment on L4 and WB

12085
PSA setup template changes.

12083
Cellular: Add check for network congestion in BC95 driver

12081
Expose target_offset and header_offset parameters in targets.json

12080
Unittest cleanup made

12079
Coverity fixes

12078
Cellular: Add PPP/IP config flags in CellularInterface.json

12073
Unittests: fix for PRs 12051 and 11996

12071
Minimal Console: Use static pin map

12069
STM32: astyle update

12068
Enabling small C library option and deprecating uARM toolchain

12067
STM32 GPIO IRQ : add a critical section in gpio_irq_init

12065
Non-IP socket implementation for NIDD over CP

12064
Valgrind support added for unittests

12063
Move get_ip_address_if() to NetworkStack and include it in multihoming test

12061
NANO130: Support dynamic heap configuration on IAR

12057
NUC472/M487: Limit EMAC receive frame length as 1518

12055
cmsis: remove arm math

12052
fpga tests: clear uart fix

12051
Unittest configuration mechanism improved

12050
Fix TDBStore sizes for SecureStore tests

12048
SharedPtr: add nullptr constructor

12045
Netsocket test adjusted to Wisun

12044
increamed qspi size for cypress integration fs tests

12043
Modify itm_api.c for EFM32 targets

12041
Add QSPI and relevant test support for target EP_AGORA

12038
Cypress: Remove qspi_frequency() call.

12037
SharedPtr: add move operations

12034
SysTimer: Suppress implicit virtual warning

12032
Add MBED_FALLTHROUGH attribute

12029
STM32F0: create STM32F091xC target

12027
Modify nsapi_dns tests to be module tests

12026
Update HAL file to Toshiba's TMPM4G9

12025
Platform: Delete an unused astyle output file

12024
ONME-4366 - Fix UBLOX_EVK_ODIN_W2 fails in emac tests due to heap mem

12020
Fix issues in setting radio access technology

12019
Cypress: rework lptimer hal

12018
STM32_EMAC cleanup

12017
NVStore: already deprecated implementation removed

12013
Add UDP ECHOTEST with connect/send/recv calls

12012
USB device HID test: remove duplicated define

12011
STMOD_CELLULAR: improve debug print

12008
Cellular: Fix ATHandler string handling

11997
Remove deprecated FunctionPointer class

11996
CellularBase/AT_CellularBase removal

11995
MCU_NRF52840 target configuration fixes

11988
Small fixes for SecureStore

11987
TDBStore refactoring

11986
Storage related test improvements and small fixes

11980
DISCO_L4R9I: update clock configuration for all clock sources

11976
LWIP system mailbox overflow fix

11975
PPPinterface: remove faulty address getter check for invalid pointer

11962
Bug in mbed_alloc_wrappers.cpp

11961
UnbufferedSerial: Introduce the class to replace RawSerial

11957
MbedCRC and CRC HAL revisions (6.0 redo)

11952
Fix for Dragonfly nano and registration for LTE-M plans

11927
Speed up unittests by not limitting Make to spawn more processes

11920
Simplify pull request template headers and instructions

11897
MbedCRC: improve init value handling and tests

11891
minimal-printf: Enable using a target configuration parameter

11880
Remove deprecated Callback methods

11878
Improve API documentation and test coverage

11866
Update pycryptodome version

11817
ESP8266 "busy s..." fix (ONME-4352)

11653
Add Getaddrinfo interface for multiple DNS adresses

11594
M2351: Pre-build secure image/lib to favor pelion application

10959
M2351: Support TFM level 1

Using this release

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

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

mbed-os - mbed-os-5.15.0

Published by adbridge almost 5 years ago

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

Summary

This is the last planned minor release from the Mbed OS 5 series and, as such, doesn't contain many new features. We focused on fixing issues and working on quality and size improvements.
We put a lot of effort into networking, working on various improvements to Wi-SUN, Cellular and DNS, as well as BG96 and ESP2866 modules drivers. We also introduced support for offloading TLSSockets to an external hardware module.
We updated our tools to support Python 3, so they are ready for the imminent end of life of Python 2.7.
We introduced the static pin map extension to the HAL layer, which allows developers to save memory by selecting the used pins at compile time.
We also updated our code base and infrastructure to use the newest versions for compilers: GCC9 and Arm Compiler 6.13.

Migration guide

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

Add support for Wi-SUN RF channel configuration

11958

Summary of changes

Added support for Wi-SUN RF channel configuration options to Wi-SUN tasklet.

Impact of changes

Wi-SUN RF channel .json options have effect on channel configuration, and they need to be valid.

Migration actions required

Default configuration used with Wi-SUN should be that none of the settings affected by this pull request are set, and Wi-SUN will use the defaults for them.

If application .json configuration file has any of the these settings defined:

wisun-uc-channel-function
wisun-bc-channel-function
wisun-uc-fixed-channel
wisun-bc-fixed-channel
wisun-bc-interval
wisun-bc-dwell-interval
wisun-uc-dwell-interval

they need to be removed or checked for validity.

Remove string-based API usage within mbed-os

11941

See https://github.com/ARMmbed/mbed-os/pull/11914 for deprecation information. This PR provides SocketAddress-based APIs if they were missing after previous changes but does not remove the old APIs.

Summary of changes

New SocketAddress based API added to ESP8266 module, anticipating future string-based API removal.

Impact of changes

None.

Migration actions required

None.

Updates to tools for Python 3 compatibility

11921

Python 3 is now supported by the tools.

Summary of changes

No functional changes, code should be equivalent.

Impact of changes

Code should be Python 3 compatible.

Migration actions required

None.

Deprecate string-based APIs in IPCore

11914

This is NOT a breaking change, but it is worth notifying all API users that the string-based APIs are going to be removed soon.

Summary of changes

The following API functions are being deprecated and will be removed in Mbed OS 6:

TCPServer (whole class is deprecated already)
TCPSocket::connect(const char *host, uint16_t port);
TLSSocket::connect(const char *host, uint16_t port);
DTLSSocket::connect(const char *host, uint16_t port)
InternetDatagramSocket::sendto(const char *host, uint16_t port, data, size);
InternetSocket::bind(const char *address, uint16_t port);
L3IP:add_ipv4_multicast_group(const char *address);
L3IP:add_ipv6_multicast_group(const char *address)
L3IP:remove_ipv4_multicast_group(const char *address);
L3IP:remove_ipv6_multicast_group(const char *address)
NetworkInterface::get_ip_address()
NetworkInterface::get_netmask()
NetworkInterface::get_gateway()
NetworkInterface::set_network(const char *ip_address, const char *netmask, const char *gateway)
NetworkStack::get_ip_address()
NetworkStack::get_ip_address_if()
Impact of changes

Code gives deprecated warnings whenever old API is used.

Migration actions required

Switch to the new SocketAddress based API.

Bring static pin map extension to master

11892

Summary of changes
  1. Provide types that will hold static pin maps for peripherals (PWM, AnalogIn, AnalogOut, SPI, I2C, UART, QSPI, CAN).
  2. Provide xxx_init_direct(xxx_t *obj, static_pinmap_t *) functions to HAL API (these functions will not use pin map tables).
  3. Provide additional constructors in drivers layer, which will use the xxx_init_direct(xxx_t *obj, static_pinmap_t*) HAL functions.
  4. Provide default weak implementations of xxx_init_direct(static_pinmap_t *) functions. These functions will call standard xxx_init(xxx_t *obj, PinName, ...) function (backward compatibility for targets that don't support static pin map mechanism).
  5. Provide constexpr utility functions to look up for pin mapping in compile time (requires C++14).
  6. Initialize console using static pin map mechanism, so hal\mbed_pinmap_common library is not needed and can be removed.
  7. Modify FPGA tests to verify xxx_init_direct(xxx_t *obj, static_pinmap_t*) APIs.

Make SMS configurable in Cellular stack

11873

Summary of changes

Cellular stack now has configurable SMS support. This is added to Cellular mbed_lib.json. It is enabled by default for backward compatibility.

Impact of changes

If one does not need SMS, disable it in mbed_app.json to decrease the application footprint.

Migration actions required

None.

mbed_retarget: Add a minimal console implementation to provide basic functionalities

11796

Summary of changes

Add a minimal console implementation in mbed_retarget to provide basic console functionalities.
A new configuration parameter platform.stdio-minimal-console-only has been added to select it.

Impact of changes

Smaller memory footprint for applications that only require basic console functionalities.

Migration actions required

None.

Deprecates NVStore

11785

Summary of changes

NVStore is marked as deprecated.

Impact of changes

NVStore won't be available from the next major release onward.

Migration actions required

Users must switch to use KVStore. For documentation, please see Docs APIs Storage KVStore .

Update to Mbed TLS 2.20.0d0 and Mbed Crypto 2.1.0d0

11687

What is breaking?
The PSA Crypto secure element (SE) driver API - an additional parameter (a persistent data pointer) is now also passed to the slot validation for the driver to use.

Why is this breaking?
Mbed OS tracks the unstable PSA Crypto API. This particular break is to enable drivers to modify persistent data during slot validation.

Migration
Users implementing SE drivers should add an additional void *persistent_data parameter to the slot validation callback, regardless of whether the persistent_data will be used or not.

Old New
psa_drv_se_validate_slot_number_t did not have a modifiable persistent_data parameter psa_drv_se_validate_slot_number_t now has a modifiable persistent_data parameter

New declaration of psa_drv_se_validate_slot_number_t:

typedef psa_status_t (*psa_drv_se_validate_slot_number_t)(
psa_drv_se_context_t *drv_context,
void *persistent_data,
const psa_key_attributes_t *attributes,
psa_key_creation_method_t method,
psa_key_slot_number_t key_slot);

Old declaration of psa_drv_se_validate_slot_number_t:

typedef psa_status_t (*psa_drv_se_validate_slot_number_t)(
psa_drv_se_context_t *drv_context,
const psa_key_attributes_t *attributes,
psa_key_creation_method_t method,
psa_key_slot_number_t key_slot);

Check return of BlockDevice::init() in TDBStore.

11595

TDBSTore::init() is now allowed to return error codes from underlying BlockeDevice.
Previously, the API was limited to return only MBED_ERROR_READ_FAILED or MBED_ERROR_WRITE_FAILED, which might have hidden the actual error code from the device.
Now, the application will get the original return value passed from BlockDevice.

modified Wi-SUN tasklet to return success when calling connect twice

11556

Summary of changes

As stated in the Mesh API documentation, we should return the status NSAPI_ERROR_IS_CONNECTED if connect is called twice. This PR (11556) fixes it.

Impact of changes

If connect method is called twice, a different status code is returned.

Migration actions required

Implementations that rely on NSAPI_ERROR_DEVICE_ERROR status code when calling connect twice as their recovery method need to change the handling to the correct status NSAPI_ERROR_IS_CONNECTED.

Enable DER coded certificate support to Wi-SUN mesh API

11539

Added support for DER formatted certificates and keys to Wi-SUN certificate API.

DNS manual cleanup mechanism added

11535

Add nsapi_dns_reset() function to be able to clear a DNS cache when it is not needed anymore.

ESP8266 unlocks deep sleep when disconnected

11514

This release contains changes for ESP8266.
UART input is enabled and deep sleep is locked:

  • If module is connected to the network.
  • For operations which communicate with the device but do not require network connectivity

UART input is disabled and deep sleep is unlocked:

  • If module is disconnected

Cellular: Add API to clear CellularDevice

11414

CellularStateMachine calls CellularDevice::clear() to clean-up the modem on initial connect().
The previous functionality can be restored by defining the flag cellular.clear-on-connect: false.

ESP8266 nonblocking connect/disconnect

11409

This release contains changes for ESP8266 nonblocking operations, which make them compliant with documentation:

  • connect() and disconnect() will now return immediately in non-blocking mode and pass all blocking operations to asynchronous thread.
  • In the case of consecutive calls of connect() or disconnect(), the returned value from the second one may be NSAPI_ERROR_BUSY.
  • If ESP8266Interface::set_credentials(...) is called during connecting to the network, it is not executed and NSAPI_ERROR_BUSY is returned.

The change will not affect any users, unless they took advantage of the incorrect nonblocking behavior.

Offloaded TLSSocket and BG96 support for it

11357

Some external modems have an internal TLSSocket implementation, which can be used instead of Mbed TLS based TLSSocket. Using the offloaded TLSSocket can result in significantly reduce ROM usage.

Offloaded TLSSocket can be enabled with "nsapi.offload-tlssocket". The used network stack (for example, the cellular modem's CellularStack class) must support the setsockopt's defined in nsapi_types.h.

Compared to the original Mbed TLS based TLSSocket, offloaded TLSSocket brings in one significant API limitation. Offloaded TLSSocket requires setting of certificates and keys after open() and before connect() calls, where Mbed TLS based TLSSocket allows setting these before open() call.

This PR also includes a reference implementation for BG96 cellular modem.

Add watchdog lower limit timeout test

11203

watchdog_features_t extended by two uint32_t members: clock_typical_frequency and clock_max_frequency. These values can be used to determine the accuracy of an uncalibrated watchdog clock.

Introduce an Mbed config to enable XIP

11006

Introduce XIP-enabled config to allow text/RO data to be loaded to QSPI flash where XIP (execute-in-place) is supported. This allows programs with larger text/RO data sections to run on a system with smaller on-chip flash.

This feature is disabled by default on all targets.

XIP can be enabled by adding target.xip-enable: true in mbed_app.json, then locating the text/RO data sections to QSPI flash region in the linker script. In the boot sequence, QSPI flash needs to be configured to XIP mode.

LwIP: Add ICMPv4 Socket support

10978

The netsocket feature is extended with ICMP socket implementation. This change is only for ICMPv4 and ICMPv6 is not currently supported

Free serial resources if not needed anymore

10924

The handling of enable/disable input/output of UARTSerial is moved into SerialBase. The underlying serial peripheral is freed if both input and output are disabled to reduce current consumption. If either input or output is enabled again, the serial peripheral is reinitialized.

Tools: check for GCC 9, rather than 6

10618

GCC 9 is now the officially-supported compiler version for the GCC_ARM toolchain.

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 the 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 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 hardware 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 hardware accelerated engines.
  • Workaround: None.
  • 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 peer's 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, such as GCC_ARM.
  • Reported Issue: https://github.com/MicrochipTech/cryptoauthlib/issues/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: https://github.com/ARMmbed/mbed-os/issues/8064.
  • Priority: Major.

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 https://github.com/ARMmbed/mbed-os/pull/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: Bare metal build fails due to Cryptocell dependency

  • Description: The bare metal build on NRF52480 fails because the Cryptocell depends on Mbed TLS. Mbed TLS is not present in bare metal builds.
  • Workaround: Remove the CRYPTOCELL310 feature using your application's target config.
  • Reported Issue: https://github.com/ARMmbed/mbed-os/issues/11428.
  • Priority: Major.

ArmC5 builds may be broken

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: Use other compilers.
  • Reported Issue: IOTTHD-3898.
  • Priority: Major.

Test report

OOB (out-of-box) testing

  • Manual OOB testing has been carried out against 5.15.0 RC1/RC2/RC3.
  • OOB testing is focused on the out-of-box experience with official Mbed OS examples.

Release automated CI testing

In addition to the regular pull request tests and nightly tests, we also ran branch tests for mbed-os 5.15.0-RC1/RC2/RC3.

CI pipeline tests

  • Compilation tests: ARMC6 ALL PASSED
  • Compilation tests: GCC_ARM ALL PASSED
  • Compilation tests: IAR ALL PASSED
  • Unittest ALL PASSED
  • Greentea test SOME FAILS
  • Example test ALL PASSED
  • Exporter test ALL PASSED
  • Cloud Client integration test ALL PASSED
  • Memory usage test ALL PASSED
  • Mbed 2 build test ALL PASSED

The Greentea test failures are:

  • UBLOX_EVK_ODIN_W2 failed on network-wifi tests ---- Tracked by defect IOTPART-8659, waiting for Partner’s input for fixing.
  • 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.

Test numbers:

  • Greentea test number 1421 (-33 ).
  • Unittest number 624 (+84 ).

Targets coverage:

In Mbed OS 5.15, compilation test targets scope has not changed. It remains the same for all Mbed OS enabled targets.

As of the Mbed OS 5.15.0 release, we run Greentea tests on 11 targets:

  • NRF52840_DK.
  • DISCO_L457VG_IOT01A.
  • K64F.
  • K66F.
  • LPC55S69.
  • NUCLEO_F303RE.
  • NUCLEO_F411RE.
  • NUCLEO_F429ZI.
  • NUCLEO_F767ZI.
  • UBLOX_C030_U201.
  • UBLOX_EVK_ODIN_W2.

Compared to the Mbed OS 5.14.0 release, we have added testing for:

  • NRF52840_DK.

And removed testing for :

  • NUCLEO_F207ZG.
  • NUCLEO_F746ZG.
  • NUCLEO_F746NG.

Coverity

In this release, the number of Coverity issues has reduced from 77 to 49 ( -28).
Critical Coverity issues have reduced from 15 to 13 ( -2).

Code coverage

Test code coverage has been tracked, and the information is published on COVERALLS (https://coveralls.io/github/ARMmbed/mbed-os).

  • Since the 5.14 release, we have had a code coverage base alignment leading to the inclusion of all the components of Mbed OS and a fixed code base.
  • In the coverage base alignment, our code coverage dropped from 60% to 18%.
  • Mbed TLS Mbed Crypto coverage data has been merged, and overall coverage has increased to 30%.

Memory monitoring

Mbed OS ROM size has increased by approximately 2.8K, mostly because of updating GCC6 to GCC9. (The std library increased by approximately 1.5K).

Other contributors to the ROM size increase include:

  • nanostack-libservice +273.
  • LWIPInterface.o +256.
  • Netsocket +666.
  • Storage - TDBStore +491.

Contents

Ports for upcoming targets

11886
Add target for CY8CPROTO-062S3-4343W

11846
Add support for Makerdiary nRF52840-MDK

Fixes and changes

11979
Bare metal Greentea tests compilation fixes

11978
LPC55S69_NS: Fix bare metal compilation error

11971
TDBStore: Unlock the master mutex even after garbage_collect()

11967
Fixed crashing nsapi_dns unittest

11966
Fix targets.json syntax errors

11963
STM32 USB: Add __HAL_RCC_PWR_CLK_ENABLE

11959
Minimal Console: Fix compilation error

11958
Add support for Wi-SUN RF channel configuration

11956
tests-mbed_hal-sleep_manager: Fix regression found on since PR #11721

11950
DISCO_H747I: Add support of MBED_TICKLESS

11949
Fix for ArmC5 compilation errors for some targets

11947
Minimal Console: Fix syntax errors

11944
Cypress: Minor fix for mbed astyle

11943
Split integration tests in fs/net

11941
Remove string-based API usage within mbed-os

11938
STM32: Update and align serial_clear implementations

11937
Cellular: Replace CellularSocket.rx_avail with pending_bytes

11936
DNS tests: Cancel asynchronous dns query if it times out

11935
Cellular: Mark to be deprecated in CellularDevice

11930
Add FlashIAP to NUCLEO_L4R5ZI

11928
Allow MBED_ASSERT to throw errors in unittests, so we can verify it

11926
Fixed Greentea FileHandle test for microlib

11925
Fixed Greentea minimal-printf test for microlib

11923
Cellular: Fix PPP to wait until connected event from (LWIP) PPP

11921
Updates to tools for Python 3 compatibility

11919
Cypress: FPGA: Improve SPI async calls

11918
IOTSTOR-978: Bug fixes to TDBStore and SecureStore

11915
TESTS: Fix TCP/TLS send_timeout test to nonblocking

11914
Deprecate string-based APIs in IPCore

11913
LPC55S69_NS default TDBStore size increased to 32kB

11911
Update mbed-coap to version 5.1.2

11908
I2C byte read/write transmission improvement

11901
Update MPN for CYW9P62S1_43012EVB_01 board

11899
Fixes to PR template

11895
TESTS: Allow ipv6_link_local_address() as unsupported

11892
Bring static pin map extension to master

11890
S2-LP: Sync with development repository

11889
Nanostack release for Mbed OS 5.15

11888
Pelion enable for UNO_91H

11887
Add target for CYW9P62S1_43438EVB_01

11886
Add target for CY8CPROTO-062S3-4343W

11885
Update to WHD 1.60 release

11884
Update Cypress targets

11882
DISCO_L475VG_IOT01A: Fix bare metal profile Greentea tests

11881
UBLOX_EVK_ODIN_W2: Fix bare metal build and Greentea tests

11877
Fix for sending IPv6 UDP packet over link local interface

11875
Bare metal: Fix Arm toolchain Greentea test compilation for NUCLEO_F411RE

11873
Make SMS configurable in Cellular stack

11870
STM32F7: linker scripts updates

11868
Cypress Target update to support Manufacturing Test

11867
Fix for Cypress GPIO driver (fix for issue #11835)

11865
IAR: Enable linker optimizations for develop/release profile

11851
Enable FAT ChaN lib configuration with mbed_lib.json

11846
Add support for Makerdiary nRF52840-MDK

11841
Wi-Fi: Reorder Greentea tests with minor fixes

11839
SerialBase.h|cpp [-Wreorder] compiler warning fix

11829
USB STM32: Don't wrap direct function calls in MBED_ASSERT

11827
DISCO STM32H747I ETHERNET support, but disabled

11825
Bare metal Greentea test for storage component

11824
Skip bare metal Greentea test for Network component

11821
Skip bare metal Greentea test for PSA component

11819
Add code to verify if external Wi-Fi module is still responsible

11811
STM32H7 FLASH API issue with M4 core

11808
Document Socket API functions return values

11796
mbed_retarget: Add a minimal console implementation to provide basic functionalities

11789
STM32H7: code and feature alignment for both NUCLEO and DISCO targets

11785
Deprecates NVStore

11783
Adding set baud rate routine

11773
Fix watchdog reset test

11755
Unittests for nsapi_dns

11735
Dns unittest preparation

11721
Bare metal Greentea support

11720
ATCmdParser: Merge scanf and recv functions

11713
Remove Tickless from STM32F4 targets

11711
STM32F7 update drivers version to CUBE V1.15.0

11701
Arm toolchain: heap setup micro-optimization

11687
Update to Mbed TLS 2.20.0d0 and Mbed Crypto 2.1.0d0

11682
Make FPGA tests to pass on CI targets (SPI, analogIn, PWM)

11675
STM32 USB update step 1

11654
Adjustment of netsocket tests to the lossy mesh network limitation.

11641
PmwOut: Add method to enable/disable PWM

11634
Serial design draft

11595
Check return of BlockDevice::init() in TDBStore.

11556
Modified Wi-SUN tasklet to return success when calling connect twice

11551
Coverity updates

11539
Enable DER coded certificate support to Wi-SUN mesh API

11535
DNS manual cleanup mechanism added

11514
ESP8266 unlocks deep sleep when disconnected

11480
Enable tickless mode in additional tested targets

11469
Cellular: Disable cellular.clear-on-connect by default

11463
Enable tickless mode in MAX32630FTHR

11460
ESP8266 Unified Mbed trace prints.

11459
Replaced in ESP8266::oob* recv() with scanf()

11444
QSPI : Define default pins at drivers level

11430
Member get_interface_name implemented in ESP8266Interface

11414
Cellular: Add API to clear CellularDevice

11409
ESP8266 nonblocking connect/disconnect

11357
Offloaded TLSSocket and BG96 support for it

11332
mbed_error.c: Better HW fault exceptions and stack dump

11203
Add watchdog lower limit timeout test

11032
Add test header files and defined behavior for APIs tested using FPGA-Test-Shield

11006
Introduce an Mbed config to enable XIP

10978
LwIP: Add ICMPv4 Socket support

10940
Deinitialize the pin definition

10924
Free serial resources if not needed anymore

10618
Tools: Check for GCC 9, rather than 6

12059
Config: Fix bootloader config errors - propagate errors

12058
Add static pin map support: SDBlockDevice, KVStore, system storage (reduce ROM used by Mbed Cloud Client example)

12047
NANO130: Fix OOM with packing algorithm at IAR linking

12039
Fix build errors for bare metal Greentea tests on NRF52840_DK

12033
static pin-map: patch for SerialBase class

12030
Updates the Cypress Wi-Fi Host Driver to 1.7.0

12006
FIX: Fix a bug introduced by static pin map

11991
TESTS: Fix integration tests

11983
Ublox Odin Driver OS 5 v3.7.1 rc3: Network-Wi-Fi Test Crash Fixes

11970
Avoid crashes during fault handler

12117
Storage features: fix static pin-map for ArmC5

12112
Notify on configuration exception rather than breaking build

Using this release

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

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

mbed-os - mbed-os-5.14.2

Published by adbridge almost 5 years ago

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

Summary

In this release we have added the following targets:

  • CY8CKIT_064S2_4343W
  • DISCO_H747I (CM7 core)
  • DISCO_H747I_CM4 (CM4 core)
  • CYW9P62S1_43012EVB_01

As an exception to our normal patch release rules we have added a new API called get_ipv6_link_local_address in NetworkInterface class. This API returns IPv6 link local address.

The QSPI interface permits the alt (aka mode) bits to be any multiple of the bus width. Previously the values
in qspi_alt_size_t only supported multiples of bytes. This has been fixed in this release. This is a backwards
compatible change as compatibility macros are provided for the old qspi_alt_size_t values.

We have updated LittleFS to v1.7.2. The release notes for this change can be found here:

The Cypress WiFI Host Driver (WHD) has been updated to version 1.40. This includes the following changes:

  • Security fix (KRACK all-zero-key)
  • Fixed Wi-Fi connection issue after receiving DISASSOC_IND messages
  • Fixed ioctl buffer length overflow
  • Added API input argument checks

It should be noted that the base target name for NU_PFM_M2351_CM has been changed to NU_PFM_M2351 in this release.

We have fixed the following reported issues:

  • 11530 Gaps in QSPIFBlockDevice SFDP Implementation
  • 11413 Board will not enter Deep Sleep after communications with Cell Module
  • 11606 Cellular: Cannot use private _is_connected flag.
  • 11633 QSPIF general_block_device test is failing on EFM32GG11_STK3701
  • 11659 STM32F767ZI - I2C FastModePlus not properly enabled
  • 11674 STM trng_api uses always RCC_RNGCLKSOURCE_PLL
  • 11361 Sleep/deepsleep and Serial class
  • 11565 Profiles contain RTX symbol (bare metal error)
  • 11442 UDPSocket::sendto does not work with ipv6 and local-link interface addresss
  • 11643 Cypress GPIO pull mode tests fail on CY8CKIT_062_WIFI_BT
  • 11545 DISCO-L475VG-IOT01A lp_timeout test fails CI on IAR
  • 11769 Cypress: PWM FPGA test wrong assert
  • 11778 EventQueue: impossible to cancel event with negative unique id
  • 11758 Using rawSerial adds about 600A
  • 11795 Cypress: SPI FPGA test: tester always respond 0 when MODE other then 0
  • 10342 USBMSD not recognised in MacOS
  • 11652 The online compiler fails to build the Xadow-M0 target with MBED2 rev. 142 and later.
  • 11746 AnalogIn test issue
  • 11768 BLE: Security Manager doesn't restore saved security parameters

We have also:

  • Added FLASHIAP component support to DISCO_H747 and NRF52840_DK
  • Enabled MBED_TICKLESS for MCU_PSOC_M4
  • Added support for the Watchdog on nRF52 devices
  • Added bootloader support for Seeed Arch-MAX
  • Added iar exporter support for TT_M3HQ and TT_M4G9
  • Enabled RESET_REASON and WATCHDOG for EFM32GG11_STK3701

There are also a number of other fixes and code improvements.

Known Issues

There are no new known issues with this release.

Contents

Ports for Upcoming Targets

11715
Add CYW9P62S1_43012EVB_01 board

11605
DISCO_H747I dualcore support

11434
Initial addition of files to support CY8CKIT_064S2_4343W target

Fixes and Changes

11902
Cellular: Enable ePCO IE for BG96 driver

11872
Change mbed-os-example-wifi to build only DISCO_L475VG_IOT01A

11871
TESTS: Add socket.set_timeout in udpsocket_echotest

11869
IOTSTOR-978: Skip a unstable testcase until fixed

11861
Replace calls to printf() with mbed-trace in netsocket tests

11859
Cellular: Fix queue scheduling for bare metal

11854
ATHandler build warning fixed

11850
Correct PB_6/PB_7 Serial AF mapping

11848
Remove ITM Trace support from Arduino Nano 33 BLE

11844
EFM32: Enable RESET_REASON and WATCHDOG for EFM32GG11_STK3701

11843
Fix ethernet memory handling issues on CM3DS

11840
Update Cypress WifiHostDriver to version 1.50

11836
Add sender address and port verification to UDPSOCKET_ECHOTEST

11834
Fix flag checks to allow disabling unsecure tests

11833
TESTS: turn off blinky log compare test due to example changed

11831
BLE: Added call to delete the security database object upon SM reset.

11830
Cypress: Add implementation of free() for gpio

11828
MCU_LPC11U35_501: fix MCU inheritance

11823
IOTBTOOL-333: Fix SimpleQueue build failure on py3

11822
TLSSOCKET_HANDSHAKE_INVALID test skip if DNS AAA record not available.

11818
Adding baud rate setting to TLS and UDP echo burst tests

11816
Fix failure of building non-RTOS for GR-PEACH, GR-LYCHEE and VK-RZ/A1H

11815
Updated targets.json file to go along with pr-11770

11814
USBMSD: implement MODE SENSE (10) command

11813
Fix ARM issue 11795: - Cypress: SPI FPGA test: tester always respond

11810
SecureStore: Add member initializers for inc_handle_t

11800
Update common Cypress libraries

11797
IOTSTOR-953: Fix address calculations from SlicingBlockDevice

11790
nrf52: reset UARTE peripheral in serial_free

11782
equeue: avoid non-standard bit shifts

11780
Nuvoton: Add implementations of HAL API i2c_free and analogin_free

11777
IOTBTOOL-377: Fix scatter file include path online

11776
Fix for issue #11769 (Cypress: PWM FPGA test wrong assert)

11775
LPC55S69: fix serial_set_flow_control

11772
Cellular: updated cellular context flags and cid in ublox-api

11770
Update CM0P pre-built images to build 1.0.0.35

11767
Increase STM32 default deep sleep latency to 4ms

11765
Cypress: fix GPIO mode NONE

11763
Display full path of generated coverage output from unittests.

11759
STM32 QSPI: Use defines for setting address size

11756
Add option to use CCMRAM on F303xE.

11754
Cellular: Added write_hex_string to AT handler

11752
FlashIAP: Get erase value from HAL instead of hardcoding it

11749
M2351: Change base target name 'NU_PFM_M2351_CM' to 'NU_PFM_M2351'

11748
Fix spurious link up/down when AP IP address range change

11747
Update the internal kvstore flash reservation size to from 7k to 65K for Cypress Devices

11743
fpga i2c test: limit tested peripherals

11742
Fix the reset_reason host test in the CI

11739
Nrf52 i2c byte rw fix

11736
Nuvoton: Remove TRNG support

11734
nxp LPC55S69: fix i2c pin mapping

11729
minimal-printf: Fix handling of the two character sequence %%

11728
minimal_printf: Fix high level C functions that print to the console

11725
DeviceKey: Fix random key doesn't generate with custom entropy source

11724
iar export for TT_M3HQ and TT_M4G9

11719
Ensure modem echo is off before sending other AT commands

11718
Handle legacy process event first on connection complete

11717
Fix Quectel M26 context hang

11715
Add CYW9P62S1_43012EVB_01 board

11714
LWIP::get_ipv6_addr for link-local only

11710
Update examples testing scripts

11709
Update CMSIS pack index json for STM32H7xx family

11708
TARGET_STM: remove warning and fix typo on SPI

11706
MCU_NRF52840: Switches to correct Product Anomaly Notification(PAN) macro

11700
Add bootloader support for Seeed Arch-MAX

11699
Fix for missing os_cb_section

11698
Clean up ARM toolchain heap+stack setup in targets

11697
USB-Cypress: Lock sleep when USB is initialized

11695
GREENTEA: init trace if trace is enabled in json

11694
Fix components setting for GR-PEACH and GR-LYCHEE

11693
UDPSOCKET_ECHOTEST change to tolerate duplicate packets

11692
NRF52840_DK: enables FLASHIAP for the device

11691
QSPI: document use of QSPI_NO_INST

11690
Changed mbed gpio-port api to match gpio api

11688
Clearing UART TC Flag prevents deep sleep, so do not clear it

11686
Corrected nanostack PAE controller

11685
Check-in PSA related auto-generated files to support online compiler.

11684
Add support for nRF52 Watchdog

11683
Baremetal profile fixes

11679
STM32L4 TRNG clock configuration

11677
Update BT Firmware to version 128.

11676
nrf52 - fix i2c/twi driver

11673
stm32f4xx_hal_pcd.c@346,22: unused variable 'ep'

11672
STM32F767ZI - I2C FastModePlus not properly enabled

11671
nrf5x - add missing gpio_set implementation

11669
Fixed issue with integer overflow when converting time units

11668
Update Cypress WiFi driver code to version 1.40

11667
Fixes IPv6 multicast join issue

11662
Allow WhdAccessPoint scan results with extended parameters

11661
mbed_rtc_time.h lacks an include guard

11660
Fix dropped bytes on spi write

11657
Cellular: Fix apn check

11650
Nuvoton: Re-implement TRNG HAL with TRNG H/W

11646
Fix swapped BT pins on CYW943012P6EVB-01

11645
Enable tickless for PSoC6 targets

11644
Cypress Cordio BT Driver setting Host MCU active during Host Wake assert

11642
STMOD_CELLULAR: remove flow control support for DISCO_L4R9I

11636
EFM32GG11_STK3701: add QSPIF component config

11635
USBDevice: add documentation on USB suspend/resume to enter deep sleep

11631
Qspi frequency test fix

11630
Cellular: Change visibility of _is_connected as protected

11624
LittleFS: Update to v1.7.2

11623
STMOD_CELLULAR: set CTS with PullDown

11622
nRF52 SDK 15.0 - Enable more than 1 interrupt

11620
Fix enum type to align with psa-arch-tests

11619
Add FLASHIAP component to DISCO_H747

11609
IOTBTOOL-407 Fix microbit to use Arm C5

11605
DISCO_H747I dualcore support

11604
Introduce qspi_inst_t type for QSPI instructions

11603
Report errors returned by _qspi_configure_format

11602
Allow for arbitrary QSPI alt sizes

11599
FUTURE_SEQUANA: SPI HAL API fixes

11586
Cleaned up Mbed LWIP configurations

11580
Remove target dependency in ublox cellular APIs

11578
Add synchronization and switching between WhdSoftAPInterface and WhdSTAInterfaces

11571
Allow OS_THREAD_LIBSPACE_NUM as a macro

11563
Simplify pull request template

11547
Fix for UBLOX_EVK_ODIN_W2 fails in emac test.

11536
STM32 EMAC configuration update

11531
Improve QSPIFBlockDevice conformance to SFDP

11512
Fix Failure in Cryptocell tests on Montgomrery curve

11475
TEST: add atecc608a example to compilation test

11457
tools: add silent option to build

11434
Initial addition of files to support CY8CKIT_064S2_4343W target

11429
Move script to check for floats and make it Python 2 compatible

11375
NSAPI DNS query IP version check for non LWIP stacks.

11279
Add API to get ipv6 link local address

Using this release

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

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

mbed-os - mbed-os-5.14.1

Published by adbridge about 5 years ago

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

Important note about this patch release

The Nanostack RF driver has been updated and as an exception to our normal release protocol, contains
a breaking change.

Summary of changes

4-octet FCS which follows IEEE Std 802.15.4-2015
Bug fix related to channel spacing configuration

Impact of changes

This release contains version of a S2-LP driver which is not inter-operable with previous versions of the driver.

Migration actions required

To make previous version (Mbed OS 5.14.0) of the S2-LP driver inter-operable with this release, following changes are needed.

/components/802.15.4_RF/stm-s2lp-rf-driver/source/NanostackRfPhys2lp.cpp
@@ -553 +553 @@ static void rf_init_registers(void)
-    rf_write_register_field(PCKTCTRL1, PCKT_CRCMODE_FIELD, PCKT_CRCMODE_0X1021);
+    rf_write_register_field(PCKTCTRL1, PCKT_CRCMODE_FIELD, PCKT_CRCMODE_0x04C11DB7);
@@ -556,0 +557 @@ static void rf_init_registers(void)
+    rf_write_register_field(PCKTCTRL2, PCKT_FCS_TYPE_FIELD, PCKT_FCS_TYPE_4_OCTET);
@@ -1001,0 +1003 @@ static void rf_receive(uint8_t rx_channel)
+        rf_channel_multiplier = 1;
/components/802.15.4_RF/stm-s2lp-rf-driver/source/s2lpReg.h
@@ -251,0 +252,3 @@ extern "C" {
+#define PCKT_FCS_TYPE_FIELD     0x20
+#define PCKT_FCS_TYPE_4_OCTET   (0 << 5)
+#define PCKT_FCS_TYPE_2_OCTET   (1 << 5)
@@ -255,0 +259 @@ extern "C" {
+#define PCKT_CRCMODE_0x04C11DB7 (5 << 5)

Summary of changes

In this release we have added the following targets:

  • NUMAKER_M252KG
  • ST DISCO-H747I
  • OKDO
  • TARGET_CY8CPROTO_063_BLE
  • MTS_DRAGONFLY_F413RH

Cypress targets have been updated to the latest PSoC 6 CSP (HAL, RTOS abstraction, Resource Abstraction).
This update includes:

  • Minor bugfixes/code cleanup
  • Re-organization of resource/rtos abstraction folder structure
  • Documentation improvements

The Cypress Specific HCI Cordio Driver has also been updated to add:

  • MCU and BT device low-power support
  • HCI UART enhanced to work at 3M baud rate for improved BT performance. In order to put the UART interface at 3M baud rate the state machine for initialization has been modified
  • Updated BT device-wake pin drive mode from input to output mode to be able wake up the BT device from low-power state when needed
  • Added delays to BT device wake de-assert function to ensure that UART data is drained

We have provided an STM32H7 ST CUBE V1.5.0 update. The main impact of this update is the introduction of a
Cortex-M4 instruction cache through ART accelerator.

We have had to disable tickless mode on UBLOX_EVK_ODIN_W2 as it appears to cause crashes in WiFi tests (Issue #11557).
It will be re-enabled once this has been addressed.

This release also includes a Nanostack update to v11.3.0. This includes coap-service updates and
bug fixes to the Wi-SUN protocol.

We have fixed the following reported issues:

  • 11295 QSPIFBlockDevice does not differentiate between mode (alt) and dummy cycles
  • 11362 Pin speed control
  • 11496 iar export: multiple -O in the project - fails to build
  • 10854 Mbed Os 5.12.4 ATHandler::resp_stop
  • 11508 LSI as RTC clock source on certain STM targets
  • 10880 VREFINT_CAL_ADDR wrong address for MTB_RAK811

We have also:

  • Added an initial implementation of Cypress Crypto hardware acceleration for mbedTLS
  • Re-enabled GCC/ARMCC support for RTL8195AM
  • Enabled asynchronous serial with DMA for K66F
  • Added flow control (IFC) into the BG96 AT driver

There are also a number of other fixes and code improvements.

Known Issues

There are no new known issues with this release.

Contents

Ports for Upcoming Targets

11573
Add 413 dragonfly

11561
Add TARGET_CY8CPROTO_063_BLE

11407
Add OKDO platform

11384
ST DISCO-H747I introduction

11176
Support Nuvoton target NUMAKER_M252KG

Fixes and Changes

11678
Travis CI: Fixed issue where jobs are getting stalled/timing out

11649
Fix memory leak on NetworkInterface destruction

11647
Nanostack RF driver updates for Mbed OS 5.14.1

11639
Nanostack patch release for mbedos 5.14.1

11638
Change imgtool lib import to relative import

11628
Make devicekey remainder test more meaningful

11627
pinmap_peripheral function: update error code for easier debug

11626
DISCO_L4R9I: update default STMOD+ pin

11625
Revert tickless on UBLOX_EVK_ODIN_W2

11621
STM32L151: update calibration memory address

11618
Cellular: Fix CellularStateMachine to not loop between init/power states

11616
Cellular: Setting timeout before send command in gethostbyname.

11615
Cellular: Remove old deprecated tests

11612
IPCore unittests improvements

11607
Tests: USB: Move control endpoint buffers to heap

11601
DNS tests modification for ESP8266-specific scenario

11598
AT_CellularDevice.cpp - unused variable err warning

11597
Missing errno.h include

11596
LoRa: Fix build warning about _ongoing_tx_msg

11590
Moved Cypress TriggerMux initialization out of the HAL and into the BSP

11589
Enable PSA tests for fastmodel

11587
ATCmdParser doxygen header's documentation update for scanf

11585
NRF52: Fixed missing guard in port_api.c

11583
STM32H7 ST CUBE V1.5.0 update

11582
TEST: change integration fs test format and mount order

11581
Cellular: Fix setting of PDP context ID (cid)

11573
Add 413 dragonfly

11572
Tighten GCC 2-region _sbrk

11568
Speed up unit test build with parallel jobs

11567
Simplicy QSPIF target overrides for PSoC6

11566
EP_AGORA: Add config logic to enable BLE, cell, and LoRa by default

11564
Fix ARMC6 linker error for the bare metal profile

11562
STM32H7: memory relocation

11561
Add TARGET_CY8CPROTO_063_BLE

11560
Explicitly set tdb internal flash size for PSoC6 Targets

11558
Coverity fixes

11548
Cellular: Fix resolving of DNS server IPv4/6 address

11546
Tests: USB: Fix Python 3 compatibility

11542
Update Cypress targets

11541
esp8266 oob* : recv() brought back where it was needed

11540
Tests: USB: Update error handling in basic tests

11538
Cellular: Enable IPV6 for WISE_1570

11534
Cellular: Handle SEND FAIL and ERROR response

11529
PSOC6: update to PDL 1.3.1

11525
STM32WB/STM32H7 : LSI selection when LSE is not available

11523
Correct force inline syntax for IAR compiler

11518
Cypress Cordio Driver Update

11517
TCP Packet loss happens due to running of out of Mailbox size.

11516
Update to latest psoc6csp

11499
Cellular: Fix stop tag for Quectel M26 send command

11498
iar export: fix invalid optmization flag - remove from misc

11495
Improve cellular unittests

11494
Fix Coverity issue: Initialize FlashIAP non-static member in constructor

11491
Equeue chain, add documentation of using equeue_destroy

11490
Cellular: Add flow control (IFC) in BG96 AT driver

11489
Examples.py add --jobs argument

11488
Cellular: Fix get_interface_name to not include leading zero

11486
update googletest to v1.8.1

11483
Change reset_reason test timeout.

11478
Refactor CRC constructor method to remove warning

11474
Remove Mbed Crypto source files before importing

11473
Fix compilation warnings from GCC in netsocket/network tests

11472
Suppress Coverity warnings

11471
STM32WB ADC : consecutive VBAT reading

11470
Prevent unreachable statements and correct variable sizes.

11465
Updated mbedTLS CRYPTO target to be more flexibly configured for supported boards

11464
TEST: update compare log file name

11462
Minimal-printf: Remove file printing in README and update tables

11458
Tests: USB: Use libusb0 backend on Windows

11456
IOTBTOOL-349: Correct handling of spaces in project name.

11455
minimal-printf: Add capability to run floating point tests manually

11454
ST: Change the LSI_VALUE according to documentation

11453
Fix Coverity issues

11452
Coverity changes in USBMSD.cpp

11449
Coverity changes in USBDevice.cpp

11448
STM license file update

11447
Coverity changes in USBHID.cpp

11446
add missing asserts to UserAllocatedEvent class

11445
Add catch-all rule to makefile template

11443
Enable asynchronous serial with DMA for K66F

11440
Add missing documentation about tls testing

11439
Remove unreachable statements warnings

11438
Correct doxy-spellchecker error message

11437
Harmonise Doxygen comments in drivers, events, platform and rtos dirs

11427
ESP8266Interface buffer null-terminated and parameters of scan function in correct order

11424
Stack type ip versions

11421
Dns synchronous cache fix

11420
Fixed smsc9220_emac link_out memory management.

11417
Change stack sizes of threads used in tests. GR_LYCHEE failing CI

11408
Remove mbed_trace dependency to Nanomesh headers

11407
Add OKDO platform

11404
FUTURE_SEQUANA: InterruptIn implementation bug fix

11396
Remove floating point from AT_CellularSMS

11395
Avoid non-trivial copy when initializing lorastack struct

11394
Replace wait_ms calls with rtos::ThisThread::sleep_for

11393
Cast void pointer before deallocating with delete[]

11392
Remove minor build warnings

11384
ST DISCO-H747I introduction

11383
Change LSI_VALUE in STM implementation.

11382
Use very verbose to see more details in case of problem

11381
M263: Enlarge required deep sleep latency

11380
M263: Enlarge LPTICKER_DELAY_TICKS for safe

11379
M263: Fix FPGA CI testing failing

11377
Fixed byte string related TypeError if using python3.

11372
Cellular: Fix BG96 power on and connect

11368
Add pin speed controlling interface

11347
Fix NRF52832 softdevice memory map

11338
Bring down interface when stopping softap

11330
RTL8195AM - resuscitate AMEBA GCC/ARMCC support

11314
Add executable analaysis tool for floating point checks.

11297
Differentiate alt and dummy cycles in QSPIF

11254
Update gcc.py for preprocessing in linker script

11176
Support Nuvoton target NUMAKER_M252KG

11046
Initial implementation of Cypress Crypto hardware acceleration for mbedTLS

10991
Explaining how to opt in modules

10684
Cellular: fix ATHandler destructor possible crash on delete

Using this release

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

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

mbed-os - mbed-os-5.14.0

Published by adbridge about 5 years ago

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 https://github.com/ARMmbed/mbed-os/pull/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: https://github.com/ARMmbed/mbed-os/issues/8064
  • Priority: Major

Platform: Realtek RTL8195AM does not define flash algorithms for uvision

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: https://github.com/ARMmbed/mbed-os/issues/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 https://github.com/ARMmbed/mbed-os/pull/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: https://github.com/ARMmbed/mbed-os/issues/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: https://github.com/ARMmbed/mbed-os/issues/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.

mbed-os - mbed-os-5.13.4

Published by adbridge about 5 years ago

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

Summary

In this release we have added the following targets:

  • CC3220SF_Launchxl
  • Arduino Nano 33 BLE

mbed-coap has been updated to version 4.8.1. This brings the following changes:

  • Store ACK's also into duplicate info list.
  • ROM size optimization. Flash size has gone down ~1100 bytes.
  • IOTCLT-3592 - Client does not handle Duplicate ACK messages during blockwise registration correctly, issue closed

We have fixed the following reported issues:

  • 11175 Watchdog issue with timeout
  • 10198 FATFileSystem::stat() function broken with IAR
  • 11143 TT_M3HQ fails to compile with mbed-os master

We have also:

  • Enabled MBED_TICKLESS on K22F, K64F, K66F, K82F, KL82Z, KW24D, KW41Z, MIMXRT1050 and HEXIWEAR
  • Added SPISlave, SPI_ASYNCH, I2CSlave, I2C_ASYNCH and RTC features to Toshiba's TMPM46B
  • Added TRNG support for MIMXRT1050_EVK
  • Implemented Watchdog & Reset Reason for LPC1768 targets
  • Updated MCUXpresso SDK SPI drivers
  • Add ethernet support for NUCLEO_H743ZI
  • Added FlashIAP and USBDEVICE support for K22F

There are also a number of other fixes and code improvements.

Migration Guide

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

Allows placing KVStore and update images on separate storage devices - to internal and external flash

11165

Fixes TDB_INTERNAL configuration - makes possible to have the KVStore inside internal flash while update images are kept in an external storage.

Known Issues

There are no new known issues with this release.

Contents

Ports for Upcoming Targets

11137
Add Arduino Nano 33 BLE target

11063
Add CC3220SF_Launchxl to Mbed OS

Fixes and Changes

11284
K22: Add USBDEVICE support

11282
K22F: Add FlashIAP for storage

11280
Tweak stm_spi_api Coverity warning.

11274
Add ethernet support on NUCLEO_H743ZI board

11273
Fix Coverity uninitialized pointer field Thread.h

11270
Update mbed-coap to version 4.8.1

11268
Update MCUXpresso SDK SPI drivers

11267
NXP MCUXpresso: optimize us_ticker for LPC platforms

11261
MCUXpresso: Add TICKLESS support for LPC platforms

11260
Typo in USBSerial.h function prevents compilation

11259
FATFS / IAR compilation issue Pe029

11255
Update NVRAM image for target CY8CMOD-062S2-43012

11250
hal fhss timer: removed unnecessary and potentially unsafe memset

11243
Python3 fixes

11241
LoRaWAN: Terminate RX when receiving uplink messages

11237
Fix TT_M3HQ build problem

11231
Python3 fixes

11226
LPC1768 Watchdog & Reset Reason

11222
BLE: fix recursive call

11216
BLE: make advertising data parser handle early termination

11215
LPC1768: Make use of the other 32K of RAM

11204
BLE: add nonscannable connectable type

11194
Greentea testing wifi connect nonblocked

11193
FATFileSystem::stat() enabled for all compilers

11189
__cplusplus guard fixed pwmout_device.h for STM32 families

11188
MIMXRT1050_EVK: Add TRNG support

11183
M252KG: Fix kvstore-static_tests failing with OOM

11180
tweak atomic_test timeout

11178
ST: Watchdog: Fix timeout registers value calculation

11172
make watchdog kick reset test pass CI (LSI problem)

11171
Add Nuvoton M261 sub-family into arm_pack_manager

11169
TLSSocketWrapper::recvfrom sets SocketAddress output variable

11167
Fix lp ticker and common ticker tests

11166
Fix inclusion of test related directories by build tool

11165
Allows placing KVStore and update images on separate storage devices - to internal and external flash

11157
Relax us ticker frequency requirement + test update

11137
Add Arduino Nano 33 BLE target

11127
Fix ANALOGIN support for LPC55S69

11118
Add new features to Toshiba's TMPM46B

11116
Define IC related pin names for the L-Tek FF_LPC546XX target

11063
Add CC3220SF_Launchxl to Mbed OS

11021
Nuvoton: Enlarge LPTICKER_DELAY_TICKS for safe

11020
Nuvoton: Enlarge required deep sleep latency

10796
NXP: Enable MBED_TICKLESS on various NXP platforms

Using this release

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

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

mbed-os - mbed-os-5.13.3

Published by adbridge about 5 years ago

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

Summary

In this release we have added the following targets:

  • CY8CKIT_062S2_43012

We have fixed the following reported issues:

  • 10912 How to reset Cellular network interface?
  • 9850 GREENTEA can't compile if DEVICE_SERIAL is not enabled

We have also:

  • Added a USB device implementation for PSOC6
  • Added the missing serial_free() implementation for FUTURE_SEQUANA
  • Fixed rom start & size for CY8CKIT_062_WIFI_BT & CY8CPROTO_062_4343W
  • Added crash capture support to STM32F413 targets

There are also a number of other fixes and code improvements.

Migration Guide

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

Known Issues

In this release the release version block in mbed_version.h was not updated correctly and still points
to mbed-os-5.13.2.

Contents

Ports for Upcoming Targets

Fixes and Changes

11179
Zero initialise all NVStore&kvstore members

11173
Coverity and compilation warnings fixes

11168
Xpresso: qspi_write fix

11163
Bring back SPIF module-specific debug logs

11162
Add DNS servers from cellular PDP to nsapi

11161
Fix include path issues on NRF5x with Cordio

11160
Nuvoton: Remove dead code nu_delay_cycle_x4

11151
Fix PSoC 6 inout pins

11150
__cplusplus guard fixed pwmout_device.h for STM32F4

11141
freescale: fix i2c_byte_read function

11139
STM32F413 Crash Capture

11138
fix rom start & size for CY8CKIT_062_WIFI_BT & CY8CPROTO_062_4343W

11132
Fix MBED_ASSERT for UTs

11131
FUTURE_SEQUANA: Add missing serial_free() implementation

11130
Updated testcases

11123
NRF52 need to call TIMER_TASK_SHUTDOWN for current consumption

11103
STM32F7: Do not generate redundant IN tokens

11101
PSoC 6 I2C and SPI driver updates

11086
Mbed-os compile without DEVICE_SERIAL

11080
Add target for CY8CKIT_062S2_43012

11071
PSOC6: USB device implementation

11066
Cellular: Fix cellular statemachine stop and BG96 power up

Using this release

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

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

mbed-os - mbed-os-5.13.2

Published by evedon about 5 years ago

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

Summary

In this release, we have made a number of quality improvements:

  • Updated Mbed TLS to 2.18.1 and Mbed Crypto to 1.1.1
  • Updated the MCUXpresso AnalogIn driver to pass the FPGA test shield tests
  • Enabled FPGA-based SPI testing on Silicon Labs targets
  • Added information about sectors to STM32F446ZE targets

The following reported issues have also been fixed in this release:

  • Fixed the MCUXpresso LPC GPIO IRQ driver to not disable both rising and falling edges of the interrupt
  • Fixed SAADC resolution for nRF52-based targets
  • Fixed serial device IRQ infinite loop in STM devices when buffer size is greater than 256 bytes

There are also a number of other fixes and code improvements.

Known Issues

There are no new known issues with this release.

Contents

Ports for Upcoming Targets

Fixes and Changes

11090
Cellular: Fix to delete context just once

11079
NRF52840: enable TRNG in Nordic SDK config

11078
NRF52840: fix include path issues for ble pal cordio ll and gcc

11077
NRF52840: remove align instructions from gcc linker for ARM.extab exi

11069
add defines sectors for STM32F446ZE

11064
MCUXpresso: Fix the LPC GPIO IRQ driver

11062
Fix SAADC resolution for nRF52-based targets... again

11060
MCUXpresso: Update LPC spi driver

11059
GCC ARM: Increase develop and release debug level

11052
Update MCUXpresso AnalogIn driver for LPC devices

11049
Normalize line endings for IM880B startup files.

11042
Fixed serial_device IRQ infinite loop bug due to uint8_t overflowing in STM devices

11035
mbedtls: Update to Mbed TLS 2.18.1

11028
Fix FPGA CI Test Shield warnings

11026
Add a restricted peripheral list

11022
Fix watchdog tests failing with OOM

11015
Fix wrongly declared ADC pinout for EFM32GG11 STK3701A

11014
Increase ADC tolerance to 5% in FPGA-based tests

11010
FPGA SPI: ASYNC issue

11008
Enable FPGA-based SPI testing on Silicon Labs targets

11007
Fix PWM output on Silicon Labs targets for large pulsewidths

11005
FPGA PWM: wait 1 period before measurement

11004
FPGA I2C: correct init bloc number

11003
LPC MCUXpresso: Remove extra I2C transaction on byte write

10994
Add DEVICE_SERIAL_FC guards to serial HAL API

10963
PSA TESTS: Include mbedtls/config.h before evaluating MBEDTLS_PSA_CRYPTO_C

Using this release

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

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