Mbed OS Releases

Feature releases of Mbed OS are made available on a roughly quarterly basis. We release patch releases every two weeks. The latest version is always available through our development tools and on GitHub.

Latest stable release:

  • mbed-os-6.17.0

    Downloads: zip tar.gz

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

    Summary

    This release mainly integrates fixes to issues identified over the previous months.

    Support for three new targets is also added:

    • Maxim Integrated MAX32670EVKIT
    • Nuvoton NuMaker-IoT-M467
    • Toshiba SBK-M4KN

    Migration Guide

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

    LoRaWAN AS923 Add SUB_REGION AS1..AS4

    15320

    Summary of changes

    This Change add sub regions for AS923 according to the https://resources.lora-alliance.org/technical-specifications/rp2-1-0-3-lorawan-regional-parameters

    Impact of changes

    Able to use LoRaWAN in countries that moved to AS923-AS2, AS3 and AS4, while defaulting to AS1.
    Added in connectivity/lorawan/mbed_lib.json a setting that defaults to AS1 sub region and thus defaults to the traditional AS923 Region.

    "phy-as923-sub-region" : {
    "help": "AS923 sub region: AS1, AS2, AS3, AS4",
    "value": "AS1"
    }
    

    Migration actions required

    none

    Known Issues

    There are no new known issues with this release.

    Test Report

    Release automated CI test

    In addition to regular Pull Request tests and Nightly test, we also ran a nightly release test on mbed-os 6.17.0-RC

    Results for the tests we run in CI on mbed-os 6.17.0-RC (nightly):

    • Build Greentea ARMC6 - ALL PASSED
    • Build Greentea GCC_ARM - ALL PASSED
    • Build Examples ARMC6 - ALL PASSED
    • Build Examples GCC_ARM - ALL PASSED
    • Build Cloud Examples ARMC6 - ALL PASSED
    • Build Cloud Examples GCC_ARM - ALL PASSED
    • Unittest Test matrix - ALL PASSED
    • GreenTea test matrix - ALL PASSED
    • Examples test matrix - ALL PASSED

    Toolchain Coverage

    In the Mbed OS 6.17.0 release. we are testing the following toolchains:

    • ARM compiler 6.16
    • GCC_ARM 10.3-2021.07

    Targets Coverage

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

    At the time of the Mbed OS 6.16.0 release, we run the greentea tests on the following targets:

    • ARM_MUSCA_S1
    • DISCO_L457VG_IOT01A
    • K64F
    • K66F
    • NRF52840_DK
    • NUCLEO_F429ZI
    • NUCLEO_F767ZI
    • NUCLEO_WB55RG
    • NUMAKER_IOT_M487
    • FPGAs on K64F, NRF52840_DK, NUCLEO_F429ZI, NUCLEO_F767ZI, NUCLEO_WB55RG, and DISCO_L457VG_IOT01A

    Test Numbers

    Greentea test number 1716 (+0)
    Unittest number 758 (+0)

    Contents

    Ports for Upcoming Targets

    15353
    Add TMPM4GR Platform

    15343
    Add proper support for NUCLEO-H723ZG.

    15337
    Nuvoton: Support new target NUMAKER_IOT_M467

    15330
    Add TMPM4NR Platform

    Fixes and Changes

    15383
    fix STM I2C compiler inline issue

    15382
    Mimxrt1050 lpuart

    15378
    STM32F303xC: correct RAM size

    15374
    CAN: read can do only up to 8 bytes, error if more is reported

    15373
    Check CAN DLC length value

    15370
    Fix socket default interface ID only being used partially

    15369
    test: Disable failing tests due to echo server

    15368
    fix STM32L1 FLASH_SIZE for cat.3 devices with DEV_ID 0x436

    15367
    Fix mesh connect semaphore not releasing causing blockage

    15366
    Add support of NSAPI_ICMP sockets in Nanostack

    15363
    scancode: Fix license index failure

    15357
    scancode: Limit click version to <8

    15356
    STM32F1: add MCU_STM32F103xD and MCU_STM32F103xG support

    15355
    Targets: NXP: IMXRT: Fixed GCC_ARM lds syntax.

    15353
    Add TMPM4GR Platform

    15352
    M2354: Support FS-USBD

    15350
    Rethink STM32 I2C v2 HAL

    15344
    Correct MAX32620 boards macro for USB library.

    15343
    Add proper support for NUCLEO-H723ZG.

    15341
    Replace MAX32660, MAX32670 I2C driver with final one in MSDK

    15337
    Nuvoton: Support new target NUMAKER_IOT_M467

    15333
    Nuvoton: I2C: Fix potential role switch failure

    15330
    Add TMPM4NR Platform

    15329
    Add complete support of DHCP relay interface ID option

    15325
    Updated System file and Scatter file

    15323
    Fix missing mbed:: prefix issue

    15322
    STM32WL: fix MBED_CONF_STM32WL_LORA_DRIVER_SLEEP_MODE option

    15320
    LoRaWAN AS923 Add SUB_REGION AS1..AS4

    15317
    Fix for calculating CAN timing settings for STM32

    15313
    M487: Fix mbedtls_ecp_point_cmp() call with null argument

    15312
    STM32WL preparation for new chip rak3172sip

    15311
    Fix missing global up callback in CellularContext

    15306
    Add missing unlock() in file_truncate in FATFileSystem

    15302
    rename: PwmOut::read_pulsewitdth_us() to PwmOut::read_pulsewidth_us()

    15299
    Make STM32F412xE targets build

    15297
    cli2 artifact name property support for cmake targets

    15295
    lwiperf: fix double-free of pcb on error

    Using this release

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

    Downloads: zip tar.gz

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

    Summary

    This release adds some new targets, from Maxim Integrated, ST and Toshiba, and provides fixes for a number of issues raised over the past few months.

    Migration Guide

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

    add the possibility to customize the delimiter of the ATHandler in AT

    15273

    Summary of changes

    Modify the constructor of the ATCellularDevice to permit to customize ATHandler delimiter

    Known Issues

    There are no new known issues with this release.

    Test Report

    Release automated CI test

    In addition to regular Pull Request tests and Nightly test, we also ran a nightly release test on mbed-os 6.16.0-RC

    Results for the tests we run in CI on mbed-os 6.16.0-RC (nightly):

    • Build Greentea ARMC6 - ALL PASSED
    • Build Greentea GCC_ARM - ALL PASSED
    • Build Examples ARMC6 - ALL PASSED
    • Build Examples GCC_ARM - ALL PASSED
    • Build Cloud Examples ARMC6 - ALL PASSED
    • Build Cloud Examples GCC_ARM - ALL PASSED
    • Build CMAKE Examples ARMC6 - ALL PASSED
    • Build CMAKE Examples GCC_ARM - ALL PASSED
    • Build CMAKE Cloud Examples ARMC6 - ALL PASSED
    • Build CMAKE Cloud Examples GCC_ARM - ALL PASSED
    • Unittest Test matrix - ALL PASSED
    • GreenTea test matrix - ALL PASSED
    • Examples test matrix - ALL PASSED
    • CMAKE Examples test matrix - ALL PASSED
    • Cloud Client integration Test - ALL PASSED
    • Memory Usage Test - ALL PASSED

    Toolchain Coverage

    In the Mbed OS 6.16.0 release. we are testing the following toolchains:

    • ARM compiler 6.16
    • GCC_ARM 10.3-2021.07

    Targets Coverage

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

    At the time of the Mbed OS 6.16.0 release, we run the greentea tests on the following targets:

    • ARM_MUSCA_S1
    • DISCO_L457VG_IOT01A
    • K64F
    • K66F
    • NRF52840_DK
    • NUCLEO_F429ZI
    • NUCLEO_F767ZI
    • NUCLEO_WB55RG
    • NUMAKER_IOT_M487
    • FPGAs on K64F, NRF52840_DK, NUCLEO_F429ZI, NUCLEO_F767ZI, NUCLEO_WB55RG, and DISCO_L457VG_IOT01A

    Test Numbers

    Greentea test number 1716 (+0)
    Unittest number 758 (+2)

    Code Coverage

    Test Code Coverage been tracked and information is published on COVERALLS

    Memory Monitoring

    Observed no significant changes from Mbed OS 6.15.0

    Contents

    Ports for Upcoming Targets

    15263
    Add MAX32670

    15199
    Support for the NUCLEO_G0B1RE board

    15194
    Add Toshiba M4KN Platform

    Fixes and Changes

    15291
    Mts 001 mtdot clk fix

    15289
    M487: Fix crypto h/w port

    15287
    Mbed TLS: Fix wrong MPI N in ECP Curve448 curve

    15286
    STM32G4: Fix serial port at low speed baud

    15284
    Fix MPS2 CM3DS ethernet driver

    15281
    Bluetooth: Inform privacy risk of using signed writes.

    15280
    Support ITM tracing for Ambiq Apollo3 targets

    15279
    STM32F334xx wrong RAM size

    15277
    STM32L0: add MCU_STM32L071xB support

    15274
    tcp_out: fix tcp_output_fill_options() arguments

    15273
    add the possibility to customize the delimiter of the ATHandler in AT

    15271
    semihosting: Fix typo in semihost_rename

    15270
    Github actions: use safe.directory for actions invoking git

    15269
    STM32G4 : enable UART ASYNC

    15268
    STM32L0 : I2C2 was missing

    15263
    Add MAX32670

    15261
    Mbed TLS: Fix compile error with ECP alternative

    15258
    STM32F0: Fix target codes for number of UARTs

    15256
    STM32F1: add MCU_STM32F103xC support

    15251
    Correct heap region calculation for Maxim targets

    15249
    STM32G4: Fix I2C timing

    15240
    ESP8266: Fix serial flow control inconsistency on reconnect

    15239
    STM32G4: enable QSPI for custom boards

    15238
    Updated I2C pin names in PinNames.h header

    15232
    STM32H7: add MCU_STM32H753xI support

    15231
    STM32L1: build error with STM32L151xB MCU

    15230
    STM32G4: corrections for STM32G491xE, STM32G4A1xE and STM32G471xE

    15229
    STM32H7 : fix I2C5 build error

    15227
    lorawan: Fix Join Request retransmission timing (Interop test)

    15225
    lorawan: Fix issue in unconfirmed_retransmission behavior

    15223
    CMake: Fix command line too long with Ninja/ARMClang on Windows

    15222
    Fix strrchr() not declared for IAR

    15221
    Add ability to use multiple UARTs on STM32L0, STM32G0 when IRQ is shared

    15219
    Use MBED_FILENAME instead of FILE in MBED_ASSERT

    15217
    Fix STM32 radio driver when bandwidth is 0

    15215
    STM32 : add MCU_STM32L4P5xG and MCU_STM32L412xB support

    15214
    Allow unit tests to be compiled with -fno-exception

    15212
    STM32H7: increase i2c slave rx limit.

    15210
    ST: correct LED pins for DISCO_L562QE

    15207
    Add Nuvoton NuMaker-IoT-M263A CAN bus support

    15206
    STM32: fix SPI 16 bit mode

    15205
    Add USBDEVICE to NUCLEO_F722ZE target

    15204
    STM32G0 FLASH : support MCU with dual bank

    15200
    M487: Fix UART 6/7 base address encoding

    15199
    Support for the NUCLEO_G0B1RE board

    15195
    Add option to disable CM0P_SLEEP component for Cypress targets

    15194
    Add Toshiba M4KN Platform

    15193
    STM32 : remove several warnings

    15192
    Add option to disable WHD component for Cypress targets

    15190
    Make gpio irq api portable

    15189
    nRF52: GPIO: Assert that init succeeds

    15187
    Nanostack release v15.1.0 to master

    15184
    Fix initialisation sequence of RTC

    15183
    STM32WL : add robustness

    15181
    Fix LoRa sx1276 Low Power sleep, now 3uA

    15178
    Add netbuf-recvinfo-enabled config to LWIP settings

    15177
    Fix overflow at extremely low RSSI

    15176
    mstd::span rename index_type to size_type according to spec

    Using this release

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

    Downloads: zip tar.gz

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

    Summary

    We anticipate this release to be our final Mbed OS 5.15.x release as we have fulfilled our commitment of a two year support period for Mbed OS 5.15. We continue to focus our support efforts on Mbed 6 and encourage anyone who hasn’t yet migrated from Mbed 5.x.x to Mbed 6 to do so.

    The contents of this release are predominantly defect fixes plus documentation changes to address a security vulnerability identified in the Mbed BLE implementation, which can be avoided by using full encryption instead of signed writes.

    Migration Guide

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

    Bluetooth: Inform privacy risk of using signed writes.

    15282

    Summary of changes

    The Cordio stack uses a single CSRK. It can be used by a
    malicious device to track the Mbed OS application if signed
    writes are used.
    This PR documents the issue and explain workaround an application can
    adopt.

    GitHub actions: Update checkout version and use safe.directory

    15275

    Summary of changes

    GitHub actions is failing due to not finding directories. This change fixes this by upgrading the checkout to v3 and using
    safe.directory.

    Add invalid data case to tdbstore ram init

    15155

    Summary of changes

    Fix Ublox C030 SARA-R412M onboard cellular device serial (target default instance).

    15148

    Summary of changes

    Whit the following mbed_app.json config example, the ONBOARD_UBLOX target is used and the serial connection to the Ublox module can work properly.

    "target_overrides": {
    "*": {
    "platform.stdio-convert-newlines": true,
    "platform.stdio-baud-rate": 115200,
    "platform.default-serial-baud-rate": 115200,
    "mbed-trace.enable": true,
    "cellular.debug-at": true,
    "cellular.use-apn-lookup": true,
    "nsapi.default-cellular-apn": "\"some.provider.com\"",
    "nsapi.default-cellular-plmn": null,
    "nsapi.default-cellular-sim-pin": null,
    "nsapi.default-cellular-username": null,
    "nsapi.default-cellular-password": null,
    "lwip.ipv4-enabled": true,
    "lwip.ipv6-enabled": true,
    "lwip.tcp-enabled": true,
    "lwip.ethernet-enabled": false,
    "lwip.ppp-enabled": false,
    "ppp.ipv4-enabled": false,
    "ppp.ipv6-enabled": false
    },
    "UBLOX_C030_R412M": {
    "target.features_add": ["STORAGE"],
    "target.components_add": ["SD"],
    "target.network-default-interface-type": "CELLULAR",
    "storage.storage_type": "FILESYSTEM",
    "sd.SPI_MOSI": "SPI_MOSI",
    "sd.SPI_MISO": "SPI_MISO",
    "sd.SPI_CLK": "SPI_CLK",
    "sd.SPI_CS": "SPI_NSS"
    }
    }
    

    Bugfix on ONBOARD_UBLOX.cpp#L30 adding line serial.set_flow_control(SerialBase::RTSCTS, MDMRTS, MDMCTS);.
    With the correct serial flow control, the serial connection is stable and don’t get lost.

    Known Issues

    There are no new known issues with this release.

    Contents

    Ports for Upcoming Targets

    Fixes and Changes

    15282
    Bluetooth: Inform privacy risk of using signed writes.

    15275
    GitHub actions: Update checkout version and use safe.directory

    15155
    Add invalid data case to tdbstore ram init

    15148
    Fix Ublox C030 SARA-R412M onboard cellular device serial (target default instance).

    Using this release

    You can fetch this release from the mbed-os GitHub repository, using the tag “mbed-os-5.15.9”.

    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-6.15.1

    Downloads: zip tar.gz

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

    Summary

    In this latest patch release for Mbed OS we have added new target support for STM32F722ZE and MAX32660EVSYS.

    Other highlights include : * Updating STM32WL drivers to CUBE V1.1.0 * Updating STM32G0 drivers to CUBE V1.5.0 * Adding CAN support for STM32L5/STM32U5 * Introducing new wifi driver support for B-U585I-IOT02A (STM32) * Enabling USB_DEVICE support for NUCLEO_F303ZE (STM32F3)

    For improved security and functionality we have updated psutil to 5.6.7 and PyElfTools to 0.27.

    We’ve also added a new Nanostack release (v15.0.0) .

    For a full set of changes please see below.

    Migration Guide

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

    Known Issues

    There are no new known issues with this release.

    Contents

    Ports for Upcoming Targets

    15153
    STM32F722ZE port

    15109
    Add MAX32660EVSYS

    Fixes and Changes

    15174
    M2354: Fix potential issues in TF-M

    15169
    B_U585I_IOT02A supports OSPI

    15166
    Change google test git tag to main

    15164
    STM32L1: add support of MCU_STM32L151xB

    15161
    M2354: Adjust TF-M configuration to fit AWS IoT application

    15154
    STM32WB55 HCI driver: version dependent rom size

    15153
    STM32F722ZE port

    15152
    Fix rounding bug when formatting floats with minimal_printf

    15151
    Update psutil to 5.6.7 and PyElfTools to 0.27

    15149
    InterruptIn: add note about enabling interrupts in rise/fall

    15147
    NetworkStack: Remove stub implementations of socket_x_control

    15145
    QSPIF: Add missing mbed namespace prefix to header file

    15141
    mergify: fix needs work labels if CI fails

    15140
    M2354: Enable post-build for custom board partially with Mbed CLI

    15139
    Fix for PWM resume issue, SWINTEGRATION-57

    15138
    STM32: Remove non-UTF characters

    15137
    STM32WL update drivers version to CUBE V1.1.0

    15136
    STM32WL LORA radio: add a critical section

    15134
    STM32WL: UART2 was missing

    15133
    STM32WB/STM32WL: I2C issue

    15132
    STM32: fix USB_reenumerate() for STM32F3

    15130
    STM32H743: correct pack manager rom value

    15128
    Fix USB on DISCO_F769NI

    15127
    mergify: fix issue with labels when PR is closed

    15126
    mbed_create_distro() reborn: a function to make adding multiple targets easy

    15124
    pin_names-arduino_uno test : UART test case update

    15123
    STM32: introduce new wifi driver for B-U585I-IOT02A

    15120
    STM32: enable STM32H735xG STM32H7B3xIQ for custom boards

    15117
    CLI2: copy mapfile for diff statistics

    15116
    STM32F3 - enable USB_DEVICE for NUCLEO_F303ZE

    15114
    Fix ARM toolchain #L6803W Relocation warnings

    15111
    DTLSSocket - destruction while handshaking lead to error

    15109
    Add MAX32660EVSYS

    15107
    LWIP: Provide inline replacements for htons() and htonl()

    15103
    Nanostack release v15.0.0 to master

    15099
    STM32H7: enable more custom boards

    15098
    STM32F303xC: cmakelist issue

    15095
    CMake: greentea: Migrate the NFC EEPROM test to CTest

    15082
    STM32F1: add more alternate functions

    15081
    STM32: STM32_gen_PeripheralPins.py v1.20.4

    15080
    STM32F4: CAN issue with F407 target

    15077
    CAN: Use uintptr_t for can_irq_ids

    15075
    STM32G0 update drivers version to CUBE V1.5.0

    15074
    STM32 : default SPI and I2C for targets with ARDUINO-NANO

    15068
    connectivity tests: avoid HardFault with null pointer

    15065
    STM32L5/STM32U5 : CAN support

    15062
    Lora drivers: explicit lib requirement

    14610
    Power management stat : add verbosity level for MBED_SLEEP_TRACING_ENABLED

    Using this release

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

    Downloads: zip tar.gz

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

    Summary

    This is the latest support release for Mbed OS 5.15 . The primary focus of this release was to include new versions of Nanostack (versions 13.0.0, 14.0.0 and 15.0.0) and updates to mbed-coap (versions 5.1.10 and 5.1.11).
    There are also some API additions: * Added API to reset MAC statistics and Wi-SUN statistics. * Add system time read/write callbacks to mbed-mesh-api. Nanostack will use the callbacks for system time synchronisation in the mesh network. * Added API to get Wi-SUN neighbor table.

    Migration Guide

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

    Nanostack release v15.0.0 to mbed-os-5.15

    15102

    Summary of changes

    Nanostack release v15.0.0 to mbed-os-5.15 branch. This PR is a copy of https://github.com/ARMmbed/mbed-os/pull/15101.

    [mbed-os-5.15] Nuvoton M480/M451 CAN API support mask feature

    15026

    Summary of changes

    This PR is backport of #15020 into Mbed OS 5.15 to enable M480/M451 CAN mask feature for Mbed CAN filter. In this PR, it will also handle standard ID or extended ID frame as while enable H/W mask feature.

    Impact of changes

    None

    Migration actions required

    None

    Travis CI migration to GitHub Actions

    15011

    Summary of changes

    Mbed OS is moving GitHub Actions from TravisCI. This PR takes care of the migration of mbed-os-5.15 branch.

    Migration actions required

    Disable mbed-os-5.15 branch in TravisCI settings.

    [mbed-os-5.15] Nanostack release v14.0.0

    14833

    Summary of changes

    This PR provides the following updates to the Wi-SUN software stack (nanostack):

    MAX32630FTHR: Port USBSerial from mbed6.x

    14830

    Summary of changes

    USB HW implementation added for MAX32630FTHR board.

    [mbed-os-5.15] Add system time read/write callbacks to mbed-mesh-api

    14818

    Summary of changes

    Add system time read/write callbacks to mbed-mesh-api. Nanostack will use the callbacks for system time synchronisation in the mesh network.
    This is a copy of https://github.com/ARMmbed/mbed-os/pull/14754

    connectivity tests: Early test skip

    14771

    Summary of changes

    Adding mbed-os subdirectories that are not required for a specific project to .mbedignore is a good way to reduce compilation time. Sometimes it happens that tests depend on ignored files, which causes the test-build to fail even though the corresponding feature/component is not configured. The reason is that the conditional that skips the test is placed after the includes.
    PR for master already merged: #14767

    Impact of changes

    None

    Migration actions required

    None

    mbed-os-5.15: Update mbed-coap to version 5.1.11

    14770

    Summary of changes

    Block-Wise request (block1) error handling improvements: * Removed SN_COAP_BLOCKWISE_MAX_TIME_DATA_STORED usage. Block-Wise requests will now follow normal retranmission rules. * Process block1 responses only once. If response is coming in wrong order just ignore it wait next response to happen.

    mbed-os-5.15: remove python 2.7 tests from travis

    14745

    Summary of changes

    This is cherry-picked from master (we should backport this to 5.15 branch). Python 3 is the way to go.

    test examples: remove tls socket, it was deprecated some time ago

    14744

    Summary of changes

    The example was deprecated some time ago. We should not test it in CI for 5.15 branch (it was removed from master).

    [mbed-os-5.15] Update mbed-coap to version v5.1.10

    14682

    Summary of changes

    • Fix regression from previous release concerning 1024 byte blocksize operations.
    • Do not store ACK’s into duplicate list.
    • Code size optimizations

    mbed-os-5.15: Add API to get Wi-SUN Neighbor Table

    14618

    Summary of changes

    This is upstream of PR#14586
    Added API to get Wi-SUN neighbor table.
    Added more parameters in Wi-SUN statistics.

    Impact of changes

    None

    Migration actions required

    None

    LPC15xx extended CAN fix (5.15)

    14597

    Summary of changes

    This PR fixes an issue with parsing the identifier of received extended CAN frames on the LPC15xx targets. According to the user manual, CANIF2_ARB2 contains the high bits while CANIF2_ARB1 contains the low bits of the extended CAN identifier.

    mbed-os-5.15: Mesh api: Added PHY mode, channel plan IDs and configuration functions

    14566

    Summary of changes

    Support for Wi-SUN FAN v1.1 PHY mode ID and channel plan ID in Mesh API.
    - Enables using OFDM modulation with Wi-SUN stack.
    - This change is copied from PR: https://github.com/ARMmbed/mbed-os/pull/14161
    Implemented domain configuration functions in mesh API:
    - Functions will set, get and validate the parameters using corresponding Nanostack API.
    - This change is copied from PR: https://github.com/ARMmbed/mbed-os/pull/14251

    [mbed-os-5.15] Nanostack release v13.0.0

    14565

    Summary of changes

    Nanostack release v13.0.0 to mbed-os-5.15 branch.
    This PR provides mesh stack ready for Wi-SUN PHY and FAN certification tests.
    This is a copy of PR: https://github.com/ARMmbed/mbed-os/pull/14549

    Nuvoton: Fix hal_watchdog_kick() with WDT stopped (5.15)

    14556

    Summary of changes

    This PR is backport of #14555 to mbed-os-5.15 branch. It tries to fix watchdog_kick() which shall do nothing when WDT is stopped according to WDT HAL spec.
    Change targets:
    - NUMAKER_PFM_NANO130
    - NUMAKER_PFM_M453
    - NUMAKER_PFM_NUC472
    - NUMAKER_PFM_M487/NUMAKER_IOT_M487

    mbed-os-5.15: Add API to reset MAC statistics and Wi-SUN statistics

    14552

    Summary of changes

    Added API to reset MAC statistics and Wi-SUN statistics.
    This is copied from https://github.com/ARMmbed/mbed-os/pull/14439

    Impact of changes

    None

    Migration actions required

    None

    M487: Fix crash on WDT reset from power-down (5.15)

    14502

    Summary of changes

    This PR is backport of #12557 and #14524 to mbed-os 5.15 and tries to fix issue with WDT reset from power-down mode.

    UARTSerial writes even if tx is disabled

    14498

    Summary of changes

    Remove shadowing variables.

    mbed-os-5.15: Added new start methods to Wi-SUN BR with WisunInterface parameter and deprecated the old ones

    14464

    Summary of changes

    Previously WisunBorderRouter start() used NetworkInterface type for mesh interface, although only WisunInterface type is possible for the call. Added a new overloads of the start with the WisunInterface as mesh interface type and deprecated the old ones. This makes the calls stricter about the interface type and safer. It also allows to remove the reinterpret_cast that causes
    compiler warning on ARM compiler.
    This is mbed-os-5.15 version of https://github.com/ARMmbed/mbed-os/pull/14462

    Impact of changes

    None

    Migration actions required

    None

    Known Issues

    There are no new known issues with this release.

    Contents

    Ports for Upcoming Targets

    Fixes and Changes

    15102
    Nanostack release v15.0.0 to mbed-os-5.15

    15026
    [mbed-os-5.15] Nuvoton M480/M451 CAN API support mask feature

    15011
    Travis CI migration to GitHub Actions

    14833
    [mbed-os-5.15] Nanostack release v14.0.0

    14830
    MAX32630FTHR: Port USBSerial from mbed6.x

    14818
    [mbed-os-5.15] Add system time read/write callbacks to mbed-mesh-api

    14771
    connectivity tests: Early test skip

    14770
    mbed-os-5.15: Update mbed-coap to version 5.1.11

    14745
    mbed-os-5.15: remove python 2.7 tests from travis

    14744
    test examples: remove tls socket, it was deprecated some time ago

    14682
    [mbed-os-5.15] Update mbed-coap to version v5.1.10

    14618
    mbed-os-5.15: Add API to get Wi-SUN Neighbor Table

    14597
    LPC15xx extended CAN fix (5.15)

    14566
    mbed-os-5.15: Mesh api: Added PHY mode, channel plan IDs and configuration functions

    14565
    [mbed-os-5.15] Nanostack release v13.0.0

    14556
    Nuvoton: Fix hal_watchdog_kick() with WDT stopped (5.15)

    14552
    mbed-os-5.15: Add API to reset MAC statistics and Wi-SUN statistics

    14502
    M487: Fix crash on WDT reset from power-down (5.15)

    14498
    UARTSerial writes even if tx is disabled

    14464
    mbed-os-5.15: Added new start methods to Wi-SUN BR with WisunInterface parameter and deprecated the old ones

    Using this release

    You can fetch this release from the mbed-os GitHub repository, using the tag “mbed-os-5.15.8”.

    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-6.15.0

    Downloads: zip tar.gz

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

    Summary

    The main focus with this release is bringing our support up to date for both the GCC and Arm compilers, so GCC10 and Arm 6.15.0 respectively, and now supporting TF-M v1.4. With this, Mbed OS can now support v8.1-M of the Arm Architecture and will support upcoming M55-based MCUs from the Arm ecosystem.

    Migration Guide

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

    New feature: send/recv message implementation added to network stack

    15040

    Summary of changes

    This PR is continuation of another stale PR: https://github.com/ARMmbed/mbed-os/pull/14847. I am opening this one, as I didn’t have access to push to the fork created by other developer.
    I have added few changes related to unresolved comments:
    - function names were changed from socket_sendmsg/socket_recvmsg to socket_sendto_control/socket_recvfrom_control.
    - default implementation of this functions was provided in the NetworkStack class to not break the existing API. This was the issue that caused tests to fail in the previous PR.
    - MsgHeaderIterator accesses elements on the aligned addresses
    .

    SFDP: Add support for multiple configurations and sector maps

    14989

    Summary of changes

    Fixes #12574
    This PR adds to following changes, to support CYW9P62S1_43012EVB_01’s QSPI flash (S25FS512S): * A Sector Map Parameter Table contains a sequence of the following descriptors: * (Optional) configuration detection command descriptors, one for each command to run to determine the current configuration. This exists only if the flash layout is configurable. * Sector map descriptors, one map for each possible configuration. On a flash device with a non-configurable layout, there is only one such descriptor/map.
    Previously we only supported the non-configurable case with a single descriptor. This PR adds support for multiple configurations and provides a positive unit test case. * To be able to run configuration detection commands, a callback provided by each block device and used by the SFDP class needs to take additional parameters: address size, instruction and dummy cycles. Their values come from sector map descriptors in the SFDP table. This PR changes the callback interface, and updates callbacks implemented by SPI, QSPI and OSPI block devices to the extended interface. * A quirk is provided for Cypress S25FS512S flash device’s inconsistent register value: This device’s SFDP table suggests checking CR3NV[1], which needs to be 1 in order for the config detection algorithm to work. But the actual hardware has value 0 instead. This has been discussed before on the Internet (e.g. on a Linux mailing list) - it’s not possible to change a value in hardware that has been in production for years. * Two of the three configurations of S25FS512S have eight 4KB sectors (32KB in total) overlaying a 256KB sector. This type of partial overlay is not current supported by Mbed OS’s BlockDevice and SFDP parser. A quirk is provided to ignore the 4KB sectors and only use the 256KB sectors. * Fixes of a few preexisting issues we found.
    More details in commit messages.

    Known Issues

    There are no new known issues with this release.

    Test Report

    Release automated CI test

    In addition to regular Pull Request tests and Nightly test, we also ran a nightly release test on mbed-os 6.15.0-RC

    Results for the tests we run in CI on mbed-os 6.15.0-RC (nightly):

    • Build Greentea ARMC6 - ALL PASSED
    • Build Greentea GCC_ARM - ALL PASSED
    • Build Examples ARMC6 - ALL PASSED
    • Build Examples GCC_ARM - ALL PASSED
    • Build Cloud Examples ARMC6 - ALL PASSED
    • Build Cloud Examples GCC_ARM - ALL PASSED
    • Build CMAKE Examples ARMC6 - ALL PASSED
    • Build CMAKE Examples GCC_ARM - ALL PASSED
    • Build CMAKE Cloud Examples ARMC6 - ALL PASSED
    • Build CMAKE Cloud Examples GCC_ARM - ALL PASSED
    • Unittest Test matrix - ALL PASSED
    • GreenTea test matrix - ALL PASSED
    • Examples test matrix - ALL PASSED
    • CMAKE Examples test matrix - ALL PASSED
    • Cloud Client integration Test - ALL PASSED
    • Memory Usage Test - ALL PASSED

    Toolchain Coverage

    In the Mbed OS 6.15.0 release. we are testing the following toolchains:

    • ARM compiler 6.16
    • GCC_ARM 10.3-2021.07 (Please note the change from Mbed OS 6.14.0)

    Targets Coverage

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

    At the time of the Mbed OS 6.15.0 release, we run the greentea tests on the following targets:

    • ARM_MUSCA_S1
    • DISCO_L457VG_IOT01A
    • K64F
    • K66F
    • NRF52840_DK
    • NUCLEO_F429ZI
    • NUCLEO_F767ZI
    • NUCLEO_WB55RG
    • NUMAKER_IOT_M487
    • FPGAs on K64F, NRF52840_DK, NUCLEO_F429ZI, NUCLEO_F767ZI, NUCLEO_WB55RG, and DISCO_L457VG_IOT01A

    Test Numbers

    Greentea test number 1716 (+0)
    Unittest number 756 (+11)

    Code Coverage

    Test Code Coverage been tracked and information is published on COVERALLS

    Memory Monitoring

    Observed no significant changes from Mbed OS 6.14.0

    Contents

    Ports for Upcoming Targets

    15022
    STM32U5 new family introduction

    15012
    Add platform MTS_DRAGONFLY_L496VG

    Fixes and Changes

    15078
    M2354: Fix TF-M 1.4

    15073
    CMake: QSPIFBlockDevice: Guard unit test directory

    15067
    Greentea: Fix flash overflown issue in callback_big test

    15066
    CMake: Fix platform wait_ns greentea test Cmake

    15061
    Fix replacement of event queue background.

    15060
    set locale in mbed-os-env Docker image

    15059
    Fix Thread::start() and general_block_device test’s thread allocation/deallocation

    15052
    Fix mbed-os-env docker digest retrieval

    15051
    Allow to use all STM32 targets prescaler for LPTIM

    15050
    Update to TF-M v1.4.0

    15045
    Workaround for a bug in malloc() from newlib-nano 4.1.0 (in GCC 10.3)

    15043
    FIX: update click version to fix scancode

    15041
    CMake: Set TARGET_NAME macro

    15040
    New feature: send/recv message implementation added to network stack

    15034
    add RTC using HSE to target STM32F1

    15032
    CMake: Fix escaping of quotes in response file

    15031
    connectivity-netsocket-tests-tests-network-wifi test suite configuration simplification

    15030
    M2354: Fix LCDCP missing in TF-M CLK pass list

    15029
    M2354: Fix incorrectly resolved peripheral base with security

    15028
    STM32 SPI: Update and improvement

    15027
    M2354: Generate unique MCUboot image version

    15024
    M2354: Enhance TF-M SDH stability

    15022
    STM32U5 new family introduction

    15020
    Nuvoton: M480/M451 CAN API support mask feature

    15019
    Refactor platform greentea cmake

    15018
    hal-tests-tests-mbed_hal-flash compilation warning

    15017
    STM32WL fixed current consumption for mode RBI_CONF_RFO_HP

    15016
    Fix IAR cmsis update breakage

    15012
    Add platform MTS_DRAGONFLY_L496VG

    15010
    Reduce spam on trace because of calling read/write while handshaking

    15007
    docker: Upgrade GCC to 10.3-2021.07

    14989
    SFDP: Add support for multiple configurations and sector maps

    14981
    Fix STM32 SPI 3-wire (synchronous API)

    14951
    CMake: Refactor rtos greentea cmake

    14926
    Eth: STM32: Overriding HAL callbacks in stm32xx

    Using this release

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

    Downloads: zip tar.gz

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

    Summary

    The main changes provided by this release are upgrades of the Fat Filesystem to version R0.14b and CMSIS to 5.8.0, both bringing improved stability and reliability. We’ve also added a SPI NAND block device driver for using SPI NAND Flash, like Macronix Flash MX31LF4GE4BC.

    Migration Guide

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

    FatFs: upgrade to R0.14b

    14911

    Summary of changes

    Current upstream version of FatFs was now R0.14b with a lot of fixed since R0.13a. LINK
    So we migrated Mbed-OS modification in R0.13a back to R0.14b and change some that affect in FATFileSystem.cpp

    Impact of changes

    FatFs version upgrade that may introduce new regression from upstream.

    Migration actions required

    FatFs has been upgraded to R0.14b. This comes with the following API changes requiring migration for direct users of FatFs. Users of the Mbed OS C++ class FATFileSystem do not need to change their use of FATFileSystem.
    f_mkfs() now takes a MKFS_PARAM opt instead of a BYTE opt and DWORD au.
    f_fdisk() now takes an LBA_t ptbl[] instead of a DWORD
    szt.

    CMake: tests: Support skipping unsupported test with reason

    14902

    Summary of changes

    Fixes #14856
    Add a new argument TEST_SKIPPED to mbed_greentea_add_test() to indicate a test is skipped and give a reason (e.g. the Mbed target and/or configuration does not provide what the test requires).
    The skip reason of a test is printed when running tests with ctest, and the test is marked as “Skipped” in the test report.
    As a showcase, use this mechanism to skip the PSA Attestation test if baremetal is used or PSA and Experimental API are unavailable. Also update the ticker test (whose CTest support was added in #14892) to skip if microsecond ticker is unavailable.

    Update CMSIS to 5.8.0

    14900

    Summary of changes

    Update CMSIS to 5.8.0. It brings lot of fixes, see https://github.com/ARM-software/CMSIS_5/releases/tag/5.8.0
    We again had some breakages, mainly it was arm compat (workaround implemented).

    Dont require icetea

    14880

    Summary of changes

    Remove icetea requirement.

    Impact of changes

    icetea is no longer listed as a default dependency.

    Migration actions required

    If you require icetea, you must install it separately as it is no longer listed as a default dependency of mbed-os in requirements.txt.

    Add config macros for device-variant, freq-support and xtal config

    14730

    Summary of changes

    Fixes #14726 by adding config macros for device-variant, freq-support and xtal config.
    Settings these macros to -1, the selection pins are used.

    add SPI NAND Block device driver

    14397

    Summary of changes

    Add SPI NAND block device driver for using SPI NAND Flash like Macronix Flash MX31LF4GE4BC.

    Known Issues

    There are no new known issues with this release.

    Test Report

    Release automated CI test

    In addition to regular Pull Request tests and Nightly test, we also ran a nightly release test on mbed-os 6.14.0-RC1

    Results for the tests we run in CI on mbed-os 6.14.0-RC1 (nightly):

    • Build Greentea ARMC6 - ALL PASSED
    • Build Greentea GCC_ARM - ALL PASSED
    • Build Examples ARMC6 - ALL PASSED
    • Build Examples GCC_ARM - ALL PASSED
    • Build Cloud Examples ARMC6 - ALL PASSED
    • Build Cloud Examples GCC_ARM - ALL PASSED
    • Build CMAKE Examples ARMC6 - ALL PASSED
    • Build CMAKE Examples GCC_ARM - ALL PASSED
    • Build CMAKE Cloud Examples ARMC6 - ALL PASSED
    • Build CMAKE Cloud Examples GCC_ARM - ALL PASSED
    • Unittest Test matrix - ALL PASSED
    • GreenTea test matrix - ALL PASSED
    • Examples test matrix - ALL PASSED
    • CMAKE Examples test matrix - ALL PASSED
    • Exporter Test - SOME FAILS (Issue: IOTCORE-1663 - Nightly: Export uvision failing with missing context fault handler)
    • Cloud Client integration Test - ALL PASSED
    • Memory Usage Test - ALL PASSED

    Toolchain Coverage

    In the Mbed OS 6.14.0 release. we are testing the following toolchains:

    • ARM compiler 6.16.0 (Please note the change from Mbed OS 6.13.0)
    • GCC_ARM 9-2019-q4-major

    Targets Coverage

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

    At the time of the Mbed OS 6.14.0 release, we run the greentea tests on the following targets:

    • ARM_MUSCA_S1
    • DISCO_L457VG_IOT01A
    • K64F
    • K66F
    • NRF52840_DK
    • NUCLEO_F429ZI
    • NUCLEO_F767ZI
    • NUCLEO_WB55RG
    • NUMAKER_IOT_M487
    • FPGAs on K64F, NRF52840_DK, NUCLEO_F429ZI, NUCLEO_F767ZI, NUCLEO_WB55RG, and DISCO_L457VG_IOT01A

    We have the following issue on the test jobs:

    • IOTCORE-1663 - Nightly: Export uvision failing with missing context fault handler

    Test Numbers

    Greentea test number 1716 (-7)
    Unittest number 745 (+4)

    Code Coverage

    Test Code Coverage been tracked and information is published on COVERALLS

    Memory Monitoring

    Observed no significant changes from Mbed OS 6.13.0

    Contents

    Ports for Upcoming Targets

    Fixes and Changes

    15008
    TESTS: Reduce allocate memory size

    15006
    Disabled interrupts on smt32f7 and stm32h7 before calling disable data cache

    15003
    Add bluetooth support files to Cypress BSPs.

    15002
    Add missing include for PinNames.h

    15000
    Fix Extended Message Filter count in STM CAN API

    14997
    python: Upgrade pywin32

    14995
    travis ci migration to github action

    14993
    Add boilerplate unit test code to currently untested modules

    14988
    CYW43XXX Cordio HCI driver: update BT power up sequences to remove redundant delay (500ms) during HCIDrive initialization

    14983
    SFDP: Add unit tests for Sector Map Parameter Table parsing

    14982
    CYW43XXX Cordio HCI driver: fixed MCU deep-sleep locking flow

    14980
    github action fix for uppercase repository owner

    14979
    requirements.txt - remove manifest-tool 1.5.2 and mbed-cloud-sdk

    14978
    DOCKER: fix a bug in docker building GHA

    14976
    Add more uarts for STM32F103xG

    14972
    M2354: Support PSA Firmware Update

    14970
    USB connect problem in non blocking mode

    14956
    STM32_gen_PeripheralPins script update

    14953
    Rework post-build to support multiple executables

    14952
    github actions for mbed-os-env docker management

    14948
    Fix lorawantimer unit test

    14945
    TFM: Add missing IPC file for PSA Firmware Update

    14944
    CMake: unittests: Show all tests in CTest report

    14941
    Update references to time values to use chrono

    14940
    python: Allow newer prettytable with newer python

    14939
    Standard Pin Names validation script update

    14935
    mbed_retarget: enable IAR build

    14932
    Remove host_tests from mbed-os/tools

    14929
    Unit tests: Move target_h/ stubs into libraries’ test doubles

    14927
    add workflow for checking ble feature selection compilation

    14924
    Refactor cellular unittest CMake

    14922
    Cellular: AT command fix - hex string shouldn’t be quoted on bc95

    14921
    BLE: suppress error when no path is passed in for ble security db

    14920
    Refactor connectivity netsocket unittests

    14919
    BLE: fix missing define guards for feature selection

    14914
    Deprecate the Greentea metrics API

    14912
    Move ble stubs to FEATURE_BLE lib

    14911
    FatFs: upgrade to R0.14b

    14910
    Allow LoRaWAN STM32WL driver debug led to be inverted

    14909
    SPIF: fixed _address_size to always initialize as 3_BYTES in ::init()

    14902
    CMake: tests: Support skipping unsupported test with reason

    14900
    Update CMSIS to 5.8.0

    14894
    Unit tests: Connectivity: Make lorawan test header dependencies explicit

    14892
    Add CTest support for mbed-drivers-ticker greentea test

    14880
    Dont require icetea

    14831
    DISCO_WB5MMG: add RGB LED

    14821
    RTOS: Add configuration to enable RTX events

    14805
    i2c: fix issue #14735 with multiple buses

    14730
    Add config macros for device-variant, freq-support and xtal config

    14575
    CMake: Enable improved armclang support in CMake 3.21

    14397
    add SPI NAND Block device driver

    14288
    BG96: Add segmentation to TCP socket send

    Using this release

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

    Downloads: zip tar.gz

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

    Summary

    The main changes in this release are updates to existing functionality and APIs; so the addition of a RawCan class, Cortex-A5 support, changes to the BLE manual security manager functionality and greentea CMake tests refactored for supporting PSA.

    Migration Guide

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

    CMake: Add CMake to mbed-psa greentea tests

    14828

    Summary of changes

    • Changed mbed_greentea_add_test macro to require TEST_SOURCES for all files, removing assumption of main.cpp
    • Refactored all pre-existing greentea tests to add main.cpp using TEST_SOURCES
    • Added a CMakeLists.txt for each test suite in Mbed OS PSA.
    • Moved /pal and /val directories into a separate /test_abstraction_layer directory and combined them into one CMake target, which is linked to by the test suites that require them.
      Fixes #14680

    Impact of changes

    None.

    Migration actions required

    None.

    BLE: Manual BLE security manager db synchronisation

    14824

    Summary of changes

    Adds new BLE API call to manually attempt to synchronise the security manager DB.

    Feature: Make changes for Cortex-A5 support

    14718

    Summary of changes

    It’s a PR that add Cortex-A5 support for mbed-os custom targets.
    Unify some __CORTEX_A macros.
    __MBED_CMSIS_RTOS_CM and __MBED_CMSIS_RTOS_CA9 have been removed from CMake as they’re not used anymore.

    drivers: Add RawCan object

    14688

    Summary of changes

    RawCAN class (unlocked apis) is added, which can be used in case if CAN object is accessed by a single thread.

    Specific for ST CAN HAL implementation:
    can_read is deferred to thread context when rx interrupt is enabled.
    As can_read is protected by mutex(mutex is not allowed in ISRs in Mbed) and read is only possible way to clear interrupts in bxCAN in STM controllers, reads are to be deferred to thread context.

    CYW43XXX: Add generic transport layer

    14227

    Summary of changes

    Aim of this pr is to add a generic transport layer to COMPONENT_CYW43XXX using unbuffered uart. CYW43XXX_UNBUFFERED_UART directive has been added to keep Cypress hal support available.
    https://github.com/ARMmbed/mbed-os/commit/40fd126915e592ed53143ecbdbcbe5a55184c9f1 Adds then CYW43XXX support to PORTENTA_H7 target.

    Impact of changes

    COMPONENT_CYW43XXX

    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

    Wi-SUN Hardfaults with IAR compiled image with Mbed OS 5.15.0

    • Description: Mesh Wi-SUN FAN may HardFault in rare occasions with IAR8 compiled binaries during initial network connection.
    • Workaround: The workaround is to use other compilers.
    • Reported Issue: IOTTHD-3898
    • Priority: Major

    Test Report

    Release automated CI test

    In addition to regular Pull Request tests and Nightly test, we also ran a nightly release test on mbed-os 6.13.0-RC1

    Results for the tests we run in CI on mbed-os 6.13.0-RC1 (nightly):

    • Build Greentea ARMC6 - SOME FAILS (Issue: MBEDOSTEST-1163 - ARMC6 Failed to build mbed OS with LTO options)
    • Build Greentea GCC_ARM - ALL PASSED
    • Build Examples ARMC6 - ALL PASSED
    • Build Examples GCC_ARM - ALL PASSED
    • Build Cloud Examples ARMC6 - ALL PASSED
    • Build Cloud Examples GCC_ARM - ALL PASSED
    • Build CMAKE Examples ARMC6 - ALL PASSED
    • Build CMAKE Examples GCC_ARM - ALL PASSED
    • Build CMAKE Cloud Examples ARMC6 - ALL PASSED
    • Build CMAKE Cloud Examples GCC_ARM - ALL PASSED
    • Unittest Test matrix - ALL PASSED
    • GreenTea test matrix - ALL PASSED
    • Examples test matrix - ALL PASSED
    • CMAKE Examples test matrix - ALL PASSED
    • Exporter Test - SOME FAILS (Issue: IOTCORE-1663 - Nightly: Export uvision failing with missing context fault handler)
    • Cloud Client integration Test - ALL PASSED
    • Memory Usage Test - ALL PASSED

    Toolchain Coverage

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

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

    Targets Coverage

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

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

    • ARM_MUSCA_S1
    • DISCO_L457VG_IOT01A
    • K64F
    • K66F
    • NRF52840_DK
    • NUCLEO_F429ZI
    • NUCLEO_F767ZI
    • NUCLEO_WB55RG
    • NUMAKER_IOT_M487
    • FPGAs on K64F, NRF52840_DK, NUCLEO_F429ZI, NUCLEO_F767ZI, NUCLEO_WB55RG, and DISCO_L457VG_IOT01A

    We have the following issues on the test jobs:

    • MBEDOSTEST-1163 - ARMC6 Failed to build mbed OS with LTO options
    • IOTCORE-1663 - Nightly: Export uvision failing with missing context fault handler

    Test Numbers

    Greentea test number 1723 (+0)
    Unittest number 741 (+0)

    Code Coverage

    Test Code Coverage been tracked and information is published on COVERALLS

    Memory Monitoring

    Observed no significant changes from mbed-os-6.12.0

    Contents

    Ports for Upcoming Targets

    Fixes and Changes

    14915
    STM32 Fix i2c_compute_timing() API

    14913
    802.15.4 stm-s2lp-rf-driver update to v1.0.10

    14905
    STM32 : README updates about custom boards

    14899
    STM32WL: correct CMakeLists.txt for STM32WLE5xC

    14898
    Fix gcc_arm linker script for stm32f407xg targets

    14897
    ST BLUENRG BLE: STWIN SensorTile board introduction

    14896
    Move connectivity nanostack libservice stub

    14895
    ADC: STM32H7: Skip Negative input analog channels (INN)

    14890
    Move connectivity mbedtls stubs

    14888
    Portenta: Add BLE support using CYW43XXX generic transport layer

    14887
    Updated can bit timing parameters as per the ISO11898-2

    14884
    Remove the UNITTEST macro from production code

    14882
    Unit tests: storage: Only use headers, sources and definitions needed by each test

    14881
    Standard Pin Name: LED1 issue for targets without LED

    14876
    CMake: greentea: Remove dependency on global MBED_PATH

    14875
    enable google and azure example application tests in ci

    14874
    CMake: Replace MBED_TEST_LINK_LIBRARIES with MBED_TEST_BAREMETAL

    14873
    Move connectivity netsocket stubs

    14872
    Add STM32WLE5 for custom targets LORA_E5 and RAK3172

    14870
    CMake: Remove mbed-stubs-rtos-headers library

    14864
    analogout: STM32: modified analogout_free api

    14862
    Unit tests: Move storage stubs into the storage directory

    14850
    PSA: Fix compile error with NV seed

    14849
    SPIFBlockDevice: Add mbed namespace to BD_ERROR_DEVICE_ERROR

    14844
    Analogout free implementation for F4/F7/H7 boards

    14843
    InterruptIn : STM32: Implemented error catching for multiple gpio on the same irq line

    14842
    Move connectivity lora stubs

    14838
    Eth: STM32: Updating documentation on mbed_otp_mac_address()

    14837
    K64F: Fix pin names and migrate to Arduino Uno form factor

    14835
    Move stubs cellular headers

    14834
    Move connectivity cellular stubs

    14828
    CMake: Add CMake to mbed-psa greentea tests

    14827
    Move hal stubs to hal directory

    14826
    CMake: unit-tests: Make events UNITTESTS only depend on headers it uses

    14824
    BLE: Manual BLE security manager db synchronisation

    14823
    Move events stubs to events dir

    14822
    STM32H7: correction for FLASH API for CM4

    14820
    BLE: Clarify ble event docs with crossreferences

    14819
    Move rtos stubs to the rtos directory

    14817
    Add system time read/write callbacks to mbed-mesh-api

    14816
    Nanostack release v14.0.0

    14815
    Enable PSA tests on K64F/K66F and fix missing PSA Crypto init in TLSSocketWrapper

    14814
    BG96: Add correct get_ip_address implementation

    14813
    CMake: unit-tests: Make drivers unittests only depend on headers it uses

    14808
    driver/i2c: STM32: I2C performance issue solved.

    14807
    M2354: inherit PSA_V8_M devices

    14803
    Use standalone greentea-client

    14787
    Cypress Asset Update

    14786
    Move mbed-stubs-drivers to the drivers directory

    14783
    tfm-post-build: Don’t capture subprocess stdout

    14780
    Update python requirements

    14778
    CAN TxIRq callback never called -STM32G474

    14776
    driver/i2c: STM32: I2C memory usage and time delay in read-write solved.

    14773
    Move mbed-stubs-platform to the platform directory

    14751
    Fix for fcntl() flags definition

    14718
    Feature: Make changes for Cortex-A5 support

    14716
    Cellular: Add AT handler buffer size to configuration

    14688
    Solution for mutex problem in CAN read ISR

    14677
    Changes required in STM CAN read API

    14663
    Portenta: Add support to generic COMPONENT_WHD

    14227
    CYW43XXX: Add generic transport layer

    Using this release

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

    Downloads: zip tar.gz

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

    Summary

    The main changes in this release are further enhancements to connectivity with changes to socket APIs and to the Mesh support for Wi-SUN.

    Support for one new target is added too:

    • Nuvoton M2354 - https://os.mbed.com/platforms/NUMAKER-M2354/

    Migration Guide

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

    LWIP Broadcast socket option added

    14752

    Summary of changes

    This PR adds Broadcast socket option

    Impact of changes

    No impact

    Migration actions required

    Not needed

    Fix ‘netsocket: several dynamic allocation results not checked’ (#14210)

    14740

    Summary of changes

    This changes adds std::nowthrow and the checks for allocation failure to all places in the netsocket portion that lacked it. This change addresses #14210.

    Impact of changes

    add_event_listener in NetworkInterface now returns an error if the method fails. Previous attempts to add the event listener would attempt to use an unchecked standard dynamically allocated ns_list_* item.
    In other cases, the dynamically allocated items will now be checked, and if unsuccessful, will return after cleaning up any outstanding issues.
    TCPSocket::accept will now check that its own internally allocated new TCPSocket call will succeed, and if not, will clean up the stack resources. This should help when memory is low but an incoming connection requests a connection when the TCPSocket is listening.

    Migration actions required

    As new calls are now handled, code that did not check against this failure may now check for failure and handle it at the application layer.
    add_event_listener now returns nsapi_error_t instead of void. The two return values possible are NSAPI_ERROR_OK and NSAPI_ERROR_NO_MEMORY in the case of memory allocation failure.

    Mesh api: Added PHY mode, channel plan IDs and configuration functions

    14629

    Summary of changes

    Support for Wi-SUN FAN v1.1 PHY mode ID and channel plan ID in Mesh API.
    - Enables using OFDM modulation with Wi-SUN stack.
    - This change is copied from PR: https://github.com/ARMmbed/mbed-os/pull/14161
    Implemented domain configuration functions in mesh API:
    - Functions will set, get and validate the parameters using corresponding Nanostack API.
    - This change is copied from PR: https://github.com/ARMmbed/mbed-os/pull/14251

    Enable the RWW function of Macronix Flash MX25LW51245G in OSPI block device driver

    14221

    Summary of changes

    Update PR #12644.
    Add source code about RWW(read while write) in OSPI block device driver for using the RWW function Macronix octaflash MX25LW51245G to improve performance.

    Impact of changes

    Enable the RWW function of MX25LW51245G.

    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

    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

    Contents

    Ports for Upcoming Targets

    14746
    STM32WB: introduce STM32WB15CC NUCLEO

    14441
    M2354: Support Nuvoton’s new target

    Fixes and Changes

    14801
    BKE: fix statements outside correct feature guard blocks

    14797
    run example-tls on faster K64F board (than K66F)

    14772
    Improve implementation of Mbed TLS timing

    14768
    Update mbed-coap to version v5.1.11

    14767
    connectivity tests: early skip fix

    14765
    Fix unittest check

    14760
    mbedtls: Rename Mbed timing implementation

    14756
    mbedtls: Add an alt implementation of timing

    14753
    Add mbed prefix into atomic

    14752
    LWIP Broadcast socket option added

    14750
    Increase SPI stack size to 2048 for BlueNrg driver

    14749
    Fcntl setting improvement,

    14748
    Correct ufsi timing calculation

    14747
    BLE: fix advertising set termination event

    14746
    STM32WB: introduce STM32WB15CC NUCLEO

    14743
    Nuvoton: Support watchdog on M251/M261 series

    14741
    MbedTLS: Add definition checks for TRNG

    14740
    Fix ‘netsocket: several dynamic allocation results not checked’ (#14210)

    14739
    M2354: Substitute HIRC for HXT to clock PLL

    14738
    Gate ticker (timer0) clock on deepsleep for MAX32620FTHR

    14737
    BLE: Add cmake unittest fakes for BLE and events

    14736
    STM32 USB: update init

    14734
    STM32WL LORA: HW specific out of STM32WL_LoRaRadio class

    14733
    STM32H7 ADC : dual pad feature update

    14729
    tools/STM32 Modified Python script generates Peripheral Pins

    14724
    STM32G0: correct voltage scaling control

    14722
    STM32 TRNG: update init to match all configs

    14721
    Nuvoton: Enable no HXT/LXT configurability

    14720
    STM32L5: corrected voltage scaling when using MSI

    14713
    lgtm: Add initial LGTM configuration file

    14710
    BLE: support non-low power devices

    14709
    CMake: Remove forgotten debug message

    14708
    test: Fix function does not return a value warnings

    14705
    Fix frozen tools check never failing

    14704
    Pin name tests update

    14702
    Silence expansion-to-defined for nrfx

    14701
    Add Travis test to make sure text files are UTF-8 encoded

    14699
    STM32 astyle format

    14698
    STM32: Fixed I2C Bug

    14697
    TESTS: rename variable interface to fix broken tests

    14693
    Fix compilation errors with kvstore - TDB_INTERNAL option to store BLE bonding info

    14692
    STM32WB: improve FLASH size

    14691
    Add GitHub action for issue triaging script

    14689
    Information on Asynchronous SPI limitation on High Speeds

    14687
    STM32L5 update drivers version to CUBE V1.4.0

    14686
    STM32: correct __cplusplus brackets

    14684
    Fix missing as_entry method in KVStoreSecurityDb

    14683
    Baremetal tests: enable BLE tests with NUCLEO_WB55RG

    14678
    Serial: remove shadowing member variables

    14675
    i2c: start() should aquire the bus

    14674
    Update mbed-coap to version v5.1.10

    14672
    BLE: Fix advertising start and stop

    14671
    enable aws example test in CI

    14670
    STM32: add information in README for SLEEP feature

    14669
    STM32L152: Added ADC Bank_B functionality

    14668
    Driver: I2C: STM32F2/STM32F4/STM32L1: Fix alternate i2c read.

    14667
    Update GCC except.S to support ARMC6 and use GCC assembly with ARM toolchain in CMake

    14665
    Travis: Move frozen tools check to the end

    14664
    Enable FlashIAP for MCU_NRF52832

    14662
    Add CANMessage deep comparison operators

    14659
    STM32: make i2c_salve_read return the number of bytes read

    14652
    tls: Upgrade to Mbed TLS v2.25.0

    14629
    Mesh api: Added PHY mode, channel plan IDs and configuration functions

    14617
    Add legacy I2C/SPI pin aliases

    14608
    STM32H7 update drivers version to CUBE V1.9.0

    14593
    STM32F7 update drivers version to CUBE V1.16.1

    14592
    STM32G4 update drivers version to CUBE V1.4.0

    14574
    Fix string buffer length in UUID trace helper

    14547
    CMake: Remove all unittest.cmake script from test suite

    14536
    STM32: Add LP_TICKER and US_TICKER optimisation macro

    14471
    COMPONENT_WHD: make reusable code available for other targets

    14441
    M2354: Support Nuvoton’s new target

    14221
    Enable the RWW function of Macronix Flash MX25LW51245G in OSPI block device driver

    Test Report

    Release automated CI test

    In addition to regular Pull Request tests and Nightly test, we also ran a nightly release test on mbed-os 6.12.0-RC1

    Results for the tests we run in CI on mbed-os 6.12.0-RC1 (nightly):

    • Build Greentea ARMC6 - SOME FAILS (Issue: MBEDOSTEST-1163 - ARMC6 Failed to build mbed OS with LTO options)
    • Build Greentea GCC_ARM - ALL PASSED
    • Build Examples ARMC6 - ALL PASSED
    • Build Examples GCC_ARM - ALL PASSED
    • Build Cloud Examples ARMC6 - ALL PASSED
    • Build Cloud Examples GCC_ARM - ALL PASSED
    • Build CMAKE Examples ARMC6 - ALL PASSED
    • Build CMAKE Examples GCC_ARM - ALL PASSED
    • Build CMAKE Cloud Examples ARMC6 - ALL PASSED
    • Build CMAKE Cloud Examples GCC_ARM - ALL PASSED
    • Unittest Test matrix - ALL PASSED
    • GreenTea test matrix - ALL PASSED
    • Examples test matrix - ALL PASSED
    • CMAKE Examples test matrix - ALL PASSED
    • Exporter Test - SOME FAILS (Issue: IOTCORE-1663 - Nightly: Export uvision failing with missing context fault handler)
    • Cloud Client integration Test - ALL PASSED
    • Memory Usage Test - ALL PASSED

    Toolchain Coverage

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

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

    Targets Coverage

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

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

    • ARM_MUSCA_S1
    • DISCO_L457VG_IOT01A
    • K64F
    • K66F
    • NRF52840_DK
    • NUCLEO_F429ZI
    • NUCLEO_F767ZI
    • NUCLEO_WB55RG
    • FPGAs on K64F, NRF52840_DK, NUCLEO_F429ZI, NUCLEO_F767ZI, NUCLEO_WB55RG, and DISCO_L457VG_IOT01A

    We have the following issues on the test jobs:

    • MBEDOSTEST-1163 - ARMC6 Failed to build mbed OS with LTO options
    • IOTCORE-1663 - Nightly: Export uvision failing with missing context fault handler

    Test Numbers

    Greentea test number 1723 (+2)
    Unittest number 741 (-1)

    Code Coverage

    Test Code Coverage been tracked and information is published on COVERALLS

    Memory Monitoring

    Observed no significant changes from mbed-os-6.11.0

    Using this release

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

    Downloads: zip tar.gz

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

    Summary

    This release doesn’t contain any major new features, but we’ve made some changes to APIs to extend existing functionality, added an experimental API to our CAN APIs, and marked some APIs as deprecated, hence minor release increment.

    Migration Guide

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

    Deprecate broken TDB_EXTERNAL_NO_RBP and FILESYSTEM_NO_RBP in kv_config

    14657

    Summary of changes

    Replaces #14490: changed from removal to deprecation due to the Mbed OS release model.
    NO_RBP (no rollback protection) is intended to not require an internal TDB, however, DeviceKey, which we use to derive SecureStore’s encryption key, still does. Currently, no internal TDB is created with these two configurations, meaning there’s no way to store the DeviceKey and SecureStore doesn’t work. The configurations TDB_EXTERNAL_NO_RBP and FILESYSTEM_NO_RBP are broken due to this design flaw.
    This PR deprecates the non-working configurations, with their documentations removed but code and configurations kept with deprecation warnings. They will be completely removed from the next major release.

    Impact of changes

    Existing applications that use TDB_EXTERNAL_NO_RBP and FILESYSTEM_NO_RBP will still be able to compile for now, until we fully remove the two configurations in the future. But they have never been functional, so no application should have ever been able to use them.

    Migration actions required

    Applications that have storage.storage_type set to TDB_EXTERNAL_NO_RBP or FILESYSTEM_NO_RBP should switch to use TDB_INTERNAL, TDB_EXTERNAL, FILESYSTEM or default depending on their use cases.

    Add API to get Wi-SUN Neighbor Table

    14619

    Summary of changes

    Added nbr_info_get API to get Wi-SUN neighbor table information in mbed-mesh-api.
    mesh_nw_statistics_t structure in mbed-mesh-api has been updated with more statistics of the Wi-SUN interface.
    This is upstream of PR#14586

    Added API to reset MAC statistics and Wi-SUN statistics

    14553

    Summary of changes

    Added API to reset MAC statistics and Wi-SUN statistics.
    This is copied from https://github.com/ARMmbed/mbed-os/pull/14439

    Implement polymorphism for CAN driver

    14336

    Summary of changes

    This PR introduces experimental polymorphism for the CAN C++ API. This allows alternate implementations (eg: external CAN interfaces) that are compatible with the internal implementation.
    See #13209 for the surrounding discussion.

    Impact of changes

    None, it only affects the user if they have the EXPERIMENTAL_API feature enabled.

    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

    Wi-SUN Hardfaults with IAR compiled image with Mbed OS 5.15.0

    • Description: Mesh Wi-SUN FAN may HardFault in rare occasions with IAR8 compiled binaries during initial network connection.
    • Workaround: The workaround is to use other compilers.
    • Reported Issue: IOTTHD-3898
    • Priority: Major

    Test Report

    Release automated CI test

    In addition to regular Pull Request tests and Nightly test, we also ran a nightly release test on mbed-os 6.11.0-RC1

    Results for the tests we run in CI on mbed-os 6.11.0-RC1 (nightly):

    • Build Greentea ARMC6 - SOME FAILS (Issue: MBEDOSTEST-1163 - ARMC6 Failed to build mbed OS with LTO options)
    • Build Greentea GCC_ARM - ALL PASSED
    • Build Examples ARMC6 - ALL PASSED
    • Build Examples GCC_ARM - ALL PASSED
    • Build Cloud Examples ARMC6 - ALL PASSED
    • Build Cloud Examples GCC_ARM - ALL PASSED
    • Build CMAKE Examples ARMC6 - ALL PASSED
    • Build CMAKE Examples GCC_ARM - ALL PASSED
    • Build CMAKE Cloud Examples ARMC6 - ALL PASSED
    • Build CMAKE Cloud Examples GCC_ARM - ALL PASSED
    • Unittest Test matrix - ALL PASSED
    • GreenTea test matrix - ALL PASSED
    • Examples test matrix - ALL PASSED
    • CMAKE Examples test matrix - ALL PASSED
    • Exporter Test - SOME FAILS (Issue: IOTCORE-1663 - Nightly: Export uvision failing with missing context fault handler)
    • Cloud Client integration Test - ALL PASSED
    • Memory Usage Test - ALL PASSED

    Toolchain Coverage

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

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

    Targets Coverage

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

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

    • ARM_MUSCA_S1
    • DISCO_L457VG_IOT01A
    • K64F
    • K66F
    • NRF52840_DK
    • NUCLEO_F429ZI
    • NUCLEO_F767ZI
    • NUCLEO_WB55RG
    • FPGAs on K64F, NRF52840_DK, NUCLEO_F429ZI, NUCLEO_F767ZI, NUCLEO_WB55RG, and DISCO_L457VG_IOT01A

    We have the following issues on the test jobs:

    • MBEDOSTEST-1163 - ARMC6 Failed to build mbed OS with LTO options
    • IOTCORE-1663 - Nightly: Export uvision failing with missing context fault handler

    Test Numbers

    Greentea test number 1721 (+0)
    Unittest number 742 (+0)

    Code Coverage

    Test Code Coverage been tracked and information is published on COVERALLS

    Memory Monitoring

    Observed no significant changes from mbed-os-6.10.0

    Contents

    Ports for Upcoming Targets

    14578
    STM32 : new DISCO_WB5MMG target

    14505
    Adding NXP TARGET- MIMXRT1170_EVK

    Fixes and Changes

    14661
    Delete STM32F401XE.ld

    14657
    Deprecate broken TDB_EXTERNAL_NO_RBP and FILESYSTEM_NO_RBP in kv_config

    14656
    CMake: Only force Ninja response files on Windows

    14655
    mbedtls_stub: Add missing include

    14653
    requirements: Relax Click version requirement

    14651
    STM32L4 update drivers version to CUBE V1.17.0

    14631
    driver/I2C: STm32: Updated HAL_I2C_ErrorCallback function to store information about error reason in obj_s->event

    14628
    ARDUINO_UNO form factor and new PinNames for MIMXRT1050 target

    14627
    Dispatch Gap::stopPeriodicAdvertising to the right function.

    14626
    STM32WB update drivers version to CUBE V1.11.1

    14625
    BLE: Fix overwriting attribute data from read auth callback

    14624
    error: use __INITIAL_SP from cmsis instead of RTX one

    14623
    Updated SDK 2.9.1 and added Flash Support for MIMXRT1170_EVK

    14619
    Add API to get Wi-SUN Neighbor Table

    14612
    CAN: fix slave CAN start filter bank setup

    14609
    STM32L0 update drivers version to CUBE V1.12.0

    14605
    BLE: Fix traces

    14603
    Avoid init class definition for compatibility

    14602
    Deprecate indications event onConfirmationReceived

    14599
    STM32WL: enable lora with baremetal

    14594
    STM32_gen_PeripheralPins.py : TargetName correction

    14589
    fix(docs): corrects various typos in project documentation

    14588
    Add v8.1-M architecture awareness

    14587
    create symlink for all sub examples which has mbed-os.lib

    14585
    add #include “wsf_os.h” into hci_drv_apollo3.h

    14583
    musca: Add detect_code for MUSCA B1

    14582
    Update TF-M to v1.3.0

    14581
    STM32G4 : serial issue with LP_UART1

    14578
    STM32 : new DISCO_WB5MMG target

    14576
    Trace: Change tr_debug color from gray to bright blue

    14573
    Nanostack release v13.0.0

    14571
    CMake: STM32: Add missing emac init files

    14569
    remove cmake specific example list

    14567
    M487: Resolve WDT reset H/W limit

    14561
    Add bare metal support to Renesas targets

    14555
    Nuvoton: Fix hal_watchdog_kick() with WDT stopped

    14554
    HAL ticker tests update

    14553
    Added API to reset MAC statistics and Wi-SUN statistics

    14551
    Travis: update to focal dist

    14550
    Fix DeviceKey documentation regarding RoT

    14548
    STM32F4 update drivers version to CUBE V1.26.1

    14542
    STM32F3 update drivers version to CUBE V1.11.2

    14540
    Improve condition for declaring struct timeval

    14539
    STM32G0 update drivers version to CUBE V1.4.1

    14538
    Cmake: Add MBED_TEST_MODE macro

    14537
    Better document MemoryPool behaviour

    14505
    Adding NXP TARGET- MIMXRT1170_EVK

    14497
    Check for duplicate status callbacks before adding to the list

    14451
    STM32 : enable PinMap_GPIO table

    14336
    Implement polymorphism for CAN driver

    13791
    mbedtls: Don’t attempt to use default_random_seed

    Using this release

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

    Downloads: zip tar.gz

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

    Summary

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

    Migration Guide

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

    Remove ownership/acquire in QSPI/OSPI driver

    14437

    Summary of changes

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

    Impact of changes

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

    BLE: replace obsolete services with the new services repo

    14436

    Summary of changes

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

    Standard Pin Names

    14381

    Summary of changes

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

    Implement polymorphism for DigitalIn/Out/InOut

    13209

    Summary of changes

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

    Impact of changes

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

    Migration actions required

    None

    Known Issues

    We publish Mbed OS as a collection of modules on GitHub. Issues are raised in the specific repositories and then tracked internally. The purpose of this section is to provide a single view of the outstanding key issues that have not been addressed for this release. As such, it is a filtered and reviewed list based on priority and potential effect. Each item summarizes the problem and includes any known workarounds, along with a link to the GitHub issue (if applicable). We welcome any comments or proposed solutions.

    For more information about an issue, contact us on the forum.

    TLS: IP addresses in the X.509 certificate subjectAltNames

    • Description: Parsing IP addresses in the X.509 certificate subjectAltNames is not supported yet. In certificate chains relying on IP addresses in subjectAltNames a BADCERT_CN_MISMATCH error is returned.
    • Workaround: merge branch https://github.com/ARMmbed/mbedtls/tree/iotssl-602-san-ip into your copy of Mbed TLS before building the application. It is still in EXPERIMENTAL stage, use it on your own responsibility!
    • Reported Issue: Issue reported by a customer in email.
    • Priority: MAJOR

    TLS: Mismatch of root CA and issuer of CRL not caught

    • Description: The x509_crt_verifycrl() function ignores the CRL, when the CRL has an issuer different from the subject of root CA certificate.
    • Workaround: Make sure that the issuer of the CRL and the root CA certificate’s subject are the same before passing them to x509_crt_verifycrl().
    • Reported Issue: Reported by a partner.
    • Priority: MAJOR

    TLS: Self Test Failure with Some Hardware Accelerators

    • Description: Most HW acceleration engines (if not all) require the parameters to be from contiguous memory.
      All the self tests use test vectors that are defined in the .bss section, which means these are not contiguous. This causes the self test to possibly fail, when implementing HW accelerated engines.
    • Workaround: There are no known workarounds.
    • Reported Issue: Reported by the development team.
    • Priority: MAJOR

    TLS: Hardware-accelerated hash creates CBC padding oracle in TLS

    • Description: The current countermeasures against CBC padding oracle attacks in Mbed TLS call a low level internal API. The implementation of this API might not be possible with the hardware accelerator API and even if it is, the timing might still have detectable differences. The lower level API is called out of sequence and accelerators that are not aware of this might crash.
    • Workaround: Keep MBEDTLS_SSL_ENCRYPT_THEN_MAC enabled in mbedtls/config.h and enable the Encrypt-then-MAC extension (RFC7366) on the peers side.
    • Reported Issue: Reported by the development team.
    • Priority: MAJOR

    Crypto: Mbed OS ATECC608A example fails to build with IAR

    • Description: The current ATECC608A secure element example fails to build with the IAR toolchain. The Microchip-provided cryptoauthlib library does not build with IAR.
    • Workaround: Use a different toolchain, like GCC_ARM.
    • Reported Issue: https://github.com/MicrochipTech/cryptoauthlib/issues/116
    • Priority: Minor

    Wi-SUN Hardfaults with IAR compiled image with Mbed OS 5.15.0

    • Description: Mesh Wi-SUN FAN may HardFault in rare occasions with IAR8 compiled binaries during initial network connection.
    • Workaround: The workaround is to use other compilers.
    • Reported Issue: IOTTHD-3898
    • Priority: Major

    Test Report

    Release automated CI test

    In addition to regular Pull Request tests and Nightly test, we also ran a nightly release test on mbed-os 6.10.0-RC1

    Results for the tests we run in CI on mbed-os 6.10.0-RC1 (nightly):

    • Build Greentea ARMC6 - SOME FAILS (Issue: MBEDOSTEST-1163 - ARMC6 Failed to build mbed OS with LTO options)
    • Build Greentea GCC_ARM - ALL PASSED
    • Build Examples ARMC6 - ALL PASSED
    • Build Examples GCC_ARM - ALL PASSED
    • Build Cloud Examples ARMC6 - ALL PASSED
    • Build Cloud Examples GCC_ARM - ALL PASSED
    • Build CMAKE Examples ARMC6 - ALL PASSED
    • Build CMAKE Examples GCC_ARM - ALL PASSED
    • Build CMAKE Cloud Examples ARMC6 - ALL PASSED
    • Build CMAKE Cloud Examples GCC_ARM - ALL PASSED
    • Unittest Test matrix - ALL PASSED
    • GreenTea test matrix - ALL PASSED
    • Examples test matrix - ALL PASSED
    • CMAKE Examples test matrix - ALL PASSED
    • Exporter Test - SOME FAILS (Issue: IOTCORE-1663 - Nightly: Export uvision failing with missing context fault handler)
    • Cloud Client integration Test - ALL PASSED
    • Memory Usage Test - ALL PASSED

    Toolchain Coverage

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

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

    Targets Coverage

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

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

    • ARM_MUSCA_S1
    • DISCO_L457VG_IOT01A
    • K64F
    • K66F
    • NRF52840_DK
    • NUCLEO_F429ZI
    • NUCLEO_F767ZI
    • NUCLEO_WB55RG
    • FPGAs on K64F, NRF52840_DK, NUCLEO_F429ZI, NUCLEO_F767ZI, NUCLEO_WB55RG, and DISCO_L457VG_IOT01A

    We have the following issues on the test jobs:

    • MBEDOSTEST-1163 - ARMC6 Failed to build mbed OS with LTO options
    • IOTCORE-1663 - Nightly: Export uvision failing with missing context fault handler

    Test Numbers

    Greentea test number 1721 (+0)
    Unittest number 742 (-1)

    Code Coverage

    Test Code Coverage been tracked and information is published on COVERALLS

    Memory Monitoring

    Observed no significant changes from mbed-os-6.9.0

    Contents

    Ports for Upcoming Targets

    14259
    Support STM Nucleo-G431RB

    Fixes and Changes

    14546
    CMake: Fix mbed-802.15.4-rf driver

    14545
    examples: Deprecate mbed-os-example-bootloader

    14543
    Fix Unbuffered serial enable/disable issue on Cypress kits

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

    14532
    Make ticker computation use shift-by-0

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

    14527
    Tests: use only NUCLEO_F401RE for the NFC examples

    14524
    M487: Adjust placement of SYS_UnlockReg in WDT reset code

    14521
    Updated TARGET_STM32 board pinMap_PWM table with GPIO_NOPULL

    14516
    CMake: remove MBED_PATH and use _SOURCE_DIR/MODULE_PATH instead

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

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

    14506
    Add GattUpdatesEnabledCallbackParams struct

    14499
    STM32F1 update drivers version to CUBE V1.8.3

    14496
    STM32: cleanup around devicename information from CMSIS pack

    14491
    Update FPGA documentation

    14486
    CMake COMPONENT_BlueNRG_MS: fix mbed-ble

    14485
    STM32: RTC HSE support review changes

    14483
    Improve HeapBlockDevice, TDBStore and tests

    14482
    STM32L4: align all system_clock files

    14481
    STM32WL: update “lora.max-sys-rx-error”

    14480
    STM32: Standard Pin Names

    14479
    STM32L1: enable USBDEVICE

    14478
    STM32L1 : enable ADC after deepsleep

    14477
    STM32: Add STM32L5 in arm_pack_manager index file

    14473
    Update cmake supported example list

    14472
    CMake: support OUTPUT_EXT from targets.json

    14469
    STM32: remove critical sections in flash_program_page

    14467
    Musca targets: align and clean up configurations

    14466
    GigaDevice: Add bare metal support for targets

    14465
    Maxim: Add bare metal support to targets

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

    14460
    Ambiq: Fix baremetal build profile when using CLI 1

    14457
    Update UART pin names & add MBED_CONF_TARGET_STDIO_UART overrides

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

    14450
    FPGA SPI : decrease test frequency for ASYNC test cases

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

    14445
    STM32WB/STM32WL: watchdog LSI frequency

    14444
    STM32: reset GPIO value is analog mode

    14442
    Improve WisunInterface set_network_size docs

    14438
    Update Event Queue Documentation

    14437
    Remove ownership/acquire in QSPI/OSPI driver

    14436
    BLE: replace obsolete services with the new services repo

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

    14429
    CMake: Fix STM target build failures

    14428
    CMake targets: remove labels usage, not required anymore

    14424
    WIO_BG96: fix macro exclusion - use cellular

    14421
    SDP-K1: enable IAR compilation

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

    14381
    Standard Pin Names

    14359
    Add bare metal support to NXP targets

    14259
    Support STM Nucleo-G431RB

    14243
    STM32: Add HSE support to RTC

    14198
    Feature bluetooth traces

    13209
    Implement polymorphism for DigitalIn/Out/InOut

    Using this release

    You can fetch this release from the mbed-os GitHub repository, using the tag “mbed-os-6.10.0”.

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

  • mbed-os-5.15.7

    Downloads: zip tar.gz

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

    Summary

    This is the latest support release from the Mbed OS 5.15 branch. This brings a number of important updates which include:

    • Adding support for MIMXRT1050_EVK enabling use with Pelion device management
    • Nanostack has been updated to version 12.8.0 (primarily containing bug fixes and stability improvements to the Wi-SUN protocol)
    • The Mesh API has been updated to replace new calls with a nothrow version
    • A new method ‘set_mac_address’ has been added that allows the application to set the MAC address on the interface

    Please see below for the full list of changes.

    Migration Guide

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

    [mbed-os-5.15] Improve WisunInterface set_network_size docs

    14443

    Summary of changes

    Clarify set_network_size usage and possible parameter values.
    Clarify wisun-network-size help text in mbed-mesh-api/mbed_lib.json
    This change is copied from: https://github.com/ARMmbed/mbed-os/pull/14431

    Add integer overflow check to the malloc wrappers

    14408

    Summary of changes

    Backport of #14407
    Add a check that the combined size of the buffer to allocate and alloc_info_t does not exceed the maximum integer value representable by size_t.

    [mbed-os-5.15] Bring in MIMXRT1050_EVK changes from feature-wisun branch

    14326

    Summary of changes

    Bring in MIMXRT1050_EVK related changes from the following pull requests made to feature-wisun branch:
    PR #12562 (25 commits)
    PR #12774 (6 commits)
    PR #13063 (2 commits)
    PR #13391 (2 commits)
    PR #13526
    PR #13569
    PR #13927
    These same changes are available in the Mbed OS master via PR: https://github.com/ARMmbed/mbed-os/pull/14323
    This PR ensures that target MIMXRT1050_EVK can be used with Pelion device management. Verified manually that pelion_border-router application (MIMXRT1050_EVK) connects to Pelion DM and other Wi-SUN nodes can connect to the Wi-SUN network.

    [mbed-os-5.15] Added missing const qualifier to mesh ethernet mac addr get

    14263

    Summary of changes

    Added missing const qualifier to mesh ethernet mac addr get. This corrects coverity warning.
    This is mbed-os-5.15 version of: https://github.com/ARMmbed/mbed-os/pull/14261

    Impact of changes

    None

    Migration actions required

    None

    [mbed-os-5.15] Nanostack release v12.8.0

    14170

    Summary of changes

    Nanostack release v12.8.0 to mbed-os-5.15 branch
    This release contains bug fixes and stability improvements to the Wi-SUN protocol:

    [mbed-os-5.15] travis: fix 3.5 test bug in attrs

    14168

    Summary of changes

    pytest fetched newer attrs that caused an issue for python 3.5. We found few references with an error and they suggested to use 1.19 version.
    This is copy of : #14108 to mbed-os-5.15 branch

    [mbed-os-5.15] Corrected nanostack coverity warnings

    14147

    Summary of changes

    Corrected nanostack coverity warnings.
    This is mbed-os-5.15 version of:
    https://github.com/ARMmbed/mbed-os/pull/14146

    Impact of changes

    None

    Migration actions required

    None

    [mbed-os-5.15] Fix mbed device-management command for Python 3.8

    14057

    Summary of changes

    Bump the future module version to 0.18.0 to fix an ImportError present for Python 3.8:

    ImportError: cannot import name 'splitattr' from 'urllib.request' (/usr/lib/python3.8/urllib/request.py)
    

    The upstream issue for the future module – https://github.com/PythonCharmers/python-future/issues/447. Fixed in v0.18.0.
    Fixes #14037.
    Copied from master PR #14038

    [mbed-os-5.15] Corrected Wi-SUN certificate add and remove functions on Wi-SUN interface

    14046

    Summary of changes

    Corrected Wi-SUN certificate add and remove functions to work properly with .json certificates. .json certificates are used only if certificates added by add functions are not set. Corrected certificate add and remove functions to work properly and improved function descriptions.
    This is mbed-os-5.15 version of: https://github.com/ARMmbed/mbed-os/pull/14018

    Impact of changes

    None

    Migration actions required

    None

    FIX: update cryptography version to 2.5 or later

    14034

    Summary of changes

    Some cryptography dependency libraries not available anymore.
    Update cryptography to version 1.5 or later for TravisCI installation to be passed

    [mbed-os-5.15] Replaced new calls with nothrow version of the call on mesh api

    13954

    Summary of changes

    Replaced new calls with nothrow version of the call.
    This is mbed os 5.15 version of https://github.com/ARMmbed/mbed-os/pull/13937

    Impact of changes

    None

    Migration actions required

    None

    [mbed-os-5.15] Network interface MAC address set/get

    13920

    Summary of changes

    Add method set_mac_address that Application can use to set MAC address to the interface.
    Update get_mac_address to return MAC address correctly from EMAC.
    This PR is copied from: https://github.com/ARMmbed/mbed-os/pull/13902

    Remove nanostack-border-router example from list of supported examples

    13897

    Summary of changes

    Nanostack border router example is now owned by Pelion and has been moved out of the ARMmbed organisation. Thus this example needs to be removed from the supported examples on the 5.15 branch.

    Impact of changes

    This example will not be automatically updated when we make a 5.15 release and will not be tested in the Mbed OS CI.

    Migration actions required

    None

    mbed-os-5.15: Add FLASH, FLASHIAP & bootloader support for VK_RZ_A1H board

    13879

    Summary of changes

    Add FLASH, FLASHIAP, bootloader_supported support.
    This is the 2-nd and last part of the planned target UPDATE mentioned here #13616 (The 1-st one is here #13639)

    Known Issues

    There are no new known issues with this release.

    Contents

    Ports for Upcoming Targets

    Fixes and Changes

    14443
    [mbed-os-5.15] Improve WisunInterface set_network_size docs

    14408
    Add integer overflow check to the malloc wrappers

    14326
    [mbed-os-5.15] Bring in MIMXRT1050_EVK changes from feature-wisun branch

    14263
    [mbed-os-5.15] Added missing const qualifier to mesh ethernet mac addr get

    14170
    [mbed-os-5.15] Nanostack release v12.8.0

    14168
    [mbed-os-5.15] travis: fix 3.5 test bug in attrs

    14147
    [mbed-os-5.15] Corrected nanostack coverity warnings

    14057
    [mbed-os-5.15] Fix mbed device-management command for Python 3.8

    14046
    [mbed-os-5.15] Corrected Wi-SUN certificate add and remove functions on Wi-SUN interface

    14034
    FIX: update cryptography version to 2.5 or later

    13954
    [mbed-os-5.15] Replaced new calls with nothrow version of the call on mesh api

    13920
    [mbed-os-5.15] Network interface MAC address set/get

    13897
    Remove nanostack-border-router example from list of supported examples

    13879
    mbed-os-5.15: Add FLASH, FLASHIAP & bootloader support for VK_RZ_A1H board

    Using this release

    You can fetch this release from the mbed-os GitHub repository, using the tag “mbed-os-5.15.7”.

    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-6.9.0

    Downloads: zip tar.gz

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

    Summary

    The main new functionality delivered as part of this release is support for the current 1.2 version of the TF-M reference software provided by the Trusted Firmware project. TF-M is our recommended secure side software for a Platform Security Architecture-compatible MCU platform. You can find out more on the 1.2 features here: https://www.trustedfirmware.org/blog/tfm-v1-2-blog/

    Both the Arm provided PSA platforms, the Musca B1 and Musca B2 have been updated to support this new version of TF-M.

    Migration Guide

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

    Fix Lora timer cancellation

    14422

    Summary of changes

    Fix abusive use of LoRaWANTimer::stop. Events were cancelled even when they were being executed or after their execution.
    This change reset the event ID to 0 before calling the callback.
    A new API has been added to achieve this task: LoRaWANTimer::clear

    CMake: support signing TF-M targets with post binary hooks

    14361

    Summary of changes

    Changes: * Add a post binary hook to sign TF-M targets: mbed_post_build_tfm_sign_image() (should work for any TF-M v1.2+ targets with secure and non-secure images in separate MCUboot slots). This was refactored from the existing tools/targets/ARM_MUSCA.py. * Apply the signing hook to ARM_MUSCA_B1 and ARM_MUSCA_S1 targets. * Copy the signing keys to each target’s own directory, as per the new tools’ convention (the old key paths are kept for compatibility of CLI 1 - to be deleted eventually).

    Impact of changes

    Images built for Musca B1 and S1 with Mbed CLI 2 are now signed and able to run on the targets.

    Migration actions required

    None.

    Update TF-M support to v1.2

    14354

    Summary of changes

    This PR brings in all the changes to update trusted-firmware-m support from v1.1 to v1.2: * Mbed TLS 2.24.0 as required by TF-M v1.2 * TF-M v1.2 targets: PSA APIs from TF-M * Support for ARM_MUSCA_B1 and ARM_MUSCA_S1 (configurations, bootloader binaries, secure binaries and signing scripts, etc.) * Continued availability of psa_set_key_enrollment_algorithm() - deprecated, included for backward-compatibility only, to be removed from future TF-M updates * Miscellaneous fixes to make sure all supported PSA targets work, see the commit history for details * Changes in the trusted-firmware-m (link) and tf-m-tests (link) repositories to enable Mbed OS integration. Note that some of the changes have been upstreamed.
    Just as before this update * CYTFM_064B0S2_4343W remains on TF-M v1.0, supporting mbed-os-example-psa but not mbed-os-tf-m-regression-tests. Any updates to this target are maintained by Cypress. * Mbed PSA (non-TF-M) targets (e.g. K64F) continue to support mbed-os-example-psa. Note that Mbed PSA’s APIs currently lag behind these of TF-M.
    The following have been removed: * ARM_MUSCA_A as an Mbed target * Integration of TF-M v1.1 (replaced by v1.2) * <TARGET>_NS aliases for ARM_MUSCA_B1 and ARM_MUSCA_S1
    Not yet included in this PR, to be added in the very near future: * Image signing for ARM_MUSCA_B1 and ARM_MUSCA_S1 with Mbed CLI 2. Until we add this, please use Mbed CLI 1 for now.

    Impact of changes

    See the PR description for targets that are impacted.

    Migration actions required

    From the perspective of Mbed OS support, applications for ARM_MUSCA_B1 and ARM_MUSCA_S1 should continue to work as before.
    A board running the TF-M v1.1 firmware should be able to update to the v1.2 firmware without resetting data (verified on Musca targets), though downgrading is not possible.
    Any references to ARM_MUSCA_B1_NS and ARM_MUSCA_S1_NS as target names should be changed to have _NS removed from the names.

    Add lw ip opttion for rdnss

    14343

    Summary of changes

    Added Options to turn on RDNSS using from ICMPv6 Router Advertisements (RFC5006)
    and output packet queueing.
    Default setting in mbed_lib is the same as before and leaving features to be turned off.

    Impact of changes

    RDNSS option takes about 256 bytes of flash and each DNS entry needs 128 bytes of RAM.
    Outgoing packet caching avoids dropping packets during MAC address resolution. Requires increased RAM size for lwIP.

    Known Issues

    We publish Mbed OS as a collection of modules on GitHub. Issues are raised in the specific repositories and then tracked internally. The purpose of this section is to provide a single view of the outstanding key issues that have not been addressed for this release. As such, it is a filtered and reviewed list based on priority and potential effect. Each item summarizes the problem and includes any known workarounds, along with a link to the GitHub issue (if applicable). We welcome any comments or proposed solutions.

    For more information about an issue, contact us on the forum.

    TLS: IP addresses in the X.509 certificate subjectAltNames

    • Description: Parsing IP addresses in the X.509 certificate subjectAltNames is not supported yet. In certificate chains relying on IP addresses in subjectAltNames a BADCERT_CN_MISMATCH error is returned.
    • Workaround: merge branch https://github.com/ARMmbed/mbedtls/tree/iotssl-602-san-ip into your copy of Mbed TLS before building the application. It is still in EXPERIMENTAL stage, use it on your own responsibility!
    • Reported Issue: Issue reported by a customer in email.
    • Priority: MAJOR

    TLS: Mismatch of root CA and issuer of CRL not caught

    • Description: The x509_crt_verifycrl() function ignores the CRL, when the CRL has an issuer different from the subject of root CA certificate.
    • Workaround: Make sure that the issuer of the CRL and the root CA certificate’s subject are the same before passing them to x509_crt_verifycrl().
    • Reported Issue: Reported by a partner.
    • Priority: MAJOR

    TLS: Self Test Failure with Some Hardware Accelerators

    • Description: Most HW acceleration engines (if not all) require the parameters to be from contiguous memory.
      All the self tests use test vectors that are defined in the .bss section, which means these are not contiguous. This causes the self test to possibly fail, when implementing HW accelerated engines.
    • Workaround: There are no known workarounds.
    • Reported Issue: Reported by the development team.
    • Priority: MAJOR

    TLS: Hardware-accelerated hash creates CBC padding oracle in TLS

    • Description: The current countermeasures against CBC padding oracle attacks in Mbed TLS call a low level internal API. The implementation of this API might not be possible with the hardware accelerator API and even if it is, the timing might still have detectable differences. The lower level API is called out of sequence and accelerators that are not aware of this might crash.
    • Workaround: Keep MBEDTLS_SSL_ENCRYPT_THEN_MAC enabled 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 tests and Nightly test, we also ran a nightly release test on mbed-os 6.9.0-RC1

    Results for the tests we run in CI on mbed-os 6.9.0-RC1 (nightly):

    • Build Greentea ARMC6 - SOME FAILS (Issue: MBEDOSTEST-1163 - ARMC6 Failed to build mbed OS with LTO options)
    • Build Greentea GCC_ARM - ALL PASSED
    • Build Examples ARMC6 - ALL PASSED
    • Build Examples GCC_ARM - ALL PASSED
    • Build Cloud Examples ARMC6 - ALL PASSED
    • Build Cloud Examples GCC_ARM - ALL PASSED
    • Build CMAKE Examples ARMC6 - ALL PASSED
    • Build CMAKE Examples GCC_ARM - ALL PASSED
    • Unittest Test matrix - ALL PASSED
    • GreenTea test matrix - ALL PASSED
    • Sporadic failure for connectivity-netsocket-tests-tests-network-interface test suite is observed on hardware boards such as K64, K66F, NUCLEO_F429ZI, and NUCLEO_F767ZI. These are observed only for test performed againt our hardare lab. Tests are passing consistently on local boards. This is strongly believed to be an infrastructure issue in our hardware lab and being addressed.
    • Examples test matrix - ALL PASSED
    • CMAKE Examples test matrix - ALL PASSED
    • Exporter Test - SOME FAILS (Issue: IOTCORE-1663 - Nightly: Export uvision failing with missing context fault handler)
    • Cloud Client integration Test - ALL PASSED
    • Memory Usage Test - ALL PASSED

    Toolchain Coverage

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

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

    Targets Coverage

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

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

    • ARM_MUSCA_S1
    • DISCO_L457VG_IOT01A
    • K64F
    • K66F
    • NRF52840_DK
    • NUCLEO_F429ZI
    • NUCLEO_F767ZI
    • NUCLEO_WB55RG

    We have the following issues on the test jobs:

    • MBEDOSTEST-1163 - ARMC6 Failed to build mbed OS with LTO options
    • IOTCORE-1663 - Nightly: Export uvision failing with missing context fault handler

    Test Numbers

    Greentea test number 1675 (+0)
    Unittest number 743 (+0)

    Code Coverage

    Test Code Coverage been tracked and information is published on COVERALLS

    Memory Monitoring

    Observed no significant changes from mbed-os-6.8.0

    Contents

    Ports for Upcoming Targets

    Fixes and Changes

    14423
    STM32: AnalogOut: do not call HAL_DAC_Start in dac_write

    14422
    Fix Lora timer cancellation

    14419
    STM32: remove mbed.h include in connectivity

    14418
    EP_ATLAS: Fix mbedtools build errors

    14416
    CMake: Fix FF1705_L151CC build

    14411
    CMake: Fix Cortex-A9 flags for GCC_ARM toolchain

    14410
    CMake: Fix Renesas build error on Linux

    14407
    Add integer overflow check to the malloc wrappers

    14403
    update baud rate of CY8CKIT064B0S2_4343W to 115200

    14402
    Fix sys/stat.h issue for unit tests on macOS

    14401
    Workaround for Cortex-M33 Arm toochain linking

    14393
    Doc update: post build now supported on TF-M targets

    14392
    STM32WB: enable QSPI for custom boards

    14391
    Update secure binaries with platform init fix for ARM_MUSCA_S1

    14390
    Add extern “C” around am_hal_secure_ota.h functions

    14387
    Update serial_api.c - Issue #14353 - Setting BufferedSerial pin to NC throws runtime assertion

    14386
    Freescale: Remove IAR from list of supported toolchains

    14380
    CMake: Refactor target MCU_STM32F103xE library name

    14379
    Nuvoton: Enlarge NuMaker PWM duty cycle range

    14378
    CMake: Pass application/test name to post build operation

    14376
    CMake: Add mbed-cmsis-cortex-m into Nuvoton target

    14375
    CMake: Update readme for greentea test build procedure

    14374
    targets: Remove target. prefix from ARM-CM3DS-MPS2 override

    14373
    Add bare metal support to Nuvoton targets

    14372
    S1SBP6A: Add bare metal support

    14368
    Fix CMake include path for the minimal-printf test

    14367
    fix typo: replace underscore by hyphen in lwipstack/mbed_lib.json

    14363
    Add bare metal support to Silicon Labs targets

    14362
    Fix imgtool import for CYTFM_064B0S2_4343W signing

    14361
    CMake: support signing TF-M targets with post binary hooks

    14355
    CMake - Configure memory map per target to allow multiple add_executable

    14354
    Update TF-M support to v1.2

    14351
    STM32 - Add if !defined check for USE_HAL_XXX_REGISTER_CALLBACKS

    14350
    ARM_MPS2_Target: Fix conflicts in IAR configuration

    14349
    Add bare metal support to Nordic targets

    14348
    Add bare metal support to ARM FM targets

    14347
    Add bare metal support to Ambiq targets

    14346
    Add bare metal support to Analog Device targets

    14345
    Add bare metal support to Toshiba targets

    14344
    CMake: Fix PSOC6 post build script

    14343
    Add lw ip opttion for rdnss

    14342
    use calloc for new_interface_server

    14341
    Update stm32xx_emac driver traces

    14340
    STM32L5: enable USBDEVICE

    14339
    STM32F4 update drivers version to CUBE V1.26.0

    14338
    STM32: update readme with clock information

    14337
    STM32L1 update drivers version to CUBE V1.10.2

    14334
    CMake: Remove references of APP_TARGET

    14328
    CMake: Fix Greentea tests

    14325
    EP Atlas Target Updates

    14323
    Bring in MIMXRT1050_EVK changes from feature-wisun branch

    14321
    Mergify: remove stale label when PR is merged

    14318
    CMake: Fix path to STM32F0 GCC linker scripts

    14316
    MAX32625: Fix CMake build

    14315
    NUVOTON: Remove CMake listing of M261 include directory that do not exist

    14314
    CMake: Fix ARM MUSCA NS targets build

    14313
    CMake: Fix Cortex-M33 GCC build

    14311
    CMake: Fix Cortex-A9 builds with GCC_ARM

    14306
    CMake: Create CMSIS library targets to remove dependency on MBED_TARGET_LABELS

    14305
    BLE: fix indexing of array in Cordio host stack

    14304
    CMake: Refactor post-build hook to remove APP_TARGET references

    14303
    Add STM32F103xE SOC support

    14301
    Add bare metal support to Renesas targets

    14300
    Add bare metal support to ARM_MPS2_Target family of targets

    14299
    CMake: Refactor mapfile generation

    14298
    CMake: remove debug print

    14295
    CMake remove IAR references in the tree

    14293
    STM32L4 : align CMakeLists.txt with all STM32

    14291
    Add bare metal support to freescale targets

    14271
    Add .editorconfig file

    Using this release

    You can fetch this release from the mbed-os GitHub repository, using the tag “mbed-os-6.9.0”.

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

  • mbed-os-6.8.0

    Downloads: zip tar.gz

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

    Summary

    There is no major new functionality introduced as part of this release, but some of the enhancements we’ve made to extend BLE functionality have changed APIs, so as per semantic versioning, we’ve incremented the release version.

    This release includes further changes for CMake support in Mbed OS and this now requires the mbed-tools version to be upgraded to 7.1.0 in order to function correctly.

    The CMake changes are summarised below;

    CMake: all Mbed OS targets contain CMakelists.txt
    CMake: Post build hooks implemented (TF-M not yet supported)
    CMake: CMake targets refactored to simplify custom targets creation

    Migration Guide

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

    BLE: Add APIs to get characteristic authorization callbacks.

    14257

    Summary of changes

    This change adds two APIs to query the registered callbacks in a characteristic.

    BLE: Add API to test the presence of an event handler in a chain.

    14256

    Summary of changes

    Add a function to test if a handler is present in an event chain.

    Update EventQueue API to use chrono times

    13975

    Summary of changes

    Main dispatch function is updated to take a Chrono duration instead of an integer milliseconds parameter.
    To allow for the instances of blocking and non wait versions, which previously were actioned by passing either -1 or 0 as the millisecond delay respectively, two other functions are now available.
    dispatch_once() - new
    dispatch_forever() - internally modified from the original version but no change in functionality
    Note without this fix EventQueue dispatch function is actually broken. Events may not be dispatched at all or in the worst case the chip will crash.

    Impact of changes

    This is an API change, affecting the following areas: * The parameter passed to the EventQueue.dispatch() function will now need to be a Chrono duration.
    E.g. ‘100ms’ * The dispatch_forever() function has been changed internally but the API itself remains the same. * A new function, dispatch_once() has been added.

    Migration actions required

    The following migrations actions are required: * Calls to EventQueue.dispatch(int ms) will now need to be changed to use EventQueue.dispatch(chrono wait). This should be
    as simple as adding ‘ms’ to any passed literal value. E.g. ‘100’ becomes ‘100ms’. Variables passed in will need to be explicitly
    converted. * Calls to EventQueue.dispatch(-1) should used EventQueue.dispatch_forever() * Calls to EventQueue.dispatch(0) should used EventQueue.dispatch_once()

    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 tests and Nightly test, we also ran a nightly release test on mbed-os 6.8.0-RC1

    Results for the tests we run in CI on mbed-os 6.8.0-RC1 (nightly):

    • Build Greentea ARMC6 - SOME FAILS (Issue: MBEDOSTEST-1163 - ARMC6 Failed to build mbed OS with LTO options)
    • Build Greentea GCC_ARM - ALL PASSED
    • Build Examples ARMC6 - ALL PASSED
    • Build Examples GCC_ARM - ALL PASSED
    • Build Cloud Examples ARMC6 - ALL PASSED
    • Build Cloud Examples GCC_ARM - ALL PASSED
    • Build CMAKE Examples ARMC6 - ALL PASSED
    • Build CMAKE Examples GCC_ARM - ALL PASSED
    • Unittest Test matrix - ALL PASSED
    • GreenTea test matrix - ALL PASSED
    • Examples test matrix - ALL PASSED
    • CMAKE Examples test matrix - ALL PASSED
    • Exporter Test - SOME FAILS (Issue: IOTCORE-1663 - Nightly: Export uvision failing with missing context fault handler)
    • Cloud Client integration Test - ALL PASSED
    • Memory Usage Test - ALL PASSED

    Toolchain Coverage

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

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

    Targets Coverage

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

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

    • ARM_MUSCA_S1
    • DISCO_L457VG_IOT01A
    • K64F
    • K66F
    • NRF52840_DK
    • NUCLEO_F429ZI
    • NUCLEO_F767ZI
    • NUCLEO_WB55RG

    We have the following issues on the test jobs:

    • MBEDOSTEST-1163 - ARMC6 Failed to build mbed OS with LTO options
    • IOTCORE-1663 - Nightly: Export uvision failing with missing context fault handler

    Test Numbers

    Greentea test number 1675 (+0)
    Unittest number 743 (+0)

    Code Coverage

    Test Code Coverage been tracked and information is published on COVERALLS

    Memory Monitoring

    No observed changes from mbed-os-6.7.0

    Contents

    Ports for Upcoming Targets

    14207
    Adding NUCLEO_WL55JC support

    13979
    Support for ST STM32 NUCLEO-G431KB Development Board

    Fixes and Changes

    14289
    CMake: Refactor Cypress targets

    14286
    CMake: remove workaround for targets prior refactor

    14284
    CMake Arm SSG: refactor CMake targets

    14282
    CMake: Refactor Nuvoton targets

    14281
    CMake: refactor GigaDevice targets

    14280
    CMake: Refactor WIO_EMW3166 support

    14279
    CMake: Refactor Silicon Laboratories targets

    14277
    Apollo3: Fix run time error due to memory mapping

    14276
    CMake: refactor Samsung targets

    14275
    Fix ST targets naming and linker script issues

    14272
    Change CMAKE_BINARY_DIR to CMAKE_CURRENT_BINARY_DIR

    14270
    CMake Maxim: fix targets naming

    14269
    CMake: Refactor Toshiba targets

    14268
    CMake: Refactor NXP targets

    14267
    CMake: Refactor Nordic targets to be CMake buildsystem targets

    14266
    Fix up some ST CMake targets

    14265
    CMake: remove need for APP_TARGET

    14264
    BLE: fix termination of periodic advertising sync

    14261
    Add missing const qualifier to mesh ethernet mac addr get

    14257
    BLE: Add APIs to get characteristic authorization callbacks.

    14256
    BLE: Add API to test the presence of an event handler in a chain.

    14255
    CMake: fix naming targets

    14253
    CMake: refactor Renesas targets

    14252
    CMake: Refactor Freescale targets

    14250
    example-psa - add MUSCA_S1 and update baudrate

    14249
    STM32WL : add LoRa support

    14248
    MAX32625MBED: Gate ticker (timer0) clock on deepsleep

    14247
    CMake: Refactor Greentea test CMakeLists.txt

    14246
    ARM FM: refactor CMake targets

    14245
    STM32WL: I2C and ADC full support

    14244
    Analog Devices: refactor CMake targets

    14242
    Ambiq Micro: refactor CMake targets

    14239
    BLE: fix passkey for display being returned reversed

    14238
    Update list of licenses in LICENSE.md

    14235
    CMake: Add post build operation support

    14232
    CMake: Fix Cypress MCU_PSOC6_M4 build

    14230
    nRF52: clean pwm structures on deinit

    14228
    CMake: rename greentea test macro

    14215
    STM: Fix Hal_GetTick wrap around errors

    14213
    Add cortex-m55 to CMake support

    14212
    Expose the public Stream API

    14207
    Adding NUCLEO_WL55JC support

    14205
    CMake: better detection of memap dependencies

    14204
    Set executable suffix in CMake

    14203
    Adding USB HS Support to the SDP-K1

    14202
    BLE: return OK when stopping advertising set that is not active

    14201
    Update maximum version of intelhex to 2.3.0

    14199
    Refactor ST Mbed targets to be CMake buildsystem targets

    14197
    Upgrade gtest to 1.10

    14196
    CMake cores: fix cpu/fpu flags

    14195
    LoraRadio test update for baremetal support

    14190
    CMake cores: fix NS cores

    14181
    CMake: Add support for Mbed TLS Greentea tests

    14179
    Fix minimal-printf floating point decimal output error

    14092
    NFC: Add support for M24SR driver

    14031
    BlockDevices: specify mbed namespace where needed

    14030
    STM32H7: Compute I2C timing according current I2C clock source

    13979
    Support for ST STM32 NUCLEO-G431KB Development Board

    13975
    Update EventQueue API to use chrono times

    Using this release

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

    Downloads: zip tar.gz

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

    Summary

    There is no major new functionality introduced as part of this release, but some of the enhancements we’ve made to existing functionality have changed APIs, so as per semantic versioning, we’ve incremented the release version.

    The full details are below but in summary we’ve introduced the following changes;

    • Further evolved the Mbed CLI 2 tools by adding support to build greentea tests using CMake
    • Added the Arduino Portenta H7 as a supported target
    • Add support for the ST Microelectronis BlueNRG_2 BLE Component

    Migration Guide

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

    CMake: Add CMake support for netsocket greentea test

    14101

    Summary of changes

    • Added CMakeLists.txt file to every test suite under the netsocket test so that it can build via CMake command

    CMake: Add CMake support for events greentea test

    14095

    Summary of changes

    • Added CMakeLists.txt file to every test suite under the events so that it can build via CMake command

    CMake: Add CMake support for rtos greentea test

    14094

    Summary of changes

    • Added CMakeLists.txt file to every test suite under the rtos so that it can build via CMake command

    CMake: Add Support for hal greentea test

    14093

    Summary of changes

    • Added CMakeLists.txt file to every test suite under the hal so that it can build via CMake command

    Update events period method to check for invalid values

    14087

    Summary of changes

    The period method currently allows any ms value:
    positive, negative and zero.
    A negative value means dispatch a non periodic event. ie just once.
    0 is unspecified behaviour.
    This commit forces the user to use either positive periods or a new constant, non_periodic
    and should any other value be provided will default to non_periodic.
    A Greentea test case is also provided to check this works as
    expected.
    I’m classifying this as a feature change rather than major because allowing a zero value was actually a bug.

    Impact of changes

    If the user provides a 0 value this will now behave differently. Previously it would have run for a period of
    time as if this was an indefinite event before eventually (with a timer wrap) have unspecified behaviour.
    Now the event period will default instead to non periodic.
    To specify a non periodic event a user could previously use any negative value. Whilst this will still work (due a default
    being set on invalid values), the user is encouraged to use the new constant, ‘non_periodic’ to show that this is what was
    intended.

    Migration actions required

    Use periods that are > 0ms or non_periodic constant.

    CMake: Add CMake to platform greentea test

    14072

    Summary of changes

    • Added CMakeLists.txt file to every test suite under the platform so that it can build via CMake command
    • Added the CMake Macro mbed_greentea_cmake_macro with configurable arguments TEST_NAME, TEST_INCLUDE_DIRS, TEST_SOURCES, TEST_REQUIRED_LIBS so that it can be used across all the greentea test suite by passing their includes, sources required libraries.
    • Added CMake macro MBED_BAREMETAL_GREENTEA_TEST which can ON/OFF via CMake command-line argument at the configuration time to select/unselect baremetal greentea test

    CMake: Create mbed-greentea library

    14061

    Summary of changes

    The greentea framework provides all the infrastructure for the test suite to execute in the target like greentea-client, unity, utest so created the mbed-greentea interface library which binds all these framework sources, and all the test suite needs to add mbed-greentea lib into their target_link_library

    CMake: Add CMake to drivers greentea test

    14060

    Summary of changes

    • Added CMakeLists.txt file to every test suite under the mbed_drivers so that it can build via CMake command

    Add std::span implementation for cxxsupport

    13881

    Summary of changes

    Adds std::span implementation to cxxsupport folder in namespace mstd.
    See discussion in https://github.com/ARMmbed/mbed-os/pull/13868.

    Add Arduino Portenta H7 as target

    13826

    Summary of changes

    This PR series introduces the support for Arduino Portenta H7 .
    The patchset has been split into independent PRs for an easier review.

    Impact of changes

    Except the standalone TARGET_PORTENTA* content, some other files have been touched (all of them in separate commits).
    In particular, COMPONENT_WHD has been made generic (any mbed target implementing SERIAL_FC can now compile it) but this could impact PSOC6 targets which used to configure it via Cypress HAL.

    Support to BlueNRG_2 BLE component

    13246

    Summary of changes

    Add support to BlueNRG_2 BLE Component

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

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

    • Build Greentea ARMC6 - SOME FAILS (Issue: MBEDOSTEST-1163 - ARMC6 Failed to build mbed OS with LTO options)
    • Build Greentea GCC_ARM - ALL PASSED
    • Build Examples ARMC6 - ALL PASSED
    • Build Examples GCC_ARM - ALL PASSED
    • Build Cloud Examples ARMC6 - ALL PASSED
    • Build Cloud Examples GCC_ARM - ALL PASSED
    • Build CMAKE Examples ARMC6 - ALL PASSED
    • Build CMAKE Examples GCC_ARM - ALL PASSED
    • Unittest Test matrix - ALL PASSED
    • GreenTea test matrix - ALL PASSED
    • Examples test matrix - ALL PASSED
    • CMAKE Examples test matrix - ALL PASSED
    • Exporter Test - SOME FAILS (Issue: IOTCORE-1663 - Nightly: Export uvision failing with missing context fault handler)
    • Cloud Client integration Test - ALL PASSED
    • Memory Usage Test - ALL PASSED

    Toolchain Coverage

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

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

    Targets Coverage

    In mbed OS 6.7.0, 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.7.0 release, we run the greentea tests on the following targets:

    • NRF52840_DK
    • DISCO_L457VG_IOT01A
    • K64F
    • K66F
    • NUCLEO_F429ZI
    • NUCLEO_F767ZI
    • NUCLEO_WB55RG
    • ARM_MUSCA_S1

    We have the following issues on the test jobs:

    • MBEDOSTEST-1163 - ARMC6 Failed to build mbed OS with LTO options
    • IOTCORE-1663 - Nightly: Export uvision failing with missing context fault handler

    Test Numbers

    Greentea test number 1675 (+1)
    Unittest number 743 (+0)

    Code Coverage

    Test Code Coverage been tracked and information is published on COVERALLS

    Memory Monitoring

    No observed changes from mbed-os-6.6.0

    Contents

    Ports for Upcoming Targets

    13826
    Add Arduino Portenta H7 as target

    Fixes and Changes

    14186
    NXP: Fix CMake support and clean up

    14185
    CMake: Correct ARM toolchain MCU core flags

    14180
    Cypress: Fix CYTFM_064B0S2_4343W CMake build

    14175
    Add declaration to expose enable_* functions from SerialBase

    14173
    Update cert for testing server

    14169
    Nanostack release v12.8.0

    14166
    ARDUINO_NANO33BLE: don’t define Arduino pins if compiling in Arduino core

    14159
    CMAKE : correct “Cortex-M7F” link parameter

    14155
    CMAKE / M33 : DOMAIN_NS issue

    14154
    STM32: correct cmake compilation issues

    14149
    STM32G4: enable TRNG and correct dual bank flash detection

    14148
    Corrected nanostack coverity warnings

    14145
    STM32H7: disable uSD transceiver

    14144
    Update for Arduino Pinnames

    14143
    Travis: Remove make.py test for events and littlefs

    14142
    STM32L4: Correct heap size formula

    14137
    Storage: Fix FATFileSystem unmount issue

    14135
    NXP: Fix heap size formula in scatter files

    14134
    GigaDevice: Fix heap size formula in scatter files

    14133
    STM: Fix heap size formula in scatter files

    14132
    Apollo3: Fix heap size formula and stack start address in scatter file

    14131
    MUSCA_B1: Fix heap size formula in scatter files

    14130
    NRF52840: Fix heap size formula in scatter files

    14129
    EFM32GG: Fix heap size formula in scatter files

    14126
    tests: Limit PSA crypto tests to Arm-v7M targets

    14125
    BLE: Fix Security Manager key generation

    14120
    STM32F439 : correct cmake compilation

    14112
    ARM linking issue: compile out trace when not available

    14111
    BLE: fix scanning/advertising when extended features are available but disabled on host

    14109
    Remove deprecated connectivity examples

    14108
    travis: set attrs to 19.1.0, fixes python 3.5 issue

    14104
    CMake: Fix the listing of system_clock.c for STM32F413xH

    14103
    CMake: Add support for netsocket/network Greentea tests

    14101
    CMake: Add CMake support for netsocket greentea test

    14100
    CMake: Fix path to Ambiq BLE source file

    14099
    CMake: Add support for CORDIO Greentea tests

    14098
    CMake: Add support for LoRaWAN Greentea tests

    14095
    CMake: Add CMake support for events greentea test

    14094
    CMake: Add CMake support for rtos greentea test

    14093
    CMake: Add Support for hal greentea test

    14091
    CMake: Add support for NFC Greentea test

    14090
    CMake: Add support for Blockdevice Greentea tests

    14089
    CMake: Add support for Filesystem Greentea tests

    14088
    CMake: Add support for KVstore Greentea tests

    14087
    Update events period method to check for invalid values

    14084
    BLE: Fix GattServer callbacks not being copied to GattServer instance of the service

    14083
    Add SLEEP/DEEPSLEEP support for MAX32630FTHR

    14080
    Add bare-metal support for MAXIM targets

    14079
    CMake: Add Blockdevice dependency to KVstore library

    14078
    CMake: Add support for OSPIF blockdevice

    14076
    Replace macros in MbedTester to avoid conflicts

    14075
    Maxim targets; Add USB stack implementation

    14074
    CMake: Add cmake support for Toshiba targets

    14072
    CMake: Add CMake to platform greentea test

    14071
    Add internal subfolder to USBDriver’s CMakelists

    14068
    Enabled USBDevice in targets.json for H743ZI2

    14066
    STM32F2 update drivers version to CUBE V1.9.2

    14065
    CMake: streamline kvstore support

    14064
    examples:create build_data after example application build

    14063
    Support arbitrary storage alongside WiFi firmware in external storage on Cypress targets

    14062
    Cypress Asset Update

    14061
    CMake: Create mbed-greentea library

    14060
    CMake: Add CMake to drivers greentea test

    14055
    CMake: Remove TODO note in device_key list input source file

    14050
    fix QSPI-API for NRF52

    14049
    DISCO_L072CZ_LRWAN1: enable LORA by default

    14048
    nanostack: correct Wi-SUN certificate add and remove functions on Wi-SUN interface

    14047
    Remove unsupported Nordic SoftDevice build support

    14045
    CMake: add support for Nordic targets

    14042
    CMake: Add support for all Ambiq Micro Mbed targets

    14041
    Add SPDX identifier to files in storage

    14038
    Fix mbed device-management command for Python 3.8

    14036
    Add SD component and Update SD card SPI interface for Maxim’s MAX32630FTHR

    14035
    Remove unsupported Renesas target include files

    14032
    STM32: RESET GPIO during init is configurable

    14029
    STM32H7: FDCAN: use PLL1Q frequency for calculations

    14027
    CMake: Fix Analog Devices targets support

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

    14021
    CMake: Add support for Renesas targets

    14020
    Add SPI bitwidths to ST targets where supported

    14008
    Add proper power save mode command format for MTS_DRAGONFLY_L471

    14007
    Clean-up: TDBStore no longer requires BlockDevice to have flash behaviour

    13976
    PSoC 6: rework sleep overrides by Cypress’s debug macro

    13968
    CMake: Add support for all ARM SSG Mbed targets

    13965
    Clarify the time units stated in the delay and period function headers for events

    13944
    CMake: Add requirements.txt file for required Python modules

    13881
    Add std::span implementation for cxxsupport

    13826
    Add Arduino Portenta H7 as target

    13809
    Remove Cellular dependency in netsocket

    13246
    Support to BlueNRG_2 BLE component

    Using this release

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

    Downloads: zip tar.gz

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

    Summary

    There is no major new functionality introduced as part of this release, but some of the enhancements we’ve made to existing functionality have changed APIs, so as per semantic versioning, we’ve incremented the release version.

    The full details are below but in summary we’ve introduced the following changes;

    • BLE update to the GATT API to better reflect what the specification define
    • Add a method to allow an application to set or get the MAC address for Wi-SUN
    • Restructuring of KVStore to better support the bare metal profile
    • Enhancements to printing floating point values
    • Improved memory and performance for ticker support

    Migration Guide

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

    Update GattAuthCallbackReply_t enumeration.

    14014

    Summary of changes

    Add missing values that are present in pal::AttErrorResponse.
    This allows applications to use correct ATT error codes.
    The values have been changed to reflect what is actually defined in the specification. The 0x01 was a leftover from softdevice’s days.

    Network interface MAC address set/get

    13936

    Summary of changes

    Add method set_mac_address that Application can use to set MAC address to the interface.
    Update get_mac_address to return MAC address correctly from EMAC.
    This PR is copied from: #13902

    Restructure KVStore to one library per store type

    13908

    Summary of changes

    Fixes: #13657
    Mutually depends on: https://github.com/ARMmbed/mbed-os-example-kvstore/pull/60
    In #13307 we combined multiple KVStore types (TDBStore, FileSystemStore) and the global API into one library, kv-global-api. This is inconvenient for users of bare metal: if they only want one store type, they need to add dependencies for other unused types and the global API to "requires". This becomes cumbersome as FileSystem has many dependencies.
    This PR restructures KVStore to follow the same logic of BlockDevice: declare the interface at the top level, and treat each type/implementation as a “sub-” library. Users only need to enable the interface + the type they need. So each of the following is a library (containing mbed_lib.json): * storage/kvstore: KVStore interface * storage/kvstore/tdbstore: TDBStore : KVStore class * storage/kvstore/filesystemstore: FileSystemStore : KVStore class * storage/kvstore/securestore: SecureStore : KVStore class * storage/kvstore/kvstore_global_api: optional API to globally manage instances of KVStore, containing kvstore_global_api functions and KVMap which is a helper class for the global API * storage/kvstore/kvconfig: configurations
    Greentea and unit tests have also been moved into subdirectories of corresponding KVStore types.
    ~Note: The CMake support for KVStore has not been componentised yet - compilation with CMake still brings in all the unused types and dependencies, because everything is under one mbed-storage-kvstore target. Hopefully the CMake team will later componentise each type of KVStore into mbed-storage-kvstore-<type>. similar to what they’ve already done for BlockDevices. @0xc0170~ (Update: required CMake changed included in this PR)

    Impact of changes

    Users can enable one type of KVStore (e.g. TDBStore) without having to bring in dependencies for unused types of KVStore.

    Migration actions required

    For a bare metal application, add "kvstore" and the type of KVStore to use (e.g. "tdbstore") to "requires" in mbed_app.json. Note that the KVStore interface library is "kvstore", not "kv-global-api" which now contains only the global API.
    To use CMake (full profile and bare metal profile): Add the TDBStore sub-component you need (e.g. mbed-storage-tdbstore) and dependencies (e.g. TDBStore requires mbed-storage-blockdevice) to your app’s CMakeLists.txt.

    Add width modifier and prepending zeros for hexadecimal output and decimal precision for floating point

    13548

    Summary of changes

    Added width modifier and prepend zeros if the width modifier is given feature to printing integer, hexadecimal and floating point values. So e.g. printf("%04X", i); works now the same as the std version.
    Added precision specifier for printing floating point values, as it already existed for strings. If no precision specifier is given MBED_CONF_PLATFORM_MINIMAL_PRINTF_SET_FLOATING_POINT_MAX_DECIMALS will be used.
    This PR also fixes #13783.

    Impact of changes

    Prepending zeros and width modifier work with integer, hexadecimal and floating point values when using minimal_printf.
    Also the precision modifier works for floating point variables. If no precision specifier is given MBED_CONF_PLATFORM_MINIMAL_PRINTF_SET_FLOATING_POINT_MAX_DECIMALS is used.

    Optimise mbed_ticker_api.c

    12897

    Summary of changes

    The generic code in mbed_ticker_api.c uses run-time polymorphism to handle different tickers, and has generic run-time calculations for different ticker widths and frequencies, with a single special-case for 1MHz.
    Extend the run-time special casing to handle any conversion cases where either the multiply or divide can be done as a shift. This is a speed optimisation for certain platforms.
    Add a new option target.custom-tickers. If turned off, it promises that only USTICKER and LPTICKER devices will be used. This then permits elimination and/or simplification of runtime calculations, saving size and speed. If either both USTICKER and LPTICKER have the same width, or the same period numerator or denominator, or only one of them exists, then operations can be hard-coded. This is a significant ROM space saving, and a minor speed and RAM saving.
    We get to optimise all the calculations, but the run-time polymorphism is retained even if there is only one ticker, as it doesn’t significantly affect code size versus direct calls, and the existence of
    lp_ticker_wrapper and various us_ticker optimisations requires it, even if only LPTICKER is available.

    Impact of changes

    • Targets should make an effort to define the new LP_TICKER_XXX defines to help the optimisation kick in.

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

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

    • Build Greentea ARMC6 - SOME FAILS (Issue: MBEDOSTEST-1163 - ARMC6 Failed to build mbed OS with LTO options)
    • Build Greentea GCC_ARM - ALL PASSED
    • Build Examples ARMC6 - ALL PASSED
    • Build Examples GCC_ARM - ALL PASSED
    • Build Cloud Examples ARMC6 - ALL PASSED
    • Build Cloud Examples GCC_ARM - ALL PASSED
    • Build CMAKE Examples ARMC6 - ALL PASSED
    • Build CMAKE Examples GCC_ARM - ALL PASSED
    • Unittest Test matrix - ALL PASSED
    • GreenTea test matrix - ALL PASSED
    • Examples test matrix - ALL PASSED
    • CMAKE Examples test matrix - ALL PASSED
    • Exporter Test - SOME FAILS (Issue: IOTCORE-1663 - Nightly: Export uvision failing with missing context fault handler)
    • Cloud Client integration Test - ALL PASSED
    • Memory Usage Test - ALL PASSED

    Toolchain Coverage

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

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

    Targets Coverage

    In mbed OS 6.6.0, 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.6.0 release, we run the greentea tests on the following targets:

    • NRF52840_DK
    • DISCO_L457VG_IOT01A
    • K64F
    • K66F
    • NUCLEO_F429ZI
    • NUCLEO_F767ZI
    • NUCLEO_WB55RG

    We have the following issues on the test jobs:

    • MBEDOSTEST-1163 - ARMC6 Failed to build mbed OS with LTO options
    • IOTCORE-1663 - Nightly: Export uvision failing with missing context fault handler

    Test Numbers

    Greentea test number 1674 (+0)
    Unittest number 743 (+2)

    Code Coverage

    Test Code Coverage been tracked and information is published on COVERALLS

    Memory Monitoring

    No observed changes from mbed-os-6.5.0

    Contents

    Ports for Upcoming Targets

    Fixes and Changes

    14024
    CMake: add Samsungs, Analog devices and WICED targets

    14019
    Port analog devices to CMake

    14017
    Nuvoton: Remove DISABLE/ENABLE macro definitions in BSP

    14014
    Update GattAuthCallbackReply_t enumeration.

    14009
    ble cyw43xxx: dev/hci driver terminate

    14005
    Correct/clarify TimerEvent::insert documentation

    14003
    STM32H7: system power supply configuration

    14002
    STM32F0 update drivers version to CUBE V1.11.2

    14001
    Add missing retry to atomic exchange

    14000
    Add octa RAM calibration feature to GR-MANGO.

    13998
    Add crash reporting and autoreboot capability to MTS_DRAGONFLY_L471QG

    13996
    TDBStore: pad program units when writing record_header_t; ensure work buffer is large enough

    13995
    CMake: Add support for GigaDevice targets

    13992
    STM32_gen_PeripheralPins.py v1.19

    13988
    BLE: Fix periodic advertrising sync based on advertiser list

    13987
    CMake: Set required toolchain and processor flags globally, instead of per-target

    13985
    CMake: fix memory map generation

    13978
    S5JS100: remove idle hook in favour of Mbed-default idle hook

    13977
    CMake: Add support for all Samsung Mbed targets

    13973
    stm32: delete objects.h

    13972
    CMake: Add support for WICED target

    13970
    CMake: Add support for all Maxim Mbed targets

    13969
    Maxim: Remove support for some Maxim targets

    13964
    CMake: Add support for all ARM FM Mbed targets

    13963
    Fix ThisThread warnings

    13962
    STM: fix ARMClang sct files, using proper -E command

    13961
    Silabs: Remove EFR32_1 rail files

    13960
    Add const keyword to get_erase_size declaration

    13959
    CMake: Add support for all Silicon Labs Mbed targets

    13958
    Fix a typo in STM32F3’s CMakeList.txt

    13957
    Replaced new calls with nothrow version of the call on mesh api

    13953
    Add nanostack dependency lib

    13952
    CMake: Add support for all Freescale Mbed targets

    13951
    MCU_NRF52832 (NRF52_DK, SDT52832B): use two-region memory model to support MicroLib

    13950
    Freescale: Remove KL27Z files

    13949
    Fix mbed::Dir type handling in fat_filesystem

    13948
    CMake: Simplify BLE library inclusion

    13947
    Fix erase type determination for [Q/O/]BlockDevice::erase()

    13946
    Update to reflect Mbed CLI 2 changes

    13945
    Freescale: Remove K20XX files

    13942
    ble: Fix persistence in SecurityDB

    13939
    STM32: LSE DRIVE feature update

    13936
    Network interface MAC address set/get

    13935
    Dragonfly Nano(MTQN): power on/off so soft_power_on() fix

    13934
    CMake: Add support for Cypress targets

    13932
    Reduce ST QSPI/OSPI trace verbosity to debug

    13931
    STM32 I2C: use correct HAL API

    13930
    CMake: pass macros to ARM toolchain linker

    13929
    STM32: LPUART clock source selection up to a serial driver

    13928
    Clean remnant of experiment with ARM toolchain

    13925
    Cypress: Remove CY8CKIT_064S2_4343W files

    13924
    CMake: Add support for all NXP Mbed targets

    13922
    CMake: add nuvoton targets

    13921
    TARGET_NXP: Remove support for LPC55S69

    13918
    TARGET_NXP: Remove support for LPC11U6X

    13917
    Move SFDP to blockdevice

    13915
    CMake: add all TARGET_STM targets

    13914
    STM32 FLASH API : add critical sections

    13908
    Restructure KVStore to one library per store type

    13907
    Workaround to fix RTC-reset issue on the EFM32GG11_STK3701

    13906
    STM32G070: generic target creation

    13898
    Adding CAN function to GR-MANGO

    13896
    STM32 OSPI support

    13780
    STM32 H7: fix USB in sleep mode

    13777
    STM32 : full GPIO reset during mbed init

    13755
    Fix MBED_ERROR call in init_os_timer

    13548
    Add width modifier and prepending zeros for hexadecimal output and decimal precision for floating point

    13085
    Change MBED_STATIC_ASSERTs version for built-in

    12897
    Optimise mbed_ticker_api.c

    Using this release

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

    Downloads: zip tar.gz

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

    Summary

    The Mbed team are delighted to introduce the foundations of our new command line build tools, which use CMake to configure the build artifacts and, we hope, significantly improve the build experience for Mbed developers. These tools are still being refined and developed, but the basics are now available and will co-exist alongside the existing Mbed CLI tools for the time being. We’d really appreciate feedback from Mbed users on these tools as we want to ensure Mbed developers are seeing value in them.

    The new tools can be found here .

    We’ve also added some changes to how the Cordio BLE stack is configured to work with Nordic targets.

    Migration Guide

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

    Update NRF ble configuration options

    13910

    Summary of changes

    This allows for changes to the buffers allocated in NRFCordioHCIDriver.cpp. Since the amount of buffers can be configured using the mbed_app.json it is only natural to also configure the buffer sizes that go with the number of buffers.
    I also removed the confusing configuration settings used only by the NRF52840 which overruled other settings made by the cordio-ll config.

    Impact of changes

    No functionality change, only configuration changes

    Migration actions required

    All the default settings remained the same and if no custom configuration is used in mbed_app.json the no actions are required.
    If you use the NRF52840 and have overruled any of the following settings you may need to change:
    - "cordio-ll-nrf52840.phy-coded-support" into "cordio-ll.phy-coded-support"
    - "cordio-ll-nrf52840.extended-advertising-size" into "cordio-ll.extended-advertising-size"
    - "cordio-ll-nrf52840.max-acl-size" into "cordio-ll.max-acl-size"
    - "cordio-ll-nrf52840.tx-buffers" into "cordio-ll.tx-buffers"

    CMake: Add initial support

    13566

    Summary of changes

    Addition of CMake modules and input source files to configure the project and generate the scripts needed by the build systems (tested with Unix Makefiles and Ninja) to build Mbed OS as a library. Mbed OS is built as collection of all libraries supported by a given target.
    There are two main targets: mbed-os and mbed-baremetal. The rest of the components in the Mbed OS repository are targets prefixed with mbed-, for example mbed-ble and mbed-netsockets.
    Even though this is still under development. This PR was raised as the current state does not affect builds of the OS with the traditional tools (Mbed CLI, Online compiler, Mbed Studio).
    For current state of development, supported targets, supported toolchains, known issues, and build steps, see “Documentations” section below.

    Impact of changes

    Adding/removing source files or subdirectories requires adding or updating CMake input source files as all source files are listed in them.

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

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

    • Build Greentea ARMC6 - SOME FAILS (Issue: MBEDOSTEST-1163 - ARMC6 Failed to build mbed OS with LTO options In Progress)
    • Build Greentea GCC_ARM - ALL PASSED
    • Build Examples ARMC6 - ALL PASSED
    • Build Examples GCC_ARM - ALL PASSED
    • Build Cloud Examples ARMC6 - ALL PASSED
    • Build Cloud Examples GCC_ARM - ALL PASSED
    • Build CMAKE example ARM - ALL PASSED
    • Build CMAKE example GCC_ARM - ALL PASSED
    • Unittest - ALL PASSED
    • Greentea Test - SOME FAILS (Some tests in K66F have failed due to unavailability of properly configured boards in farm.)
    • Example Test - ALL PASSED
    • CMAKE Example Test - ALL PASSED
    • Exporter Test - SOME FAILS (Issue: IOTCORE-1663 - Nightly: Export uvision failing with missing context fault handler Open)
    • Cloud Client integration Test - ALL PASSED
    • Memory Usage Test - ALL PASSED

    Toolchain Coverage

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

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

    Targets Coverage

    In mbed OS 6.5.0, 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.5.0 release, we run the greentea tests on the following targets:

    • NRF52840_DK
    • K66F - Please note as highlighted above that this platform is considered unstable at this stage.
    • K64F
    • NUCLEO_F429ZI
    • NUCLEO_F767ZI
    • NUCLEO_WB55RG

    We have the following issues on the test jobs:

    • MBEDOSTEST-1163 - ARMC6 Failed to build mbed OS with LTO options In Progress
    • IOTCORE-1663 - Nightly: Export uvision failing with missing context fault handler Open

    Test Numbers

    • Greentea test number 1674 (+179)
    • Unittest number 741 (+0)

    Code Coverage

    Test Code Coverage been tracked and information is published on COVERALLS

    Memory Monitoring

    No observed change from mbed-os-6.4.0

    Contents

    Ports for Upcoming Targets

    Fixes and Changes

    13910
    Update NRF ble configuration options

    13905
    STM32L4: ADC compilation issue with L422

    13904
    CMake STM32L475xG: fix linker/startup inclusion

    13900
    mergify: fix travis rename check

    13895
    CMake: Fix error that prevented re-build

    13894
    Fix compilation warnings

    13893
    MIMXRT1050_EVK return bootloader support

    13891
    Remove nanostack border router from examples list

    13889
    Nanostack release v12.6.2

    13887
    CMake: Specify mbedtools in the build instructions

    13886
    Don’t require too old mbed tools

    13885
    TEST: update cmake example on ble examples

    13882
    CMake: Use relative paths to list source files and directories

    13880
    S1SBP6A fix RTC range

    13878
    Add missing blockdevice mbed_lib.json

    13874
    STM32F3 update drivers version to CUBE V1.11.1

    13870
    CMake: Address review comment from PR#13566

    13869
    Create a USB drivers library

    13867
    SysTimer: Prevent unacknowledged tick overflow when halted for a while

    13864
    Fix bare metal builds on Cypress targets

    13862
    STM32 SERIAL: free RTS/CTS pins

    13861
    Ambiq apollo3 fix of an SPI related SD bug

    13859
    STM32L4: Use HSI for LPUART

    13853
    Samsung: fix baremetal #13851

    13849
    Add apollo3 sleep

    13848
    Q/OSPIFBlockDevice: fix misconception in minimum program size

    13847
    Add workaround for files with permissive binary licenses

    13846
    STM32 usb: fixing missing header file

    13843
    Fix linking issue #13793 when using -O0 compiler optimization in ARMC

    13839
    cmsis: remove math header file

    13833
    Add new Gap::EventHandler callbacks to ChainableGapEventHandler class

    13832
    Fix GCC_ARM non-contiguous FW for K64F and K66F

    13828
    fix ble example names

    13822
    BLE fix periodic advertising list function parameter checking

    13817
    STM32: define RCC_LSE_BYPASS to allow using PC_15 as gpio

    13816
    STM32: allow HS USB endpoints and increase USB OTG_HS endpoints number

    13811
    Ble conditional compilation

    13810
    Remove missing examples from the config

    13808
    Remove erroneous character from SPDX identifer

    13802
    STM32F4 FLASH API update

    13800
    OSPI: enable feature in baremetal test configuration

    13797
    STM32: add setting for LSE drive load level

    13796
    Update README.md to remove WEP test case with NULL data

    13768
    COMPONENT_FPGA_CI_TEST_SHIELD: better debug print

    13753
    Remove Unneeded nordic-bsp Folder from Cordio

    13747
    Renesas: fix timing to wait UART completion in deep sleep function

    13699
    Fix sfdp_find_addr_region algorithm

    13698
    Fix SPIF read dummy cycles not being reset

    13692
    Fix I2C slave bugs on Renesas RZ/A series.

    13691
    Remove unused Nordic TARGET_SDK_11

    13671
    Add an socket option to set type of service to set specific precedence for QoS

    13566
    CMake: Add initial support

    Using this release

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

    Downloads: zip tar.gz

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

    Summary

    This is the latest support release for the Mbed OS 5.15 branch. It contains a number of important fixes including: * Nanostack release v12.6.0 * Improvements to WiSUN functionality * Mbed CoAP updated to v5.1.8

    The full list of changes can be viewed below.

    Migration Guide

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

    mbed-os-5.15: Add initialization to radius retry values

    13775

    Summary of changes

    This corrects uninitialized scalar field coverity warning.
    This is Mbed OS 5.15 version of https://github.com/ARMmbed/mbed-os/pull/13740

    mbed-os-5.15: Add initialization check to RADIUS ipv6 address

    13774

    Summary of changes

    Added initialization check to RADIUS ipv6 address that prevents the border router from printing unnecessary error trace
    when RADIUS is not enabled.
    This is Mbed OS 5.15 version of:
    https://github.com/ARMmbed/mbed-os/pull/13588

    M2354: Upgrade to BSP v3.00.001 (5.15)

    13770

    Summary of changes

    This PR upgrades BSP to v3.00.001 to support MP chip.

    Impact of changes

    NuMaker-M2354 Ver 1.0 (test chip) gets unsupported. This doesn’t do big impact because it is internal only. NuMaker-M2354 Ver 1.1 (MP chip) will be the official one with this upgrade.

    mbed-os-5.15: Add APIs for Device min sense and CCA threshold table

    13758

    Summary of changes

    -Added get, set and validate API for device min sens.
    -Added get API for CCA threshold table.
    Bring in changes from feature-wisun https://github.com/ARMmbed/mbed-os/pull/13521 to mbed-os-5.15 branch.

    Nuvoton: Enable fault handler dump message on CM23 targets (5.15)

    13739

    Summary of changes

    This PR is backport of #13738 to mbed-os-5.15 branch. It enables fault handler dump message on Nuvoton’s CM23 targets:
    - NU_PFM_M2351
    - NUMAKER_IOT_M263A
    - NUMAKER_IOT_M252

    mbed-os-5.15: Add certificate remove before add to wisun tasklet

    13736

    Summary of changes

    This prevents tasklet from adding own certificates multiple times to Nanostack in case bootstrap is made again.
    This is mbed-os-5.15 version of https://github.com/ARMmbed/mbed-os/pull/13608

    mbed-os-5.15: Enable Nanostack DNS cache usage

    13735

    Summary of changes

    Enable usage of Nanostack DNS cache. The cache may contain DNS server address and DNS query results.
    Inherit methods gethostbyname, gethostbyname_async and get_dns_server to Nanostack class.
    Methods will try to find DNS server address or DNS query results from Nanostack DNS cache.
    These same changes are available in:
    - feature-wisun in #13507
    - master in https://github.com/ARMmbed/mbed-os/pull/13733

    mbed-os-5.15: Nanostack release v12.6.0

    13719

    Summary of changes

    Nanostack release v12.6.0 to feature-wisun branch.
    This release contains improvements to the Wi-SUN protocol functionality.
    These same changes are also available in feature-wisun branch: #13716, and in master: #13718

    mbed-os-5.15: Mesh interface global up is indicated always on bootstrap ready

    13715

    Summary of changes

    This indicates e.g. to client that IP address has changed or connection
    to network has been established.
    This is mbed-os 5.15 version of https://github.com/ARMmbed/mbed-os/pull/13666

    mbed-os-5.15: Nuvoton: Fix NuMaker I2C timeout

    13709

    Summary of changes

    This PR is to fix I2C timeout measurement for NuMaker platforms instead of hardcode max timer count on OS-5.15 branch.
    The same commit got approval in PR #13679 on OS-6.x master branch.

    adapting to new s3 bucket location in travis.yml

    13696

    Summary of changes

    Travis CI uses compilers and other binaries like astyle. These are stored in S3 bucket currently owned by ISG and mbed-os-ci is switching to OSS. This PR adapts the S3 location changes from ISG to OSS for travis CI builds.

    TEST: Extend the kvstore test time out to 120s

    13693

    Summary of changes

    Extend the kvstore test time out to 120s, due to this test might take longer time to run on larger size SD card

    K82F, KL82Z: Fix the I2C SDK driver slave transfer

    13661

    Summary of changes

    If multiple bytes are send from slave to master, slave is wrongly performing stop signal what brakes communication for 11ms because bus is still active. Slave shouldn’t do any Start or Stop signal

    Fix STM32H747 Arduino pinout

    13652

    Summary of changes

    Changing Pin Names for Arduino header on STM32H747

    M2351: Support GCC and IAR

    13643

    Summary of changes

    This PR is backport of #12353 and #12366 to mbed-os-5.15 branch. It has the following modifications on M2351:
    1. Enable GCC support on non-PSA non-secure target
    2. Enable IAR support on non-PSA non-secure target
    3. Refactor for above toolchain support
    4. Other minor fix
    NOTE1: Disable GCC support on secure targets because of GCC bug (as of 9-2019-q4-major): In non-secure entry function, callee-saved registers must be restored, but they are incorrectly cleared at optimization level Os.
    NOTE2: Disable IAR on secure targets because of IAR toolchain bug (as of IAR 8.32): cmse_nonsecure_caller() is not always inlined.

    Add SD, USBDEVICE & LPTICKER support for VK_RZ_A1H board.

    13639

    Summary of changes

    Add SD, USBDEVICE, LPTICKER support.
    Some of the files are synced with the other Renesas boards. VK_RZ_A1H ones are a bit old, especially the linker script files!

    Impact of changes

    SD feature requires an external lib !

    Migration actions required

    Projects using the SD feature, should include SDHI.

    Update Mbed CoAP to v5.1.7

    13606

    Summary of changes

    Update Mbed CoAP to v5.1.7.
    - Removed comparison of IP addresses when validating message resending. This avoids unnessary network errors due to load balancers causing frequent IP address changes.
    - Multiple fixes for out-ouf-bounds memory accesses, a memory leak and an infinite loop condition in packet parser.
    - Mapped MBED_CONF_MBED_CLIENT_RECONNECTION_COUNT Pelion Device Management Client configuration option to SN_COAP_RESENDING_MAX_COUNT in mbed-coap.
    - Fix the token from blockwise ACK message to be empty if the received message doesn’t have one.

    Fix for linker issue in AdBun-M066

    13578

    Summary of changes

    Linker issue:
    The hardcoded __initial_sp from the startup file of AdBun-M066 (startup_TMPM066.S) has been removed.
    The initial stack pointer value ARM_LIB_STACK has been imported from the scatter file of AdBun-M066 (tmpm066fwug.sct).
    As per scatter file of AdBun-M066,
    initial stack pointer = 0x200000C0 + 0x4000 : 0x200040C0 (which is beyond the RAM of AdBun-M066)
    So, Stack pointer must be initialized to =
    RAM starting address + Size of RAM = 0x20000000 + 0x4000 (16KB)

    mbed-os-5.15: Add external RADIUS server configuration to Wi-SUN Border Router

    13576

    Summary of changes

    Added configuration functions and .json configuration options for:
    - external RADIUS server IPv6 address
    - RADIUS shared secret.
    - RADIUS client retry trickle timer configuration. This can be used to set how fast
    the RADIUS client retries Access-Request messages to RADIUS server in case reply
    from server is not received.
    This combines following RADIUS configuration pull requests from feature-wisun:
    https://github.com/ARMmbed/mbed-os/pull/13412
    https://github.com/ARMmbed/mbed-os/pull/13517
    https://github.com/ARMmbed/mbed-os/pull/13530

    [mbed-os-5.15] Nanostack release v12.5.0

    13559

    Summary of changes

    Nanostack v12.5.0 contains bug fixes and stability improvements to the Wi-SUN protocol stack.
    Also 802.15.4.RF RF drivers have been updated to match functionality in Nanostack:
    - Atmel RF driver to v3.3.2
    - STM S2LP driver to v1.0.7
    These same changes are available in feature-wisun branch in PR: #13550

    Nuvoton: Fix degrading QSPI to SPI (5.15)

    13537

    Summary of changes

    Same as #13536 but backport to mbed-os 5.15, this PR tries to fix logic with degrading QSPI to SPI. In most cases, we can control degraded QSPI H/W to standard through BSP SPI driver directly as if it is just SPI H/W. However, BSP SPI driver distinguishes among SPI H/W instances in functions:
    - SPI_Open
    - SPI_Close
    - SPI_SetBusClock
    - SPI_GetBusClock
    In these cases, we must change to QSPI version instead for QSPI H/W.

    device_management.py supports application access keys 5.15

    13525

    Summary of changes

    The Mbed CLI tool fails to initialize with application access keys. This PR changes the device_management.py so that it works with the new access keys as the legacy API key feature is now deprecated in Pelion Device Management.

    Impact of changes

    The init script still works with legacy API keys.

    mbed-os-5.15: Nuvoton: Fixed NUC472 SD buffer alignment

    13512

    Summary of changes

    This PR is to correct NUC472 SD buffer alignment as 4 bytes instead of original 4K, it could resolve the issue
    of mbed-os-example-pelion NUC472 GCC build failed in Pelion PR #147

    [mbedos-5.15] Updating mbed-mesh-api

    13496

    Summary of changes

    Adding new parameters for Wi-SUN and Border router interface information.
    This is upstream of PR https://github.com/ARMmbed/mbed-os/pull/13453

    [mbed-os-5.15] Add WiSun network size configs in JSON

    13495

    Summary of changes

    Add json config items for WiSun network size.
    So user could easily config the default WiSun network size via Json file.
    This PR is upstreaming changes from #13134

    ci: Update arm-none-eabi- version

    13487

    Summary of changes

    The arm-none-eabi- version is updated from version 6 to version 9.
    Signed-off-by: Devaraj Ranganna devaraj.ranganna@arm.com

    [mbed-os-5.15] Nanostack release v12.4.0

    13451

    Summary of changes

    Nanostack release v12.4.0 to mbed-os-5.15 branch.
    Nanostack v12.4.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.4.0.
    This is upstream of PR: #13444

    [mbed-os-5.15] ODIN-W2 release v3.7.2 and bug fixes.

    13450

    Summary of changes

    This PR included following features:
    - ODIN binaries compiled with latest toolchains
    - Fixes ARMmbed#12582
    - Fixes ARMmbed#12573

    Known Issues

    There are no new known issues with this release.

    Contents

    Ports for Upcoming Targets

    Fixes and Changes

    13788
    Update Mbed CoAP to v5.1.8

    13775
    mbed-os-5.15: Add initialization to radius retry values

    13774
    mbed-os-5.15: Add initialization check to RADIUS ipv6 address

    13770
    M2354: Upgrade to BSP v3.00.001 (5.15)

    13758
    mbed-os-5.15: Add APIs for Device min sense and CCA threshold table

    13739
    Nuvoton: Enable fault handler dump message on CM23 targets (5.15)

    13736
    mbed-os-5.15: Add certificate remove before add to wisun tasklet

    13735
    mbed-os-5.15: Enable Nanostack DNS cache usage

    13719
    mbed-os-5.15: Nanostack release v12.6.0

    13715
    mbed-os-5.15: Mesh interface global up is indicated always on bootstrap ready

    13709
    mbed-os-5.15: Nuvoton: Fix NuMaker I2C timeout

    13696
    adapting to new s3 bucket location in travis.yml

    13693
    TEST: Extend the kvstore test time out to 120s

    13661
    K82F, KL82Z: Fix the I2C SDK driver slave transfer

    13652
    Fix STM32H747 Arduino pinout

    13643
    M2351: Support GCC and IAR

    13639
    Add SD, USBDEVICE & LPTICKER support for VK_RZ_A1H board.

    13606
    Update Mbed CoAP to v5.1.7

    13578
    Fix for linker issue in AdBun-M066

    13576
    mbed-os-5.15: Add external RADIUS server configuration to Wi-SUN Border Router

    13559
    [mbed-os-5.15] Nanostack release v12.5.0

    13537
    Nuvoton: Fix degrading QSPI to SPI (5.15)

    13525
    device_management.py supports application access keys 5.15

    13512
    mbed-os-5.15: Nuvoton: Fixed NUC472 SD buffer alignment

    13496
    [mbedos-5.15] Updating mbed-mesh-api

    13495
    [mbed-os-5.15] Add WiSun network size configs in JSON

    13487
    ci: Update arm-none-eabi- version

    13451
    [mbed-os-5.15] Nanostack release v12.4.0

    13450
    [mbed-os-5.15] ODIN-W2 release v3.7.2 and bug fixes.

    Using this release

    You can fetch this release from the mbed-os GitHub repository, using the tag “mbed-os-5.15.6”.

    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-6.4.0

    Downloads: zip tar.gz

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

    Summary

    This release contains significant changes to how Mbed supports BLE privacy, addressing issues some users may have seen when pairing a device running Mbed with either Android or iOS.

    We’ve also updated the Mbed COAP implementation to v5.1.8.

    Finally, we’ve made some further improvements to the WiSUN stack to address issues raised by both internal and external testing.

    Migration Guide

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

    BLE: Introduce ChainableEventHandler and subclasses

    13734

    Summary of changes

    ~Requires #13727 to be merged first~
    Merged #13727 since this PR is closely tied to it.
    Introduces a ChainableEventHandler base class that is essentially a singly-linked-list of EventHandlers along with two subclasses:
    - ChainableGattServerEventHandler that enables chaining together GattServer::EventHandlers
    - ChainableGapEventHandler that enables chaining together Gap::EventHandlerss
    The ChainableGattServerEventHandler class allows an application to register separate event handlers (eg: for different services that need to handle GattServer events) and then set the global GattServer::setEventHandler to the instance of ChainableGattServerEventHandler with all registered GattServer::EventHandlers.
    The ChainableGapEventHandler accomplishes that same as above for Gap:EventHandler implementations.
    Common functionality has been split off into ChainableEventHandler.
    See #13728 for discussion around this implementation.

    Impact of changes

    None

    Migration actions required

    None

    Feature ble host privacy

    13717

    Summary of changes

    This PR reimplements Bluetooth privacy for all type of Bluetooth controllers (4.0 to 5.2).
    As soon as privacy is enabled, a private address is used to advertise, scan or initiate connection and peers resolvable addresses are resolved if a bond with matching IRK is found in the security database.
    This should solve most of the pairing issues observed on Android and iOS where the local device is not able to retrieve a previous bond.
    Internally there is two implementations of the address resolution:
    - Host based where the software compute if the address is known or not
    - Controller based where the Bluetooth controller resolves automatically addresses received during advertising or scan.
    New configurations flags have been added to select at compile time the implementation to use:
    - ble-gap-host-based-private-address-resolution Forces the system to use host based resolution
    - ble-gap-host-privacy-resolved-cache-size Indicate how many entries must be booked for the host based resolution cache.
    This PR is the result of the following PRs merged on the feature branch
    - Privacy feature configuration: https://github.com/ARMmbed/mbed-os/pull/13662
    - Force device mode for LL resolution: https://github.com/ARMmbed/mbed-os/pull/13689
    - Privacy enable event emission : https://github.com/ARMmbed/mbed-os/pull/13680
    - Improvement of Secure DB entry retrieval: https://github.com/ARMmbed/mbed-os/pull/13660 and https://github.com/ARMmbed/mbed-os/pull/13658
    - Force identity address to be static: https://github.com/ARMmbed/mbed-os/pull/13622
    - Local private address management: https://github.com/ARMmbed/mbed-os/pull/13582 and https://github.com/ARMmbed/mbed-os/pull/13560
    - Peer private address management: https://github.com/ARMmbed/mbed-os/pull/13630 and https://github.com/ARMmbed/mbed-os/pull/13685:
    - Fixes: https://github.com/ARMmbed/mbed-os/pull/13656 and https://github.com/ARMmbed/mbed-os/pull/13670
    - Notification when advertising start or stop: https://github.com/ARMmbed/mbed-os/pull/13706

    Impact of changes

    Existing applications should not have anything to change regards to calls to privacy APIs as this PR enables it for all type of controllers and not just resolution when supported by the hardware.
    The advertising state was showing up as enabled as soon as the function startAdvertising was called. This is was not correct as it wasn’t reflecting the reality of operations. The state is now modified when advertising is actually active. Two new events have been added to Gap::EventHandler to catch the change of advertising state.

    Add mutiple push and pop for circular buffer

    13563

    Summary of changes

    Add functions to circular buffer to allow pushing and popping multiple items at a time.

    Add OSPI driver to support the Octa mode of Macronix octaflash MX25LM51245G

    12644

    Summary of changes

    Update PR #12619.
    Add OSPI HAL driver and OSPIF block device driver for using Macronix octaflash MX25LM51245G.
    ST Octo-SPI was ported on QSPI MBED API, but we can only use in SPI mode and the Octo mode is not supported. So, we add OSPI driver to enable Octo mode to improve read and write performance.

    Impact of changes

    Enable the octa mode of MX25LM51245G.

    Migration actions required

    N/A

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

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

    • Build Greentea ARMC6 - SOME FAILS
    • Build Greentea GCC_ARM - ALL PASSED
    • Build Examples ARMC6 - ALL PASSED
    • Build Examples GCC_ARM - ALL PASSED
    • Build Cloud Examples ARMC6 - ALL PASSED
    • Build Cloud Examples GCC_ARM - ALL PASSED
    • Unittest Test matrix - ALL PASSED
    • GreenTea test matrix - ALL PASSED
    • Examples test matrix - ALL PASSED
    • Exporter Test - SOME FAILS
    • Cloud Client integration Test - ALL PASSED
    • Memory Usage Test - ALL PASSED

    Toolchain Coverage

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

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

    Targets Coverage

    In mbed OS 6.4.0, 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.4.0 release, we run the greentea tests on the following targets:

    • NRF52840_DK
    • DISCO_L457VG_IOT01A
    • K64F
    • NUCLEO_F429ZI
    • NUCLEO_F767ZI
    • NUCLEO_WB55RG

    We have the following issues on the test jobs:

    • MBEDOSTEST-1163 - ARMC6 Failed to build mbed OS with LTO options In Progress
    • IOTCORE-1663 - Nightly: Export uvision failing with missing context fault handler Open

    Test Numbers

    • Greentea test number 1674 (+179)
    • Unittest number 741 (+6)

    Code Coverage

    Test Code Coverage been tracked and information is published on COVERALLS

    Memory Monitoring

    No observed change from mbed-os-6.3.0

    Contents

    Ports for Upcoming Targets

    13713
    STM32H7: add NUCLEO_H7A3ZI_Q new target

    Fixes and Changes

    13787
    Update Mbed CoAP to v5.1.8

    13785
    BLE: Fix access to attcCb.onDeck and attsCb.prepWriteQueue access

    13782
    scancode: fix SPDX check - only warning

    13779
    BLE: Fix scan state and host resolution of RPAs

    13778
    STM32G4 update drivers version to CUBE V1.3.0

    13771
    Separate cloud example configurations to another file

    13757
    wisun: Add APIs for Device min sense and CCA threshold table.

    13749
    Add missing args to weakly defined PalRtc functions

    13745
    Scancode: Fix false positive reported by scancode output analyser script

    13744
    Use NUCLEO_F429ZI for Azure IoT Hub and Google IoT Core examples testing

    13743
    Define SD and STORAGE for the MAX32630FTHR and prevent warnings during compilation on Mbed 5.12 and above

    13742
    nanostack: Add initialization to radius retry values

    13741
    STM32L4 update drivers version to CUBE V1.16.0

    13738
    Nuvoton: Enable fault handler dump message on CM23 targets

    13737
    Add certificate remove before add to wisun tasklet

    13734
    BLE: Introduce ChainableEventHandler and subclasses

    13733
    Enable Nanostack DNS cache usage

    13729
    BLE: Enable getting an implicitly-created CCCD through GattCharacteristic::getDescriptor

    13725
    STM32: update SetSysClock for NUCLEO_L476RG

    13724
    Add license notice to Arm copyrighted source files plus SDPX to already licensed files

    13723
    Add crash RAM to STM32F412xG

    13718
    Nanostack release v12.6.0

    13717
    Feature ble host privacy

    13714
    nanostack: mesh interface global up is indicated always on bootstrap

    13713
    STM32H7: add NUCLEO_H7A3ZI_Q new target

    13707
    Fix ESP8266

    13704
    ble: reset transport last and reset the default chars in gatt server

    13697
    STM32L5 update drivers version to CUBE V1.3.1

    13694
    adapting to new s3 bucket location in travis.yml

    13690
    STM32H7 update drivers version to CUBE V1.8.0

    13684
    nanostack: fix inclusion of kvstore

    13683
    USB STM32: fix header inclusion, removing mbed.h

    13681
    Nrf52840 spim3 updates

    13679
    Nuvoton: Fix NuMaker I2C timeout

    13677
    psoc64: Update flash layout of CYTFM_064B0S2_4343W

    13674
    Samsung: uart fixes

    13669
    STM32L0 update drivers version to CUBE V1.11.3

    13659
    STM32WB update drivers version to CUBE V1.8.0

    13655
    STM32_gen_PeripheralPins.py v1.17

    13654
    Remove WEP security Green Tea Test case as the WEP security Key are sequence of Hex Values

    13653
    Use impl namespace in GattServer att_cb registration, not ble

    13649
    Make mbed-trace available to bare metal

    13646
    Make STM32F412xG system_clock.c functions weak

    13645
    Patch STM32F4 HAL to fix F412CG USART3 issue

    13640
    STM32: Fix system clock setup for XTAL and/or internal source on STM32H743

    13634
    STM32L4: link issue with IAR

    13633
    STM32WB: FLASH compilation issue with baremetal

    13632
    fix DAPLINK error for S1SBP6A Target using GNU Toolchain.

    13623
    Refactor mbed-os design docs

    13621
    Refactor remaining TESTS related to hal, rtos, and platform dir

    13619
    Travis: remove status functionality

    13611
    Edit on Toolchain linker files for stm32L071xx target

    13610
    Fix #13490 Cellular disconnect does not deactivate context

    13607
    Update Mbed CoAP to v5.1.7

    13602
    WEP Security fix for Cypress Target Kits

    13601
    Fix AnalogIn implementation on STM32G4 series

    13600
    Refactor COMPONENT_FPGA_CI_TEST_SHIELD directory structure

    13595
    Nordic: Support 31250 baud rate

    13593
    STM32F: skip LittleFileSystem default instance and TDBStore tests

    13586
    travis: license check for new files

    13565
    Feature stm32g4 can support

    13563
    Add mutiple push and pop for circular buffer

    13549
    Make readdir reentrant

    13545
    Fix enabling/disabling BLE-Features

    13432
    Enable PDP type IPV6 and IPV4V6 to support more cellular service prov

    13406
    STM32F1 USBDevice

    12644
    Add OSPI driver to support the Octa mode of Macronix octaflash MX25LM51245G

    Using this release

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

    Downloads: zip tar.gz

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

    Summary

    This release contains additional cloud connectivity integrations with examples of how to use Microsoft Azure IoT and Google Cloud IoT with Mbed OS.

    We also release a new BLE integration test suite that allows both hardware vendors and developers the ability to run BLE tests as part of their development efforts.

    Further changes are made to the Mbed directory structure as we prepare the code base for the new build tools we are developing.

    Support is added for the Arm Musca-S1 platform, a collaboration between Arm and Samsung Foundry to create the industry’s 1st PSA Certified Arm-based Smart IoT Device demonstrator enabling secure eMRAM-enabled Root of Trust (RoT) and secure Root of Execution (RoE) IoT Device services.

    Migration Guide

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

    Add RADIUS configuration options to Wi-SUN

    13573

    Summary of changes

    Added support for external RADIUS server configuration to Wi-SUN Border Router.
    Added configuration functions and .json configuration options for:
    - external RADIUS server IPv6 address
    - RADIUS shared secret.
    - RADIUS client retry trickle timer configuration. This can be used to set how fast
    the RADIUS client retries Access-Request messages to RADIUS server in case reply
    from server is not received.
    This combines following RADIUS configuration pull requests from feature-wisun:
    https://github.com/ARMmbed/mbed-os/pull/13412
    https://github.com/ARMmbed/mbed-os/pull/13517
    https://github.com/ARMmbed/mbed-os/pull/13530

    Impact of changes

    None

    Migration actions required

    None

    Fix pwm out resets after suspend

    13492

    Summary of changes

    Fixed a Problem where PwmOut resets settings after suspend.
    The problem is described here: https://github.com/ARMmbed/mbed-os/issues/13480

    Impact of changes

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

    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.3.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 - 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:

    • IOTCORE-1717 - ARMC6 Failed to build mbed OS with LTO options
    • IOTCORE-1663 - Nightly: Export uvision failing with missing context fault handler
    • 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
    • IOTPAN-662 - NUCLEO_F303RE targets failed in nightly test with WIFI-SCAN 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.0
    • 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.3.0, 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.3.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

    The number of total issues increased from 92 to 108, and high impact issues increased from 35 to 49.
    This is thought to be mainly caused by the restructuring of the mbed-os folders.

    Code Coverage

    Test Code Coverage been tracked and information is published on COVERALLS

    Memory Monitoring

    No change from mbed-os-6.2.0

    Contents

    Ports for Upcoming Targets

    13538
    Ambiq AMA3B1KK and SparkFun Artemis Boards Target Update

    13509
    Adding STM32L071xx target

    13196
    Add ARM_MUSCA_S1 as a new target platform

    13006
    NUCLEO_G031K8: Add new target

    Fixes and Changes

    13594
    PSA - Generate root of trust before accessing kvstore

    13592
    Add test examples.json config for Azure and Google Cloud

    13587
    MCU_STM32G031xx : decrease boot-stack-size

    13584
    Revert “Always build both .hex and .bin files”

    13583
    STM32: correct few Arduino pins value

    13580
    TEST: Update example scripts for cmake feature

    13579
    double negation fixed and ifs normalised

    13574
    Fix a typo in PeripheralPins.c for EFM32GG11

    13573
    Add RADIUS configuration options to Wi-SUN

    13572
    STM32H7 ADC: clock selection lost after deepsleep

    13564
    STM32Gx: LSI clock selection when LSE is not available

    13562
    Nanostack release v12.5.0

    13558
    STM32L4+ : SRAM3 is powered off in deepsleep

    13552
    general_block_device test: support non-uniform erase sizes

    13547
    Nuvoton: Fixed NUC472 SD buffer alignment

    13546
    Remove duplicate mbed-os/TESTS/host_tests scripts

    13544
    TEST: remove MUSCA_B1 from attestation example test

    13542
    B_L4S5I_IOT01A: new ST target

    13538
    Ambiq AMA3B1KK and SparkFun Artemis Boards Target Update

    13536
    Nuvoton: Fix degrading QSPI to SPI

    13533
    Update test examples.json AWS config

    13531
    Nuvoton: Set M252 Flash internal size for kv store test

    13524
    device_management.py supports application access keys

    13523
    STM32H7 ADC: No MultiMode configuration needed for ADC2

    13522
    STM32 USB connect procedure update

    13518
    add option for a custom cert in connectivity-netsocket-netsocket-tls

    13516
    Cypress: Rename CY8CKIT_064B0S2_4343W to CY8CKIT064B0S2_4343W

    13514
    STM32 USB: use SNG_BUF

    13513
    STM32 readme update

    13509
    Adding STM32L071xx target

    13502
    Targets: Add default “supported_form_factors” for all targets

    13501
    USB-DEVICE tests: move host scripts

    13497
    Updating mbed-mesh-api

    13494
    Add WiSun network size configs in JSON

    13493
    Fix SSID bug on Cypress Targets

    13492
    Fix pwm out resets after suspend

    13489
    Refactor hal directory

    13486
    Fix heap stats overhead_size calculation

    13484
    KVSTORE tests: move directories

    13481
    STM32G0 compilation warning

    13476
    Fix trivial compiler Warnings

    13475
    Ble remove user facing abstraction

    13473
    Nanostack release v12.4.0

    13472
    Fix for targets where DEVICE_SPI or DEVICE_INTERRUPTIN are defined but not both

    13470
    Update dragonfly linkers

    13469
    Support ignore list for spell checks

    13468
    Add ccache to travis

    13467
    Cypress: Update psoc6cm0p library to 1.2.1.676

    13464
    adr: Recommend CMSIS component source structure

    13462
    BLE remove address from API to cancel connect

    13460
    Move PSA FEATURE_EXPERIMENTAL_API directory to platform

    13459
    platform: fix internal platform headers

    13456
    USBPhyHw: remove mbed.h inclusion

    13452
    Use boot stack size from config system

    13449
    BLE: Fix writing attributes larger than MTU size

    13445
    Refactor storage COMPONENT_xx directory

    13443
    Update mbed-client-cli from v0.5.0

    13435
    ci: Update arm-none-eabi- version

    13434
    Move Callback tests to platform, USB tests to drivers

    13433
    Refactor device_key

    13430
    Relocated libraries in features/frameworks

    13425
    Fix bare metal support on Cypress targets

    13416
    Update CYSBSYSKIT_01

    13400
    Call mbed_tfm_init before mbed_toolchain_init

    13399
    QSPIF: options to preset reset sequence for legacy SFDP

    13397
    Provide enablement of nrf52840 SPIM

    13375
    Add GR_MANGO as a new target

    13196
    Add ARM_MUSCA_S1 as a new target platform

    13006
    NUCLEO_G031K8: Add new target

    Using this release

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

    Downloads: zip tar.gz

    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-5.15.5

    Downloads: zip tar.gz

    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-6.2.0

    Downloads: zip tar.gz

    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-6.1.0

    Downloads: zip tar.gz

    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.
    1. Build, program, and open a serial terminal with: mbed compile -t <TOOLCHAIN> -m <ST_TARGET> -f --sterm -DMBED_SLEEP_TRACING_ENABLED.
    1. 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-5.15.4

    Downloads: zip tar.gz

    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-6.0.0

    Downloads: zip tar.gz

    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:
    DFUService
    UARTService
    EddystoneConfigService
    EddystoneService
    URIBeaconConfigService
    iBeacon
    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_t
    BLEProtocol::AddressBytes_t
    Superseded Replaced by
    ble::peer_address_type_t
    ble::own_address_type_t
    ble::address_t
    To decide which ones to use, see the functions you want to call.
    Gap::Whitelist_t
    BLEProtocol::Address_t
    Changed Replaced by ble::whitelist_t where each item on a whitelist is ble::whitelist_t::entry_t.
    This is used by
    Gap::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 CellularDevicewill have to have implementation for the new pure virtual methods:
    • clear()
    • get_context_list()

    • Classes inheriting CellularContextdo not have to have implementation for:
    • get_netmask()
    • get_gateway()


      if they do not differ from the NetworkInterface’s default implemetations:
    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]

    mbed-os-example-blinky@mbed-os-5.14.1

    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

    mbed-cloud-client-example@4.0.0

    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 git@github.com: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 git@github.com: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:

    Screenshot 2020-01-09 at 18 49 11

    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:

    • NXP: KL82Z (wasn’t removed correctly here https://github.com/ARMmbed/mbed-os/pull/12864)
    • Advantech ADV_WISE_1510 (renamed)
    • Ublox (all)
    • ARM_IOTSS_BEID

    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 devaraj.ranganna@arm.com
    Signed-off-by: Jaeden Amero jaeden.amero@arm.com

    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-5.15.3

    Downloads: zip tar.gz

    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-5.15.2

    Downloads: zip tar.gz

    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-5.15.1

    Downloads: zip tar.gz

    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-5.15.0

    Downloads: zip tar.gz

    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

    • Description: Some boards fail to build with Arm Compiler 5. Mbed OS uses Arm Compiler 6 by default for most of the builds. Arm Compiler 5 is deprecated and will be removed in Mbed OS 6.
    • Workaround: Use ArmC 6, GCC or IAR.
    • Reported issues: Various https://github.com/ARMmbed/mbed-os/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+%28ARMC5%2C+Mbed+OS+5.14%29
    • Priority: Low.

    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-5.14.2

    Downloads: zip tar.gz

    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: * v1.7.2: https://github.com/ARMmbed/littlefs/releases/tag/v1.7.2 * v1.7: https://github.com/ARMmbed/littlefs/releases/tag/v1.7.0

    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-5.14.1

    Downloads: zip tar.gz

    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-5.14.0

    Downloads: zip tar.gz

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

    • Description: No flashing support in uvision for Realtek RTL8195AM
    • Workaround: Use drag-n-drop programming
    • Reported Issue: https://github.com/ARMmbed/mbed-os/issues/4651
    • Priority: Minor

    Platform: Realtek RTL8195AM - CMSIS-RTOS error: ISR Queue overflow

    • Description: Realtek RTL8195AM does not maintain a long running connection to Mbed device connector. The error manifests as an ISR Queue overflow.
    • Workaround: None
    • Reported Issue: 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 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 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-5.13.4

    Downloads: zip tar.gz

    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-5.13.3

    Downloads: zip tar.gz

    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-5.13.2

    Downloads: zip tar.gz

    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.

  • mbed-os-5.13.1

    Downloads: zip tar.gz

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

    Summary

    In this release we have added target support for:
    MTB ublox ODIN W2 and NUCLEO-F413ZH.

    We have: * Introduced a watchdog API to detect system malfunctions and reset the system to recover from them * Introduced an API to detect the system reset reason to compliment the watchdog functionality * Updated ST CUBE for the STM32F0 series to v1.9.0. This brings:
    * Current ST Cube version in MBED to V1.7.0
    * CMSIS part update from 2.3.1 to 2.3.3
    * HAL part update from 1.5.0 to 1.7.0 * Replaced our BLE Nordic PAL client implementation. Issues in the GattClient logic have been fixed and previously missing GAT procedures have been implemented:
    * Discover Primary Service by Service UUID
    * Find Included Service
    * Read Using Characteristic UUID
    * Read Multiple Characteristics
    * Queue Prepare Write
    * Execute Write * Added Flash support for STM32F0, STM32F1 and STM32F3 devices * Enabled tickless mode on nRF52840

    Important changes are:

    • 10997 VSCode exporter now uses executables that are installed into the system PATH instead of absolute paths to the compiler executables.
    • 10967 ESP8266 driver fix to work with older firmware version of ESP8266 module.
    • 10938 K64F, STM32F429: IAR icf linker scripts modified to use dynamic heap allocation of all available memory.
    • 10879 PSA Crypto APIs are now available on all Mbed OS targets.
    • 10857 Watchdog API:
    • Added new HAL API: watchdog and reset_reason
    • Added new drivers: ResetReason and Watchdog
    • 10824 STM32: pwmout_write: configure channel only when not already enabled
    • 10794 LWIP DNS servers setting/getting fixed.
    • 10776 UDPSOCKET_ECHOTEST_NONBLOCK performance improvement.
    • 10757 Add support I2C 3 for target EFM32G11
    • 10701 STM: replace C++ low power ticker wrapper with a low level wrapper to remove the latency limitation of the LP ticker wrapper.
    • 10665 Add hardcoded Echo server defaults for Greentea socket tests.
    • 10609 wait_us has been optimized for certain platforms - see us_ticker_api.h for the details of enabling optimizations on other targets. It can be optimized further if the option target.init-us-ticker-at-boot is enabled.

    There are also a number of bug fixes and test enhancements.

    Known Issues

    There are no new known issues with this release.

    Contents

    Ports for Upcoming Targets

    10972
    add new target IM880B

    10884
    NUCLEO_H743ZI2 new target support

    10633
    Add new features to Toshiba’s TMPM4G9

    10629
    Add support for the Embedded Planet Agora target

    Fixes and Changes

    11027
    PSOC6: add LwIP configuration for Cypress boards

    11013
    Revert “K64F, STM32F429: IAR linker scripts dynamic heap fix”

    11012
    Remove FPGA analog out test

    11011
    Allow re-initialising an I2C peripheral on Silicon Labs targets

    11002
    LPC546XX: Add pins to LPCXpresso restricted list

    10997
    Removing absolute paths to compiler executables

    10990
    Fix doxygen_options.json for ResetReason

    10989
    SPI FPGA test extension + SPI driver fix (K64F)

    10984
    Skip form factor pins marked as NC

    10982
    STM32 LPUART minor update for easy maintenance

    10977
    Fix out-of-bounds array access in tests-mbedmicro-rtos-mbed-malloc

    10976
    Fix error in tests-mbed_drivers-ticker when LED2 is not connected

    10975
    Restrict FPGA tests to Arduino form factor

    10972
    add new target IM880B

    10968
    Add FLASHIAP for MTB_STM_S2LP

    10967
    ESP8266: fix driver’s support AT firmware version

    10966
    Add RZ/A1 settings to arm_package_manager

    10964
    Add newline after mbed error so greentea shows it

    10954
    Watchdog: Clean up the doxygen comments

    10950
    Enable split heap in K64F/K66F devices

    10948
    BLE: fix flex word

    10944
    Update I2CTester for fpga-ci-test-shield

    10939
    Fix SAADC resolution for nRF52-based targets

    10938
    K64F, STM32F429: IAR linker scripts dynamic heap fix

    10934
    Fix: Low frequency clock will now selected by given “lf_clock_src” setting.

    10933
    Nordic NRF52832 cache ON

    10932
    Internal delay loop code alignment to 16

    10928
    STM: Correct macro test in us_ticker_defines.h

    10925
    Doubled ATHandler’s BUFF_SIZE

    10920
    Kinetis MCUXpresso: Update the clock drivers

    10910
    Increase dns-response-wait-time

    10908
    Fix netconn_recv_tcp_pbuf ARMC6 linker error

    10896
    microlib support: Specify compiler version unable to build without the fix

    10894
    Add adjust-check-config script to mbedtls importer

    10893
    cellular: fix file permission

    10888
    Remove macro MBEDTLS_PSA_CRYPTO_C from PSA targets

    10884
    NUCLEO_H743ZI2 new target support

    10881
    Fix Nordic/Mbed Critical Section API Inconsistency (In Builds w/o Softdevice)

    10879
    PSA Crypto for all targets

    10874
    Add new features to Toshiba’s TMPM3H6

    10873
    Add new features to Toshiba’s TMPM3HQ

    10870
    HAL I2C: adds missing DEVICE_I2C guards

    10869
    LPC55S69: fix cosFactor data size in header file

    10867
    LoRaPHY: Pass frequency set in rx_config() to caller

    10864
    TLSSocket: print certificate info only when tracing is enabled

    10861
    Make the sys_arch_protect() mutex be recursive.

    10859
    Removing I2C and SPI pin names in SDP-K1 PinNames.h file.

    10858
    Check Cellular Properties have been set

    10857
    Bring watchdog feature branch into master

    10856
    STM32: enable CRC for all L0/L4/F7

    10855
    Nuvoton: Fix idle thread stack underflow in debug build

    10846
    MbedCRC doxygen fixes

    10845
    Wrong timeout value in greentea tests

    10842
    Cellular: Stack type fixes

    10840
    Cellular: cellular socket flags updated

    10835
    M23: Fix compile error with mbed fault handler

    10834
    Fixed UDP sendto if IP version not match

    10833
    fix IAR compile error on fastmodels

    10826
    Add STM32H743ZI to IAR export definition

    10825
    Cellular: Fix PLMN debug trace for IAR

    10824
    STM32: pwmout_write: configure channel only when not already enabled

    10823
    Nuvoton: Fix channel release in analogout_free()

    10820
    Bring FPGA-Test-Shield tests into Mbed-os master.

    10812
    Cellular: fix athandler to use correct timeout in case of multiple urc’s

    10811
    socket close callback

    10808
    Cellular: Added handling for BG96 network PDP context deactivation

    10807
    NSAPI/lwIP: Use netconn_recv_tcp_pbuf

    10804
    TARGET_STM: SPI: update pull up config depending on clk polarity

    10798
    TARGET_TT:Add GPIO INT pin with PT1

    10795
    FastModel: trun off MPU for FVP_MPS2_M0P

    10794
    LWIP DNS servers setting/getting fixed.

    10793
    STM32: remove compilation warnings

    10791
    bootloader: Fix LPC55S69 bootloader segmentation

    10790
    STM32H7 enable LPUART

    10782
    GR_LYCHEE,RZ_A1H,VK_RZ_A1H: Fix greentea test failure with ARMC6

    10781
    Include TICKLESS stack size increase even without LPTICKER_DELAY_TICKS

    10779
    Add support for SPIF of size bigger than 16Mbyte

    10776
    UDPSOCKET_ECHOTEST_NONBLOCK performance improvement.

    10775
    STM32H7: refactor TARGET directory

    10774
    Fix serial IRQ handling

    10772
    Workarounds for GAP advertising issues on Cordio

    10769
    PSOC6: add SOFTFP to standard component list

    10767
    usb_device-msd test: fix powershell unmount script issue

    10762
    Disable only time drifting test cases and fix GREENTEA_SETUP() call in tests

    10761
    Fix networkinterface non-blocking status test

    10758
    Move Seeed ARCH_MAX to TARGET_STM32F407xE MCU

    10757
    Add support I2C 3 for target EFM32G11

    10756
    Cleaned up trace log SPIF Block Device

    10755
    hal_qspi_test: undo buggy code

    10752
    STM32L0: Add DEVICE_SPI_COUNT to DISCO_L072CZ_LRWAN1 + MTB_MURATA_ABZ

    10751
    TARGET_TT:Setting wisely pin mode for TT_M3HQ.

    10749
    Examples: enable more tests for examples

    10746
    PSA protected storage: Add encrypt & RB protect flags by default to set.

    10744
    Fixes in Sys Timer test

    10742
    CThunk: Fix assertion when CThunk object is destroyed

    10739
    M487: Fix wait_ns test failed

    10708
    TARGET_STM: SPI: add pulse on master transmissions

    10707
    Add C++14 sized delete operators

    10706
    mem pool size: Fix calculation of memory pool size for portability

    10705
    Atomics: GCC fix for M23 (ARMv8-M baseline)

    10704
    microlib support: Fix build with Arm Compiler 6 and MicroLib

    10702
    Add extra idle debug stack size in case all STATS are enabled

    10701
    STM: replace C++ low power ticker wrapper with a low level wrapper

    10700
    Update HAL Sleep manager test to cope with STM32 LPTIM HW

    10698
    timeout_tests: do not call sleep from test thread

    10697
    STM32H7: flash issue while erasing sector in Bank 1

    10696
    Cellular: Fix socket connect on UBLOX_AT driver

    10695
    GD32_F450ZI : Add bootloader support

    10692
    PSOC6: initial integration of Cypress HAL

    10689
    nRF52840 USB Device Implementation

    10688
    Add a top level README file for USB tests

    10686
    MAX32630.sct fix

    10680
    Add compilation flags to rf_configuration

    10676
    STM32: common cmsis.h and device.h files

    10674
    TARGET_TT: adding switches to PinNames

    10672
    Fix typos in the FPGA CI Test Shield component

    10665
    Add hardcoded Echo server defaults for Greentea socket tests.

    10663
    PSOC6: move cmsis.h and device.h out from psoc6pdl directory

    10656
    Cellular: AT_CellularContext disconnect in non-blocking mode

    10654
    USBHostMSD: Implement BlockDevice get_type()

    10653
    STM USBHALHost: Fix NULL pointer dereference

    10651
    USBHost: Wait for device to implement SET ADDRESS

    10647
    Fix LWIP warning issues found by Coverity scan

    10633
    Add new features to Toshiba’s TMPM4G9

    10629
    Add support for the Embedded Planet Agora target

    10619
    Fastmodel: enable flashIAP and kvstore

    10609
    wait_us optimization

    10588
    Cell bg96 power

    10536
    Changes required by the ST low power ticker wrapper.

    10501
    Remove excessive info and debug prints in SPIF driver

    10484
    Cellular: Telit ME910 driver

    10466
    STM32H7: WATCHDOG and RESET_REASON support

    10437
    PSA: Exclude mbed-hal-spm test for M23 target

    Using this release

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

    Downloads: zip tar.gz

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

    Summary

    As IoT devices proliferate, our focus is shifting toward optimizing Arm Mbed OS to best address the use cases our customers face. In 5.13, we have reduced the number of new features we’re delivering and have instead concentrated on specific optimizations of existing features that benefit our customers.

    Migration guide

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

    Nanostack release for Mbed OS 5.13

    10624

    This release contains updates for the Mesh protocols:

    • Stability improvements and bug fixes to Wi-SUN and Thread protocol.
    • EAPOL (certificate-based network authentication) enabled to Wi-SUN mesh protocol.

    Notes about Mesh stack maturity:

    • This version of Wi-SUN stack is interoperable only with itself (development work still ongoing).
    • Wi-SUN protocol is tested using functional protocol testing suites.
    • Wi-SUN nonfunctional testing is performed using 40 devices connected to single Wi-SUN network.
    • Thread stack is verified using protocol testing suite that includes certification test suite.

    DataFlash: Change erase size to pages to reduce memory use

    10478

    Previously the DataFlash driver exposed the minimum erase size as blocks, which are typically 4 K. DataFlash, however, supports page erases as small as 256 B.

    This change implements page erases, which lower RAM requirements for buffers.

    Because this has no relation to any file system and lowers the minimum erase size, it should not cause issues with devices with existing data stored on them. However, a future format of FATFS may end up with smaller sectors by default, which would further reduce RAM requirements.

    Enterprise_mode + wifi_configuraiton_api: update ODIN drivers to v3.7.0 RC1

    10454

    A private API is provided for ODIN_W2 target against enterprise mode.

    nsapi_error_t connect(
    const char          *ssid,
    const char          *pass,
    nsapi_security_t  security,
    auth_cert_s         *cert_handle,
    const char          *username = NULL,
    const char          *user_pswd = NULL,
    uint8_t               channel = 0);
    

    The application is required to pass a certificate (CA cert or client cert) and key (private key) in PEM format. You are required to pass those certificates through cert_handle auth_cert_s. An appropriate security should be selected: either NSAPI_SECURITY_EAP_TLS or NSAPI_SECURITY_PEAP.

    For example:

    static auth_cert_s   certificates;
    _wifi = new OdinWiFiInterface(true);
    #ifdef EAP_TLS_TESTING
    certificates.client_cert = &cert_data[0];
    certificates.client_prvt_key = &cert_data_key[0];
    certificates.ca_cert = NULL;
    #elif defined(PEAP_TESTING)
    certificates.client_cert = NULL;
    certificates.client_prvt_key = NULL;
    certificates.ca_cert = &ca_cert_data[0];
    #endif
    _wifi->connect(ssid, pass, security, &certificates, _peap_username, _peap_user_pass, channel);
    

    Configuration API

    virtual unsigned int get_config(void *setting);
    virtual void set_config(void *setting, cb_uint32 value);
    

    A description of parameters is available in https://github.com/u-blox/mbed-os/blob/0dda8c447c644cb8ee5063099ad09226a6caf746/targets/TARGET_STM/TARGET_STM32F4/TARGET_STM32F439xI/TARGET_MODULE_UBLOX_ODIN_W2/sdk/ublox-odin-w2-drivers/cb_wlan_driver_config.h

    Cellular: Make AT_CellularContext::get_context() virtual

    10442

    Makes AT_CellularContext::get_context() virtual - overwrite-able by the individual cell module driver authors (similar to what is available for other AT_CellularContext functions, like do_connect()).

    Set compilers to C++14 and C11

    10427

    GCC and Arm toolchain profiles now select C++14 and C11, matching IAR, and these are the tested profiles. The code base in this release should still work if profiles are set to C++98 and C99, though this is no longer tested.

    Migration notes

    As the default profiles now select C++14 and C11 for GCC and Arm toolchains, some applications may fail to compile because they use constructs that were valid in C++98 but are not in C++14.

    IAR 8 has always operated in C++14/C11 mode, so there are no new changes for IAR users who switched to IAR 8 for Mbed OS 5.12, but these notes apply to users migrating from older Mbed OS versions that used IAR 7.

    Common compatibility issues
    • A space is required when a macro follows a string literal, for example in C99-style printf formats:

    C++ uint32_t val; printf("val = %"PRIu32, val); // Not valid in C++11 printf("val = %" PRIu32, val); // OK

    Without the space, C++11 interprets it as being a request for a user-defined “PRIu32-type” string literal.

    • Initializer lists cannot have implicit narrowing conversions:

    C++ uint32_t x; uint8_t array1[] = { x }; // Not valid in C++11 uint8_t array2[] = { 0xffff }; // Not valid in C++11 uint8_t array3[] = { x & 0xff }; // Not valid in C++11 uint8_t array4[] = { (uint8_t) x }; // OK uint8_t array5[] = { static_cast<uint8_t>(x) }; // OK uint8_t array6[] = { 0xffff & 0xff }; // OK (because it's a compile-time constant that fits)

    These changes should be easy to make to existing code bases. You can find a guide to other possible breakages in C++11 at https://stackoverflow.com/questions/6399615/what-breaking-changes-are-introduced-in-c11. C++14 and C11 can cause a few extra issues.

    Future compatibility issues

    The register keyword is deprecated in C++14 and is removed in C++17. Some compilers issue warnings for register use in C++14, but this has been temporarily suppressed due to the prevalence of the keyword in target code. C++ code should be updated to remove the keyword as soon as possible: The warning will be reactivated after Mbed OS itself no longer triggers it.

    Fallback

    Mbed OS 5.13 releases should still work if compiled as C++98/C99, though this is not tested. If you have serious application compatibility issues, you should be able to switch the build profile back to the earlier language version as a temporary measure. This is likely to no longer be the case for Mbed OS 5.14.

    Arm Compiler 5

    Arm Compiler 5 has limited C++11 support and no C++14 or C11 support, and Arm Compiler 5 is no longer tested or officially supported. Nevertheless, Arm Compiler 5 builds have deliberately not been broken; the Arm Compiler 5 build profiles select its C++11 mode in an attempt to match the other toolchains as much as possible, but the limited support may itself cause issues. Attempts to check __cplusplus >= 201103 may activate code Arm Compiler 5 cannot actually compile. Like the other toolchains, the profile can be switched back to C++98 if necessary for now.

    Continued Arm Compiler 5 support will limit the adoption of C++11 and C++14 features in the Mbed OS code base, so it is possible Arm Compiler 5 builds may stop working in an upcoming release.

    Nanostack: translate errors from sendmsg

    10410

    Nanostack send calls return more accurate information in case of errors.

    Update CMSIS to 5.5.1

    10366

    CMSIS updated from 5.4.0 to 5.5.1.

    KVStore: Support external storage out of mbed-os tree

    10355

    Support external storage out of mbed-os tree in KVStore. To enable it, you need to:

    1. Configure KVStore configuration parameter blockdevice to other.
    2. Override get_other_blockdevice() to provide block device out of mbed-os tree.

    C++ BlockDevice *get_other_blockdevice();

    Update to LWIP 2.1.2

    10353

    The latest LWIP 2.1.2 released is now integrated with Mbed OS. The new LWIP release has improvements in following areas:

    -IP4 routing.
    -IP6 scopes and zones.
    -DHCP6.
    -ND6.
    -TCP.
    -Sockets.
    -Binding network interfaces to sockets.

    The LWIP changelog contains detailed changes

    Mbed OS dedicated patches were applied to the new LWIP version.

    Multihoming was refactored due to the new socket-interface bind implementation.

    Add option to disable default UART console

    10328

    A new configuration option, target.console-uart, allows default serial console functionality to be deactivated, either because the target has serial but no console, or to save power/memory by not using the console.

    Remove FEATURE_STORAGE and all underlying deprecated features

    10258

    Remove FEATURE_STORAGE and all underlying deprecated features: cfstore, flash-journal and storage-volume-manager.

    Mail/MemoryPool: blocking alloc

    10225

    Mail and MemoryPool now provide blocking forms of alloc calls that can sleep the thread until a memory block is available.

    Cellular: CellularContext must provide access to CellularDevice

    10210

    When using NetworkInterface::get_default_instance(), the application gets handle to CellularInterface, which is actually CellularContext derived from CellularInterface. The application also needs to handle CellularDevice to open other interfaces.

    Assembler atomics

    10147

    We have:

    • Separated atomic APIs into mbed_atomic.h from mbed_critical.h. Code not including mbed.h may need to check their includes.
    • Added atomic fetch_add, fetch_sub, fetch_and, fetch_or, fetch_xor and compare_exchange_weak operations.
    • Added explicit memory ordering specification. (Don’t use this unless you are familiar with the C++11 memory model.)
    • Added freestanding atomic function templates.

    Cellular: retry logic for CellularContext connect

    10056

    Add retry logic for CellularContext connect last phase: activating pdp context/open ppp channel. Retry logic is the same as in CellularStateMachine.

    Enable post build bootloader merging in uvision

    10021

    Offline projects that use the managed bootloader mode (as is the case for all Pelion Device Management projects using the update capability) should now be able to export and debug properly in uVision. A post build script is now enabled, which takes care of the header generation, binary merging and loading of the correct symbols for your application. This only allows debugging the application, not the bootloader.

    Note: This feature is only enabled when exporting offline with Mbed CLI. This is because the post build script has a dependency on the Mbed OS tools and their Python dependencies. This means projects exported from the Online Compiler can’t use this capability.

    Use LP tickers for waiting in no-RTOS builds when available

    9960

    For bare metal builds, use the lp_ticker for calls to wait_ms instead of us ticker if lp_ticker is available.

    ESP8266: treats Wi-Fi scan results as out-of-band data; new API to adjusting Wi-Fi scan settings

    9955

    ESP8266: new Wi-Fi scan API for active and passive mode. Making channel scan time configurable

    GCC - Add support to split heap across 2-RAM banks

    9944

    Mbed heap split into 2-RAM banks is added, which can be enabled by compiling source with MBED_SPLIT_HEAP macro. You should add linker symbols __mbed_sbrk_start __mbed_krbs_start __mbed_sbrk_start_0 __mbed_krbs_start_0 in GCC linker script to state start and end of each HEAP region.

    ESP8266: Country code API

    9927

    ESP8266Interface: new API to configure country code and channels to be used.

    Default to Cordio BLE stack for NRF52* targets

    10709

    Starting with mbed-os 5.13 and the introduction of Nordic SDK V15, Nordic SoftDevice Bluetooth stack is not supported. Bluetooth remains supported with the help of Arm’s Cordio stack.

    Known issues

    We publish Mbed OS as a collection of modules on GitHub. Issues are raised in 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, please 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, so use it at your own responsibility.
    • Reported issue: Issue reported by a customer in an 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 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: 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 peer’s 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: There are no known workarounds.
    • Reported issue: https://github.com/ARMmbed/mbed-os/issues/8064.
    • Priority: Major.

    Platform: Realtek RTL8195AM does not define flash algorithms for uVision

    • Description: No flashing support in uVision for Realtek RTL8195AM.
    • Workaround: Use drag-and-drop programming.
    • Reported Issue: https://github.com/ARMmbed/mbed-os/issues/4651.
    • Priority: Minor.

    Platform: Realtek RTL8195AM - CMSIS-RTOS error: ISR Queue overflow

    • Description: Realtek RTL8195AM does not maintain a long running connection to Mbed device connector. The error manifests as an ISR Queue overflow.
    • Workaround: There are no known workarounds.
    • Reported issue: https://github.com/ARMmbed/mbed-os/issues/5640.
    • Priority: Major.

    Core: Some boards are crashing when lots of data is sent and received through buffered serial

    • Description: This is currently known to affect Ublox ODIN W2 and RTL8195AM.
    • Workaround: There are no known workarounds.
    • Reported issue: https://github.com/ARMmbed/mbed-os/issues/8081.
    • Priority: Major.

    NVStore and TDBStore objects can collide in internal flash

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

    SPI failures on CY8CKIT_062_WIFI_BT

    • Description: When reading from an SD card connected with SPI, sometimes we see that read operation leave some bytes unchanged in the buffer without reporting the error. The root cause is under investigation.
    • Workaround: https://github.com/ARMmbed/mbed-os/tree/feature-SD-verify.
    • Reported issue: IOTSTOR-815.
    • Priority: Major.

    UART flow control does not work on Cypress CY8CKIT_062_WIFI_BT_PSA

    • Description: UART hardware flow control: When connecting a Wi-Fi shield with UART, flow control does not work. The root cause is under investigation.
    • Workaround: There are no known workarounds.
    • Reported issue: IOTHAL-481.
    • Priority: Major.

    Wi-SUN static IPv6 backbone configuration in nanostack border router is not working

    • Description: Static IPv6 backbone configuration is not working in border router if Wi-SUN mesh network is used and will cause hard fault.
    • Workaround: Use dynamic configuration in border router with functional IPv6 backend.
    • Reported issue: IOTTHD-3591.
    • 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.

    Mbed_platform_wait_ns fails on NRF52* when compiled with Arm Compiler 6

    • Description: Under some circumstances, the wait_ns test will fail when compiled with Arm Compiler 6 and run on NRF52_DK. The test results seem highly dependent on compilation options and what is put in the binary. The test always succeeds when -O0 or -O2 is used. It fails only with -Os.
    • Workaround: Compile with a different optimization option.
    • Reported issue: https://github.com/ARMmbed/mbed-os/issues/10849.
    • Priority: Critical.

    Testing and improvements

    GitHub pull request testing speed up

    We have improved our internal Jenkins testing scripts to speed up pull request tests. The purpose is to test only what is needed. The three main improvements are:

    • Algorithms that select needed checks based on code change. In practice, this is most visible in pull requests that contain only README changes. For those changes, no testing is needed at all.
    • An algorithm that ignores greentea tests that did not change and passed previously. This reduces >90% of greentea test duplication, which was the bottleneck of the testing pipeline.
    • Additional hardware, so we can run more hardware tests in parallel.

    Based on these big changes and many smaller improvements, automated tests are not the bottleneck for the pull request handling process.

    Nightly test setup

    We have introduced an additional test phase that runs every night. In this phase, we have more tests and hardware coverage. We will introduce new hardware first in nightly tests and later in pull request tests. This makes pull request testing faster and more robust.

    We currently use this setup internally but will report relevant findings to the Partners and community. The intention is to make this more visible to the external community.

    Test coverage metrics

    We are moving away from calculating the number of tests executed and number of build binaries. These metrics are no longer as relevant because of many optimizations in the test flow.

    Below is the number of test cases for each of the test tools. The change since 5.12.0 in the parentheses:

    • Unit tests: 582 (+1), line coverage: 87% (coverage measure only files which contain some tests).
    • Greentea: 1281 (-155), line coverage: 36% (coverage is calculated with Fast Models which cannot execute all test at the moment).
    • Icetea: 42 (+0).

    Contents

    Ports for upcoming targets

    9221
    Add ARM_MUSCA_A1 target

    Fixes and changes

    10675
    Update Mbed TLS 2.18.0 rc1

    10666
    Bring Nordic SDK v15 update to master

    10646
    Fix deprecation notice for ble::Gap::getState()

    10640
    BLE HealthThermometerService: correct GATT characteristics

    10639
    Cellular: Preventing Socket ID assignment until actual socket creation at the modem

    10638
    Fix AdvertisingDataBuilder UUID insertion bug

    10636
    +UPSND sent to poll activation status

    10635
    BLE: Deprecate UARTService and suppress compiler warnings

    10634
    BLE: Fix deprecated API calls in battery and thermometer services

    10631
    Update cube h7 to 1.4.0

    10627
    Remove targets FUTURE_SEQUANA_M0_PSA and FUTURE_SEQUANA_PSA

    10625
    TESTS: Update examples.json to enable testing

    10624
    Nanostack release for Mbed OS 5.13

    10623
    Cellular: Fix unit test valgrind warnings

    10621
    Fix usb_device-msd test Python dependencies

    10620
    Update mbed-coap to version 4.8.0

    10617
    Change W7500 GPIO driver

    10616
    Fix bug Operator new[] out of memory

    10615
    This allows CPP application to use the functions from cc.h

    10614
    Include mbed-greentea==1.7.1 for mbed-os-tools==0.0.8

    10606
    PSA release script update: Add toolchain option

    10605
    K66F: Update SAI and SAI EDMA driver to SDK 2.5

    10602
    Runtime DNS server addition implement

    10598
    Add Wi-Sun certificate options to mesh API configuration JSON

    10597
    SysTimer should be buildable without lp ticker

    10596
    Introduce Semaphore::acquire methods

    10594
    Arm Compiler 5: Fix mbed_atomic_impl.h assembly

    10593
    Cellular: Fix flow control pin configs for BC95 and Gemalto targets

    10591
    M2351: Fix serial sync error in SPDMC test

    10587
    GR_LYCHEE,RZ_A1H,VK_RZ_A1H: Fix greentea test failure with Arm Compiler 6

    10582
    Add LED4 definition in PinNames.h of SDP-K1 board

    10581
    BLE: Management of Tx path on Cordio

    10580
    BLE: Put the acl buffer size in config

    10557
    Cellular: Initialize CellularContext member variables in correct class

    10554
    Cellular: Fix compile warnings from cellular

    10553
    Add semihosting and SWO examples to mbed_override_console()

    10540
    Check in files for the FPGA CI test shield

    10521
    TEST: Update Python script to enable examples smoke test

    10511
    Cellular: Fix setting of statemachine timeout

    10505
    Improve importer.py

    10489
    gpio_api.h: Clarify desired behavior for NC

    10482
    Allow NC pins to be instantiated on Silicon Labs platforms

    10478
    DataFlash: Change erase size to pages to reduce memory usage

    10476
    LWIP TCP socket close - disconnecting fix

    10475
    Implement nanostack eventloop tick timer

    10473
    Add exception case for IPv6 only mode of BG96

    10456
    LWIP 2.1.2 tcpip thread stack overflow fix

    10454
    Enterprise_mode_+_wifi_configuraiton_api: update ODIN drivers to v3.7.0 RC1

    10442
    Cellular: Make AT_CellularContext::get_context() virtual

    10427
    Set compilers to C++14 and C11

    10410
    Nanostack: Translate errors from sendmsg

    10402
    Cellular: Send disconnect to correct ctx

    10398
    Clean up Arm toolchains from get_mbed_official_release()

    10366
    Update CMSIS to 5.5.1

    10355
    KVStore: Support external storage out of mbed-os tree

    10353
    Update to LWIP 2.1.2

    10328
    Add option to disable default UART console

    10324
    Cellular: New state machine state and better info from stm

    10322
    GCC: remove -fno-builtin option

    10258
    Remove FEATURE_STORAGE and all underlying deprecated features

    10254
    Remove unused tools modules and document the used ones

    10244
    Add the INTERRUPTIN compilation guard for ESP8266

    10225
    Mail/MemoryPool: blocking alloc

    10210
    Cellular: CellularContext must provide access to CellularDevice

    10162
    BLE - Notify HCI driver of host stack inactivity

    10151
    Sleep manager: Optimize counter

    10150
    Timer: Remove hard-coded lp_ticker knowledge

    10147
    Assembler atomics

    10146
    CellularBase -> CellularInterface tidy

    10056
    Cellular: Retry logic for CellularContext connect

    10053
    Cellular: Make CellularStateMachine timeouts configurable

    10043
    Add vprintf to Rawserial

    10021
    Enable post build bootloader merging in uVision

    9960
    Use LP tickers for waiting in no-RTOS builds when available

    9955
    ESP8266: Treats Wi-Fi scan results as out-of-band data; new API to adjust Wi-Fi scan settings

    9944
    GCC - Add support to split heap across 2-RAM banks

    9927
    ESP8266: Country code API

    9476
    Asynchronous Serial API fixes and refactoring

    9443
    Add USBCDC_ECM class

    9221
    Add ARM_MUSCA_A1 target

    9111
    CAN: Fix signness mismatch in CANMessage constructors

    10747
    Cypress: Fix issue #10613

    10740
    ARMC6: Suppress “register deprecated” warning

    10733
    Fix NRF52 memory pools

    10722
    mbed-crypto: Automatically enable entropy injection

    10716
    Update requirement for manifest-tool

    10809
    ns_list: avoid UINT_FAST8_MAX (fix Arm Compiler 5 builds)

    10805
    Fix Arm Compiler 5 compilation

    10802
    Update to Mbed TLS 2.18.0rc3

    10786
    Re-enable complilation for Wi-Fi and nanostack examples

    10770
    mbed-crypto: Update to Mbed Crypto 1.1.0d1

    10753
    Fix NRF52 enabled UART count and enable UART0/1

    10709
    Default to Cordio BLE stack for NRF52* targets

    10875
    Cellular: Remove IPv6 and IPv4v6 as supported properties for BG96

    10764
    BG96 IPv6 support and socket ID fix for BG96 and M26

    Using this release

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

    Downloads: zip tar.gz

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

    Summary

    No new targets being added in this release.

    Important changes are:

    10520 Permit non-TrustZone ARMv8 build

    • Non-TrustZone ARMv8 targets now supported (core must be set to Cortex-M33 rather than Cortex-M33-NS).

    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

    10579
    Cellular: fix Quectel BG96 missing unlock at socket_connect

    10578
    Modify PinName file to keep correspondence with spec

    10575
    BLE: fix CCC callback not being called when writing to a CCC

    10573
    Change “aplication” to “application”

    10570
    STM32 astyle updates

    10544
    Py3 fixes for test scripts

    10543
    Cellular: Increase receiving timeout for UDP echo non-blocking test

    10541
    Adding QSPI support to target RHOMBIO_L476DMW1K

    10539
    Add mbed studio flag during assembly

    10538
    Enabled crash reporting for DISCO_F407VG target

    10534
    NANO130: Fix optimization error with NVIC_SetVector/NVIC_GetVector on ARMC6

    10530
    C027 Fix for modemOn flag

    10529
    Cellular: Target name change for ublox cellular instance

    10527
    Nuvoton: Add COMPONENT_FLASHIAP support

    10524
    TRAVIS: turn off upload python test code coverage

    10523
    Removing support of FLASHIAP in general_filesystem tests

    10520
    Permit non-TrustZone ARMv8 build

    10512
    requirements: update urllib3 to 1.24.2

    10500
    This removes many const char* warnings related with LWIP_ASSERT()

    10496
    Allow application to override LWIP_RAW

    10483
    PSOC6: move mbed_sdk_init to mbed_overrides.c

    10480
    SPI: Prime asynch transaction buffer on construction

    10479
    STM32WB: Update Flash size

    10468
    Add support for CAN to SiLabs targets

    10287
    Enable MTS_DRAGONFLY_F411RE to register with Pelion

    Using this release

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

    Downloads: zip tar.gz

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

    Summary

    In this release we have fixed the following reported issues:

    • 10498 FRDM-K66F Missing ADC pins mapping
    • 10400 No flow-control on TARGET_LPC55S69

    We have also:

    • Added support for QSPI to Cypress targets
    • Re-added IAR support for MIMXRT1050
    • Updated the wifi driver for rda target UNO_91H
    • Activated FLASHIAP for STM32F303RE

    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

    10525
    Fix ‘LICENSE’ file 404 link error in README.md

    10516
    32 Byte key derivation may fail with a 16 Byte ROT key

    10513
    Fix ARMC6 fpu detection for M33 core

    10509
    LPC55S69: Add support for UART hardware flow control

    10507
    PSA: mbedSPM correct SPM initialization order

    10506
    Add missing ADC pins mapping for FRMD-K66F (#10498)

    10502
    PSA: TFM import

    10493
    STM32F303RE: Activate FLASHIAP

    10492
    Remove sleep lock/unlock from Silicon Labs HAL implementation

    10490
    Cellular: Added UT for case when read_string buff size hits middle of

    10488
    Cellular: Add description for CellularProperty

    10485
    NVStore.cpp compiler warning removal (os_ret)

    10477
    Wi-SUN: adds greentea test config

    10474
    fix usb msd test python dependencies

    10472
    Fix USB control transfers using small size

    10471
    SDP-K1: Updates to target code

    10465
    Cellular: fix calls to ATHandler::read_string(…) give correct size

    10463
    Cellular: Add WISE-1570 handling for socket closing URC

    10462
    Nanostack: release connect_semaphore only when it is pending

    10461
    Update wifi driver for rda target UNO_91H

    10453
    Cellular: Minor doc update for CellualrSocket object

    10451
    MIMXRT1050: Readd IAR support

    10449
    Configure UNO_91H to support PDMC compile

    10448
    Size should be calculate after confirm the final start address

    10443
    Fix for downloading the wrong binary in the online compiler

    10438
    PSA: Pass TFM_LVL macro to linker files

    10436
    NUC472: Workaround for unknown error with power-down

    10435
    Add support for QSPI to Cypress Boards

    10434
    Nanostack network handle does not always call status cb for BOOTSTRAP events

    10426
    UDPSOCKET_ECHOTEST fails if a packet of every size was not sent

    10401
    NUC472: Support crash capture for no-XRAM configuration

    10390
    Correct some CPU selections in tools

    10364
    Refactor PSA code generators

    10303
    STM32L4xx: IAR memory maps updated

    10078
    Fix heap init error in rtos-less code

    10018
    STM: Update linker script for using SRAM1 and SRAM2 in ARM

    Using this release

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

    Downloads: zip tar.gz

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

    Summary

    In this release we have added target support for:
    ARM_MPS2_M3, ARM_MPS2_M4 and ARM_MPS2_M7.

    The following reported issues have been fixed: * 8411 VSCode exporter with zip option: .vscode directory not included in zipfile * 875 mbed complie can’t find ARM complier 6 in the PATH with quotes * 10049 DISCO_F746NG QSPI WriteEnable might Fail on IAR8 * 9578 Mbed-OS build fails for FUTURE_SEQUANA/family of targets with ARM Compiler 6.11 * 10107 OS2 ARM build is no more possible * 10109 map file extraction is failing with GCC and M33 * 9069 M487: Crash report test failed in IAR * 10352 ATHandler.cpp malloc undefined * 10242 Mbed error info not printed with mbed-os-5.12.0 * 10344 Printing fault information fails if console is not initialized * 9106 Wait() function causes system to hang on STM32F0(91RC) * 5467 Export: uvision5 + STM32 does not flash * 10360 Inconsistent Licensing Information

    We have:

    • enabled low-power ticker and sleep HAL API for FastModels.
    • provided a basic driver for Quectel EC25/EC21
    • reactivated the data cache for i.MX RT1050
    • updated mbed-cloud-sdk to 2.0.6

    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

    9870
    Re-enable MPS2 platform

    Fixes and Changes

    10421
    Update Jinja2 for CVE-2019-10906 fix

    10420
    Updated mbed-cloud-sdk to 2.0.6

    10419
    FUTURE_SEQUANA: Clean up “unused variable” compiler warnings

    10418
    CordioGattServer: reset settings variable before ANDing the properties to it

    10417
    suppress coverity error

    10415
    rtos/drivers: add license information

    10414
    ExhaustibleBD: licensed under Apache 2.0

    10412
    FUTURE_SEQUANA: Fix flash_api bug introduced with e16d2d81d9

    10411
    Cellular: Added BG96 handling for socket closing URC

    10409
    Fixing default algorithms in cmsis pack index

    10408
    Update comments and improve readability for the BusInOut class

    10407
    Fix warnings on PSA secure builds

    10406
    Modify CMSIS pack manager to properly handle OSError

    10395
    mbed_error: Avoid negative left shift

    10394
    Networking: Fix some ARMC6 warnings

    10393
    approcah -> approach

    10391
    Update the writing example in unit testing README

    10387
    Atmel SAMG55: Cortex-M4 -> Cortex-M4F

    10386
    ARM MPS2: Cortex-M4 -> M4F & M7 -> M7FD

    10385
    README file for wifi tests gives configuration example

    10384
    Toshiba: Cortex-M4 -> Cortex-M4F

    10383
    GigaDevice: Cortex-M4 -> Cortex-M4F

    10382
    SDP_K1: Cortex-M4 -> Cortex-M4F

    10381
    ECHOTEST internal loop simplification and fix

    10380
    Nordic QSPI data must be written from/read to aligned buffers in RAM

    10378
    STM32: protect compilation when DEVICE_USTICKER is disabled

    10377
    Fix ESP8266 driver behavior on connection failures

    10376
    LPC55S69: Fix APB bridge security programming

    10375
    Cellular: Fix to delete PDP context on disconnect

    10369
    L3IP interface input handler change.

    10368
    FUTURE_SEQUANA_PSA fix PSA Protected storage

    10367
    Increase background stack size to fix overflows with debug profile

    10363
    Flagging WEAK method implementation for default construction

    10358
    Error print improvements

    10354
    Cellular: Using new rather than malloc in debug_print

    10350
    Fix doxygen comment in USBDevice

    10349
    Fix crash capture feature for nuvoton

    10348
    Parse M33 + GCC_ARM map files

    10347
    Fix detection of supported targets for mbed 2 builds

    10346
    FUTURE_SEQUANA: Add suport for ARMC6

    10343
    TARGET_STM32F7: Reset QSPI in default mode on abort for all versions.

    10341
    Cellular: Check for URC during AT response stop

    10340
    BLE: fix missing implementation call

    10338
    Cellular: Fix deleting of state machine to correct class

    10335
    PSA release.py - Check that required toolchains are in PATH

    10334
    MXRT1050_EVK: Fixes test failure seen with ARM & IAR toolchain

    10333
    Allow toolchain paths to be wrapped in quotes

    10332
    Break up large prints from –supported

    10330
    Reduce greentea socket tests failures related to network issues

    10318
    Crash with MTB_MXCHIP_EMW3166 has been corrected.

    10314
    i.MX RT1050: Reactivate data cache

    10301
    examples test compile optional verbose

    10292
    Cellular: Basic driver for Quectel EC25/EC21

    10268
    PSoC6 serial driver: Setup RTS and TX lines on deepsleep entry/exit

    10257
    Correct Python 3 errors and lint warnings in build_release.py

    10232
    PSA Crypto Service - multipart operation memory fixes

    10124
    Enable low-power ticker and Sleep for FastModels

    10096
    Add USB HID tests

    10020
    Fix single-threaded apps for IAR v8 builds

    10019
    uARM - Move heap region after IRAM1

    10004
    M2351: Support memory custom partition

    9981
    test_soap_connection_handler leaks memory when open_connection fails

    9967
    Fix for projects exported as a zip file (affects online compiler)

    9966
    tools: fix the path generated to the sct file

    9870
    Re-enable MPS2 platform

    9844
    Travis CI: Stages, OS update, apt-get relief!

    Using this release

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

    Downloads: zip tar.gz

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

    Summary

    We have added support for two new targets in this release, MTB ublox ODIN W2 and NUCLEO-F413ZH.ST CUBE for the STM32F0 series has been updated to v1.9.0.
    This brings: * Current ST Cube version in MBED: V1.7.0 * CMSIS part update from 2.3.1 to 2.3.3 * HAL part update from 1.5.0 to 1.7.0

    Our BLE Nordic PAL client implementation has been replaced. The previous implementation was found to contain a number issues deep in the GattClient logic (improper queueing and order ofoperations). It was deemed more efficient to re-write the implementation than try to patch the previous version.
    As well as fixing issues, the re-write has the added benefit of including all the previously missing GAT procedures: * Discover Primary Service By Service UUID * Find Included Service * Read Using Characteristic UUID * Read Multiple Characteristics * Queue Prepare Write * Execute Write

    We have also added Flash support for STM32F0, STM32F1 and STM32F3 devices, and enabled tickless on nRF52840.

    There are also a number of bug fixes and test enhancements.page, which provides reference links and details of our support channels.

    10118 Selectively append changes to exported config files

    Not tested on windows or python 2.
    Uses .splitlines(), and newlines should be correctly handled by the file read and write functions.

    10106 Update manifest tool to version 1.4.8 and install it from pypi

    10102 Remove fuzzywuzzy dependency

    10081 Cellular: call AT+CGEREP after sim is ready

    AT+CGEREP call was made before sim was ready and it was failing in most modems.
    Now call is made after sim is ready.

    9964 Add imports of basestring for python 3

    9905 Tests: check if recv returned too much data

    9904 Handle oversized packets in tcp and udp socket tests.

    9896 wait_us without usticker

    Some targets have no usticker. Fallback to use busy loop wait_ns() for cases like this.

    9837 Cellular: CGACT not supported in coming firmware in BG96
    Change API CellularNetwork::is_active_context to take more parameters to reduce copy-paste code.
    API can be use in old way as parameters have default values.
    Change CGACT to QIACT in case as BG96 module. Reason is that in upcoming firmware versions only QIACT is supported. Current firmware versions do support both commands.

    9814 Adding NUCLEO_WB55RG support

    Known Issues

    There are no new known issues with this release.

    Contents

    Ports for Upcoming Targets

    10281
    Adding support for S2_LP (WiSUN) as a new MTB target

    10133
    Adding STM32_F439 as a new MTB target

    10115
    Uhuru RAVEN: Adding platform HAL

    10000
    Adding support for SDP-K1.

    9814
    Adding NUCLEO_WB55RG support

    Fixes and Changes

    10317
    Fix for DigitalOut(NC) instantiation for all Toshiba targets

    10304
    equeue: align passed-in buffer

    10302
    BLE: force mandatory services to have lowest handles

    10299
    MIMXRT1050: Fix ENET issues

    10296
    Build script: add explicit console log in case of linker script error

    10295
    eclipse_gcc_arm export improvement

    10294
    NUCLEO_L4R5ZI_P: enable sw4stm32 export

    10290
    README link to license guide 404s

    10289
    PSOC6: Rebuild WICED libraries

    10288
    Revert limiting Renesas targets to ARMC6

    10282
    Nuvoton: Support export IAR8 project

    10281
    Adding support for S2_LP (WiSUN) as a new MTB target

    10280
    Remove CFSTORE VERSION file (colliding with an ARM 6.12 C++ header file)

    10276
    Parse Errors and Warnings from Arm Compiler 6

    10275
    Updated AWS url for astyle.

    10270
    BLE SimpleAdvertisingBuilder moved functions out of mbed_assert calls

    10269
    cellular: valgrind defect fix

    10267
    PSOC6: Modify lp_ticker to 32 bit

    10260
    Remove leftover waffle comments from README.md

    10248
    TARGET_STM32F7: Refresh cache when erasing or programming flash

    10246
    LPC55S69: Update Flash driver to set clock frequency

    10243
    Nanostack::EthernetInterface::bringdown() can handle blocking mode

    10240
    Add Python modules to LICENSE file

    10234
    Update flash algo default with CPM 0.2.4

    10231
    Nanostack ARMC6 update

    10230
    Cellular: cellular_network_test Compilation Error Removed

    10229
    Cellular: Power ON Wait Increased for C030_U201

    10222
    Travis CI: Updated astyle to work with updated .astyleignore file

    10221
    Travis CI: Replaced ‘./’ with ‘^’ in .astyleignore file.

    10219
    BLE: fix scan timeout being called from interrupt

    10214
    LoRaWAN: Adding TOA and Channel info in RX metadata

    10213
    GR_LYCHEE,RZ_A1H,VK_RZ_A1H: Fix greentea ticker test case failures

    10212
    Fix tempsensor cal1 constant in stm32f3xx_ll_adc.h

    10209
    Nuvoton: Add button names BUTTON1/BUTTON2

    10206
    Define program_cycle_s for LPC55S69 & CY8CKIT_062_WIFI_BT

    10200
    update vscode default gcc arm version to 6-2017-q1-update

    10196
    LoRaWAN: Fixing premature RX2 closure

    10194
    readme: remove waffle as not supported soon

    10190
    Fixed compilation error in LWIPStack class if lwip tcp is disabled.

    10185
    Nanostack 802.15.4 RF drivers update

    10184
    Cellular: Increase receiving timeout for UDP echo non-blocking test

    10182
    Workaround for ARMC6 Windows 7 assembler issue

    10181
    DISCO_L496AG: Add PMOD and STMOD+ connector

    10180
    Fix SPIF speed for MTB_ADV_WISE_1570 and max packet size for BC95

    10179
    Cellular: C030_N2XX default interface

    10178
    Nuvoton: Remove SD component from targets.json

    10171
    Fix QSPIF Bus mode mask and quad enable write SR size

    10166
    Travis CI: Tweak astyle to not over-exclude files

    10160
    Crypto access control additional tests

    10156
    MTB_STM_L475: fix UART clock

    10155
    Remove dependency on us_ticker HAL apis for non USTICKER targets

    10154
    Fix for LoRaWAN downlink sequence counter rollover

    10149
    STM32H7 ADC internal channels

    10145
    RTOS API: minor tidies

    10144
    Atmel RF: use system wait_ns

    10143
    STM32 ADC INTERNAL CHANNEL reset after read

    10142
    Nanostack 802.15.4 RF drivers update

    10140
    Cellular: fix astyle for files that already in master

    10138
    Cellular: don’t allow ATHandler read/write if filehandle not usable

    10133
    Adding STM32_F439 as a new MTB target

    10131
    Add baremetal example to testing

    10122
    mbed_error.c: fix warnings

    10121
    Cellular: Improve ATHandler AT debug traces

    10120
    Cellular: Fix network interface test for cellular targets

    10118
    Selectively append changes to exported config files

    10115
    Uhuru RAVEN: Adding platform HAL

    10110
    Improve genenral BlockDevice tests

    10106
    Update manifest tool to version 1.4.8 and install it from pypi

    10105
    test_configs: generic app config for boards with Wi-Fi

    10102
    Remove fuzzywuzzy dependency

    10100
    Cellular: Support Cinterion EHS5-E cellular module

    10098
    Cinterion Cellular: Setup connection profile with username and password

    10094
    BLE: Fix ble gattserver autorization list registration

    10093
    BLE:Fix cordio reset sequence

    10092
    BLE:fix on_phy_update_complete function

    10084
    Cellular: AT information response to return false on empty prefix

    10081
    Cellular: call AT+CGEREP after sim is ready

    10074
    Fixed issue with PWM not being freed when the object is destroyed

    10073
    Removed PSoC6 SystemInit Workaround for ARM compiler

    10072
    Adding variable length attributes to Maxim Feather

    10070
    PSA more options in release tool

    10065
    Correct post-build-hook detection logic

    10048
    Fix for reallocation memory fail in TMPM46B

    10045
    Uvision exporter fixes for Python 3, CPM updates, and Windows path issues

    10037
    TCP/TLS Socket tests will skip if TCP is not supported

    10036
    Refactor Crypto Service Proxy

    10030
    TESTS: skip timing accuracy test on FastModels

    10029
    Cellular: Remove compile dependency of UARTSerial

    10014
    Update nanostack-interface error mapping

    10008
    Fix MBED_RAM_START/MBED_RAM_SIZE symbol generation

    10005
    cellular: remove last CELLULAR_DEVICE references

    10000
    Adding support for SDP-K1.

    9998
    Remove intervaltree from requirements.txt for mbed-os as it contradic

    9995
    Fixing path comparisons in config tests on Windows

    9992
    BLE - Use low power timing primitives

    9988
    BLE: fix tick rate set to 10 ms

    9986
    OdinWifiInterface is calling memcpy with a null pointer

    9985
    GigaDevice targets can return uninitialized variable in CAN driver

    9980
    Dead pointer usage in GenericSecurityManager

    9979
    TEST_APPS socket_app leaks memory when cannot initialize packetSizes

    9972
    cellular: BC95 memory leak fix

    9971
    Correct thread status callback functionality

    9964
    Add imports of basestring for python 3

    9959
    Refactor socket stats to reduce boiler plate

    9952
    Fix PWM driver of RZ/A1

    9948
    BLE:Cordio:insert_descriptor check r/w properties

    9941
    Add missing RSPIF component to the defaut BlockDevice handler

    9937
    Cellular: removed manual registering state.

    9936
    Fix lwip to compile if MBED_CONF_LWIP_DEBUG_ENABLED is defined

    9935
    Increased timeout for lwip waiting netif_is_link_up

    9930
    NUCLEO_H743ZI: Arduino A5 is mapped on ADC3_IN6

    9925
    SAML21J18A: #endif without #if in analogout_api.c

    9924
    Update Wi-SUN network default name

    9921
    BLE:Cordio:Fix insert characteristic not handle error

    9919
    BLE - Report extended advertising in legacy handler

    9914
    Remove #ifndef NO_GREENTEA from tests

    9905
    Tests: check if recv returned too much data

    9904
    Handle oversized packets in tcp and udp socket tests.

    9902
    Remove assertion of MDMRST in case of SARA-R4

    9900
    DNS send returning WOULD_BLOCK forces delayed retry

    9896
    wait_us without usticker

    9895
    Fix for i2c_t object not being initialized to 0 causing timeout

    9893
    ESP8266: astyle fixes

    9884
    STM32F429 ARM MICRO startup file update

    9873
    Corrected timeout for +UDNSRN command

    9872
    Fix for NUCLEO_F207 UDPSOCKET_ECHOTEST_BURST_NONBLOCK fails.

    9837
    Cellular: CGACT not supported in coming firmware in BG96

    9814
    Adding NUCLEO_WB55RG support

    9801
    Correctly include EventQueue.h

    9637
    Cellular: UBLOX_C030_N211 Cellular API’s

    9444
    Usb msd tests

    Using this release

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

    Downloads: zip tar.gz

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

    Summary of release

    Mbed OS 5.12.0 brings support for Platform Security Architecture (PSA) to truly secure your data end-to-end. The release is supported in Mbed Studio Beta, providing a seamless development and debugging experience. We also included the first open sourced Wi-SUN stack for Field Area Networks based on 6LoWPAN and IEEE 802.15.4 technologies, and our new USB device stack supporting multiple device classes. Finally, we introduce a new Mbed OS profile called bare metal, which targets memory constrained devices.

    This release also includes fixes, new versions of various components and updates to supported compiler versions.

    Notes for specific pull requests

    9920 Update Mbed TLS for 5.12 release to Mbed TLS development HEAD
    This release of Mbed TLS includes:

    • Integration of the PSA Crypto API sufficient to support Pelion Client.
    • RAM optimizations to reduce RAM usage during TLS handshakes when using X.509 authentication. This reduces the overall RAM required by Mbed TLS.

    9898 Cellular: fix connect-disconnect sequence called many times
    Removed API get_connection_status() from CellularNetwork. This was left accidentally after refactoring. It wasn’t giving correct states after refactoring. The application should use CellularContext::get_connection_status, instead.

    9864 BLE: Cordio host upgrade
    Upgrade of Cordio host to new version (from 2.4 to 19.02). This should not impact users and be an in-place upgrade. Replace compiled Cordio controller libs with sources - no functional change and no impact on users.

    9851 feat: add support for .obj files in memap

    • A brief description of changes introduced
      Add support for .obj files in memap tool.
    • An analysis of effects: components affected, potential consequences for users and reasons for the addition or change.
      Affects tools component, behaviour doesn’t change for existing users. This adds support for using the memap tool for CMake/gcc-arm-none-eabi builds (and maybe others too).
    • Migration guidance: actions for updating the current code. Please include code snippets to illustrate before and after the addition or change.
      N/A

    9838 Nanostack release for Mbed OS 5.12

    • Initial version of Wi-SUN mesh stack.
    • Improvements and bug fixes to Thread and 6LoWPAN ND protocol stacks.

    9813 BLE: Cordio build time configuration through mbed_lib.json
    This doesn’t remove the old Cordio stack config file and merely sits on top, so it will not introduce any unexpected changes. If users modified the cfg files themselves (in features\FEATURE_BLE\targets\TARGET_CORDIO\stack\cordio_stack\ble-host\sources\stack\cfg), they will have to resolve the conflict.

    9812 Add wait_ns API

    • wait_ns() API added for <10us small software-loop based delays.

    9808 IAR 8 feature branch merge
    Updating the IAR toolchain version to IAR 8.32.

    9804 Provide an option to disable writing developer certificate
    It is possible now to disable writing developer certificate to mbed_cloud_dev_credentials using an option –no-developer-cert with “mbed dm init” command

    9800 Bare metal profile
    Mbed OS may now be built without the RTOS by creating an mbed_app.json with the following contents:

    {
    "requires": ["bare-metal"]
    }
    

    9799 Increase events.share-eventsize to 768B because of ESP8266 AT driver and asynchronous DNS

    “events.shared-eventsize” increased from 256B to 768B

    Original value was too small once both the ESP8266 driver and asynchronous DNS started to use the shared event queue. An assumption is made that once the shared event queue is taken into use, there are going to be multiple users instead of one, for which the original value would have been sufficient.

    9797 API to temporarily enable/disable FileHandles

    • UARTSerial can now be temporarily or permanently disabled for input and/or output. This is particularly useful to save power when reception is not required - disabling input permits deep sleep. To do this more generically for the console, use mbed_file_handle(STDIN_FILENO)->enable_input(false).

    9795 crypto: Update to Mbed Crypto 1.0.0d5 and then to 1.0.0d6
    Previously, calls to psa_crypto_*_setup() would succeed even if a user did not initialize their operation context. Help users of the PSA Crypto API catch their own bugs by returning PSA_ERROR_BAD_STATE when a setup function is called with an uninitialized context.

    9790 BLE conf
    No changes made to existing programs. By default, all options are enabled, which is the current state.

    9768 Bring USB Feature branch into master
    This feature brings USB device support into Mbed OS from a feature branch. Targets that support USB include the LPC1768, ARCH_PRO, K64F, NUCLEO_F207ZG, NUCLEO_F412ZG, DISCO_F413ZH, NUCLEO_F413ZH, NUCLEO_F429ZI, NUCLEO_F446ZE, NUCLEO_F746ZG, NUCLEO_F756ZG, NUCLEO_F767ZI, DISCO_F469NI, DISCO_F746NG, DISCO_F769NI, DISCO_L475VG_IOT01A, DISCO_L476VG, RZ_A1H, GR_LYCHEE, DISCO_L496AG, NUCLEO_L496ZG, NUCLEO_L4R5ZI. Supported USB device classes include USBAudio, USBHID, USBMouse, USBKeyboard, USBMIDI, USBMSD, USBSerial and USBCDC.

    9758 Allow hash or mac on large buffers with less memory use
    Description: Hash and mac operations are now processed in secure partition in multiple chunks internally leading to decrease in memory use for large buffers.
    Effect analysis: This change has no impact on API and should not alter behavior from the user perspective.
    Migration: No action should be required from the user side.

    9746 Cellular: Retire CellularBase class
    In order to align to other connectivity technologies CellularBase is deprecated and CellularInterface usage is preferred. This change is backward compatible.

    9708 Implement PSA protected storage & restructure PSA storage implementation

    • Restructure PSA storage implementation (directory structure and common code)
    • Add the PSA protected storage feature

    9668 PSA Initial Attestation service

    • A brief description of changes introduced.
      Add PSA Initial Attestation Service implementation.
    • An analysis of effects: components affected, potential consequences for users and reasons for the addition or change.
      this code is a new feature and doesn’t effect existing code.
    • Migration guidance: actions for updating the current code. Please include code snippets to illustrate before and after the addition or change.
      This breaks backwards compatibility with Nucleo F411RE entropy injection.

    9571 Update to 2-region model for HEAP and Stack Memory
    RAM memory model is updated to a two-region model. RTOS and non-RTOS versions of Mbed OS across all targets and toolchains will have separate stack and heap sections. ISR stack size is unified across all targets and is set as 1K for Mbed OS with RTOS. In case of no RTOS, stack size is also the main thread size and is set as 4K.

    9568 Merge feature cellular refactor
    This PR has impact on cellular application development and porting of new cellular devices.

    Application developers need to select the suitable NetworkInterface type. When using NetworkInterface NSAPI configuration defines are applied by default, see NSAPI configuration options for cellular in more details. CellularBase users have a new function set_default_parameters to apply NSAPI configuration options. CellularContext is to be used instead of CellularBase for new extended cellular functionality, such as NonIP sockets and EPS CP optimization…

    Migration guidelines for application developers:

    • Change CELLULAR_DEVICE macro to get_default_instance
    • Change OnboardCellularInterface or EasyCellularConnection to CellularContext
    • Call CellularDevice::set_data_carrier_detect to set HUP signal detection

    Cellular API changes need to be taken into account when porting new cellular devices. This PR already contains the changes needed for the existing cellular drivers and the onboard modems. Arm has an internal ticket to update the cellular porting documentation for Mbed OS 5.12.

    Migration guidelines for porting developers:

    • Follow GENERIC_AT3GPP implementation when porting new AT based cellular devices
    • Change power_on/off to onboard_modem_api with soft_power_on/off and hard_power_on/off
    • Move implementation from CellularSIM and CellularPower to CellularInformation and CellularDevice
    • Implement CellularDevice::init and CellularDevice::shutdown
    • Use CellularNetwork::get_signal_quality instead of CellularNetwork::get_extended_signal_quality

    9449 Pinmap extensions
    Added pinmap support to the HAL API. For more information see the porting targets docs page - https://os.mbed.com/docs/mbed-os/latest/porting/porting-targets.html.

    9219 LoRaWAN: Retiring LoRaWANBase class
    There has been only one user of the LoRaWANBase class, the LoRaWANInterface. We anticipated that the third parties may use this class to provide their own LoRaWAN network stacks alongwith the default network stack provided by Mbed OS. However, a trend has been observed that the default stack provided by Mbed OS has become the de-facto choice. Having LoRaWANBase class adds 1K to the ROM in terms of footprint (for GCC, ARMCC and IAR optimize that already). It has been decided to do away with the LoRaWANBase class for now, and if the need arises it can be reintroduced back.

    9184 Adds an NFC System Test suite
    Adds an automated test suite which provides Standalone and End-2-End validation for either the supported PN512 NFC Controller shield or the M24SR NFC EEPROM. This is an icetea framework based test suite and requires additional hardware.

    9940 Reduce flash page size from 512 to 32 bytes in PSOC6 based boards
    Reduce flash page size from 512 to 32 bytes in PSOC6 based boards

    10193 Fallback to ARMC5 when ARMC6 is not configured
    The -t ARM argument defaults to using the Arm Compiler 6 when it is configured in a user’s enviroment. However, In cases where a target supports building with both Arm Compiler 5 and Arm Compiler 6 and Arm Compiler 6 is not properly configured, the tools will fallback to compiling with Arm Compiler 5.

    10164 tls: Update Mbed TLS to 2.17.0
    Update Mbed TLS to version 2.17.0.

    10152 crypto: Update Mbed Crypto to 1.0.0
    Update Mbed Crypto to version 1.0.0.

    10114 Allow the use of Mbed Studio’s version of Arm Compiler 6
    You can use the Arm Compiler 6 compiler that is bundled with Mbed Studio with the command-line tools. Enable this behavior by adding the Arm Compiler 6 executable to your system path (the default location of this on Windows is C:/MbedStudio/tools/ac6/bin). Alternatively, you can set this same location with Mbed CLI with the command mbed config ARMC6_PATH C:/MbedStudio/tools/ac6/bin (be sure to use the correct path when you run the command). You also need to set the ARMLMD_LICENSE_FILE environment variable to the license file that is bundled with Mbed Studio. Please see the Mbed OS documentation for further details.

    Known issues

    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; please use it at 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 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: 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 peer’s 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 issue: https://github.com/ARMmbed/mbed-os/issues/8064.
    • Priority: Major.

    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.

    Core: Some boards are crashing when lots of data is sent and received through buffered serial.

    • Description: This is currently known to affect Ublox ODIN W2 and RTL8195AM.
    • Workaround: None.
    • Reported issue: https://github.com/ARMmbed/mbed-os/issues/8081.
    • Priority: Major.

    NVStore and TDBStore objects can collide in internal flash

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

    SPI failures on CY8CKIT_062_WIFI_BT

    • Description: When reading from an SD card connected via SPI, sometimes we see that read operation leave some bytes unchanged in the buffer, without reporting an error. The root cause is under investigation.
    • Workaround: https://github.com/ARMmbed/mbed-os/tree/feature-SD-verify.
    • Reported issue: IOTSTOR-815.
    • Priority: Major.

    UART flow control does not work on Cypress CY8CKIT_062_WIFI_BT_PSA

    • Description: UART hardware flow control: When connecting a Wi-Fi shield via UART, flow control does not work. The root cause is under investigation.
    • Workaround: None.
    • Reported issue: IOTHAL-481.
    • Priority: Major.

    Mbed CLI may use the wrong armasm or armlink version when both Arm Compiler 5 and Arm Compiler 6 are configured using the host platform PATH environment variable

    • Description: If you have configured both Arm Compiler 5 and Arm Compiler 6, Mbed CLI may use the wrong armasm/armlink version based on which version is listed first in the host platform PATH environment.
    • Workaround: Use “mbed config” commands as documented in https://os.mbed.com/docs/mbed-os/v5.12/tools/after-installation-configuring-mbed-cli.html to configure toolchains instead of using the host platform PATH environment variable. This is the preferred solution until Arm Compiler 5 is deprecated.
    • Reported issue: https://github.com/ARMmbed/mbed-os/issues/10069.
    • Priority: Minor.

    Some hardware platforms don’t support ArmCompiler 6

    • Description: With the Mbed OS 5.12 release, we are adding support for Arm Compiler 6.11, and it will become the default Arm compiler for Mbed OS targets. At the moment, we still have some targets not compatible with Arm Compiler 6. Below is the list of targets not compatible with Arm Compiler 6:
      CY8CKIT_062_4343W, CY8CKIT_062_BLE, CY8CKIT_062_WIFI_BT, CY8CKIT_062_WIFI_BT_M0, CY8CKIT_062_WIFI_BT_M0_PSA, CY8CKIT_062_WIFI_BT_PSA, CY8CPROTO_062_4343W, CYW943012P6EVB_01, CYW943012P6EVB_01_M0, FUTURE_SEQUANA, FUTURE_SEQUANA_M0, FUTURE_SEQUANA_M0_PSA, FUTURE_SEQUANA_PSA, KW24D.
      We are working with our Partners to ensure they are fully supported by Arm Compiler 6.
    • Workaround: The developers compiling for these targets should use Arm Compiler 5.06u6.
    • Reported issue: https://github.com/ARMmbed/mbed-os/issues/9578, IOTCORE-1059.
    • Priority: Major.

    Contents

    Ports for upcoming targets

    9224
    Add platform TT_M4G9

    9910
    Add support for LPC55S59

    9908
    Pr/cy mbed os 5.12.0

    Fixes and changes

    9946
    Fix include paths for the assembler for makefiles

    9932
    Fix direct access to device key test for small erase/program ratio

    9920
    Update Mbed TLS for 5.12 release to Mbed TLS development HEAD

    9918
    Unify PSA code generators

    9917
    Add attestation doxygen

    9916
    Skip test on Cortex M33 devices

    9915
    Update TF-M sources

    9913
    Fix bug in crypto_acl test

    9906
    Docs: fix doxygen not being generated for BLE classes

    9899
    Regenerate mbed-spm files

    9898
    Cellular: fix connect-disconnect sequence called many times

    9892
    Update PSOC6 postbuild prints

    9891
    Correct the device name for NUC472 / M453 - IAR 8

    9888
    Arm Toolchain update to Arm Compiler 6.11(ARMC6)

    9885
    ESP8266: graceful disconnect on network state timeout

    9883
    Free dynamic memory in Crypto Service proxy (PSA targets)

    9879
    Lock sleep when USB is initialized

    9875
    Fix multihoming tests

    9874
    Add mbed_lib.json to usb folder

    9871
    ESP8266: receive is able to handle device busy indication

    9867
    PSOC6: Rebuild WICED libraries with IAR8 support

    9866
    QSPI write alignment fix for nRF52x

    9864
    BLE: Cordio host upgrade

    9862
    Backward support PSA_ITS

    9861
    STM32 InterruptIn protection

    9856
    Crypto: Update Mbed Crypto to 1.0.0d7

    9852
    Docs: fix release notes link in PR template

    9851
    Feat: add support for .obj files in memap

    9849
    Update mbed-cloud-sdk to latest version 2.0.5

    9845
    Add spi_get_peripheral_name() to stm_spi

    9843
    Fix Cordio gatts configuring write permission

    9842
    Add missing license description to RZ/A1 driver

    9838
    Nanostack release for Mbed OS 5.12

    9836
    TF-M: Fix issues found in SPM tests

    9835
    Add define to skip greentea sync

    9834
    Add missing copyright header to STM32 driver

    9833
    Remove Arm Beetle target for Mbed OS 5.12

    9831
    Update mbed-cloud-sdk to latest version 2.0.4

    9829
    Fix SPM error codes

    9828
    Update 802.15.4 RF drivers to the latest version

    9825
    Remove unnecessary prints in FileSystemStore class

    9823
    mbed-SPM updates

    9822
    Return the new values for key type & size even if function fails

    9821
    PSOC6: send HCI reset after patch RAM download

    9817
    Apply artifact_name configuration parameter to exported projects

    9813
    BLE: Cordio build time configuration through mbed_lib.json

    9812
    Add wait_ns API

    9808
    IAR 8 feature branch merge

    9806
    Update mbed_stats.c to use __ARMCC_VERSION flag for compatibility with AC6

    9804
    Provide an option to disable writing developer certificate

    9802
    Fix psa_system_reset() on PSA IPC platform

    9800
    Bare-metal profile

    9799
    Increase events.share-eventsize to 768B because of ESP8266 AT driver and asynchronous DNS

    9797
    API to temporarily enable/disable FileHandles

    9796
    New Wiced binaries

    9795
    Crypto: Update to Mbed Crypto 1.0.0d5 and then to 1.0.0d6

    9794
    Refactor tcpsocket tests to use sigio and not to wait

    9792
    NUCLEO_L073RZ Bootloader support

    9791
    Support mbed_start_application for Cortex-M0+

    9790
    BLE conf

    9786
    Optimize tickless tick computation

    9785
    Use us ticker for tickless on devs with wrapper

    9783
    Ensure header CRC is written as unsigned int

    9781
    PSOC6: correctly align hex files with split text sections

    9780
    Crypto Service - keys access control TESTS

    9778
    Add missing wifi parameters to test configs

    9772
    Additions to TF-M source integration

    9768
    Bring USB Feature branch into master

    9766
    Update Toolchain Arm Micro scatter files

    9763
    BLE: fixed initialisation order in GattServer

    9759
    Multiple memory handling fixes

    9758
    Allow hash or mac on large buffers with less memory use

    9755
    Support in more types then just RSA_KEYPAIR

    9754
    Fix SPM returning the wrong value

    9752
    Add comment fix warning

    9751
    Cellular: Fix ATHandler set/restore_at_timeout with mutex lock

    9746
    Cellular: retire CellularBase class

    9745
    Fix incorrect return value in psa_security_lifecycle_state (emul)

    9738
    Tools: Reoder post-build hooks and bl merging

    9728
    Cellular: Fix sigio to be released in ATHandler destructor

    9727
    BLE API devirtualization

    9718
    Greentea tests: user-configurable timeouts

    9714
    Only GCC_ARM toolchain is supported, removing legacy code

    9710
    Crypto: Remove PSA Crypto API from targets without entropy

    9708
    Implement PSA protected storage & restructure PSA storage implementation

    9706
    Cellular: fix onboard modems powering failure.

    9705
    Cellular: Fix cellular stack and drivers for netsocket tests

    9702
    Fix dependencies of platform partition

    9701
    Refactor psa entropy inject test

    9698
    Netsocket documentation cleanup

    9690
    Pinmap design doc

    9684
    enet_tasklet_disconnect() should generate event to tasklet.

    9681
    Make a few trivial syntactic changes to better support cross-compilation

    9679
    Default behavior of C030-R412M should be to use modem IP stack

    9678
    FUTURE_SEQUANA_PSA: fixed deep sleep mode

    9677
    Add MBEDTLS_ENTROPY_NV_SEED to NUCLEO_F411RE to fix the build

    9668
    PSA Initial Attestation service

    9667
    Linker files for LPC11U68 and LPC1549 updated

    9666
    Use new delivery for FUTURE_SEQUANA_PSA

    9660
    Cellular: clean sensitive information from trace

    9655
    Cellular: Non-IP doxygen updates

    9653
    TF-M sources integration to Mbed-OS

    9645
    Change TESTS/netsocket/ for cellular testing

    9638
    Crypto Service - keys access control

    9633
    Improvement to artifact delivery method

    9630
    Publish tests documentation for DNS, Emac, NetworkInterface and Wifi

    9628
    Bare metal mbed_lib updates

    9617
    SPE: Fix up atomic usage

    9616
    nRF52 serial: Tighten/simplify atomics

    9605
    Restore MBEDTLS_PSA_CRYPTO_C for PSA targets

    9600
    Atomic extensions: 64-bit, bool, exchange

    9588
    DISCO L475VG IOT01A: heap in SRAM2 region

    9581
    SharedPtr: use atomic load

    9575
    Crypto IPC 64 bit key ids for ITS

    9571
    Update to 2-region model for HEAP and Stack Memory

    9568
    Merge feature cellular refactor

    9566
    Fix warning in Crypto when using boot seed injection

    9561
    Tools changes for bare metal

    9555
    Wio BG96: Modified sequence of module startup

    9554
    Wio 3G: Modified sequence of module startup.

    9537
    BLE: Add MTU events

    9530
    Use atomics for double-checked locks (SingletonPtr + __cxa_guard)

    9529
    RollUp PR Crypto with ITS

    9528
    Second barrier for core_util_atomic_flag_clear

    9520
    ESP8266: reduces SIGIO signaled to the upper layers

    9503
    ESP8266: OOB handling done based on arrival of SIGIOs

    9493
    Initialize platform in trng test

    9474
    Fix newlines at end of files

    9473
    ESP8266: treats reset-ready-message as OOB

    9469
    SPI upgrade - per-peripheral mutex and GPIO-based SSEL

    9456
    ESP8266: calls MBED_ERROR if modem’s watchdog reset gets triggered

    9449
    Pinmap extensions

    9438
    Use dedicated PinMap for each QSPI data line

    9437
    FPU_USED to be set based on HW FPU support + Squash commits

    9424
    Allows multiple network status listeners

    9414
    Clarify asynchronous Networkinterface::connect() and disconnect() API

    9410
    STM32F756 and STM32L486 alignment with STM32F746 and STM32L476

    9405
    Travis: Fix doxy-spellcheck job

    9401
    Tools: adds and implements a –custom-targets command line switch

    9398
    Revert “Warn with ARMC6 and not v8m”

    9392
    Documentation of TLSSocket behavior on AUTH_FAILURE

    9387
    Multihoming initial release

    9386
    SD default configuration for ST boards is already defined in TARGET_STM

    9378
    Add get_connection_status() override in CellularContext

    9352
    mbed_boot_arm_std.c: remove redundant compiler check

    9350
    GD32_F450ZI: Support boot stack size configuration option

    9317
    Tools: support cases where bootloader is in chunks

    9305
    Minor Doxygen fixes for all file system classes

    9277
    Sleep: error flags fix

    9248
    InternetSocket: use atomics, not volatile

    9247
    Add atomic loads and stores and barriers

    9245
    LoRAWAN: volatile bool -> atomic_flag

    9231
    Critical sections: remove unnecessary volatile

    9224
    Add platform TT_M4G9

    9219
    LoRaWAN: Retiring LoRaWANBase class

    9188
    Add more information to error url to enhance error analytics

    9184
    Adds an NFC System Test suite

    9096
    BLE: Enforce advertising data payload limits

    9092
    Interrupt stack size unification + test

    9067
    Move socket-stats-enable config to socket-stats-enabled

    8972
    Merge feature-posix branch (FileHandle::truncate)

    8961
    ThisThread get_name()

    8887
    Adding debugger awarness with Keil MDK

    8757
    Update Cmsis-pack-manager to 0.2.3

    8749
    Cellular: AT handler API

    8739
    L3IP Interface Implementation

    8497
    Add get/settimeofday retargets

    7799
    Removing feature names from the “allowed feature” config list.

    10077
    Create green-tea init for attestation test

    10046
    PSA: release.py bugfix - send the correct parameter to _get_target_info()

    10042
    BLE: fix conflicting include by qualifying cordio pal includes

    10041
    Fix include in psa compliance tests to mbedtls config file

    10038
    PSA: release.py updates to fixes situation where the script would get stuck

    10033
    Port spi_get_peripheral_name fix to some Freescale boards

    10031
    Add new mbed-os-example-attestation example

    10027
    TF-M patch: Handle extended stack frame in tfm_svcall_psa_call

    10026
    Add needed crypto macros to secure side

    10025
    PSA: PSoC 6 Correct TRNG behaviour

    10023
    Fix crypto compliance tests

    10012
    Generate BLE Static Random Address on U-blox Odin-W2 platform

    10011
    Removed cymetadata section from FUTURE_SEQUANA targets

    10010
    Update PSA tools

    10002
    Disable PSA in baremetal profiles

    10001
    PSA: release.py - add build profile

    9997
    Platform reset API rename

    9996
    PSA: Fix error codes masking in psa_attestation_inject_key()

    9990
    Sync PSA compliance test to latest version

    9989
    Test for and Recompute sector information for all targets

    9982
    Nanostack update for Mbed OS 5.12

    9978
    PSA: Fix psa/release.py tool

    9977
    NUCLEO_L073RZ: IAR linker script issue

    9976
    PSA: Remove unused type which was conflicting wiith errno.h

    9973
    TF-M config: Add max_ns_thread_count parameter

    9963
    PSA tools docs

    9957
    Fix issues found in LPC55S69 integration

    9956
    Add attestation doxygen

    9953
    PSA: automatic mocking of PSA targets in test builds

    9940
    Reduce flash page size from 512 to 32 bytes in PSOC6 based boards

    9939
    Fix for secure partition

    9931
    Reduce number of threads in block device test

    9928
    Secure binaries release script

    9911
    Add TF-M flags to doxygen

    9910
    Add support for LPC55S59

    9908
    Pr/cy mbed os 5.12.0

    9907
    BLE: Fix cordio configuration

    9894
    PSA tools: Find secure image at post-build

    9312
    PSA compliance tests suite

    10113
    Use secure/non-secure rom for bl modes

    10108
    Fix functionality for FlashIAPBD & SlicingBD

    10101
    LPC55S69_S: reduce ITS size to 32KB

    10089
    Make the presence of cmsis-pack-manager package optional

    10088
    Temporary disable Crypto HW accelerator on UBLOX_EVK_ODIN_W2

    10086
    Add bootloader support for the LPC55S69 board

    10068
    LPC55S69: Add IAR and uvision exporter support

    10055
    Add bootloader support for Cypress PSA boards

    10047
    Reduce 32KB from LPC55S69_S binary size

    10044
    Correct check for the ARM toolchain binary in the PATH.

    10034
    PSA: PSoc 6 configurable secure memory size

    9994
    Correct FPU settings traceback found by IAR

    10199
    Fix the removal of Mbed-added core flags in uvision exporter

    10193
    Fallback to ARMC5 when ARMC6 is not configured

    10188
    Configure sector information in targets.json

    10187
    Fall back to configuration information when CPM reports no memories

    10186
    Remove cypress boards from CMSIS pack manager

    10173
    Collect excluded libraries into ignored_dirs

    10172
    Cellular: Fix plmn trace for IAR

    10164
    TLS: Update Mbed TLS to 2.17.0

    10157
    Deduplicate IAR MBED_ROM__xxxx defines

    10152
    Crypto: Update Mbed Crypto to 1.0.0

    10114
    Allow the use of Mbed Studio’s version of ARMC6

    9965
    Fix undefined tr_debug for QUECTEL_BG96 cellular feature

    Using this release

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

    Downloads: zip tar.gz

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

    Summary

    In this release we have added target support for: * STM32_L475 MCU * RHOMBIO_L476DMW1K

    We have added fixes for the following reported issues:

    • 9276 nrf52: after disconnect, device doesn’t go into sleep again
    • 9513 Occasional hard falt when using the mbedtls entropy function in parrallel threads (K64F)
    • 9523 Non Rtos build fails for ARM compiler (K64F)
    • 9620 FUTURE_SEQUANA: failing to pass block device tests.
    • 8894 Document EventFlags wait function timeout units
    • 8618 Python3 build fails on MTS_MDOT_F411RE
    • 8205 Sleep tracer is not finding matching driver when performing an unlock
    • 9494 nanostack unittests: do not contain license headers
    • 9695 NRF52_DK LED2 always on

    mbed-coap has been updated to version 4.7.4. This brings the following changes: * Remove dependency on the yotta tool * Do not remove stored (GET) blockwise message when EMPTY ACK is received. When non piggybacked response mode is used the original GET request must not be removed from the stored message list. Message is needed for building the next (GET) blockwise message * Move definitions to sn_config.h

    Support has been added for: * WIFI on the RDA target UNO_91H * CMake export on PSOC6

    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

    9782
    Adding RHOMBIO_L476DMW1K as a new Board target

    9777
    Adding STM32_L475 as a new MTB target

    Fixes and Changes

    9798
    STM32 LPTICKER (LPTIM): correct init execution after bootloader

    9782
    Adding RHOMBIO_L476DMW1K as a new Board target

    9777
    Adding STM32_L475 as a new MTB target

    9776
    adv builder helper now returns an object

    9775
    PSOC6: fix port_write API

    9774
    license: use .md extension

    9767
    Remove ITM from NRF52_DK and DELTA_DFBM_NQ620 targets

    9765
    Add config header to assembly compilation

    9762
    PSOC6: update the psoc6pdl and HAL to the latest version

    9756
    PSOC6: enable export to CMake

    9753
    Update Nanostack_HAL licenses and copyright year

    9748
    BLE:Cordio: ATTS setting for write cback should use bitwise or

    9742
    tools: export: MCUXpresso: fix case inconsistencies in .templ file names

    9741
    ESP8266: connect() returns OK in non-blocking calls

    9740
    Remove pyocd requirement and update icetea.

    9736
    tools/test/cmsis: add license header

    9730
    Greentea: Remove TLSSocket_simultaneous test

    9724
    tools/utils: ensure default build profiles are processed first

    9722
    Add flash sum check

    9715
    Add .inc as a header file type.

    9713
    Add release notes section to PR template

    9709
    Reverting to original doxy configuration

    9696
    features: nanostack: fix warning in thread_extension.h

    9694
    nanostack: icmpv6: fix build warning

    9693
    platform: fix build warning in mbed_error

    9692
    target: UBLOX: Fix build warning in UBLOX_AT_CellularNetwork.cpp

    9691
    btle: fix build warning about unused clockConfiguration

    9686
    Greentea tests: set correct port to test against google.com

    9685
    Fix sleep tracing not finding matching driver during unlock.

    9680
    FUTURE_SEQUANA: Fixed Arduino signal mappings

    9673
    Fix Py3.7 mdot target build

    9670
    Add units to timeout argument in EventFlags

    9658
    REALTEK_RTL8195AM binary timestamp

    9657
    Revert “MIMXRT1050_EVK: Add IAR support in the exporter”

    9656
    M2351: Fix crypto AC management

    9654
    Update mbed-coap to version 4.7.4

    9652
    Fix minor bugs in secure targets file filtering

    9651
    FUTURE_SEQUANA_M0_PSA - fix CM4 starting address

    9650
    Multi thread Block Device Tests Fix - Ensure unique block address

    9649
    Fix IntelliSense in VSCode export

    9647
    FUTURE_SEQUANA: SPI HAL fixes

    9639
    ESP8266: connect() checks errors from ESP chip

    9636
    Fix compiler warnings

    9635
    Do not provide a default Pelion host address.

    9613
    K64/ARM: Update to 2-region model for HEAP and Stack Memory

    9602
    STM32 GPIO: use maximum speed

    9601
    LoRaWAN: Proper size checks for link ADR cmds & correct include path in Unittests framework

    9587
    targets: QUECTEL: Fix build warning

    9584
    TLSSocket send/recv return WOULD_BLOCK error instead of NO_CONNECTION

    9582
    Greentea Socket test improvements

    9570
    tests-netsocket-udp: UDPSOCKET_ECHOTEST_NONBLOCK fixes

    9532
    Mutex-protect mbedtls_hardware_poll

    9514
    BG96 netsocket tests

    9502
    readme: add list of licenses - not Apache 2.0

    9501
    Add WIFI support for RDA target UNO_91H

    9372
    BLE - Nordic: Release crypto cell when not in use.

    9326
    Doxygen correction

    9307
    Configuration options for STM_EMAC buffer counts

    Using this release

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

    Downloads: zip tar.gz

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

    Summary

    In this release we have added fixes for the following reported issues:

    • 9402 Mbed-OS build fails for LPC546XX and FF_LPC546XX targets with ARM Compiler 6.11
    • 8513 NVSTORE deinit function doesn’t free memory
    • 9468 FlashIAPBlockDevice init failing if using default constructor
    • 7308 Deep_sleep_lock Ticker.h Issue
    • 9525 Flow control fails on STM32L476
    • 8626 Update device peripherals for STM32 series
    • 9026 [Wio 3G] PB_7 (RXD) cannot be used for Serial
    • 9504 analogin_device.c doesn’t clear internal buffer for Vref
    • 9402 Mbed-OS build fails for LPC546XX and FF_LPC546XX targets with ARM Compiler 6.11
    • 9608 GCC_ARM build fails for v8m secure targets
    • 9611 FUTURE_SEQUANA: failing make nightly exporters

    Support has been added for:

    • MIMXRT1050 IAR exporter
    • TRNG for STM32F2

    There are also a number of other fixes and code improvements.

    Known Issues

    9688 PSOC6 WICED drivers need to be recompiled for 5.11
    The PSOC6 WICED drivers will not work correctly with this release.

    Contents

    Ports for Upcoming Targets

    None

    Fixes and Changes

    9631
    Update linker scripts for bootloader target TMPM46B

    9625
    Fix cortex-m33 armlink error

    9619
    Correct the dsp flag from no_dsp to nodsp

    9615
    FUTURE_SEQUANA: Remove special “tags” from M0 hex images

    9614
    Fix cortex-m33-S gcc compilation error

    9606
    Correct typo no_dsp - nodsp

    9596
    Implement Linker command/response files in make export

    9595
    Define USBTX and USBRX for targets without them

    9594
    Remove SERIAL_FC on devices which don’t support it

    9593
    Standardize Arduino form factor

    9589
    Improve error message for exports for OS2-only targets

    9585
    PSOC6: M0 core binary image for BLE controller updated to version 1.05

    9583
    STM32F2: Enable TRNG

    9580
    Fix SharedPtr::reset

    9579
    FHSS timer: Use singleton pointer

    9572
    Use an ip4- and ip6-compliant site to test TLS certificate error reporting

    9562
    LPC546XX, MIMXRT1050: Update to fix ARMC6 build failures

    9560
    Reset internal vref buffer after an ADC conversion

    9557
    [Wio BG96] Modified pin map

    9556
    [Wio 3G] Modified pin map

    9553
    STM32: Enable SERIAL_FC for all

    9552
    STM32H7: Enable OS2 compilation

    9551
    Modify general blockdevice tests to run all storage components

    9550
    Prevent double attempt to connect mesh api

    9549
    BLE: fix missing scan timeout for 4.2 controllers using new API

    9546
    Mesh api fixes

    9534
    STM32 Serial Flow Control

    9533
    Cellular: Remove makefile and mbedignore refering to obsolete cellula

    9531
    Remove COMPONENT_FLASHIAP tests

    9527
    Remove yotta references within testing frameworks

    9526
    Remove yotta and minar references in NCS36510

    9522
    Update all mbed test packages

    9521
    Py3 fixes and Travis CI enablement

    9515
    tests-netsocket-udp UDPSOCKET_SENDTO_INVALID allow unsupported empty UDP packet

    9509
    PSOC6.py: generate hex files with 16 bytes per row

    9500
    TCPSocket.cpp setting socket should terminate with semicolon

    9499
    Remove unused yotta module metadata

    9498
    Remove outdated text and fix spelling in README.md

    9497
    Remove yotta from README.md

    9496
    MIMXRT1050_EVK: Add IAR support in the exporter

    9487
    Add sd-driver example

    9485
    UBLOX_C030: Fix modem reset functionality

    9483
    Fix for Issue #7308 (Deep_sleep_lock Ticker.h Issue)

    9482
    ARCH_PRO: add missing SPI pin definitions

    9480
    Refactor core optional parameters (FPU + DSP + Security extensions)

    9478
    Refactor storage components

    9475
    FlashIAP Block device: Assert if default constructor is used without setting config parameters

    9471
    lwipstack: mem-size set to the to minimal working size with DTLS

    9466
    Improve PSoC 6 post-build hooks, whitelist makefile export

    9445
    NVStore: fix area calculation function

    9431
    Update IAR Armv8M changes

    9430
    LPC546XX, MIMXRT1050: Update to fix ARMC6 build failures

    9429
    Fix TCPSOCKET_ENDPOINT_CLOSE: Cannot accept WOULD_BLOCK

    9394
    STM32: PeripheralPins files update from lastest CubeMX tool version

    9393
    BLE: Fix SafeEnum type safety

    9388
    Fix for ARMc6 compiler errors

    9342
    Add support for debug and program launch configurations

    9328
    Doxygen fixes for IP networking area

    9283
    Add TLSSocket greentea tests.

    9236
    COMPONENT_SD tests update for small RAM targets

    9021
    tools: check that part size is not exceeding region size

    Using this release

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

    Downloads: zip tar.gz

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

    Summary

    In this release we have added target support for Quectel M26 GSM/GPRS module and C030-R412M,

    We have added fixes for the following reported issues:

    • 9138 Can’t execute OS2 tests in ARM if default_toolchain is uARM
    • 85 Len vs amount check
    • 9400 tests-mbedmicro-rtos-mbed-systimer to tune ?
    • 9426 NUCLEO_H743ZI: iar export failing
    • 9281 lfs_emubd.c needs to be ignored?
    • 9513 Occasional hard fault when using the mbedtls entropy function in parallel threads (K64F)

    Support has been added for:

    • Nanostack on KW41Z
    • An updated PSA binaries importer for FUTURE_SEQUANA_PSA
    • FLASH on TARGET_MAX32620C MCU, MAX32620FTHR and SDT32620B
    • CAN on STM32H7
    • TICKLESS on NUCLEO_H743ZI
    • QSPIF as default storage for LPCXpresso546XX

    Important notes:

    • A folder path fix for KVStore FILESYSTEM configuration and default configuration (under SD component) has been added. Previously the folder path was the constant “kvstore”. This has been fixed to now behave correctly by taking the value from the configuration store. Users will now need to ensure they have the correct values in the configuration store.

    • The IAR heap size for STM32L496xG has been increased

    • A problem was identified where ther FlashIAP driver would fail during write actions due to HW limitations. A fix has been added to retry a few times until the write is successful.

    • There was a random issue where a device would not boot. This was found to be due to the pre-main check of error_reboot_count being applied repeatedly on every boot. This meant that once the reboot limit was hit, every subsequent reset would halt before main, until something managed to clear or corrupt the error context. This has been fixed by setting the is_error_processed flag before halting, so that when an external agent resets the device while halted, the error is not reported (which would cause the device to halt again).

    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

    9261
    Initial version for Quectel M26 GSM/GPRS Module.

    9369
    Add target C030-R412M

    Fixes and Changes

    9548
    FlashIAP driver: Add retries to erase and program operations.

    9547
    mbed_die: Use wait_us not wait_ms

    9544
    Halt to enforce reboot limit once only

    9532
    Mutex-protect mbedtls_hardware_poll

    9492
    Travis CI: Fix for license check job

    9488
    Fix licenses in travis test and realtek lib

    9484
    Start Component SD test by formatting SD Card

    9462
    Corrected the targets value in json file as CI uses real board names

    9453
    mbed-host-tests minimum requirement set

    9452
    Crypto platform renaming

    9448
    Fix links to https://os.mbed.com documentation

    9440
    Put LittleFS emulated BD module under .mbedignore

    9439
    Examples: enabled some examples build for FVP_MPS2_M3 target

    9433
    Set DSP and floating point flags for ASM files

    9428
    STM32H743ZI: iar removal as not supported in v7.x

    9427
    BLE: fix possible truncation

    9422
    PB_1 is not connected to D4 in R412M above

    9421
    ESP8266: implements possibility to decide between non-blocking/blocking connect.

    9418
    tools: build_api: remove redundant initialization and fix spelling

    9417
    Netsocket DNS test: increase timeout value

    9416
    RTOS: SysTimer: Fix test timing issues

    9415
    Allow NSAPI_ERROR_UNSUPPORTED from Socket::setsockopt()

    9411
    STM32L496xG: increase IAR heap size

    9408
    SPIF - Fix command to unlock Global Block-Protection register

    9407
    DirectAccess DeviceKey: add support for default storage type

    9406
    Extended mount to check all metadata-pairs

    9404
    DSP_PRESENT flag is needed for Armv8m devices having DSP enabled

    9403
    Clarify addition to CONFIGURATION.md

    9399
    BLE: fix missing null checks on Gap event handler

    9397
    Fixing folder path for KVStore FILESYSTEM configuration.

    9389
    Travis CI: Bind remaining python modules

    9385
    Fixes typos in SMSC9220 Ethernet driver

    9380
    UNO_91H: open hal lib source

    9377
    test: general_block_device fix to always erase prior the first program

    9376
    TCP/UDP greentea tests refactoring and cleanup

    9374
    Add QSPIF as default storage for LPCXpresso546XX

    9368
    PSOC6: Fixes for serial hal driver, asynchronous mode.

    9366
    ESP8266: add an error check for data overflow from modem side

    9365
    Fix for asserion failing in BLE::callDispatcher with gcc debug profile.

    9363
    Remove unnecessary error prints in FileSystemStore

    9361
    Removing dependency of TDBStore in SystemStorage file and moving some file location - TFM support.

    9360
    LPC546XX, LPC54114: Add README and LICENSE files for the power libraries

    9357
    NUCLEO_H743ZI : enable TICKLESS

    9356
    ESP8266 - fixes disconnect to check the state from modem

    9354
    STM32H7 : add CAN support

    9347
    stm32: Improve the CRC function to support fully accumulate

    9339
    Fix Out-Of-Band (OOB) data generation for BLE OOB pairing

    9337
    unittest: remove cellular driver L3IP stub

    9335
    thread_mle_message_handler: fix build warning

    9333
    Minor Doxygen fixes for BufferedBlockDevice and iBeacon

    9331
    ESP8266: prevent WOULD BLOCK from TX if UDP

    9318
    fix bug for RDA UNO_91Hcalling us ticker functions without init.

    9316
    Add FLASH support to TARGET_MAX32620C and brd targets

    9302
    Add TRNG checkup in devicekey

    9297
    uARM targets now build in correct ARM_MICRO directory

    9296
    Remove printf completely and fix the optimization check

    9291
    NRF5x: QSPI SFDP read, min read/write implementation

    9288
    Gemalto Crinterion UDP test adjustments

    9286
    travis: Add include_check job

    9280
    Sleep manager implements all the API’s in platform file

    9258
    FLASH test: skip test if test region overlaps code

    9257
    FLASHIAP test: skip test if test region overlaps code

    9223
    Update PSA binaries importer for FUTURE_SEQUANA_PSA

    8970
    Add doxygen spellcheck job to Travis

    6622
    Add nanostack support for KW41Z

    Using this release

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

    Downloads: zip tar.gz

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

    Summary

    In this release we have added target support for NUCLEO_H743ZI, GD32_E103VB and GD32_F450ZI.

    We have added fixes for the following reported issues:

    • 8567 Equeue unchain bugs
    • 8913 Build of NUCLEO_F030R8 fails when DEVICE_SERIAL=0
    • 8903 Realtek_RTL8195AM is printing a lot of traces
    • 9196 ESP8266 CTS/RTS fails in stop_uart_hw_flow_ctrl()
    • 9075 K82F QSPI test fails intermittently
    • 9216 Defining MBED_SLEEP_TRACING_ENABLED caused error
    • 9266 Astyle in travis doesn’t use .astyleignore
    • 9255 FLASHIAP component tests failed
    • 9207 MCU_LPC546XX - breaks on master
    • 9272 Block device test : skip multi thread part in case of small RAM

    Support has been added for: * PSA APIs on Pelion supported boards * a bootloader on the DISCO_F469NI

    There have also been some updates to improve the quality of the documentation.

    Important notes:

    • There was an issue with the internal KVStore, identified after the 5.11 release. The fix for this
      required changes which would normally not be accepted into a patch release. We have made an exception in
      this case due to the significant nature of the issue.

    Prior to the fix provided in, 9156,
    the space left for the internal TDBStore (when working in the default internal configuration) was allocated from
    the sector following the end of the application until the end of flash. While this worked, it was problematic if the
    application would have crossed the sector boundary after an update. This PR leaves the application a couple
    of sectors to grow at the expense of the allocated storage (if they are available, which is the likely case).

    The fix is defined as a breaking change, even if not a typical one: Boards that use the default internal
    configuration will lose the storage content after the upgrade (as the internal storage start will move forwards).
    Two boards will be affected: K66F and FUTURE_SEQUANA_M0_PSA. Non default configurations won’t be
    harmed.

    • The device key in versions before 5.11.2 may have been insecure as the TRNG may have unknowingly failed.
      This issue has been addressed in this release by 9278 DeviceKey: [Security Fix] Generated ROT-key is still used when TRNG fails.

    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

    9056
    NUCLEO_H743ZI: add new platform

    9203
    Add GD32_E103VB as new target

    9232
    Add GD32_F450ZI as new target

    Fixes and Changes

    9391
    Add pyocd depencency to resolve Travis CI issue

    9384
    MBRBlockDevice: When partitioning, clear the rest of first erase unit

    9371
    travis: set hypothesis to v3.88

    9362
    Fix the general block device for better support of low memory boards

    9355
    Parameterise the repo used in the Mbed TLS importer script

    9346
    Travis CI: Corrected astyle job behavior with non-master base branch PRs

    9341
    Flush ESP8266 serial input buffers after HW reset

    9334
    Doxygen fixes in block devices

    9332
    Update and cleanup BLE.h doxygen

    9330
    Doxygen update for LoRaRadio class

    9329
    SDBlockDevice docs update

    9327
    STM32: replace missing #ifdef DEVICE_xxx

    9324
    Avoid building mbed_tz_context.c for TF-M targets

    9323
    STM32: astyle check

    9321
    STM32 : typo error in QSPI

    9319
    tools/importer script changes

    9315
    LPC546XX: Do not make MCU_LPC546XX target public

    9313
    STM32L476VG: fix wrong pin map function on ADC channels

    9311
    Edit README.md

    9310
    SPIFBlockDevice docs update

    9309
    ESP8266 - fix send buffer exhaustion handling

    9295
    Add missing END to Armv8M IAR assembly files

    9293
    Updated pyyaml due to possible vulnerability

    9290
    ESP8266: Set HW reset time to 2ms

    9289
    travis: add keys for ubuntu - workaround

    9284
    ESP8266: Fixes AT-layer socket_open-functions

    9278
    DeviceKey: [Security Fix] Generated ROT-key is still used when TRNG fails

    9274
    UNO_91H: fix MPU compilation issue

    9271
    Correcting the error-case trace from mesh-api interfaces

    9269
    SDT64B: Add TARGET_SDT64B, a bootloader file on SDT64B

    9268
    Calculate FlashIAPBlockDevice start address and size automatically for test only

    9267
    Fix travis astyle usage of .astyleignore

    9264
    reduce info traces to debug level to prevent logs overflow

    9260
    Use mbed_error_printf instead of debug for ISR friendly prints

    9256
    STM32L0 & STM32L1: FLASH is EEPROM

    9252
    STM32L4 ADC : power optimisation for VBAT channel

    9251
    LoRaWAN: Randomizing backoff for Join process

    9250
    Fix Python 3 syntax in rtc host test

    9249
    add bootloader support to the DISCO_F469NI

    9246
    STM32L0 TEMPERATURE ADC CHANNEL minor update

    9244
    Kvstore tests api change to run on K64F only

    9241
    TDBStore: fix bug in sector blank check for variant sized sectors

    9239
    Increases events.shared-stacksize to 2K

    9237
    Refactoring and fixing some issues in KVStore configuration.

    9234
    nanostack-mac-tester sync with v1.0.1

    9233
    FastModel: update platform header, removed unwanted smsc9220 device

    9229
    hal-qspi_test: move frequency setting before flash init

    9227
    [SDT64B] changed UART0 to UART2, added UART_5 on SDT64B

    9220
    BLE: NRF52 returns used tx/rx phy on phy update callback

    9218
    Change to mbedtls_platform_zeroize()

    9215
    Direct access to device key

    9210
    mbed.h includes removed

    9209
    More static place for astyle

    9202
    Realtek-RTL8195AM-Hide_Debugging_Messages

    9200
    TDBStore: Perform garbage collection on failed writes

    9198
    Fixing bug - overwrite of default configuration values for RBP start address and size fails

    9197
    Nuvoton: Fix UART flow control CTS/RTS

    9195
    Enable PSA APIs on Pelion boards

    9191
    Nuvoton: Fix crypto compile error with Mbed OS 2

    9187
    Resolves build failures with IAR 8.x

    9186
    Fix ticker_read_us() race condition.

    9183
    Allow LwIP TCP retransmissions to be configured and tune those smaller.

    9182
    Disable MPU support on NRF52x platforms

    9175
    Greentea tests ignore bind returning UNSUPPORTED

    9173
    Prevent ESP8266 stopping HW control on init

    9167
    Modify IRQ handler processing when unusing RTOS at Cortex-A

    9163
    Don’t use define checks on DEVICE_FOO macros (partner code)

    9154
    ARMC6: Use float-abi=hard

    9152
    Cellular: fix state machine to check network attach

    9135
    Get type for BlockDevice

    9128
    Fix SPM HAL test

    9114
    Simplified astyle travis test to be easier to reason about

    9066
    Equeue chaining bug fixes

    9058
    BLE: suppress scan timeout if we disabled scanning

    Using this release

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

    Downloads: zip tar.gz

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

    Summary

    In this release, we have added support for GD32F307VG, TT_M3HQ, Seeed Arch MAX, ACONNO ACN52832,
    NUCLEO_L4R5ZI_P and the KW41Z side of RapidIoT .

    We have added fixes for the following reported issues:

    • 8714 STM32L4 - using TICKLESS and serial (UART - AT cellular) losing characters
    • 8864 TRNG on L4 pulls rug out from USB
    • 5348 K64F: LowPowerTimeout: Inaccurate delay after board power up
    • 8880 CordioGattServer is using wrong connection handles resulting in faults / memory corruption
    • 8555 NVSTORE test issue
    • 7398 UART not working on LPC54608
    • 8913 Build of NUCLEO_F030R8 fails when DEVICE_SERIAL=0
    • 8992 Support for Cortex-M33FD
    • 8710 Build failure for FUTURE_SEQUANA_M0 with PSOC6_DYNSRM_DISABLE=1
    • 8864 TRNG on L4 pulls rug out from USB
    • 8950 Properly fix Travis CI Rabbit MQ issue
    • 9014 ATHandler.cpp - Bad logical comparison
    • 8785 NvStore does not correctly persist values through reset
    • 8870 Feature: QSPI support on DISCO_F769NI
    • 8124 RTL8195AM netsocket test failures
    • 8870 Feature: QSPI support on DISCO_F769NI
    • 8664 equeue cancel function can corrupt internal data structures, causing queue failure
    • 9099 Identically names structs in different files
    • 9176 STM32: RTC No Longer Enabled by Reading the Time

    Support has been added for: * nrf52_dk bootloader * DAC (analog-out) HAL on NUMAKER_PFM_NANO130, NUMAKER_PFM_M453, NUMAKER_PFM_M487/NUMAKER_IOT_M487 and NUMAKER_PFM_M2351 * TICKLESS for STM32 targets which are using LPTIM feature for LPTICKER

    We have updated mbed-coap to version 4.7.3.

    There are also a number of other fixes and code improvements.

    Known Issues

    There is the following known issue with this release:
    ESP8266::_open_tcp: device refused to close socket

    Contents

    Ports for Upcoming Targets

    8725
    Add support for GD32F307VG

    8815
    Add platform TT_M3HQ

    8831
    [Seeed Arch MAX] Add Mbed OS 5 support

    8860
    Add the port for the ACONNO ACN52832 module on MTB’s form factor

    9008
    Add NUCLEO_L4R5ZI_P target

    9053
    Rapid-IoT: Add support for the KW41Z side of the platform

    Fixes and Changes

    9180
    Revert “STM32 RTC : skip rtc_write if possible”

    9174
    MTB_ODIN_v2_fixes

    9171
    Nuvoton: Fix NUC472 hard fault in SMCC tests

    9168
    Fix to unit test losing process output due to timing issue

    9166
    Ublox C030 ADC internal channels added

    9164
    Disable printf in crash reporting for release builds

    9159
    Drop MBED_EXTENTED_TESTS flagging from network tests.

    9158
    Fix LTO build failures due to duplicate local types

    9157
    PSOC6: Updated default M0 image to not modify UDB configuration when

    9155
    PSOC6: Fixing merge issue for pull request #9009

    9151
    github: add reviewers to the PR template

    9150
    Check correct ARMC6 predefine for FP codegen

    9148
    Fix FLASHIAP_ROM_END macro for GCC_ARM & IAR toolchains

    9144
    EventQueue: Old pointers of sibling were not cleared

    9143
    Fix BLE long write execution failure

    9134
    STM32: enable TICKLESS

    9131
    Add versioning limits to intervaltree module

    9130
    Fix ESP8266 “Link Type” errors after reset

    9129
    DNS tests: improve debug messages

    9127
    WIFI test: improve debug messages

    9126
    Fix multiple definitions of ‘__aeabi_atexit’

    9122
    Update the CC310 IAR libraries

    9109
    Rework fseek/ftell tests

    9107
    Fixing execution of OS2 tests

    9105
    Add some rounding to determine the pulse value for PWM for the STM target

    9102
    Nuvoton: Support boot stack size configuration option

    9101
    Cellular: Fix to use PPP stack in PPP mode

    9100
    Align prototype & implementation of enet_tasklet_disconnect & friends

    9097
    Update to add support for Cortex-M33FD

    9089
    STM32 QSPI update

    9087
    kvstore tests: reduce reset

    9085
    U-blox C030 PinNames Updated

    9084
    Realtek-rtl8195am-Network_Socket_Updates

    9081
    Nuvoton: Fix crypto AC management

    9079
    Add socket stat logging state change update

    9073
    W7500x target ADC 6 and 7 not implemented

    9063
    mbed_fault_handler: fix build warning

    9061
    More MPU work

    9060
    Fix duplicate ‘overrides’ keys in targets.json config file

    9057
    Prefer QSPI Bus mode 1-4-4 as highest priority for QSPIFBlockDevice

    9055
    travis: use https for fetching astyle package

    9054
    Fix max_keys reset limitation

    9052
    Cellular: Rewrite AT handler consume to tag

    9049
    Fix test-netsocket-tcp greentea test build fails.

    9047
    travis: add license

    9045
    Fix wrong PIN config for RTL8195AM platform

    9043
    Removed rabbitmq fix from travis.yml

    9037
    BLE: Update toolchain.h with mbed_toolchain.h

    9035
    STM32L4: correct RNG clock source

    9034
    Change enet_tasklet declarations to match code

    9033
    Fix Stream for IAR toolchain

    9009
    [PSOC6]: Fix for static resource manager.

    9001
    Missing socket greentea tests implementation

    8995
    Add core option for Cortex-M33 with DSP enabled

    8993
    Apply GitHub style to exporter matrix

    8990
    Adjust FAT FS tests to