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 low memory boards

    8980
    memap.py: Cope with IAR 8 linker map

    8978
    fixed wrong __StackTop calculation

    8975
    Initialize the interface at the construction

    8965
    Coverity fixes.

    8964
    Correct behavior of PSA code generator

    8960
    STM32: avoid STM32 family name check

    8957
    Fix incorrect #ifdefs on DEVICE_FOO macros

    8956
    Update Ticker wrapper to handle early interrupts

    8955
    Bug fix for UART issue on LPC54608 - issue #7398

    8951
    Remove NVSTORE enabled from NUCLEO_F410RB

    8949
    TARGET_WICED updated.

    8947
    ONME-4007: Fix mbed_lib link from ESP8266 Readme.md

    8936
    Reduce default MBEDTLS_MPI_MAX_SIZE

    8934
    Setting K64F to use KVStore FileSystem configuration

    8933
    Fixing Doxygen descriptions

    8916
    STM32F429/STM32F439 alignment

    8911
    Fix ESP8266 recv_udp timeout with flow control

    8910
    Fix rare NRF52 serial TX lockup

    8900
    Nuvoton: Refine UART init/deinit

    8899
    Renesas : Add the setting of SD as components

    8888
    Align comment block in sys stats struct

    8884
    BLE: Fix iteration on connections in CordioGattServer.

    8883
    LPC546XX: Fix build failure due to incorrect merge

    8882
    Update mbed-coap to version 4.7.3

    8879
    Ble extended advertising doc fixes

    8872
    MCUXpresso: Ensure the RTC OSC is running at bootup on Kinetis platforms

    8867
    STM32L4: fix trng clock setting

    8866
    Cellular: Refactored GEMALTO_CINTERION_Module to GEMALTO_CINTERION

    8861
    Bugfix-tests-network-wifi drop the assumption about more than one SSID

    8855
    Fix compilation warnings (apart from nanostack)

    8854
    SMCC FOTA: bin name change

    8852
    Cellular: update doxygen and add attach CellularDevice.

    8844
    STM32 : Remove html release notes files

    8843
    Fix C++11 build with Arm Compiler 6

    8835
    Moving some examples testing from K64F to K66F

    8832
    nRF52840_DK: “qspi_api.c” check read/write WORD alignment, set clock frequency divider

    8828
    Nuvoton: Support DAC HAL

    8827
    TARGET_MCUXpresso_MCUS: fix lp ticker init function

    8822
    LoRaWAN: Mitigating reception issues at lower data rates & FCnt increment after retry exhaustion

    8819
    Improve the unit testing documentation

    8817
    Correct network status callbacks with ethernet and nanostack

    8802
    Fix long writes/reads stack overflowing

    8798
    STM32 : Add default deep sleep latency of 3ms

    8797
    Fix issues in Cryptocell 310 cc_internal discovered by On Target Testing

    8796
    nanostack-mac-tester sync with v1.0.0

    8795
    cellular: registration status change fix

    8779
    Migrate old memap file handling into toolchains

    8777
    STM32 LPTICKER with RTC : better sleep time

    8771
    STM32 LPTICKER with LPTIM optimisation

    8728
    Fix issues in Cryptocell 310 shax_alt discovered by On Target Testing

    8690
    drivers/hal/platform/rtos: add SPDX identifier

    8655
    Disable write buffer in debug builds (M3/M4)

    8097
    Add support for nrf52_dk bootloader

    Using this release

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

    Downloads: zip tar.gz

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

    Summary

    Mbed OS 5.11 adds secure sockets, so your Mbed OS applications can securely connect and send data to any cloud or server through any TCP-based protocol. It also provides advanced storage solutions for IoT devices to encrypt external memory, and a storage stack that allows using internal flash for firmware updates. Mbed OS 5.11 also supports enhanced device statistics APIs for capturing key information, such as network statistics and advanced system information.

    This release includes many minor fixes and enhancements and brings support for 157 target development boards.

    Operating system

    Secure sockets

    With secure sockets, your Mbed OS applications can securely connect and send data to any cloud or server through any TCP-based protocol. By introducing native secure sockets to Mbed OS we enable TLS functionality in the background, simplifying secure connections. For more information, please visit secure sockets.

    Advanced storage solutions for IoT devices

    Encrypted and authenticated storage

    Encryption and authentication for external memory provide greater protection against physical attacks against IoT devices. This adds significant value to products that do not trust the PCB, and which could be tampered with, making security comparable to being on-chip. For more information, please visit storage.

    Storage stack for internal memory

    Microcontrollers now provide more performance and bigger internal memory, offering new opportunities. In Mbed OS 5.11, we allow businesses to use internal MCU memory to store configuration and firmware images, and reduce the cost of the bill of materials for IoT devices. For more information, please visit storage.

    Enhanced device statistics APIs

    Pulling valuable stats from IoT devices is key for any business deploying these devices, and is an important initiative driven by Arm. The intension is to collect data from embedded devices and (in the future) predict their behaviour using machine learning.

    Mbed OS already implements a Device Statistics API to collect data such as thread info, CPU usage, memory info, and system info. In Mbed OS 5.11, we’ve added advanced device stats such as network stats, advanced system Info, and errors info. For more information, please visit statistics.

    Internal RAM marked as execute never

    Many Remote Code Execution (RCE) exploits attempt to use buffer overflows in the stack or the heap to write exploit code into memory, and then cause the system to execute that code. If the address where the exploit was written were marked execute never, this exploit code would not be executable. With Mbed OS 5.11 on supported targets, all RAM space is marked as execute never by default. For more information, please visit MPU management.

    Crash reporting for critical fault with automatic reboot

    When the system encounters a fatal crash (for example, a hard fault), we capture information such as register context and thread info, as these are required to debug the issue. This information is usually dumped over the serial port, but when the crash happens in deployed devices, there will not be any serial port enabled or logged, so a different mechanism is needed to record and report this data. With the crash-reporting feature of Mbed OS, the system reboots without losing RAM contents, and we can send this information over a network or other interfaces to be logged, or even write to the file system if required. For more information, please visit error handling.

    Connectivity

    Support for extended and periodic advertising in GAP (BLE stack)

    Extended advertising uses multiple physical layers and spreads the payload across many packets to support much larger payloads than normal. In this scenario, advertising is split across primary advertising on the advertising channels and secondary advertising on channels normally used for sending data to connected devices. Similarly, if the controller supports periodic advertising, you may use it to send changing data to many peers. Each peer needs to scan the advertisements on the primary channels and create a sync with the periodic advertisement it’s interested in. For more information, please visit GAP.

    Cellular stack updates

    The LoRaWAN stack was updated to version 1.1, which includes support for secure device provisioning through a Join Server, new security primitives, handover roaming, and optimizations for communication from the network to the device. For more information, please visit LoRaWAN-11.

    In addition, we added support for AT-mode TCP over cellular for selected modules * Quectel BG96 * Quectel BC95 (used in the WISE-1570 module) * Gemalto cellular modem driver.

    Security

    Update to Mbed TLS

    Mbed OS 5.11 includes Mbed TLS 2.15.1, which introduces the Mbed Crypto library and other new features. For more information, please visit, mbedtls.

    Mbed Crypto APIs

    The Mbed Crypto library is a reference implementation of the Platform Security Architecture (PSA) Cryptography API. Therefore, the library’s API documentation is the PSA Cryptography API specification. Arm’s PSA is a holistic set of threat models, security analyses, hardware and firmware architecture specifications and an open source firmware reference implementation. PSA provides a recipe, based on industry best practices, that allows security to be consistently designed, at both a hardware and firmware level. The PSA Cryptography API provides access to a set of cryptographic primitives. It has a dual purpose: It can be used in a PSA-compliant platform to build services, such as secure boot, secure storage and secure communication; and it can be used independently of other PSA components on any platform. The Mbed Crypto APIs are currently in development. For more information, please visit mbed-crypto.

    PSA Secure Partition Manager

    We have added PSA compliant process separation for the Future Electronics Sequana dual-core v7-M platform. The process separation is enforced with the Secure Partition Manager (SPM), which uses hardware on the device to provide RAM and Flash isolation between the two cores. It also implements the PSA Firmware Framework Inter-Process Communication (IPC) API, which allows the cores to communicate with each other. More information about Sequana is available at Future-Sequana. For more information about SPM, please visit SPM.

    Targets and tools

    Thanks to our Partners’ hard work, Mbed OS 5.11 added 12 new target platforms for a total of 157. We’ll continue to add targets in our biweekly patch releases as partners work with us.

    The official Arm Mbed OS compiler has been update from ARM CC 5.06 update 3 to ARM CC 5.06 update 6, which includes new bug fixes.

    Testing and improvements

    Support Ethernet for Fast Models

    Arm Fast Models are software models of Arm cores, subsystems, peripherals and so on. Mbed OS has enabled working with Cortex-M family Fast Models. You can run and test Mbed OS and its applications on the software model instead of the hardware. In Mbed OS 5.11, we now support Mbed OS sockets examples with Fast Models Ethernet. For more information, please visit Fast Models.

    Continuous integration framework

    We designed Mbed OS to significantly reduce the cost and time of embedded software development by providing production-quality toolset and code. We are committed to delivering high-quality code working across all supported boards and platforms. To ensure all the features of code meet our quality control requirements, we have built an automated testing environment and processes that perform rigorous testing on every line of code. The continuous integration framework is a highlight of our testing framework - it ensures that every new feature and change in Mbed OS is tested:

    • For every new feature, we create tests that we then deliver to our Partners. For every board to be Mbed Enabled, we need our Partners to successfully conduct these tests.
    • Partners must test the changes on their boards before submitting pull requests (PRs) on GitHub.
    • The Mbed OS gatekeepers manually review the code of each PR to ensure it meets our coding guidelines and code standards.
    • Once approved by the gatekeepers, the code goes through the automated test infrastructure, which tests across multiple platforms using three toolchains: IAR, ARM and GCC.
    • During the testing phase, we select the combination of boards and devices that support a variety of peripherals, MCU cores and features for maximum coverage.
    • To ensure the Mbed OS code is compatible with all IDEs, we test that the code can be exported properly to all the compilers.
    • We merge a PR only if all the above procedures are successful.

    For Mbed OS 5.11.0, our testing included:

    • Total test time of 42,372 hours on development boards.
    • 30 new test cases since the Mbed OS 5.10.0 release. These test new and existing features and bring the total number of test cases to 1,346.
    • The total number of binaries built since the Mbed OS 5.10.0 release is 50,800,176.

    We plan to share more details about testing processes, such as our out-of-box testing coverage and system testing, in upcoming release blogs.

    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 list 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: Mbed OS tools have issues with python 3.x

    • Description: A number of issues have been found when using Python 3.x with the Mbed OS tools
    • Workaround: Use Python > 2.7
    • Reported Issues: https://github.com/ARMmbed/mbed-os/issues/8146
    • 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

    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

    Platform: Realtek RTL8195AM not passing networking tests

    • Description: RTL8195AM is not passing Mbed OS socket or WiFi tests. Various problems exist.
    • Workaround: None
    • Reported Issue: https://github.com/ARMmbed/mbed-os/issues/8124
    • 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, the behavior of the system will be unexpected. NVStore is deprecated, and TDBStore should be used instead.
    • Workaround: Use TDBStore instead of NVStore.
    • Reported Issue: Internal reference: IOTSTOR-697
    • Priority: Minor

    ESP8266 works unreliably, unless latest firmware is used and CTS, RTS and RST are connected

    • Description: Due to missing flow control and issues with older firmwares the ESP8266 can end up in states, where it
    • fails to connect
    • fails to resolve name queries (DNS).
      With ESP8266 firmware version 1.6.2 the behaviour of the module is greatly improved, but it will not be 100% reliable. However,
      firmware 1.6.2 is the newest you can install to a board with less than 2 MB flash. The newest firmware 1.7 can only be
      updated to boards with 2 MB flash memory.
    • Workaround: Update the firmware on the ESP8266 module. Preferrably you should get a ESP8266 with 2 MB flash and have the
      CTS, RTS and RESET pins connected.
    • Reported Issue: Internal references: ONME-4002, ONME-4074, ONME-4073, ONME-4071, ONME-4069
    • Priority: Critical

    STM32L4 random / entropy broken

    • Description: STM32L4 random / entropy broken
    • Workaround: None, Fix will be available in 5.11.1 patch release
    • Reported Issue: Internal reference: MBEDOSTEST-377
    • Priority: Critical

    Bluetooth: NRF52/Cordio platforms experience faults when using GATT Server with IAR in Release profile

    • Description: A Cordio Stack function is called with invalid parameters which leads to a crash with IAR in Release profile.
    • Workaround: Cherry-pick commits from https://github.com/ARMmbed/mbed-os/pull/8884
    • Reported Issue: https://github.com/ARMmbed/mbed-os-example-ble/issues/205 Internal reference: IOTPAN-345
    • Priority: Critical

    Contents

    Fixes and Changes

    8898
    Add crypto example to examples.json

    8897
    Add TLS Sockets example to examples.json

    8896
    Update Statistics examples in example test json

    8895
    Add crash-reporting example to examples.json

    8876
    Add support for Cordio to NRF52 Devices

    8871
    MPU API (Reopened)

    8863
    Adding KVStore Examples for Global API

    8859
    Import Mbed TLS v2.15.0 with Mbed Crypto

    8851
    Change error code from NSAPI_ERROR_PARAMETER to NSAPI_ERROR_NO_CONNEC

    8850
    DISCO_F746NG: add bootloader support

    8849
    Correct detect_code for TMPM4G9

    8847
    Cellular: Fix bc95 to accept only RAT_NB1

    8840
    Fix build of library archive with Arm Compiler 6

    8839
    S2-LP: Cleaned thread deprecation warnings

    8837
    Update mbed-coap to version 4.7.2

    8836
    Clarify asynchronous NetworkInterface::connect() documentation

    8826
    Revert “Merge pull request #8272 from NXPmicro/Ensure_RTC_OSC_Start”

    8824
    NUCLEO_F030/F070: remove ADC_VBAT pin definition

    8823
    DISCO_L072CZ: remove ADC_VBAT pin definition

    8821
    Cellular: add radio access technology as configurable in json

    8820
    travis: fix coding style for remaining 2 files

    8814
    Cellular: unified return value comments on API folder.

    8804
    PSA Crypto SPM

    8803
    Compatibilize ArmC6 with ArmC5-built archives

    8794
    Deprecate TCP/UDPSocket open-calling constructors

    8790
    Cellular: Fix ATHandler URC processing

    8787
    [Wio 3G] Adding IAR exporting definition

    8784
    NRF52 serial fixes

    8782
    Fix traceback when running mbed test

    8778
    STM32 LPTICKER with LPTIM : reduce clock feature

    8772
    Cellular: more gracefully disconnect.

    8767
    Cellular: Update cellular debug prints

    8766
    Fix cellular backward compatibility

    8764
    ONME-3983 Fix the defects found in IPV4 testing against packet dropping

    8761
    Add MBED_ALL_STATS_ENABLED to config system

    8756
    Adding Murata WSM-BL241 as new target

    8751
    Cellular: minor fix to CellularDevice and adding updating unit tests after refactoring

    8750
    realtek-rtl8195am-wifi-headerfile-updates

    8744
    PSA Secure partition manager and services

    8743
    Add design document for network statistics.

    8740
    Add block device test for small data sizes

    8738
    Ble extended advertising

    8737
    Add low power implementations for CM3DS

    8735
    Compliance test errors fixed

    8734
    Patch whitespace inconsistencies in platform lib file

    8730
    Add a new PSA Internal Trusted Storage APIs

    8719
    M2351 RAM / ROM defines updated

    8718
    NFC Eeprom erase command fails

    8717
    Format targets.json to put the items of large lists on their own line

    8711
    Fix astyle errors (clears all remaining styling issues)

    8708
    [Wio BG96] Adding platform HAL

    8704
    Fix issues in Cryptocell 310 ccm_alt discovered by On Target Testing

    8703
    Improve the efficiency of BufferedBlockDevice

    8702
    Crash Reporting implementation

    8701
    [Wio 3G] Added default I/F type and pin defs

    8689
    Add ESP8266 driver v1.7

    8687
    TLSSocketWrapper: decouple error requirements

    8685
    Clean up deprecated feature code

    8683
    Feature qspi lpc546xx

    8680
    Add PSA build components to build configuration for non-PSA targets

    8673
    Add Mbed Configuration Option Range Limits

    8671
    Feature: Add non-blocking serial break/unbreak functions

    8670
    Remove protected member functions and protected attributes from rendering

    8668
    Enable Fast Models emac drivers

    8667
    KVStore & derived classes: design docs, implementation & configuration

    8662
    KW41Z: Add Bootloader support

    8659
    Implement DTLSSocket and fix non-blocking connections on TLSSocket

    8657
    Icetea tests - update socket command client

    8651
    Implement Socket::getpeername() API

    8647
    Nanostack release for Mbed OS 5.11

    8646
    Add a Unity macro to assert on platform error code difference

    8643
    Modify HW accelerator drivers to new error code

    8639
    Add get_erase_value() support

    8621
    Add missing include for TLSSocket

    8617
    Typo fixes in Doxygen for Platform

    8613
    Make sure that TLSSocketWrapper::close() is called before the transport is destroyed.

    8612
    Add names to system thread

    8607
    Fetch ram/rom start/size

    8602
    Sync 802.15.4 RF drivers

    8601
    Add format checking to printf-type APIs

    8600
    Wi-SUN interface implementation.

    8592
    Network Socket Statistics

    8591
    features: fix coding style

    8590
    Export: Remove DS-5

    8589
    Support erase value in Flash HAL drivers, FlashIAP and block devices

    8584
    system_reset is MBED_NORETURN

    8579
    Major refactoring: changing Network inheritance from CellularNetwork to new class CellularContext

    8573
    Compile time config flag MBED_CONF_SD_CRC_ENABLED for CRC in SD

    8569
    CellularConnectionFSM unchain queue when stopped

    8563
    Add QSPIF block device to default system storage

    8561
    Design document for Crash Reporting feature in MbedOS

    8560
    Fix typos in Features/Netsocket

    8550
    Add required namespace instead of relying on mbed.h

    8530
    Docs: Mail docs fixed

    8488
    Rewrite CThunk so it does not execute from ram

    8487
    Update mbed_mem_tracing config option

    8478
    Fhss timer dev

    8465
    Flag certificate verification functions with MBEDTLS_X509_CRT_PARSE_C.

    8441
    More mbed_error refinements

    8440
    Cellular: Gemalto TCP Socket support

    8417
    I2c doc update

    8401
    At handler fixes

    8365
    Fix astyle for tests folders

    8354
    SingletonPtr: const and alignment

    8352
    QSPI SFDP Flash Block Device

    8342
    Icetea missing test doc

    8332
    Refactoring fault handler implementation

    8331
    Stream: add necessary flushes, removing unneeded IAR workaround

    8329
    Platform: fix missing namespace for SharedPtr

    8328
    Error path tightening: use MBED_NORETURN; add+use core_util_atomic_flag

    8313
    Reduce cellular memory footprint

    8311
    Implement TLSSocket

    8295
    Cellular: Update Cinterion AT drivers

    8291
    *LPC546XX: Finish MCU Refactoring

    8266
    Realtek-rtl8195am: Add MCU_ target

    8255
    Change behaviour of mbed_asert to use mbed_error instead of mbed_die

    8245
    Nanostack libservice update

    8223
    Improve RTOS behavior with deep sleep

    8190
    MIMXRT1050EVK: Add ENET support

    8189
    Wait API updated to remove deepsleep lock

    8180
    Cellular: Quectel BG96 TCP socket support

    8176
    CellularDevice_stub added

    8148
    Cellular: Quectel BC95 TCP socket support

    8114
    Registration parameters as struct

    8109
    Add reset recovery for I2C bus

    8076
    Error output improvements

    8050
    Cellular: Fix Greentea tests for UBLOX_C027

    8039
    Add framework for configuring boot stack size

    8019
    Cellular: fixed crash when closing CellularNetwork via CellularDevice.

    8003
    Leverage the simplification of the IPv6 parsing primitive

    8001
    Add * operator to SingletonPtr

    7980
    Clean up rtos::Thread deprecation warnings

    7979
    Using SPI_ macros from PinNames in SPIF and SD config files.

    7969
    Cellular: CellularDevice:get_default_instance() implemented

    7955
    Add SPI_FREQ parameter to DATAFLASH block device configuration

    7948
    Add enable/disable cb function in mem_trace

    7864
    Add required header file and namespace element instead add all.

    7760
    Give an option to remove ‘using namespace’

    7304
    Add MTS dragonfly, MTS dragonfly l471

    8953
    Update FEATURE_BLE README

    8952
    Turn off MPU for PSOC 6

    8946
    STM32L4: before calling HAL_CRYP_DeInit initialize the Instance member

    8944
    Travis fix: rabbitmq key update (travis msg broker)

    8932
    Fix target handling in build.py

    8926
    mbedtls: Update Mbed TLS to 2.15.1

    8925
    Fix PSA storage typo

    8922
    MTB_ADV_WISE_1570: disable MPU code until target properly supported

    8920
    MODULE_UBLOX_ODIN_W2: disable MPU code until target properly supported

    8908
    Fix PSA internal storage configuration

    8904
    Ble extended advertising fixes

    8873
    PSA-SPM documentation follow-up

    9051
    ESP8266 send returns WOULD_BLOCK error when busy

    9040
    Add a platform config to disable the MPU

    9030
    Reduce ROM impact of MPU code

    9025
    Mbed os 5.11.0 oob: fix fault exception issue

    9020
    Revert “Turn off MPU on targets failing OOB”

    9005
    Mbed TLS: Fix ECC hardware double initialization

    9003
    Revert “Merge pull request #8922 from juhoeskeli/wise_1570_mpu_disable”

    8998
    Ble extended advertising fixes

    8996
    Fix uninitialized handler pointer in FastModels ethernet driver

    8994
    Turn off MPU on targets failing OOB

    8987
    Fix a few SecureStore issues (following preliminary security review)

    8986
    Fix a few bugs in TDBStore and KV config

    8982
    Ensure macros and parameters with the same name are not repeated.

    8981
    Cordio Nordic memory optimizations

    8959
    [ESP8266] Adds support for controlling HW reset of the modem from the

    8935
    Fix PSA crypto partition and tests

    8905
    SPI and deep sleep fixes for FUTURE_SEQUANA target.

    8890
    ESP8266 disconnect returns ERROR_NO_CONNECTION

    8889
    Add PSA code generation check in travis

    8875
    Add dependency checks to components

    8853
    Reports NSAPI_STATUS_CONNECTING when trying to reconnect

    8841
    Bugfix restrict send size; namespace fixes; ATCmdParser::read return value fix

    8754
    Mbed Crypto Tests

    8745
    Add new target future sequana PSA

    9072
    Enable stats reporting with a flag in targets.json

    9036
    Disable MPU on RT1050 due to memory map

    Using this release

    Arm Mbed CLI

    To take advantage of the new device management and testing framework features, please update your Mbed CLI to 1.8.x or higher.

    When you create a new program, Mbed CLI automatically imports the latest Mbed OS release. Each release includes all the components: code, build tools and IDE exporters. If you want to update your Mbed OS version or existing program to Mbed OS 5.11.0, run the CLI command mbed update mbed-os-5.11.0.

    Arm Mbed Online Compiler

    When you create a new program, the Mbed Online Compiler automatically uses the latest Mbed OS release. If you want to update the Mbed OS version of an existing program, right click on the mbed-os library, and click update.

    GitHub

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

    Downloads: zip tar.gz

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

    Summary

    This is the final patch release for mbed-os-5.10.

    In this release we have added support for UNO_91H and TMPM3HQ devices.

    We have added a fix for the following reported issue: * 7804 RF52 serious behavioural regressions in RTC

    The mbed-client-cli has been updated to v0.4.0.

    We have also added:

    • EMAC driver for CM3DS
    • Flash IAP support for STM32F407VG on DISCO_F407VG and ARCH_MAX platforms

    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

    8324
    Add Support for TOSHIBA TMPM3HQ

    7309
    New target UNO_91H from RDA Microelectronics.

    Fixes and Changes

    8524
    Add more generic BlockDevice tests.

    8605
    Make examples commands return a failure

    8606
    Fix off-by-one-error in BusIn/Out

    8604
    Increase EMAC test timeout to 1400 seconds

    8603
    Doxy fix on netsocket docs

    8623
    Fix typos in RTOS doxygen.

    8622
    Fix typos in Events doxygen

    8435
    Kernel.h doxygen update

    8449
    TOOLS : Add missing M33 and M33F in python scripts

    8587
    Remove extra _deselect to prevent possible hard fault

    8640
    Fix compile warning about initializing and variable order

    8642
    nanostack: fix memory leak

    8641
    Fix licensing

    8653
    mbed_lib.json updated for other all C030 targets and code corrected t

    8645
    Detect xinetd service pattern and generate correct pattern (ONME-3733)

    7849
    Low power timer needs to be reset when setting time

    8444
    Add EMAC driver for CM3DS

    8551
    Increase background stack size to fix overflows

    8528
    MCUXpresso: Update LPC Flash driver program page function

    8648
    Fixed bugs in Fast Model MPS2 GCC startup scripts

    8654
    InternetSocket: Fixed missing unlock before return

    8660
    Online: Include project root path

    8677
    Sync mbed-client-cli files with v0.4.0

    8684
    Update peripheral pins

    8595
    Put quotes around include path options

    8681
    STM32F407VG: Add FLASH support

    8679
    STM32 GPIO : code cleaning

    8692
    fix a bug in the FVP platform where flash API page size was wrong

    8699
    Revert flash_get_value for M2351 done in PR#8589

    8696
    Resources: Avoid assuming that deps have a sane name

    8697
    Resources: Use path names for ignored dirs

    8712
    ONME-3852 Check that test cases disconnect at the end

    8729
    Adding arch option instead MCPU for no dsp and no fpu support

    8727
    LoRaWANTimer UT fixed

    Using this release

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

    Downloads: zip tar.gz

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

    Summary

    In this release we have continued our focus on improving our documentation.

    We now have support for FUTURE_SEQUANA devices.

    We have fixed the following reported issues:

    • Low power ticker wrapper layer still used when suspended
    • Error occurs when building exported mbed-os programs on e2studio
    • CMake exported build fails with multiple –source arguments
    • ATHandler::consume_to_tag method doesn’t detect tags in some cases
    • UBLOX_EVK_ODIN_W2 does not pass Greentea testcase WIFI-CONNECT

    The ODIN drivers have been updated to v3.5.0 RC1. This brings: * BLE Cordio Stack Ported for ODIN_W2 * Updated ODIN drivers for BLE cordio

    We have also added: * QSPI support for KL82Z and K82F * Bootloader support for DISCO_F769NI * TRNG support for STM32F407VG * Bootloader support for DISCO_F413ZH and NUCLEO_F413ZH

    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

    8491
    New target future sequana

    Fixes and Changes

    6293
    Reduce .text footprint of the network stack

    8409
    Fix doxygen comments and spelling errors

    8046
    NRF52 serial: Fix UART console RX

    8339
    Unit testing: update unit testing documentation for Mac OS

    8412
    PwmOut.h: Documentation improvements only

    8413
    Fix doxygen for Serial and RawSerial

    8462
    Move inline code snippets to code blocks

    8464
    EventQueue documentation fix.

    8303
    Tools: Use logical paths in ignored_dirs

    8249
    Tools: Restrict toolchains reported by mbed compile -S to official ones

    8250
    Tools: Don’t traceback on missing linker script

    8348
    Add K66F default sd storage

    8377
    Fix for issue #8368

    8482
    [tests-mbedtls-multi] Fix typo in the printf (no functional change)

    8484
    Component SD test: skip multiple thread test depending on RAM

    8486
    LPC54608: Raise the core freq on LPC54608 targets

    8483
    BLE: write size first when writing an eeprom message

    8350
    Cellular: Fix for AT handler consume to tag

    8476
    mbedgt-network-wifi WIFI CONNECT TC - check that SSID is cached

    8493
    STM32 RTC : Prescaler macro issue

    8495
    Adding file type for linker script arg in make script

    8489
    Clean up UARTSerial.cpp includes.

    8369
    Cellular: UBLOX_C030_R410M cellular target add

    7966
    nrf52-ble: fix total links count

    8485
    Feature qspi kinetis

    8430
    Block device general tests

    8474
    NRF52 : Fix UART RTS initialization

    8505
    Continue Socket and WiFi tests even on test failure.

    8515
    Merge duplicate keys in JSON.

    8503
    mbed_rtc_time.h - documentation fix

    8506
    Docs: fix I2CSlave documentation

    8504
    Span doc

    8510
    Doc: SPI slave doxygen cleanup

    8514
    EventFlags docs update

    8512
    Explain default port number, and construction

    8319
    Checksum the vector table of the LPC546XX

    7864
    Add required header file and namespace element instead add all.

    8244
    storage: fix component coding style

    8346
    storage: fix valid partion check with windows formatted sd card

    8526
    Fix for unit test build on Windows machines

    8279
    Fix LowPowerTickerWrapper operation when suspended

    8292
    Fix hardware flow control on NRF52 series

    8259
    Update the Mbed TLS README

    8509
    Non copyable doc

    8521
    MbedCRC docs update

    8516
    Doc: spi documentation fixes

    8511
    Update documentation for the ConditionVariable API

    8529
    Doxygen: Move free standing HAL tests module inside their HAL module

    8534
    Docs: InternetSocket doxygen fixes

    8539
    Docs: UDPSocket doxygen cleanup

    8537
    Doxygen: Hide friend declarations in dox.

    8536
    PlatformMutex docs update

    8549
    contributing: simplify it via a link to our docs

    8546
    Add warning about deviating from the template format

    8452
    ble: update ODIN drivers to v3.5.0 RC1

    8554
    NUCLEO_L4R5ZI: Fix alignment of execute region to 8byte boundary

    8562
    build_api: remove unused import

    8556
    BLE: fix using an optional feature before checking for support

    8499
    Socket closing improvements and tests adjustments

    8559
    STM32F407VG: Add TRNG support

    8461
    api->API

    8572
    Move #endif to fix PwmOut.h doxygen

    8371
    Cellular: Add unsupported features for UBLOX targets

    8566
    Wifi: ublox fix to keep the credentials stored

    8564
    Drivers: fix typos in doxygen

    8580
    Fix the incorrect comment for set_blocking()

    8593
    Build and run latest released doxygen in Travis CI

    8598
    ATCmdParser: Fix OOB handling performance-wise

    8585
    Phy drivers: Added S2-LP driver

    8599
    DISCO_F769NI: Add bootloader support

    8588
    Fix Ice Tea test execution order to be sorted by names.

    8542
    Update python module versions in requirements.txt

    8577
    Fix Makefile export with Python 3

    8538
    Rework make.py CLI to avoid treating apps as tests

    8616
    Updated and pinned version for requests

    8624
    Fix missing doxygen pages

    8611
    Unittest fixes

    8553
    STM32F413ZH: Add bootloader support

    8541
    Docs: netsocket group doxygen fixes

    8540
    Update documentation for the Queue API

    8508
    Update linker scripts for bootloader target L496GZ

    Using this release

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

    Downloads: zip tar.gz

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

    Summary

    In this release we have added support for TMPM4G9, RapidIoT and Laird BL654.

    We are currently focusing on improving the quality of our documentation, so there
    are a number of documentation fixes in this release and upcoming ones.

    There are a number of reported issues that we have fixed:

    • A 4/8 byte alignment error in the device scatter files.

    • On the STM32F1 family of devices the set_time function was not setting the time correctly.

    • On STM32 devices extra power consumption was observed when in STOP mode. This was due to
      the HSI clock being enabled in that mode, whereas only the LSE clock should be enabled.

    Mbed-coap has gone through a couple of version updates:

    • Version 4.7.0 brings:
      A new function that can be used to clear the received blockwise payloads, for example in
      the case of a connection error.

    Silencing the compiler warning when CoAP duplicate detection is enabled.

    • Version 4.7.1 brings:
      A new re-scan routine whch is called when blockwise message sending times out, preventing
      a hard fault.

    We have added: * us ticker support for TMPM066 and TMPM46B * RTC support for MIMXRT1050_EVK * missing IAR exporters for the STM32 family * ADC support for DISCO_L496AG * an ADC update for internal channels on STM32L1 devices. * flash support for KL43Z, KL82Z, KW41Z and K22F.

    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

    7923
    Add Support for Toshiba TMPM4G9

    8307
    Add support for RapidIoT

    8454
    Adding Laird BL654 as a new MTB target

    Fixes and Changes

    7890
    Circular buffer should use conditional statement instead of modulo

    7934
    corrected a typo in AT_CellularPower::opt_power_save_mode

    7953
    Fix is_valid_erase function to use get_erase_size with address

    7896
    Fix pin names of MIMXRT1050 I2C pins

    7914
    Remove references to “mBed”

    7957
    nRF5x: pass ram linker start/length from config system

    7975
    Use high resolution time for Timer::read().

    7998
    MIMXRT1050_EVK: Add RTC support

    8048
    NRF52: serial_api: Use polling for putc

    8049
    Nuvoton: Fix mbed_hal-sleep test failed

    8134
    STM32L1 ADC update for internal channels

    8006
    SD - Add required header file and namespace element instead add all

    7813
    STM32L4: Fix sleep implementation

    7861
    Removing default flow control for MTB_LAIRD_BL652

    8057
    Removed cellular PIN code print from debug log.

    8061
    NRF52: Ensure that we configure hardware after flow control changes

    8072
    Renesas : Improve Flash iap driver

    8149
    Add usticker feature to TMPM066

    8167
    Change update file format to binary for all targets

    8168
    DISCO_L496AG : enable ADC

    8169
    STM32: add missing IAR exporters

    8175
    Fix the CMSIS macro ARM_MPU_RASR

    8179
    Add missing SIM PIN configuration item

    8193
    M2351: Add license file for default secure library/executable

    8235
    Mbedgt netsocket tc fixes

    8239
    Fix for pwmout & serial fuart in TMPM46B

    8241
    Fix WIFI_CONNECT_PARAMS_CHANNEL_FAIL testcase.

    8268
    Cellular: Fix greentea network set credentials test case

    8275
    tools, NRF51-post-build: Use paths to hex files

    8276
    tools: Make “file” key in notifications consistant

    8280
    STM32: Fix I2C stop condition

    8315
    Fix cellular unittests

    8325
    Fix for pinmap & usticker free() in TMPM3H6

    8330
    Tools: Fix Python3 + firmware header traeback

    8323
    Add blockdevice example back to CI

    8286
    STM32 RTC : write RTC time while LPTICKER is enabled

    8263
    STM32L4: clear error programming flags before erase & program operations

    8243
    mcr20a use core_util_critical_section functions

    8225
    Adjust stack & heap for IAR on STM32F412xG

    8210
    platform timer: Call timer start in enable

    7958
    nrf_ble: Expose configuration of max characteristics and descriptors

    8327
    Guard Atmel RF driver build by DEVICE_I2C

    7582
    Update sleep manager tests

    7877
    Improve the config ajustment script of TLS for ENTROPY_NV_SEED

    7898
    Travis: fix astyle report (-/+ files)

    8024
    Fix alignment of execute region to 8byte boundary

    8177
    tools/utils: Fix issue with loading json files as ascii on python3 linux

    8186
    Freescale/NXP: Fix alignment of execute region to 8byte boundary

    8298
    Reset channel settings back to default

    8305
    Tools: Fix Microbit releases

    7937
    Export, MCUXpresso: Avoid assigning self.libraries

    8316
    unittests: Add tests for netsocket classes

    8122
    LPC1768 us_ticker.c timer choice

    8261
    Enabled the removal of a trailing slash

    8213
    STM32F1 RTC : save values in register

    7902
    Fix overflow in disk_get_sector_size()

    8183
    Adding QOS in response to LinkADRReq and fixing class C bugs

    8219
    STM32 EMAC : lock deep sleep

    8256
    Fix warnings in block devices

    8258
    Cellular: Fix compile warnings for CellularNetwork

    8270
    Tools: Ensure vtor reserved bits are all 0

    8273
    Update mbed-coap to version 4.7.0

    8363
    Remove mbed-os-example-client

    8248
    Tools, Resources: Convert to a set during win2unix

    8393
    Revert “Merge pull request #8183 from hasnainvirk/QOS_impl”

    8390
    Fixed colorama Python package

    8002
    Storage: Add required header file and namespace element instead add all

    8274
    Export, nb: Use same path for cpp as the rest of the tools

    8304
    Remove GCC_CR

    8237
    PR template: add “docs update”

    8234
    Renesas : Modify LPTicker driver

    8334
    mbed dm: Check for missing payload and give a better error message

    8226
    Unit tests: improve unit testing documentation

    8208
    Align github’s issue template with pull request’s look&feel.

    8338
    poll: Un-doxygen internal comment

    8385
    improve can documentation

    8391
    improve mutex doc

    8389
    Fix minor typo in Timeout

    8388
    QSPI docs updates

    8395
    Adding doxygen comments for mem trace enum

    8394
    improve ticker doc

    8392
    Interruptin documentation update

    8397
    Updating stats doc comments

    8407
    DeviceKey doxygen update

    8406
    Timer documentation update

    8310
    MCUXpresso: Add Flash support for KL43Z, KL82Z, KW41Z, K22F

    8230
    Fix for issue #8214

    8062
    Signature to track memory allocations by wrapper functions

    8238
    Add usticker feature to TMPM46B

    8271
    Tools, memap: Silence warnings that we handled correctly

    8284
    STM32: Only LSE clock should be enabled in STOP mode

    8370
    Cellular: Error handling for socket create

    8383
    DISCO_F413ZH : set default Wifi module SPI state to inactive

    8379
    Renesas : Minor change of SPI driver

    8408
    Added bootloader bin license and config for DISCO_L475VG_IOT01A

    8416
    wich->which

    8414
    Remove protected class from EventQueue Doxy

    8420
    Doc changes and rephrasing

    8418
    Remove protected members from doxy in Analog/Digital classes

    8299
    Making cancel_sending() API robust

    8336
    Fix hard-fault when socket created using accept() is closed

    8317
    Add FlashIAP block device as default block device for WISE 1570

    8434
    Change Mbed TLS platform error code and value

    8429
    M2351: Fix LED_GREEN naming error

    8374
    Renesas : Improve ARMCC linker script

    8403
    STM32: fix issue with serial_is_tx_ongoing function

    8427
    STM32L4 : sleep issue

    8405
    [LoRaWAN]: Adding QOS in response to LinkADRReq and fixing class C bugs

    8419
    PortIn.h: Documentation improvements only

    8437
    MCUXpresso: Fix for the TRNG HAL driver

    8446
    Pin urllib3 pip module in requirements.txt

    8008
    Add required header file and namespace element instead add all

    8302
    Use wait_ms(int) instead of wait(float)

    8425
    M487: Fix SW2/SW3 interchange error in NUMAKER_IOT_M487

    8359
    Allow overriding build timestamp from env

    8442
    Add missing define in drivers/SerialWireOutput.h

    8453
    Fixed lorawan unittests valgrind issues

    8451
    Added missing _mutex->unlock() to FileBase::lookup().

    8439
    Correct mesh network connection status callback functionality.

    8349
    A Reduced SPIF Block Device for Boot Loader

    8456
    Remove extra e in deepsleep

    8455
    underlyng->underlying

    8459
    Minor mbed_assert doxy typos patch

    8458
    locable->lockable

    8457
    Infered->Inferred

    8460
    funtion->function

    8288
    tools: Raise NotSupported when target definition is incomplete

    8381
    Fix status sequence and reporting for LWIP stack

    8424
    Update doxygens to be in sync

    8400
    This PR retrieves the TimerSync function to fix the lockup issue

    8421
    PortOut.h: Documentation improvements only

    8469
    mbedgt-network-wifi WIFI_CONNECT - check for empty passwd

    8272
    MCUXpresso: Ensure the RTC OSC is running at bootup on Kinetis platforms

    8382
    Mts dragonfly l471 qg

    8013
    STM32: Fix alignment of execute region to 8byte boundary

    5285
    Update devices to have minimum 2K RAM and heap, also added test

    8404
    Update mbed-coap to version 4.7.1

    Using this release

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

    Downloads: zip tar.gz

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

    Summary

    In this release we have added support for the NUCLEO_L4R5ZI and NUMAKER_IOT_M487.

    We have made a number of quality improvements :

    • Addressed numerous compiler warnings
    • Tidied up the include paths
    • Updated the documentation in a number of areas

    A couple of reported known issues from the 5.10.0 release have been addressed:

    • Tools: Mbed CLI dm init fails to load certificate
    • Tools: Mbed CLI dm init command - reports bad country code when certificate expiration changed

    The following reported issues have also been fixed in this release:

    • New TCPSocket API always returns NULL from accept function
    • Problems with the LowPowerTickerWrapper for all Nuvoton devices
    • SPI is not initializing correctly when an object is destructed and then constructed again.

    We have implemented changes required to allow TB_SENSE_12 to provide a default network interface for Silicon Labs targets. We have also added a bootloader image for Nucleo F207ZG and enabled RTC for LPC1768.

    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

    7585
    NUCLEO_L4R5ZI: add new platform

    8164
    Support Nuvoton’s new target NUMAKER_IOT_M487

    Fixes and Changes

    7758
    Include user defined static lib files in the Linker object files paths

    7904
    MIMXRT1050_EVK: Update SPI HAL driver

    6293
    Reduce .text footprint of the network stack

    7939
    Export, Embitz: Avoid assigning self.resources.linker_script

    7992
    Fix TCPSocket::accept()

    7787
    STM32L4 : code cleanup in MSI SetSysClock

    7821
    Add license files for MTS bootloaders

    7901
    Compiler Warning fixes

    7960
    Change mbedtls_platform_context parameter to NULL

    7982
    LoRaWAN: Memory overrun correction

    8010
    NXP: Update serial driver’s parity handling

    8052
    FileBase: Fix unsetting of default when destroyed

    8067
    Spelling fixes and general readability improvements for TEST_APPS documentation

    7856
    Realtek: fix gpio is connected

    7981
    BLE: fix missing updates sent callback in GattServer using Cordio stack

    7944
    Cellular Unittests refactored to GoogleTest framework

    7700
    STM32: Correct device_has_add flags for bluepill_f103c8 target, fixes #7654

    7883
    netsocket: Fix compiler warning

    8104
    mbed dm: Remove references to internal script from help

    8136
    STM: Fix us_ticker timestamp after deep sleep

    7903
    Clean up include paths.

    8029
    Fix issues with LowPowerTickerWrapper

    8025
    Align to CMSIS defines for Non-Secure

    7920
    Resolve duplicate ADuCM3029 system return code

    7882
    Add greentea tests for network interface status and connect/disconnect

    8054
    Lora: Fix ADRAckReq

    8145
    Add bootloader image for Nucleo F207ZG

    8153
    Unit tests: automatic unit test suite naming

    8074
    LoRaWAN: Refactoring compliance test code

    7921
    Fix Wiznet: IAR heap memory problem

    8160
    Update mbed-cloud-sdk in requirements.txt

    7935
    LoRa: Stop processing MAC commands if command id is unknown

    7987
    M2351: Update to NuMaker-PFM-M2351 V1.3 board

    7993
    Fix EFM32 pwmout hal function pwmout_period

    8171
    Skip the unstable SYNCHRONOUS_DNS_CACHE testcase

    8181
    Py3 support

    7925
    Qspi hal test refactoring/update

    8060
    Clarify test configuration in Socket/Networking test document

    8096
    Lora: Fix sticky MAC command retransmissions

    8112
    specify mbed-cli version requirement

    8187
    STM32: fix wrong LSE config in serial_baud function

    8030
    Nuvoton: Fix Greentea test common_tickers failed

    8023
    Hotfix for PR #7778 on Silicon Labs targets

    8182
    Unit tests: fix cellular athandler unit tests and wait() declaration conflict

    8147
    Fix authentication on a cellular network for Access Point Name (APN)

    8073
    Add documentation about icetea testcases

    8106
    Replace macros with config options

    8218
    Unit tests: add UNITTESTS folder to exclude patterns in doxygen_options.json

    8036
    platform: error: fix bogus usage of memset()

    7918
    Add link to README.md

    7746
    Handle NVStore tests in a low memory environment

    8212
    Unit tests: update README.md

    7989
    M2351: Fix STDIO_UART error

    8005
    BLE: fix whitelist generation (set correct address type)

    8026
    Fix for HW CRC calculations on Silicon Labs targets

    8165
    Fix for issue #8155 (NRF52832: time stops after 35 minutes)

    8009
    LPC1768: Enable RTC

    8037
    STM32: Fix disabling of IRQs shared by multiple events

    8034
    Changed the reported SNR from unsigned to signed.

    8131
    STM32F3 correct analogin_read

    8229
    Fix network and util ut

    7941
    Nuvoton: Fix GPIO mode mapping

    8154
    Unit tests: add code coverage filtering

    8138
    Unit tests for TCPSocket, TCPServer, UDPSocket, NetworkStack, InternetSocket

    7057
    Add TRNG API test

    8014
    realtek rtl8195am lib updates

    7911
    travis: add license check for gnu library license

    7696
    skip the flashsim test if not enough memory cannot be allocated for it.

    8099
    MIMXRT1050_EVK: Fix the PWM Hal driver

    8247
    Update Manifest tool version

    8132
    gt netsocket tcp - increases threads’ stack size

    8262
    Align MBRBlockDevice writes to underlying BlockDevice write size

    8246
    Add back examples updated for mbed-os-5.10

    7932
    ublox c030: Add PC2 pin to ADC pin map

    8085
    STM32 RTC : start LSI clock (for targets without LSE)

    7978
    Cellular: state machine and easycellular now return error fast if sim

    7876
    Tools: Modified version mismatch msg to be warning instead of error

    8090
    Cleanup SPI constructor and destructor

    8309
    use forced_reset_timeout as delay after reset

    7917
    Add overhead count in heap stats

    8318
    BLE: fix use of invalid cccd index

    8121
    Add thread safety info to FatFs/LittleFs

    8257
    tests-mbed_hal-sleep: finish UART transmission before sleep test

    8119
    STM32L496 : wrong ADC init

    8233
    Lora unittests

    7916
    Add LPC1769 template file for MCUXpresso IDE

    8103
    STM32 L0 ADC internal channel fix

    8242
    STM32 LPTICKER : Fix tickless and LPTICKER_DELAY_TICKS

    8269
    BLE: replace malloc with cordio buffer allocation

    8142
    Disable MBEDTLS_CONFIG_HW_SUPPORT on STM targets.

    8108
    Rename device option STCLK_OFF_DURING_SLEEP

    7996
    Add nanostack mac tester and testcases

    8252
    Adjust heap size on stm32f207

    Using this release

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

    Downloads: zip tar.gz

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

    Summary

    In Mbed OS 5.10, we are improving the firmware update user experience. Mbed OS provides integrated firmware over-the-air (OTA) update capability enabled by Pelion Device Management. Mbed OS now makes it seamless and provides secure and flexible IoT firmware update and device management capabilities right from Arm Mbed CLI tool itself. Bluetooth Low Energy (BLE) is quickly becoming the IoT connectivity protocol of choice for a variety of use cases. In Mbed OS 5.10, we are launching Arm Mbed Cordio stack, the world’s first open-source, fully-qualified and production-ready BLE software stack that supports BLE 5 and gives developers even more flexibility in developing new IoT solutions with BLE connectivity.

    Security is the most important challenge for the IoT developers. Mbed OS is supporting Arm V8M which has built in Trustzone functionality and laying the foundation for you to build highly secure devices. In Mbed OS 5.10, we are now supporting the Nuvoton M2351 based on the latest ARM V8M core. We are also integrating storage components, such as SPIF, SD and FlashIAP block devices, into the Mbed OS repository to simplify the use of storage components.

    In addition, this release contains many minor fixes and enhancements and brings support for 145 target development boards. In the release note below, we summarize some of the key updates to Mbed OS that are part of the Mbed OS 5.10.0 release.

    Core OS

    Enhancing the user experience for firmware OTA updates

    Firmware OTA updates are critical for IoT devices to ensure that the IoT device can be maintained throughout its lifecycle. Firmware OTA updates can significantly increase your device’s lifespan. If a device cannot update its firmware over the air, you must go to the field where the device is deployed and update its firmware, which is expensive and not scalable. Mbed OS supports firmware updates enabled by Pelion Device Management and provides flexible, secure and simple IoT device management for any device. It enables the provisioning and connection of IoT end nodes with cost-effective, secure and reliable software updates, ensuring a long product lifetime. In Mbed OS 5.10, we are simplifying the user experience of doing firmware updates. This enhancement means you can seamlessly enable firmware update capabilities in your IoT device. Using Mbed CLI, you can perform firmware updates to your device in fewer commands. You can also prepare firmware updates for one or multiple devices. For more information, please refer to our documentation about updating devices.

    Support for ARMv8-M with Nuvoton M2351

    Mbed OS supports building highly secure IoT embedded solutions based on the ARMv8-M platform. The most significant enhancement in the ARMv8-M architecture is the inclusion of the TrustZone security extension, a technology that adds a new dimension of security control and allows multiple security domains within a single processor system. This results in enhanced security and simplified development. TrustZone enables a “secure world” that keeps important data, such as private keys or pre-shared keys, isolated from the main operating system and apps. Mbed OS 5.10 supports Nuvoton M2351, based on the Cortex-M23 processor. Mbed OS also provides all necessary tools to support building and deploying both secure and nonsecure sides of application. Please see our tools documentation for more information.

    Integration of storage components inside Mbed OS

    Storage functionality is an essential requirement for building IoT devices that store data, firmware images and credentials on external MCU memory. Throughout the past few Mbed OS releases, we have developed functionality to support many different types of external memories, such as SPI flash and SD card. The storage drivers were developed as external components to allow continuous development and maturity of those drivers before bringing them inside Mbed OS. In Mbed OS 5.10, we are moving the SD, SPI Flash (SPIF) and FlashIAP drivers into Mbed OS. Integration of storage components into the Mbed OS repository makes it easy to use them and allows the simple add-on of default block device and default file system functionality. We added SD, SPIF and FlashIAP block devices under the new component label configured in target.json. Any board with an SD or SPI Flash component enabled has a default block device and file system. For more information, please visit the SDBlockDevice, SPIFBlockDevice and FlashIAPBlockDevice API documentation.

    Quad SPI (QSPI) block device driver

    With the cost of memory going down rapidly and performance on MCUs increasing every day, devices are storing more data than ever before. QSPI enables faster data transfer compared to traditional flash and used with components such as connectivity modules, displays and others. With QSPI, Mbed OS can communicate with external memories much faster than through SPI because the communication can be up to four lines between the host and a device. We are releasing the QSPI block device driver to enable NOR-based QSPI flash devices that support SFDP. For more information, please visit the QSPI documentation.

    Connectivity

    Arm Mbed Cordio Bluetooth Low Energy (BLE) stack

    Production-ready open source BLE software stack: BLE is quickly becoming the Internet of Things (IoT) connectivity protocol of choice for a variety of use cases, including smart lighting, smart cities and asset tracking, where low cost, power consumption and a small footprint are fundamental requirements. According to the 2018 Bluetooth Market Update, there will be more than 5 billion Bluetooth device shipments by 2022, with 97% of them containing BLE technology. The advances in Bluetooth 5 technology, along with the introduction of Bluetooth Mesh, are driving new market opportunities across building automation, sensor networks and other IoT solutions.

    In Mbed OS 5.10, we are adding Arm Mbed Cordio BLE stack to make it easier and more secure for organizations and developers to add BLE to their IoT devices to drive adoption levels to new heights. Arm Mbed Cordio BLE stack is the world’s first open-source, fully-qualified and production-ready BLE software stack, which gives developers even more flexibility in developing new IoT solutions with BLE connectivity. Using Arm Mbed Cordio BLE stack, you can innovate through Bluetooth 5 which supports 2x the data rate, 4x the range and 8x the broadcast capability compared to the previous version, Bluetooth 4.2.

    Near field communication (NFC) card emulation mode support

    NFC is a short-range radio technology that enables use cases such as contactless payments, access control and device pairing. We are enabling the card emulation mode in Mbed OS 5.10 through an NFC controller or NFC EEPROM. With Mbed OS 5.10, it is now possible to create NDEF messages that can contain device identification, pairing or sensing data. For more information, please visit the NFC API documentation.

    Default network interfaces

    Mbed OS 5.10 targets that provide network connectivity also provide a default network interface. This can be Ethernet, Wi-Fi, mesh or cellular. Using a default interface allows you to port applications to different targets and connectivity options. Applications no longer require libraries, such as Easy-connect, to be portable.

    Refactored Socket API

    This release refactors the Mbed OS Socket API by bringing it closer to the POSIX equivalent. The new design contains an abstract socket interface that applications can use directly. Casting Socket pointers back to TCPSocket or UDPSocket is no longer necessary. For most of the applications, these changes are not noticeable because the TCPSocket and UDPSocket classes still emulate previous behavior. The new design also renders the TCPServer API unnecessary, moving its functionality directly into TCPSocket itself. The legacy TCPServer class still exists and is fully functional.

    Connectivity stack always builtin

    Applications are no longer required to specify FEATURE_NANOSTACK, FEATURE_LWIP or FEATURE_COMMON_PAL to use any of the connectivity stacks that Mbed OS supplies. Those are always included in the build. This change does not increase any flash use because the linker can drop any unused functions.

    Connectivity drivers

    For easier integration and testing, this release includes some connectivity drivers for external modules, such as the ESP8266 Wi-Fi driver, AT86RF233 driver and MCR20A driver. Now applications using those drivers receive any applicable bug fixes every time they update Mbed OS.

    Security

    Update to Mbed TLS 2.13

    Mbed TLS 2.13.0 introduces several new features improving our support for DTLS over low-bandwidth, high-latency networks with high packet loss.

    Specifically:

    • Support for fragmentation of outgoing handshake messages. This allows the use of Mbed TLS across networks with datagram links with MTUs as low as 512 bytes, making it suitable for NB-IOT networks.

    • Grouping outgoing handshake messages in a single datagram, reducing both the network load and the likelihood of reordering effects.

    • Reordering handshake packets that have been received out of order, reducing the number of retransmissions necessary to complete a handshake and therefore increasing handshake efficiency and reducing network load.

    For more information, please visit https://tls.mbed.org/tech-updates/releases/mbedtls-2.13.0-2.7.6-and-2.1.15-released

    Targets and tools

    Thanks to our Partners’ hard work, Mbed OS 5.10 added 10 new target platforms and now supports 145 target platforms. Here’s a sneak peek at the new Mbed Enabled targets added since Mbed OS 5.9 in alphabetical order:

    • Advantech WISE 1530 - https://os.mbed.com/modules/advantech-wise-1530/

    • Avnet AT&T WNC M14A2A Cellular LTE kit - https://os.mbed.com/components/Avnet-ATT-WNC-14A2A-Cellular-IoT-Kit/.

    • Nuvoton NUMAKER_PFM_M2351 - https://os.mbed.com/platforms/NUMAKER-PFM-M2351/.

    • NXP FRDM-KL82Z - https://os.mbed.com/platforms/FRDM-KL82Z.

    • NXP I.MXRT1050_EVK - https://os.mbed.com/platforms/MIMXRT1050-EVK/.

    • NXP LPCXpresso54628 - https://os.mbed.com/platforms/LPCXpresso54628/.

    • Sigma Delta Tech SDT51822B - https://os.mbed.com/platforms/SDT51822B/.

    • Sigma Delta Tech SDT52832B - https://os.mbed.com/platforms/SDT52832B/.

    • ST Discovery L496AG - https://os.mbed.com/platforms/ST-Discovery-L496AG/.

    • Toshiba TMPM46B - https://os.mbed.com/platforms/TMPM3H6/.

    • Toshiba TMPM3H6 - https://os.mbed.com/platforms/TMPM46B/.

    We’ll continue to add targets in our biweekly patch releases as Partners work with us on support.

    Compatibility Issues

    Mbed-bootloader (https://github.com/ARMmbed/mbed-bootloader), is the repository used to create the bootloader binary which is used by Pelion Client. Currently this repository is not compatible with MbedOS 5.10 but with Mbed OS 5.9.4. It will however create a bootloader binary which is compatible with Pelion Device Management Client 2.0.0 compiled with MbedOS 5.10.

    We will be adding MbedOS 5.10 compatibility in upcoming releases of Mbed bootloader

    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 document 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: Mbed TLS causes stack overflow in Mbed OS targets

    • Description: The stack memory usage of some Mbed TLS features is higher than 4 KB, which may cause stack overflow errors when running in constrained embedded environments with mbed OS which are particularly limited in RAM.
    • Workaround: The amount of stack required is very dependent on the application, and what features of the library it chooses to use. Obviously more intensive, demanding tasks may not be possible on more limited, constrained devices, so we recommend designing for the limitations of the target device, or choosing a device suitable for your application.
    • Reported Issue: https://github.com/ARMmbed/mbed-os-example-tls/issues/14
    • 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

    Tools: Makefile export fails to build larger project in Windows

    • Description: Make will fail with the error: make (e=87): The parameter is incorrect.
    • Workaround: Possible workarounds are 1) Use Linux instead 2) Follow advice here,
      https://stackoverflow.com/questions/12598933/ndk-build-createprocess-make-e-87-the-parameter-is-incorrect
    • Reported Issue: https://github.com/ARMmbed/mbed-os/issues/6335
    • Priority: Minor

    Tools: Mbed OS tools have issues with python 3.x

    • Description: A number of issues have been found when using Python 3.x with the Mbed OS tools
    • Workaround: Use Python > 2.7
    • Reported Issues: https://github.com/ARMmbed/mbed-os/issues/8146 , https://github.com/ARMmbed/mbed-os/issues/8202
    • 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

    Platform: ARM_CM3DS_MPS2 targets do not have Ethernet driver

    • Description: Ethernet driver interface was refactored for Mbed OS 5.9. ARM_CM3DS is not yet ported.
    • Workaround: None
    • Reported Issue: -
    • Priority: Major

    Platform: Ublox ODIN W2 crashing with latest client

    • Description: Ublox ODIN W2 board is often crashing when using Mbed Cloud Client. Root cause unclear.
    • Workaround: None
    • Reported Issue: Internal issues: ONME-3665, ONME-3672, ONME-3692
    • 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

    Platform: Realtek RTL8195AM not passing networking tests

    • Description: RTL8195AM is not passing Mbed OS socket or WiFi tests. Various problems exist.
    • Workaround: None
    • Reported Issue: https://github.com/ARMmbed/mbed-os/issues/8124
    • Priority: Major

    Tools: Mbed CLI dm init fails to load certificate

    • Description: When running the command mbed dm init -d “xxxxxx” –model-name “yyyyyy” ,
      the following error is observed: “[CRITICAL] 2018-09-05 14:19:28 - manifesttool.init - Error setting
      defaults: Error loading .update-certificates\default.der: Unable to load certificate”.
    • Workaround: None
    • Reported Issue: Internal reference: IOTUC-593
    • Priority: Major

    Tools: Mbed CLI dm init command - reports bad country code when certificate expiration changed

    • Description: Run the command, mbed dm init -d “xxxxxxx” –model-name “yyyyyy” –force, using values
      that are known to work and a country code of ‘US’. The following error is observed:
      “[CRITICAL] 2018-09-05 14:28:42 - manifesttool.cert - Error creating certificate: Country name must be a 2 character country code”
      A fix will be added for this in mbed-os-5.10.1.
    • Workaround: Using the -q flag will stop the country, region code etc from being requested and instead
      take default values.
    • Reported Issue: Internal reference: IOTUC-597
    • Priority: Major

    Contents

    Fixes and Changes

    DAPLink 0250 release: During the 5.10 development cycle, we created DAPLink 0250. This improves the drag-and-drop programming experience when using the Mbed OS bootloader. We recommend anyone using DAPLink upgrade to this version.

    7974
    Update Mbed TLS to version 2.13.0

    7967
    ESP8266: Fix compilation error when default interface is enabled

    7952
    Prevent sector-unaligned erase

    7910
    Cellular: Fix Greentea test for network attach

    7907
    Update mbed-coap to version 4.6.2

    7899
    Bluetooth 5 Phy support

    7895
    Lora: Remove duplicate LinkCheckReq MAC command

    7894
    Cellular: CellularDevice unittests fix initialization

    7878
    Corrected mbed-mesh-api thread/6lowpan tasklets interface disconnect/connect

    7875
    Update CMSIS to 5.4.0

    7873
    realtek: fix #7829 - remove dhcps files

    7872
    Add ThisThread namespace and deprecate static Thread methods

    7871
    Update linker files for NUCLEO_F207ZG and enable bootloader functionality

    7870
    Cellular: Support for GPRS dial-up

    7869
    BLE: Cordio going open source

    7868
    Disable MBEDTLS_HAVE_DATE_TIME as ARMCC does not support gmtime

    7860
    Cellular: Allow cellular modules to override network registration mode

    7857
    Cellular: Make AT_CellularStack socket array multi-thread safe

    7854
    Nanostack patch release for Mbed OS 5.10

    7851
    littlefs: Fixed issue with cleanup in mount function on error

    7848
    Message ID in CAN constructor needs to be unsigned

    7846
    Tools: Use Distcc when it’s configured

    7844
    Implement device management subcommand

    7840
    WISE_1570 greentea tests

    7839
    Lora: Change visibility of LoRaMac internal methods as private

    7828
    Platform: Add C++ Span class.

    7825
    Silicon Labs QSPI HAL implementation

    7822
    Add initial NFC support to Mbed OS

    7819
    Unit testing framework

    7818
    Allow ThreadInterface::device_eui64_get() before connect()

    7817
    standardise QSPI pin names

    7816
    Lora: Refactor duty-cycle configuration and introduce config for JOIN request

    7815
    Re-add Shared Pointer Class into platform features

    7814
    Connectivity drivers

    7812
    Update greentea tests to use default interface

    7806
    LoRaWAN: Fixing Hard fault in CN470 PHY layer

    7805
    Skip Greentea tests for Mbed OS code coverage on Fast Models

    7802
    LoRaWAN: Custom FSB selection in US and Australian regions

    7795
    Cellular: Add getters for device and serial to EasyCellularConnection

    7794
    Update Mbed 5 boot sequence

    7793
    Template specialization didnt work after addition of default constructor

    7792
    Build tool fixes for Musca support

    7783
    Add QSPI

    7781
    Add thread safety to CRC class

    7780
    Rename nanostack configuration (.cfg) files

    7778
    Fix MeshInterface::get_default_instance()

    7774
    Add default block device support (SD, SPIF and FLASHIAP)

    7773
    Add some logic related to initialization to various block devices

    7770
    LoRa: Fix MAC initialization for connection with parameters

    7767
    Lora: Fix TX_ERROR event if corrupted msg is received for CONFIRMED request

    7757
    Revert “Move BlockDevice classes inside mbed namespace”

    7751
    Realtek RTL8195A wifi interface to inherit EMAC interface

    7745
    Icetea support

    7739
    Update mbed-coap to version 4.6.1

    7737
    Nanostack release for Mbed OS 5.10

    7735
    Optimized CRC implementation - (32-bit ANSI polynomial)

    7728
    PR template: Feature -> functionality change

    7727
    CircularBuffer: volatile specifier removal

    7726
    Update BLE error calls to use new error codes and mbed_error

    7714
    Add BOOTLOADER feature

    7713
    LittleFS: Update to version 1.6

    7705
    FlashIAP: Add a ROM end macro

    7692
    netsocket: astyle fix

    7683
    Renesas : Improve LWIP speed

    7677
    Cellular: Gemalto Cinterion support for ELS61 and BGS2

    7673
    Fixing import paths of memap.py when excuted as a script

    7667
    Cellular: Add CellularDevice::init_module API to be called at startup

    7663
    Move BlockDevice classes inside mbed namespace

    7662
    Add Error Decoding URL to error report

    7646
    Tools: Fix incrimental compile dep tracking

    7644
    Tools: Scan for “components”

    7623
    Tools: Omit include path parents when they’re scan rules

    7619
    UBLOX cellular api’s for UDP and TCP

    7608
    Tools: Correct win_to_unix path handling

    7601
    LoRaWAN: Reduced priority for automatic uplinks & higher data rate usage for connection establishment

    7599
    Fix double low power ticker interrupt

    7592
    Remove uVisor from mbed-os

    7590
    Tools: Differential Memap

    7587
    Allow legacy TCPServer::accept() to override inherited Socket::accept()

    7579
    Update ODIN drivers to v3.0.0 RC1

    7569
    Tools: Add Uvision6 exporter

    7567
    Tools: Generate update images with managed bl mode

    7564
    Cellular: Make ATHandler::cmd_start() virtual

    7561
    Design process and template for Mbed-OS

    7559
    Export: Support Make + ArmC6 + v8m

    7558
    Tools: Select compiler based on arch version

    7524
    Fixes for tickless and LPTICKER_DELAY_TICKS

    7523
    Add bootloader configuration parameters for MAX32625PICO

    7508
    Ticker free() - requirements, pseudo code, tests, implementation

    7495
    LoRaWAN: Reporting scheduling failures

    7459
    LoRaWAN: FRMPayload size validity

    7430
    Lora: Add support for runtime PHY selection

    7426
    NFC APIs Design Specification

    7423
    Fix issue #6872 - Mutex lock has possibility to fail at runtime (returning status flag)

    7417
    Cordio Documentation: Explain how to tests and what tools are available.

    7414
    Added json options for nanostack heap statictics

    7402
    Replace mbed_mem_tracing_enabled macro with config option

    7399
    Bug fix for receive windows

    7389
    Update nsdynmemlib in frameworks/nanostack-libservice

    7364
    Fix storage rtos types - remove including internal header file

    7336
    Fix connected UDPSocket filtering

    7335
    LoRaWAN: Refactoring LoRaRadio::receive(uint32_t) API

    7294
    Add CPU stats for greentea tests

    7287
    Remove FEATURE_LWIP

    7277
    Tools: Persist config errors until validation occurs

    7243
    Disable XTS cipher mode by default when importing Mbed TLS

    7221
    Cordio: Add tests that validates a cordio port.

    7217
    Cellular: Add AT+CCID and AT+CGSN

    7212
    FlashIAP & NVStore tests: Skip test if overwriting code in flash

    7192
    Create abstract Socket interface

    7183
    Tools: Extract resources object and implement incremental scan

    7174
    tools: crash_log_parser: make ELF and MAP parameters optional

    7163
    Cordio driver hook

    7148
    Tool, build_release: Return nonzero when builds fail

    7145
    NRF52: add a separate .nvictable section and allow .noinit to be used

    7133
    Override ROM/RAM start/size for TrustZone targets

    7099
    Add reference counter for platform context

    7090
    Add non-blocking write function for USBCDC

    7061
    Tools: Include configuration in ASM

    6999
    Extend feature which displays errors/warnings as Link

    6929
    STM32 : script to generate PeripheralPins.c for new target addition

    6582
    Implement zoomable html-flamegraph memap output

    8022
    Update Mbed TLS version to 2.13.1

    8020
    Update mbed-coap to version 4.6.3

    8016
    [OOB 5.10] Fix typo

    8015
    QSPI driver: API parameters fix

    8012
    IOTCORE-389 - bring back legacy alignment for Arm C6

    7995
    Reverting PinNames.h after PR #7774 changes

    7991
    fix example code in QSPI.h

    7990
    DISCO_L475VG_IOT01A remove old QSPI pins

    7988
    Unittesting: Update mutex stub

    7985
    Unittesting: Update Mbed CLI subcommand in Readme

    7971
    Fix memory reservation for Softdevice in NRF52_DK

    7964
    NFC: fix reading from NFC EEPROM

    7950
    Fix memory allocation on STM32L4 devices

    7924
    Add special handling for “/default” filesystem

    7893
    Lora: Improve description of callback methods

    7824
    Use MbedCRC for LittleFS

    7803
    Add Socket test plan

    7720
    python scripts : table print with github policy

    8140
    requiremnts: Bump IceTea

    8137
    Icetea hw restriction

    8123
    Unit tests: fix coverage exclude paths on Windows

    8100
    Allow storage doxy to build

    8092
    Fix quotes around gcovr install command for Windows

    8086
    Fix SocketAddress unittests

    8079
    BUGFIX: Remove account management API calls from DM

    8075
    Syncronize mbed-ls minimum version with icetea requirements

    8066
    Move unittest paths to hyphens

    8063
    mbed dm: Accept api key and host on the command line

    8031
    Fix TCPServer::accept()

    8017
    IAR: Fix for #7662, only massage the error decode URL for the IAR .xcl

    7945
    Move SYNCHRONOUS_DNS_CACHE test to extended set

    7909
    Adjust STMF411xE IAR linker file to mbed-os memory needs.

    Testing and improvements

    Icetea test framework: Icetea is an automated testing framework for Mbed development. It automates the process of flashing Mbed boards, running tests and accumulating test results into reports. Developers use it for local development as well as for automation in a Continuous Integration Environment. Icetea allows you to execute commands remotely via the command line interface in a device under test. More information is available at https://github.com/ARMmbed/icetea

    Support for unit tests: Unit tests enable testing of code in small sections on a host machine and don’t require embedded hardware. Unit testing takes place in a build environment where you test each C or C++ class or module in isolation. This means you build test suites into separate test binaries and stub all access outside to remove dependencies on any specific embedded hardware or software combination. This results in much faster testing using native compilers on the build machine. For more information, please visit our unit testing documentation.

    Support for Fast Models: Arm Fast Models are software models of Arm cores, subsystems, peripherals and so on. Mbed OS has enabled working with Cortex-M family Fast Models. You can run Mbed OS on the software model instead of the hardware. This give users the flexibility of running and testing Mbed OS and its applications in a hardware-free environment. For the details of running Mbed OS on Fast Models, please visit the Fast Models documentation.

    Continuous integration framework:

    The continuous integration framework ensures that every new feature and change in Mbed OS is tested, so that:

    • For every new feature, we create tests that we then deliver to our Partners. For every board to be Mbed Enabled, we need our Partners to successfully conduct these tests.

    • Partners must test the changes on their boards before submitting pull requests (PRs) on GitHub.

    • Once the PR is submitted, the Mbed OS gatekeepers manually review the code to ensure it meets the coding guidelines and code standards.

    • Once approved by gatekeepers, the code goes through the automated test infrastructure, which tests the submitted code across multiple platforms using three toolchains: IAR, ARM and GCC.

    • During the testing phase, we select the combination of boards and devices that support a variety of peripherals, MCU cores and features for maximum coverage.

    • To ensure the Mbed OS code is compatible with all the IDEs, we test that the code exports properly to all the compilers.

    • We merge the PRs only if all the above procedures are successful.

    Below are the summary results for testing conducted for Mbed OS 5.10.0:

    • Total test time is 40,293 hours on actual development boards.

    • We have added 292 new test cases since the Mbed OS 5.9.0 release to test new and existing features on Mbed OS. The number of total test cases is 1,316.

    • The total number of binaries built since the Mbed OS 5.9.0 release is 46,270,224.

    Using this release

    Arm Mbed CLI

    When you create a new program, Mbed CLI automatically imports the latest Mbed OS release. Each release includes all the components: code, build tools and IDE exporters. If you want to update your Mbed OS version or existing program to Mbed OS 5.10.0, run the CLI command mbed update mbed-os-5.10.0.

    Arm Mbed Online Compiler

    When you create a new program, the Mbed Online Compiler automatically uses the latest Mbed OS release. If you want to update your Mbed OS version, right click on mbed-os library, and press update.

    GitHub

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

    Downloads: zip tar.gz

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

    Summary

    This is the last patch release for mbed-os-5.9.

    We have added target support for the following boards in this release:

    • SDT64B
    • SDT8195B
    • SDT32620B
    • SDT32625B
    • SDT51822B
    • SDT52832B
    • MOTE_L152RC

    We have fixed a bug where an exception could be thrown when trying to allocate memory for stats logging (7712).

    There were a couple of issues with the NRF52 (7707 and 7743) that have been fixed.

    We have updated the SPI HAL driver for the MIMXRT1050_EVK.

    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

    7669
    SDT64, 8195, 32620, 32625, 51822, 52832B added to targets

    7534
    enable MOTE_L152 for OS5

    Fixes and Changes

    7772
    Modified Jenkinsfile into one-liner format.

    7810
    Eventqueue Templatewall Doxygen Rework

    7730
    When stack stats enabled, prevent exceptions if memory allocations fail

    7652
    NRF5x: Fix config of LFCLK source / settings.

    7761
    ifndef some macros to allow overriding during compilation

    7880
    Update Greentea EMAC tests

    7891
    Remove unused cmsis includes.

    7788
    Cellular: Fixed AT+COPN

    7879
    Add tests for synchronous dns

    7904
    MIMXRT1050_EVK: Update SPI HAL driver

    7779
    Fix for nrf52 pwm issues

    7939
    Export, Embitz: Avoid assigning self.resources.linker_script

    Using this release

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

    Downloads: zip tar.gz

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

    Summary

    The CMake exporter is now capable of creating combined hex files for targets.

    The low power ticker has been updated to prevent unnecessary rescheduling.

    Fast Models’ memory regions have been updated to make maintenance simpler as well as use an extra region of SRAM that was previously unutilized. Additionally, the change prepares the targets for other changes that will be showing up in the near future.

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

    Known Issues

    The release version did not get updated as part of this release so is still showing 5.9.5.

    Contents

    Ports for Upcoming Targets

    Fixes and Changes

    7686
    Correct MTB_ADV_WISE_1530 led configuration

    7738
    Timeout tests : unstable result

    7750
    Cellular: Fixed sms greentea tests init

    7752
    tests-mbed_drivers-timer: change delay method

    7771
    Update mesh_system_heap_error_handler to use new error handler

    7645
    nrf_drv_twi: remove redundant nrf_drv_disable call in nrf_drv_twi_uninit

    7693
    Fix for CM3DS GPIO api

    7716
    Fix issue #5119, changed pwmout_api.

    7777
    STM32F1 RTC : wrong Sunday value

    7719
    Lora: Document all possible error codes for LoRaWANBase methods

    7740
    Cellular: Handle AT response stop in case IP address is missing from

    7741
    tests-mbed_hal-common_tickers: disable ticker free test cases.

    7769
    Fix build_data functionality with python 3

    7782
    equeue: Fix overflow in rtos-less timeout code

    7600
    Remove unnecessary low power ticker rescheduling

    7670
    Check max possible keys in NVStore tests

    7797
    Fix target_name variable in some use cases

    7786
    Moved ASYNCHRONOUS_DNS_SIMULTANEOUS_REPEAT under mbed extended tests

    7706
    Refactoring memory regions definitions for Fast Models MPS2 targets

    7681
    BLE: store secure connections ltk in both local and peer entry

    7830
    Fix uvisor ticker issue on K64F

    7212
    FlashIAP & NVStore tests: Skip test if overwriting code in flash

    7770
    LoRa: Fix MAC initialization for connection with parameters

    7768
    Cellular: Document all possible error codes for cellular API.

    7775
    STM32 wrong MBED_ASSERT use

    7791
    Fix TMPM64B IAR linker file

    7798
    Add bootloader support for target NUCLEO_F303RE

    7807
    Compiler warning: unused variable in LoRaMac.h

    7823
    MIMXRT1050_EVK: Update the I2C driver

    7826
    Fix stack size for LwIP on EFM32GG11

    7832
    Nanostack: Fix return code for unsupported socket options

    7831
    LoRaWAN: Restoring default RX2 data rate

    7790
    STM32 LPTICKER : RTC wake up timer is reset before setting a new one

    7785
    Lora: Fix join-response failure handling

    7762
    Add combined hex target to CMake

    7843
    MIMXRT1050: Fix I2C Byte transfer functions

    7744
    RTOS threads test: Handle out of memory cases

    Using this release

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

    Downloads: zip tar.gz

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

    Summary

    In this release we have added LPTICKER support for Renesas devices and support for SLEEP in
    MXRT1050EVK.

    We have updated mbed-coap to version 4.5.1. This fixes an issue where blockwise observations were not completing.

    We have also updated CubeF1 for STM32F1 to V1.6.1. This includes:
    * CubeF1: updated from V1.5.0 to V1.6.1
    * HAL driver: updated from 1.1.0 to 1.1.2
    * CMSIS driver: unchanged (V4.2.0)

    There were some bugs from the cancel_sending() method in LORAWAN:

    1) The system crashed if the method was called before initialization.
    Now LORAWAN_STATUS_NOT_INITIALIZED is returned.
    2) The method returned LORAWAN_STATUS_BUSY error when no send request was pending.
    LORAWAN_STATUS_OK should be returned in this case.
    3) LORAWAN_STATUS_BUSY is now returned if the backoff timer is just about to be
    dispatched (time_left returns 0).

    These are now fixed.

    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

    7273
    Cellular: added unit tests for new API functions (sim, power, base, device).

    6985
    Fix heap base/limit error with ARM_LIB_STACK/ARM_LIB_HEAP in RTOS-less

    7289
    On STM32F439xI IAR linker file decreased stack size and increased heap

    7545
    Fix for Thread::max_stack not returning right value when OS_STACK_WATERMARK is enabled

    7622
    MPS2 platform: Enable interrupt on rx for UART

    7628
    Optimize the configuration for RTX evr events

    7632
    Remove debug print

    7641
    LoRaWAN: Fixing incorrect NetID causing ABP Failures

    7653
    Update mbed-coap version to 4.5.1

    7565
    Nuvoton: Fix NUC472 SD-Host HW IP reset definition

    7658
    Add default interface for wiced WiFi.

    7655
    Remove device emac check from emac greentea tests

    7642
    Changing default SPI CS pin to SD card on MTB

    7620
    Lora: Fix cancel_sending

    7606
    STM32F1: update to CubeF1 V1.6.1

    7552
    Renesas: Add LPTICKER

    7465
    Skip a few tests if not enough memory can be allocated for them

    7648
    Add init reference count to all block devices

    7621
    cellular: astyle fix

    7664
    fix comment copy/paste error

    7661
    Clear CONN_IN_PROGRESS flag after incomplete connect()

    7668
    STM32F7: remove HAL_InitTick() declaration in us_ticker_data.h files

    7374
    Cellular: fix greentea tests C027 and BG96

    7675
    Renesas : Improve Flash iap

    7676
    Nuvoton: Organize file structure

    7660
    Remove inclusion of mbed.h and mbed namespace from filesystem code

    7383
    FlashIAP: Add timing test

    7687
    BLE: set correct default privacy configuration for centrals

    7689
    PR template: fix target update list

    7643
    STM32: remove uart force_reset at init

    7703
    Resolve us_ticker.c api discrepancy between EV_COG_AD4050LZ and EV_COG_AD3029LZ

    7678
    Nanostack: fix error code

    7691
    events: astyle fix

    7419
    MIMXRT1050EVK: Fix Sleep support

    7531
    Cellular: sms greentea tests

    7640
    iar: remove nxp duplicate definitions

    7721
    Fix owner restoration and discard across nvstore init

    7688
    BLE: call secure connections versions of ltk functions

    7717
    STM32: check for UART ongoing transfers before entering deepsleep

    7725
    Update Lwip error calls to use new error codes and mbed_error call

    7731
    Cellular: WISE_1570’s system clock back to HSE_XTAL

    7722
    Fix Microlib compatibility for -t ARM

    7729
    Rename text region in ARM linker file for Renesas & Realtek boards

    Using this release

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

    Downloads: zip tar.gz

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

    Summary

    This release showcases several new targets added to Mbed OS: * Silicon Labs has enabled their EFM32GG11 chips, with the supporting STK3701 dev board * Toshiba has added a new target, the TMPH3H6 * Nuvoton has enabled the NUMAKER_PFM_M2351, the first Cortex-M23 CPU in Mbed OS, and the first ARMc6 target enabled

    MPS2 Fast Model targets have now been added and enabled.

    An IAR linker fix for the NRF52832 had been made, shrinking the ram size of the part to match it’s datasheet.

    Several Silicon Labs targets have now enabled hardware CRC acceleration.

    Unity macros have now been added to enable the ability to skip tests if requested.

    A variety of smaller bug fixes and general improvements were also brought into Mbed OS.

    Known Issues

    There are no new known issues with this release.

    Fixes and Changes

    7079
    Add support for EFM32GG11

    7448
    Unity: Add macros for test skipping.

    7396
    Tools: Show Mbed-2-only targets in mbed compile -S

    7302
    Support Nuvoton’s NUMAKER_PFM_M2351 target

    7468
    Remove LoRaWAN license from top-level directory

    7533
    Fix linker script for NRF52832/IAR

    7504
    Feature itm fix

    7544
    Remove extra ARMc6 instance in unique mapping

    7479
    Silicon Labs: Add support for hardware CRC

    7520
    LoRaWAN: Wrong return code for JoinRequest retry

    7548
    Fix some targets fail to pass ticker overflow test

    7539
    STM32F2/F4/F7 : LL API is now available for IRQ

    7491
    EFM32: fix weak PeripheralPins configuration

    7556
    Fix spelling in error message in fault handler

    7536
    Add Support for Toshiba TMPM3H6

    7480
    Add MTS Dragonfly bootloader back after accidental removal from pr #7131

    7510
    STM32: Improve GPIO IRQ edge detection when waking from deepsleep

    7519
    Wiznet: fix us_ticker & gpio bug

    7530
    RTOS SYSTIMER test error in TICKLESS mode

    7553
    STM32L496: fix RAM size in ARM scatter file

    7554
    Enable HAL Flash API on Fast Models MPS2 targets

    7549
    Revise heap and stack size for Ethernet of GR-PEACH

    7551
    realtek rtl8195am remove DEVICE_EMAC

    7584
    Minor enhancement to wait_us

    7578
    Makes Greentea TCP test cases to timeout less in connection errors

    7603
    Nuvoton: Replace __wrap__sbrk with overriding _sbrk

    7609
    Make location meaningful in print_error_report

    Using this release

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

    Downloads: zip tar.gz

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

    Summary

    In this release, we have enabled the ability to determine the Mbed OS release version from within compiled code.

    Nanostack has been updated with the option to use the global event queue to save on memory usage.

    ST and Silicon Labs brought in various clock changes and updated to their targets.

    Mbed OS tools now have the ability to source other C++ file extensions, along with a plethora of smaller changes.

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

    For full details of this and previous releases, please visit our [[https://os.mbed.com/releases/ | releases]] page.

    Known Issues

    There are no new known issues with this release.

    Contents

    Ports for Upcoming Targets

    Fixes and Changes

    7368
    Tools: Include Symbols in dependency list

    7370
    build_api.py : add comment about separate_names

    7359
    Cellular: EasyCellularConnection::connect doesn’t have any check that “CellularConnectionFSM” object is created or not

    7326
    STM32: add lpuart_clock_source config

    7369
    Fix race condition in serial_api.c for NRF52 series

    7348
    LoRaWAN: Correcting doxygen

    7239
    netsocket: dns: make dns-cache-size:0 remove whole DNS cache code

    7029
    Nuvoton: Adhere to reworked ticker spec to release with Mbed OS 5.9

    7008
    AStyle : drivers/hal/platform folders update

    7367
    Tools: Detect Arm Compiler version using Component

    7331
    Improve the process for Cortex-A9 in mbed_application

    7384
    Fix memory leakage with MBR on exiting error path

    7403
    LPC546XX: Fix UART mux setting in the LPCXpresso board

    7342
    Add kernel ticker test

    7376
    DISCO_L496AG: change LED1 and LED2 pins

    7377
    Tools: Summarize stats when depth is 0

    7386
    Make clock source changeable over mbed_app.json for EFM32-Targets

    7390
    DISCO STM32L4 : Add TWO_RAM_REGIONS macro

    7401
    Fix interrupt initialization for NRF52 series

    7405
    Fix target definition for NRF52 series

    7411
    Fix wrong config binding

    7413
    Modified Wiced drivers EMAC instance get

    7371
    Improve efficiency and formatting of ITM output

    7420
    MIMXRT1050_EVK: Fix the GPIO IRQ number assignements

    7421
    MIMXRT1050_EVK: Move clock enable after check of pin

    7406
    NANO130: Change PLL clock source to HIRC instead of HXT

    7429
    MXRT1050: Ensure the pins are in input mode for analogin

    7412
    apply FatFs 0.13b hotfix - fix readdir() never terminates when dir is full

    7352
    STM32: Fix RTC test issue on targets using a 16-bit timer for us_ticker

    7437
    Recognize “.cc” and “.hh” source file extensions

    7410
    Tools: Move exporter alias handling to CLI

    7333
    Cellular: More unit tests for ATHandler’s read routines

    7466
    Tools: py3 compatible version checks

    7446
    Disable LSE for MTB_USI_WM_BN_BM_22

    7404
    Do not print error reports in release builds

    7453
    Fix SWI conflict in SoftDevice for NRF52 series

    7042
    Flash API: Enable Flash api on CM3DS

    7474
    Replace build profile changes with config

    7290
    STM32: Refactor us_ticker files

    7365
    STM32 RTC : bypass shadow registers

    7487
    Allow STDIO pins to be NC in NRF52 series

    7107
    Add option to make Nanostack use global event queue

    7486
    Fix linker script for NRF52840/IAR

    7501
    Tools: Make directories before gen file uses them

    7489
    Cellular: HSI set to be source clock for WISE_1570

    7471
    tests-mbed_drivers-lp_timer: change delay method

    7318
    Cellular: Remove max_packet_size

    7434
    Separate version header file in Mbed OS

    7461
    Raytac: target removal

    7445
    LoRaWAN: Remedy for issue #7230

    7505
    Fix linker script for NRF52840/ARM

    7494
    tests-mbed_hal-lp_ticker: change implementation of the delay before deep-sleep.

    7481
    Tools: Fix py3 bug with mbed export -S

    7500
    Tools: Correct cmse lib creating with make_gcc_arm exporter

    7503
    Tools: Drop quotes from makefiles

    7475
    Tools: py3 compatible mbed-os version lowercasing

    7436
    Update stats to fetch Mbed OS version info

    7507
    STM32 LPTICKER with LPTIM minor update

    7477
    Tools: Skip target lookup in test builds.

    7498
    STM32: enable HSI/LSE clocks for LPUART

    Using this release

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

    Downloads: zip tar.gz

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

    Summary

    In this release, we have updated mbed-coap to version 4.5.0. This brings fixes for the following issues: * Hardfault during reconnection retry with Thread * mbed-coap: extra response received after registration * Incorrect CoAP request blockwise response handling

    There was a LoRaWAN issue LoRaWAN “Tx Timeout” does not trigger Error Event, which has been fixed in this release. If the radio is unable to transmit, it is considered a fatal error and the application is now notified.

    In the FSM of the Cellular Connection module there was an issue where the code would crash if the SIM interface was closed too early. This has also been fixed in this release.

    To allow the application to choose the default WiFi interface by calling the function, WiFiInterface::get_default_instance() , we have provided default WiFI interfaces for Ublox and Realtek devices.

    We have added iAP and Bootloader support for GR-PEACH and GR-LYCHEE, and binary WiFi drivers for
    MTB_MXCHIP_EMW3166.

    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

    7082
    Update mbed-coap to version 4.4.4

    7158
    Add API to read Thread EUI-64

    7197
    Tools: Allow exporting of uARM-only targets to uvision

    7058
    Fix two issues in ExhaustibleBlockDevice

    7209
    Tolerate packet loss up to 30% in udp echo tests

    7231
    Tools: Force small lib when compiling with uARM

    7073
    NRF52_DK: SLEEP enable

    7208
    Added long echo sequence test to EMAC tests

    7201
    LPC54628: Update the ADC clock divider based on the input clock source

    7211
    Nordic BLE: Accept connection parameter update

    7237
    Enable COG boards instruction cache

    7234
    Spelling error in fault handler

    7225
    STM32: Add comments for HAL_InitTick function

    7229
    Disabled STM ethernet driver hardware checksum calculation

    7249
    Maxim: Rename files to fix warning

    7226
    Make MTB_ADV_WISE_1570 respect MBED_APP_START & enable bootloader

    7207
    Change DNS global class definitions to singletons

    7224
    Fix Greentea test code with deepsleep

    7245
    Fix default interface selection by using correct macro names.

    7146
    Cellular: Added power and sim greentea and unit tests.

    7242
    Rename text region in Arm linker file for a few NXP CPUs

    7191
    LoRaWAN: Fine tuning timing for delays and receive windows

    7263
    NRF51 Post-build: Allow Hex BL, SD, APP

    7261
    IAR: Suppress C “bypasses initialization” warning

    7259
    Provide default WiFi interfaces for Ublox and Realtek

    7216
    Asynchronous DNS greentea tests

    7206
    K64f non-blocking powerup

    7205
    STM32: Fix data alignment issue in HASH function for F2, F7, L4

    7264
    Suppress shift warning for IAR compiler as well

    7241
    STM32: Reduce HAL_deepsleep stack usage

    7266
    Update arm_pack_manager index

    7272
    Add binary drivers for MTB_MXCHIP_EMW3166

    7175
    Enable new HAL us_ticker API on fast model MPS2 platform

    7172
    Unify RTC, lp ticker, and us ticker for NRF51 and NRF52 series

    7274
    Travis: fix mongodb key expired error

    7288
    Fix Greentea test code with wakeup from deepsleep

    7283
    Update Greentea netsocket and wifi tests

    7280
    Fix SPI initialization for NRF52 series

    7220
    Fix mbed::InterruptIn.mode() in NRF5x targets

    7295
    Compiling Cortex-A cores in uVision is not supported.

    6973
    Support thread-safety with ARMC6

    7291
    adding USTICKER label for C027

    7275
    Cellular: fixed defect where SIM interface was closed too early

    7262
    BLE: Add setScanParams overload to the Gap API

    7105
    MIMXRT1050: Update to EVK Rev B

    7284
    Add binary drivers for MTB_USI_WM_BN_BM_22 and MTB_ADV_WISE_1530

    7296
    Add names to Idle/timer thread

    6925
    Support Flash iAP and Bootloader for GR-PEACH and GR-LYCHEE

    7269
    Cellular: add cellular network tests

    7214
    Error handling configuration updates and Optimization for exception handling

    7210
    Fix Nordic security cancellation

    7311
    Modify RAM size definition of ARMCC for GR-LYCHEE

    7299
    MBR: Fix issue with MBR init asserting on bad partition size

    7338
    Download astyle from AWS instead of SourceForge

    7286
    Add cellular information tests

    7324
    Fix LED_RED mapping on NUCLEO_F429ZI

    7247
    Tools: Check compiler version

    7320
    Update mbed-coap to version 4.5.0

    7323
    Improve serial performance for NRF52 series

    7341
    Cellular: improved observing of disconnect for callbacks.

    7330
    Clean-up targets.json

    7351
    STM32 files with MBED astyle rules

    7344
    LoRaWAN: Fixing transport of fatal TX timeout event

    7353
    build_api script : separate PeripheralPins.o

    7354
    Fix error history related comments

    7356
    Fix tool crashing when lines end with cr(not crlf)

    7361
    STM32 : get serial RX/TX active state

    7355
    Remove semicolon at the end of #define

    7313
    NRF_52840: Fix us ticker counter size

    Using this release

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

    Downloads: zip tar.gz

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

    Summary

    In this release, we have added support for the following new target: * Wio 3G

    Uvisor has been updated to v0.31.1 to fix an issue where the thread code was not functioning correctly.

    For Nordic devices, we have added the ability to configure some of the key settings of the softdevice parameters. This allows the user to control the range of functionality in the softdevice as well as the RAM consumption. In particular, the ability to control these values is critical to enable the use of the 16K nrf51 devices.

    We have added support for the mbed_start_application for Cortex-M23 devices.

    There were a number of issues found with the asynchronous DNS provided as part of the EMAC network driver subsystem released in Mbed OS 5.9.0. These have now been fixed.

    We have also fixed a bug where a hard fault was possible in the Nanostack EMAC, if packet reception occurred during initialisation.

    Cmsis/rtx has been updated for Cortex-A to fix a multiple interrupt problem in RTX5. This was particularly affecting GR-PEACH/GR-LYCHEE.

    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

    7098
    [Wio 3G] Adding platform

    Fixes and Changes

    6968
    Test build: Reduce include command length

    6928
    Cellular: Fixed con-disc sequence can now be called multiple times.

    6947
    EFM32PG12_STK3402 - Correct wrong Expansion-Header pin namings

    6965
    Cellular: Unit tests fixes

    6970
    Fixes to EFM32 port

    6984
    EFM32 IRQ handling fix

    6991
    EFM32: make mbed_rtx.h depend on families instead of targets

    7011
    Fixed float-abi linker option for CCES exporter.

    7014
    Add check for _interface

    7020
    Add STM32L433RC to IAR exporter definitions

    7022
    Fix array overflow in gpio configuration code for NRF5x

    7033
    Cellular: Fix AT URC handler not to dismiss incoming chars

    7034
    Fix redeclaration of type name “bool_t” for Renesas

    7016
    Corrected asynchronous DNS functionality

    7054
    gethostbyname must reject empty name

    7005
    LoRa: Add greentea tests for LoRaRadio API

    7031
    Nuvoton: Adhere to reworked RTC spec to release with Mbed OS 5.9

    7039
    FPGAIO: Add MISC IO initialization support

    7027
    Fix possible bug with SysTimer

    6803
    Wise 1510 uart config

    7007
    AStyle: Fix astyle indentation

    7052
    Cellular: BC95 socket creation to fail on missing socket id in the re

    6987
    STM32 ADC update

    7075
    BLE: Replace Serial with RawSerial in Cordio H4 Transport Driver

    7032
    Update cmsis/rtx for Cortex-A

    7062
    DISCO_F413ZH : map SPI3 to WIFI module

    6022
    nrf5x: Enable asserts -> mbed_error

    6848
    Check that no GPL licence inside code

    6515
    Only schedule mbed_ticker interrupt if queue->head is changed

    7095
    Fixing some coverity issues

    7081
    Fix mbed_crc_ctor is missing in some MbedCRC constructor

    7143
    STM32 : few targets does not support LPTICKER

    7136
    error: fix undeclared memcpy

    7111
    Python 3 makefile export issue

    7124
    Tool: Use TerminalNotifier in singletest

    6860
    Nordic BLE: Allow configuration of softdevice parameters

    6949
    Support mbed_start_application for Cortex-M23

    7120
    Fixed DNS resolution in case all sendto operations fail

    7067
    Add ISM43362 driver support for STM32 wifi DISCO boards

    7173
    Make Nanostack C++ constructor initialise Nanostack

    7167
    Add show full path option to armc6 linker

    7147
    Upgrade uvisor to v0.31.1

    7141
    Kinetis EMAC: Make number of buffers configurable

    7121
    Nanostack EMAC - avoid initialisation race

    6978
    Support default tz_module in event loop thread for M23/M33

    6938
    LoRaWAN: Style and bug fixes

    7164
    Fix NVStore README file (changed APIs)

    7160
    Fixed ppp_lwip_disconnect hangs when connection failure.

    7159
    Add targets to Greentea EMAC tests

    7150
    Nordic: Fix nrf sections on ARMCC

    7106
    STM32: Replace HAL_GetTick

    7103
    Greentea test updated for NXP lpc17xx

    7097
    cellular: random socket port number

    7088
    STM32F76x: Add support of dual bank flash mode

    6948
    STM32 ETH : remove TX RX locking interrupt perforation

    7084
    Cellular: Enable AT debug also when mbed-trace is disabled

    7179
    Fix USB on Kinetis devices

    7119
    NSAPI: Use IPv6 conversion routines from frameworks

    7176
    Fix data aligment problem at STM32F4 hash write

    7182
    Cellular: Disable Greentea tracing to consume less memory

    7161
    Correct PPPCellularInterface::get_gateway()

    7151
    Fixes for RZ_A1H issue 6543

    7166
    BLE: fix pairing for misconfigured devices (deny pairing correctly)

    6935
    Ticker test improvement

    6831
    Add HAL CRC test and header file

    7131
    New mdot bootloader

    7139
    Fix greentea test failure on Renesas Cortex-A9 targets

    7117
    Fix compile error with MBED_MEM_TRACING_ENABLED and ARMC6

    7123
    BLE: check flags to make sure the IRK has been stored before retrieving it

    7102
    Adding cellular tests

    6962
    Cellular: release resources in state machine.

    7194
    Increased LWIP main worker thread stack size for debug builds

    7202
    Corrected casting issue with an assert within the error_handling test

    7196
    Tools: Remove second header when every bl config param is used

    7195
    Cellular: Semaphore wasn’t released in easycellular release build

    7128
    Fix flash_program_page API in LPC boards

    7036
    tests-mbed_hal-sleep fix

    Using this release

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

    Downloads: zip tar.gz

    We are pleased to announce the mbed OS 5.9.0 release is now available.

    Summary

    Mbed OS 5.9 is releasing device statistics APIs, which allow you to gather critical device information. This is a first step toward giving you power to remotely diagnose the health of IoT devices deployed in the field. Mbed OS 5.9 focuses on mainlining and increasing adoption of low power features, such as the microsecond ticker, low power timer, sleep manager and real time clock APIs. Power consumption is one of the most important design requirements for IoT devices. Meeting the power budget is becoming challenging as the systems today include more sensors, faster responses and more connectivity. With the introduction of and improvements to key low power features, such as the microsecond ticker, low power timer, sleep and real time clock APIs, meeting tight power requirements and designing low power systems becomes straightforward.

    This release also continues our efforts to add comprehensive documentation for Mbed OS. Our ongoing efforts in this area include adding documentation to our connectivity, RTOS and storage APIs, as well as information about our configuration system.

    In addition, this release contains many minor fixes and enhancements and brings support for 135 target development boards. In the release note below, we summarize some of the key updates to Mbed OS that are part of the Mbed OS 5.9.0 release.

    Core OS

    Device statistics APIs

    A major challenge in deploying and managing remote IoT devices is monitoring the overall health of the system. Identifying individual mis-performing devices can be challenging when many devices are deployed, and the cost of sending a technician to test devices in the field is very high. We are releasing device statistics APIs in Mbed OS 5.9 to enable device analytics on Mbed OS platforms. Our vision is to continue developing the APIs that provide information about the device and system health and to develop APIs that enable transmission of device health information over the network, so you can remotely monitor the health of your IoT device. The device statistics APIs in the Mbed OS 5.9 release are well-defined APIs that you can use to retrieve OS statistics and device information, such as memory usage, Thread information, stack usage data and runtime CPU load information. The implementation of these APIs is modularized, and it provides multiple APIs for each category. You can enable these separately using build time configuration. For more information, please visit https://os.mbed.com/docs/v5.9/reference/mbed-statistics.html.

    Low power features

    The Mbed OS 5.9.0 release mainlines several low power features to enable long battery life and reduces power consumption to solve key challenges for embedded devices. The low power features were developed over the past few Mbed OS releases and adopted by Mbed Partners. Many platforms now support these features.

    • Tickless RTOS scheduler: In tickless operation, you don’t have to make the tradeoff between the high frequency timing interval, which consumes more power, and the low frequency timing interval, which results in suboptimal time keeping. The scheduler schedules the next timer tick in response to the next event rather than the fixed timer tick. For more information, please visit https://os.mbed.com/docs/v5.9/reference/tickless.html.

    • Improvements to the microsecond ticker and low power timer: Tickers or timers are hardware timers that track small amounts of time​. Mbed OS supports two types of tickers, the high-resolution microsecond ticker​ and the low power ticker​. We have made several improvements to tickers. For example, our ticker now returns native value and configuration data, and the Mbed OS driver is responsible for frequency conversion. For more information, please visit https://os.mbed.com/docs/v5.9/reference/microsecond-ticker.html.

    • Improvements to sleep modes: To save power, Mbed OS goes in sleep modes during idle loop. The sleep modes turn off the system clock when peripherals relying on it are not in use and saves power. We are making several improvements to sleep modes to enhance their functionality. We have APIs to demonstrate the peripheral status during sleep mode. The device must be able to wake up from specified sources. For sleep mode, it is any interrupt, and for deep sleep mode, it is watchdog, low power ticker or GPIO. For more information, please visit https://os.mbed.com/docs/v5.9/reference/power-management.html​.

    • Real time clock: The phrase “real time” differentiates this clock from a ​typical digital clock, which generates electrical pulses but doesn’t keep track of seconds or minutes. The real time clock enables the system to track time in human units​. Usually, it continues to count over system resets, and the date and time remain correct even after you reset the system​. RTC is often supplied with a dedicated battery to keep track of time during power loss. We have improved the real time clock support in Mbed OS. It now continues to keep counting during ​software reset, sleep modes and shutdown mode​. Also, the improved accuracy is now below 100 ms. ​Please visit https://os.mbed.com/docs/development/v5.9/rtc.html for more information.

    Improvements in error codes and error handling

    We are improving our error codes and error reporting infrastructure to ease development by enabling a standard way to describe, debug and communicate error scenarios. Improved error handling implementation provides features such as standardized error code and error status definitions, error handling APIs for error construction, error reporting with thread context, the ability to retrieve previous errors and the ability to save errors to the file system. We designed the error reporting APIs to be used from any context, such as ISR or Threads. The implementation also provides mechanisms for extending the error status definitions to report application specific errors and to extract information from error status values. For more information, please visit https://os.mbed.com/docs/v5.9/reference/error-handling.html.

    Connectivity

    Ethernet MAC API (EMAC)

    We have introduced a new EMAC API to bring unified support for Wi-Fi and Ethernet interfaces and make drivers independent of underlying network stacks. The new changes make it possible to use the same driver with both Nanostack and LWIP Stack. Working closely with our Silicon partners, the new EMAC feature is already available on boards and modules from Nuvoton, NXP, Realtek, Renesas, ST and u-blox.

    Security

    Update to Mbed TLS 2.10.0

    Mbed TLS 2.10.0 provides support for the ARIA cipher and cipher suite for TLS (RFC-6209). Mbed TLS also contains optimizations to reduce code size or RAM, including an option for smaller AES tables. In addition, it contains many security and bug fixes over Mbed TLS 2.7.1, which was included with Mbed OS 5.8. You can access the Mbed TLS feature at https://github.com/ARMmbed/mbed-os/tree/master/features/mbedtls.

    Targets and tools

    Thanks to our Partners’ hard work, Mbed OS 5.9 added 14 new target platforms and now supports 135 target platforms. We’ll continue to add targets in our biweekly patch releases as Partners work with us on support.

    Mbed CLI update and Python 3 support

    We have updated all Mbed OS tools to be compatible with both Python 2 and Python 3 environments. This gives greater flexibility on system requirements because previous installations of Mbed OS required the use of Python 2. You can now choose which Python environment fits your needs. Our tools are backward compatible with all current and previous versions of Mbed OS for Python 2. It is only compatible with Mbed OS 5.9 and later for Python 3.

    We have also added a built-in serial terminal feature to Mbed CLI. You can invoke the serial terminal using the “mbed sterm” command. For more information, please visit https://os.mbed.com/docs/v5.9/tools/debugging.html#serial-terminal

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

    Handshake Messages are not fragmented as per MaxFragmentLength Extension Negotiation.

    • Description: “Once a maximum fragment length other than 2^14 has been successfully
      negotiated, the client and server MUST immediately begin fragmenting
      messages (including handshake messages) to ensure that no fragment
      larger than the negotiated length is sent. ” In Mbed TLS only the application data is fragmented and the handshake messages are not.
    • Workaround: Disable MaxFragmentLength Extension Negotiation.
    • Reported Issue: https://github.com/ARMmbed/mbedtls/issues/387
    • Priority: MAJOR

    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

    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

    Mbed TLS causes stack overflow in Mbed OS targets

    • Description: The stack memory usage of some Mbed TLS features is higher than 4 KB, which may cause stack overflow errors when running in constrained embedded environments with mbed OS which are particularly limited in RAM.
    • Workaround: The amount of stack required is very dependent on the application, and what features of the library it chooses to use. Obviously more intensive, demanding tasks may not be possible on more limited, constrained devices, so we recommend designing for the limitations of the target device, or choosing a device suitable for your application.
    • Reported Issue: https://github.com/ARMmbed/mbed-os-example-tls/issues/14
    • Priority: MAJOR

    Commissioner does not retransmit message when it receives retransmission

    • Description: There are two issues with DTLS handshake retransmission. Firstly, the joiner fails to correctly parse received records because it does not correctly handle queued retransmissions received. Secondly, the commissioner may cause a deadlock as it does not retransmit certain records after it receives retransmission as instructed in RFC6347 Section 4.2.4.
    • Workaround: There is no known workaround.
    • Reported Issue: https://github.com/openthread/openthread/pull/1207
    • Priority: MAJOR

    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 accelerted engines.
    • Workaround: There are no known workarounds
    • Reported Issue: Reported by the development team.
    • Priority: MAJOR

    uVisor does not support nested interrupts

    • Description: When running an application with uVisor enabled, nested interrupts are not supported.
    • Workaround: There is no available workaround at the moment.
    • Reported Issue: https://github.com/ARMmbed/uvisor/issues/345
    • Priority: Major

    On ARMv7-M targets supporting uVisor, the RTOS runs with the same privilege of uVisor

    • Description: The current architecture of uVisor and of RTX require the RTOS to run with the same privilege of uVisor. As such, the RTOS is considered as trusted.
    • Workaround: There is no available workaround at the moment.
    • Reported Issue: https://github.com/ARMmbed/uvisor/issues/235
    • Priority: Major

    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

    Traceback occurs when ran with factory default firmware on Realtek RTL8195AM

    • Description: When running mbed-ls on the Realtek board a traceback happens
    • Workaround: Version of mbedls in Mbed OS does not have this fix. Workaround is to install mbedls from master until a release is made.
    • Reported Issue: https://github.com/ARMmbed/mbed-ls/issues/276
    • Priority: Major

    Export project to Keil - device not present

    • Description: cmsis-pack-manager assumes that all information is stored in a device tag. According to the official CMSIS Pack specification however this is not the case. cmsis-pack-manager needs to be updated to index by variant as well as device. We currently do not know how many devices are affected by this issue.
    • Workaround: In this case manual selection of the device and flash programming algorithm may be required.
    • Reported Issue: https://github.com/ARMmbed/mbed-os-example-cellular/issues/41
    • Priority: Major

    OnboardCellularInterface used incorrectly

    • Description: This example invokes methods on OnboardCellularInterface that are not part of the CellularBase abstract class. This means it may not work if OnboardCellularInterface is not a PPPCellularInterface.
    • Workaround: None
    • Reported Issue: https://github.com/ARMmbed/mbed-os-example-cellular/issues/54
    • Priority: Major

    WiFi connection fails with client compiled by IAR IDE

    • Description: Mbed connector client example programs do not connect to api.connector.mbed.com when built in the IAR Embedded Workbench IDE. It works when you build using Mbed CLI.
    • Workaround: Do not export mbed connector example for IAR Embedded Workbench.
    • Reported Issue: https://github.com/ARMmbed/mbed-os-example-client/issues/355
    • Priority: Major

    Client fails to connect via UDP when binary is compiled by Online Compiler

    • Description: using UDP fails when binary is compiled with Online compiler but works if compiled with mbed-cli GCC_ARM .
    • Workaround: Use TCP based connections
    • Reported Issue: https://github.com/ARMmbed/mbed-os-example-client/issues/357
    • Priority: Major

    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

    Makefile export fails to build larger project in Windows

    • Description: Make will fail with the error: make (e=87): The parameter is incorrect.
    • Workaround: Possible workarounds are 1) Use Linux instead 2) Follow advice here,
      https://stackoverflow.com/questions/12598933/ndk-build-createprocess-make-e-87-the-parameter-is-incorrect
    • Reported Issue: https://github.com/ARMmbed/mbed-os/issues/6335
    • Priority: Minor

    Online exports of projects overriding mbed-os configuration fail

    • Description: Exports from the online compiler of projects that override mbed-os configuration do not work
    • Workaround: Export offline using Mbed CLI
    • Reported Issue: https://github.com/ARMmbed/mbed-os/pull/6428
    • Priority: Major

    NXP LPC17xx targets do not have Ethernet driver

    • Description: Ethernet driver interface was refactored for Mbed OS 5.9. LPC17xx is not yet ported.
    • Workaround: Wait for Mbed OS 5.9.1
    • Reported Issue: https://github.com/ARMmbed/mbed-os-example-sockets/issues/12
    • Priority: Major

    ARM_CM3DS_MPS2 targets do not have Ethernet driver

    • Description: Ethernet driver interface was refactored for Mbed OS 5.9. ARM_CM3DS is not yet ported.
    • Workaround: no
    • Reported Issue: -
    • Priority: Major

    Nanostack Border router does not build for Nucleo F429ZI

    • Description: Ethernet driver interface was refactored for Mbed OS 5.9. Nanostack border router was not refactored, so new versions of F429ZI drivers are not yet in use.
    • Workaround: wait for fix in the Border Router application
    • Reported Issue: https://github.com/ARMmbed/nanostack-border-router/issues/113
    • Priority: Major

    BLE Security Manager initializes cryptographic hardware on NRF52840

    • Description: The CC310 Cryptocell hardware is initialized when using the BLE Security Manager on NRF52840; if the application is already using mbedTLS prior to this initialization it might yield undefined behaviour
    • Workaround: Do not use the BLE Security Manager on NRF52840 if mbedTLS should be used by the application, or make sure it is initialized first and that mbedtls_platform_setup()/mbedtls_platform_teardown() are not called subsequentially
    • Reported Issue: https://github.com/ARMmbed/mbed-os/issues/7069
    • Priority: Major

    Exporting to GCC in Windows does not work with Python 3

    • Description: Exporting projects to GCC makefiles in Windows does not work when using Python 3.
    • Workaround: Wait for Mbed OS 5.9.1
    • Reported Issue: https://github.com/ARMmbed/mbed-cli/issues/694
    • Priority: Major

    Ublox ODIN W2 crashing with latest client

    • Description: Ublox ODIN W2 board is often crashing when using Mbed Cloud Client. Root cause unclear.
    • Workaround: Wait for fix
    • Reported Issue: Internal issues: ONME-3665, ONME-3672, ONME-3692
    • Priority: Major

    All NRF52832 based devices (e.g. NRF52_DK) have sleep/deepsleep functionality disabled.

    • Description: sleep/deepsleep functionality will be enabled in Mbed OS 5.9.1 release
    • Workaround: Wait for Mbed OS 5.9.1 (fix available here https://github.com/ARMmbed/mbed-os/pull/7073)
    • Reported Issue: https://github.com/ARMmbed/mbed-os/issues/7168
    • Priority: Major

    Cortex-A release and develop profiles for ARMCC build fail

    • Description: Bug in CMSIS ARMCC header file causing ARMCC builds with -O3 to fail (release and develop profiles are affected)
    • Workaround: use develop profile for ARMCC or wait for Mbed OS 5.9.1
    • Reported Issue: https://github.com/ARMmbed/mbed-os/issues/7065
    • Priority: Major

    Fixes and changes

    7030
    Fix lwIP PPP glue

    7023
    Add new examples to example list for CI.

    7019
    Made lwip memory configuration more specific for NXP targets

    7015
    Fix build for MBT_ODIN_W2 and MBED_CONNECT_ODIN when using WiFi

    7012
    Enable DeviceKey class reference for Doxygen

    7009
    Bring in improved HAL APIs to master

    7003
    Add devicekey example to examples list

    7000
    Add warning about FEATURE_UVISOR being deprecated

    6993
    CPU Stats test - Increased wait time to allow device to sleep

    6983
    Standardized Error Handling and Error Codes

    6981
    Remove ns_event_loop_thread_start() from NDInterface and ThreadInterface connect()

    6960
    LoRaWAN: Message flags correction

    6959
    Remove unused ITM implementation from NRF51 series

    6932
    BLE privacy, signing, persistent security database

    6927
    Cellular: AT debugging improved

    6917
    Travis: Quick name-fix for warnings reported by Astyle

    6910
    LoRaWAN: Adding acquisition of metadata, backoff and a cancel_send() API

    6905
    Lora: Remove obsolete FEATURE_COMMON_PAL flags

    6901
    events: Introduce API to query how much time is left for delayed event

    6892
    LoRaWAN: Wrong type of message check

    6886
    Corrected iteritems py2/3 compatability in test_api.py

    6882
    lwIP: Enable TCP out-of-order processing

    6878
    Add low power timer fallback for platforms without RTC

    6876
    Nanostack release for Mbed OS 5.9

    6875
    Lora: Fix battery_level callback

    6866
    fatfs: Add erase disk to format

    6863
    Update Mbed TLS to version 2.9.0

    6862
    Fastmodels support: add FVP_MPS2 targets to mbed os

    6857
    CPU Statistics

    6847
    Merge feature-emac branch into master

    6839
    Lora: fix AU915 build

    6833
    mbed test: add argument --ignore to allow passing in mbedignore patterns

    6826
    Reorganize SoftDevices for NRF52 series

    6823
    tools: Remove long-deprecated build_everything.py

    6821
    System stats - API addition

    6819
    Remove example update scripting from tools

    6808
    LoRa: State machine work

    6800
    Lora: Fix LoRaMacCrypto asserts

    6798
    Fix bug in MBR for NRF52 series

    6796
    Fix us_ticker for NRF52 series

    6795
    Thread stats API

    6794
    Cryptocell 310 support

    6792
    Cellular: Add dynamic alloc and destruction to easycellular

    6791
    Add POSIX fcntl flag support

    6784
    Add common define MBED_ALL_STATS_ENABLED to enable all statistics

    6781
    tools: Refactor notification API

    6779
    [MAX32625PICO] Add new platform

    6772
    littlefs: Map LFS_ERR_CORRUPT to EILSEQ

    6771
    Fix UART initialization for NRF52

    6765
    Cellular: Fix AT Handler compile warning

    6757
    Implement BufferedBlockDevice

    6750
    LoRaWAN: Memory corruption due to band mishandling

    6749
    Add platform setup and teardown calls to mbedtls tests

    6748
    nrf5x: Fix assert test on SERIAL_RESERVED_CHAR_MATCH

    6747
    Support RTOS-less secure image build with Cortex-M23/M33

    6746
    Fix vector table relocation for NRF52

    6744
    Cellular: Changed ATHandler yield to wait

    6741
    Lora: Split add_mac_command() into separate methods

    6721
    Fix bug in Nordic SDK 14.2 I2C driver

    6720
    Fix bug in Nordic SDK 14.2 SPI driver

    6717
    Fix NRF52 SPI pin initialization

    6711
    Cleanup TARGET_NRF5 and TARGET_NRF5x

    6708
    Add Hardware CRC HAL API specification

    6702
    Cellular: Fix to prefer IPv6 single stack with fallback to IPv4

    6700
    mbr: Added assertions for overlapping partitions

    6698
    Make poll() use RTOS tick count

    6696
    CM3DS Maintenance Pull Request: Cleaning

    6693
    Make event queue use RTOS tick count

    6692
    Lora: Remove singleton pattern

    6691
    Cellular fixes

    6682
    Fixed cellular unittests

    6677
    Cellular: fixed null pointer bug in cellular fsm

    6665
    Greentea netsocket more tests

    6663
    Use SingletonPtr in Nanostack HAL

    6657
    add ncs36510 fib and trim generation

    6654
    Add missing carriage returns to fault handler

    6653
    Stop lwIP using us_ticker

    6642
    Device key implementation

    6632
    cellular: Error messages

    6630
    Support secure/non-secure flash IAP for Cortex-M23/M33

    6629
    Cellular: add plmn for CellularConnectionFSM

    6628
    Lora: Make automatic uplink message configurable

    6627
    Nanostack hal timer shortcut

    6626
    Cellular: Separated context activation in CellularConnectionFSM.

    6595
    Fix typo with NVStore

    6592
    Updates tools to be runnable in Python 3

    6590
    AStyle addition to travis

    6588
    [IOTCELL-741] Separating public data structures

    6587
    LoRa: Internal include paths corrected

    6586
    Lora: Introduce new receive API which returns port and flags

    6577
    Get rid of FEATURE_COMMON_PAL and FEATURE_NANOSTACK

    6570
    Cellular: add detach from the network

    6569
    Lora: small fixes

    6566
    LoRa: Stack cleanup

    6559
    Implement FlashSimBlockDevice - flash simulated block device over RAM

    6547
    Update Nordic NRF52 based targets to SDK 14.2

    6536
    Add handling for synchronized low power tickers

    6534
    Update idle loop to reduce calls to suspend

    6530
    Exclude files like .main.cpp from builds

    6496
    standard non-blocking NetworkInterface::connect

    6486
    Thread class tz

    6483
    CMSIS: Add TrustZone functions

    6480
    NVStore: add the allocate_key API (instead of set_alloc_key)

    6441
    Disable all deprecated exporters

    6440
    Remove supertarget

    6433
    Enabl-able Python 3 tools testing in Travis CI

    6427
    Added SerialWireOutput to mbed namespace

    6418
    Add an option to use LowPowerTimer for poll

    6411
    Stack refactoring

    6408
    Add overloaded get_erase_size API with address parameter to BlockDevice

    6402
    Renaming Ublox library for mbed cellular framework

    6388
    NVStore: key management enhancements

    6336
    fatfs: Update error code mapping

    6309
    Peek API to view data of buffer without popping

    6279
    LoRa refactoring

    6273
    Update cmsis/rtx to version 5.3

    6270
    Add parameter in tools settings to show error/warning as Link

    6239
    Interrupt in pin mode

    6238
    Remove windup behavior from break_dispatch

    7132
    Tool: Use TerminalNotifier in Mbed 2 release

    7092
    Additional fixes for running Python 3 in Windows

    7089
    BLE fixes (SM whitelist creation, Nordic scatter file fix, missing TLS initialisation)

    7078
    Windows pytest fixes

    7074
    Remove redundant Cryptocell libraries

    7072
    Edit warning about FEATURE_UVISOR being deprecated

    7070
    set the tolerance to 5% if NO_SYSTICK is enabled

    7060
    UBLOX_C027: init us_ticker in the target initialization

    7059
    OS version not update in mbed_stats

    7053
    Fix RTOS-less build failed with cmsis/RTE_Components.h

    7050
    Fix for filename capture not working

    7035
    tests-mbed_hal-common_tickers: Fix increment test case implementation

    6914
    build: fix notifier typo and passing to builds API

    7144
    Add configuration options to enable CMAC in mbedtls by default

    7135
    Update Mbed TLS to version 2.10.0

    Testing

    We designed Mbed OS to significantly reduce cost and time for embedded software development by providing a production-quality toolset and code. We are committed to delivering high-quality code working across all supported boards and platforms. To ensure all the features of code meet our quality control requirements, we have built an automated testing environment and processes that perform rigorous testing on every line of code. The continuous integration framework is a highlight of our testing framework.

    Continuous integration framework:

    The continuous integration framework ensures that every new feature and change in Mbed OS is tested, so that:

    • For every new feature, we create tests that we then deliver to our partners. For every board to be Mbed Enabled, we need our partners to successfully conduct these tests.
    • Partners must test the changes on their boards before submitting pull requests (PRs) on GitHub.
    • Once the PR is submitted, the Mbed OS gatekeepers manually review the code to ensure it meets the coding guidelines and code standards.
    • Once approved by gatekeepers, the code goes through the automated test infrastructure, which tests the submitted code across multiple platforms using three toolchains: IAR, ARM and GCC.
    • During the testing phase, we select the combination of boards and devices that support a variety of peripherals, MCU cores and features for maximum coverage.
    • To ensure the Mbed OS code is compatible with all the IDEs, we test that the code is exporting properly to all the compilers.
    • We merge the PRs only if the all the above procedures are successful.

    Below are the summary results for testing conducted for Mbed OS 5.9.0:

    • Total test time is 28,182 hours on actual development boards.

    • We have added 208 new test cases since the Mbed OS 5.8.0 release to test new and existing features on Mbed OS. The number of total test cases is 1,024.

    • The total number of binaries built since the Mbed OS 5.8.0 release is 40,561,560.

    We plan to share more details about testing processes, such as our out-of-box testing coverage and system testing, in upcoming release blogs.

    Using the release

    Arm Mbed CLI

    When you create a new program, Mbed CLI automatically imports the latest Mbed OS release. Each release includes all the components: code, build tools and IDE exporters. If you want to update your Mbed OS version or existing program to Mbed OS 5.9.0, run the CLI command mbed update mbed-os-5.9

    Arm Mbed Online Compiler

    When you create a new program, the Mbed Online Compiler automatically uses the latest Mbed OS release. If you want to update your Mbed OS version, right click on mbed-os library, and press update.

    You can also fetch the latest version of the Mbed OS 5.9 release from the mbed-os GitHub repository using the branch “mbed-os-5.9”.

  • mbed-os-5.8.6

    Downloads: zip tar.gz

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

    Summary

    This is the last patch release for mbed-os-5.8.

    We have updated mbed-coap to version 4.4.4.
    This fixes a hardfault which was occurring during reconnection retry with Thread.

    We have fixed an issue with the Cordio BLE stack using the H4 UART transport. The H4 stack was previously calling Serial::writeble() in interrupt context, attempting to obtain a lock on a mutex, which is illegal in this context and was causing the stack to fault.

    When trying to build REALTEK_RTL8195AM with IPv6 support enabled, the build would fail. This has now been fixed.

    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

    6939
    NOT_SUPPORTED error was not supported any more in test_api.py script

    6952
    STM32 ETHERNET : Allow user defined Ethernet PHY init functions

    6951
    STM32 SPI: fix NSS pin configuration

    6896
    Export folder needs to not ignore .mbed files.

    6931
    STM32 : PeripheralPins.c and PinNames.h files alignment

    6947
    EFM32PG12_STK3402 - Correct wrong Expansion-Header pin namings

    6970
    Fixes to EFM32 port

    6984
    EFM32 IRQ handling fix

    7011
    Fixed float-abi linker option for CCES exporter.

    7020
    Add STM32L433RC to IAR exporter definitions

    7034
    Fix redeclaration of type name “bool_t” for Renesas

    6803
    Wise 1510 uart config

    7056
    fix realtek_rtl8195am IPv6 build fails update

    6987
    STM32 ADC update

    7075
    BLE: Replace Serial with RawSerial in Cordio H4 Transport Driver

    7062
    DISCO_F413ZH : map SPI3 to WIFI module

    7082
    Update mbed-coap to version 4.4.4

    Using this release

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

    Downloads: zip tar.gz

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

    Summary

    In this release we have updated:

    • mbed-coap to version 4.4.3.
      This fixes an error where the registration time cannot be set if the server does not use the
      max age option.

    • STM32F3 to STM32CubeF3 V1.9.0
      This updates,
      CubeF3: from V1.7.0 to V1.9.0
      HAL driver: from V1.4.0 to 1.5.0
      CMSIS device: from V2.3.1 to V2.3.2

    We have fixed a couple of LoRaWAN bugs: * rx_config() incorrectly returned a physical layer datarate value when an index to datarate table
    should be returned.

    • Fixed region 2(AU915) failed to compile due to a typo in the code.

    A couple of bugs in the BLE module have also now been fixed:

    • 6760 Missing type definition for public_key_t
      When compiling the Mbed Cloud Client on a BLE target the GenericSecurityManager failed to
      compile due to a missing type definition for public_key_t.

    • 6806 BLE::GenericGattClient::DiscoveryControlBlock terminate() called twice.
      This caused a hard fault.

    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

    6797
    Fix compile error with DirectSerial in serial-less build

    6793
    tools: Pass app-config to get_config

    6768
    Nano 100: Lower HEAP size for IAR

    6769
    Move subtract basepath into the resources class

    6773
    Enlarge timer thread stack size for Cortex-M23/M33

    6728
    Fix issue template - simplified version

    6610
    Stm32 eth remove tx rx locking interrupt perforation

    6805
    tools: Reorder test configuration priority

    6814
    GenericGattClient: Fix discovery termination.

    6743
    BLE: Conditional compilation of H4 driver

    6742
    BLE: Update cordio porting guide

    6645
    mbed_wait_api: add comments to warn the func will lock deep sleep

    6809
    Mbed Stats: Assert if NULL pointer passed as arg

    6849
    Add missing semicolon to NRF51 critical_section implementation

    6817
    GenericSecurityManager: Fix crypto_toolbox_f4 signature.

    6845
    Remove obsolete OS_IDLE_THREAD_STACK_SIZE from NRF52

    6852
    Fix for issue #5308 - RTC set/get time issue on NCS36510

    6879
    Build mbed-os-example-lora only for lora targets

    6864
    FlashIAP: Fix problem of programming source buffer not aligned to 4

    6838
    export: Fix invalid config header path in Sw4STM32

    6883
    Update mbed-coap to version 4.4.3

    6885
    BL mode: Prevent jump address conflicts

    6832
    STM32F3: Update with STM32CubeF3 V1.9.0

    6865
    fix greentea-client, require a character input between K-V pairs

    6919
    tools: Add explicit target for NVStore example

    6940
    NVStore - remove Thread.h include

    6846
    Lora: Fix rx datarate

    6829
    LoRaWAN: Fixed region 2(AU915) to compile

    Using this release

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

    Downloads: zip tar.gz

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

    Summary

    In this release we have updated the SDK TPM driver for the KW41Z. This fixes an issue
    where certain instances of the TPM are missing some registers.

    We have also updated the EFR32 15.4 driver. This includes, * Updates driver library to v2.3.1 (2018q1) for bugfixes and convenience functions * Provides library in correct format (2-byte wchar_t flag) for compiling with ARMCC (bug 6695) uncovered by PR6577 * Reverts to using a statically-allocated packet buffer since malloc is not thread-safe (and the asserts have been turned on)

    The STM32L0 has been updated with CubeL0 V1.10.0. This includes, * CubeL0: from V1.7.0 to V1.10.0 * HAL driver: from V1.7.0 to 1.8.2 * CMSIS device: from V1.7.0 to V1.7.2

    There was an issue when compiling arm assembler in uvision where the error,
    “command too long for buffer” was being observed. This was found to be due to the
    assembler adding a large number of include paths to the command line to try and
    capture every possible location for a header file. We have fixed this by changing the
    arm compiler behaviour to match that of IAR and dropping the include paths.

    We have added bootloader support for NUCLEO_F411RE.

    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

    6690
    ADI: Enable bootloader for EV_COG_AD3029LZ and EV_COG_AD4050LZ

    6686
    Remove automatic I2C stop after each read

    6683
    Add IAR export and nvstore page size fix for TMPM46B

    6669
    make PR type box list “fancier” without making it a github tasklist

    6666
    STM32L0: Update with CubeL0 V1.10.0

    6611
    Uninitialized variable warning in UARTSerial at -O3

    6602
    requirements: add future

    6540
    Prevent compiling with unsupported compilers

    6718
    Modifying echo test to be driven more from the device.

    6727
    Update URL that points at a blank page.

    6723
    STM32 RTC Init minor update

    6735
    LPC546XX: Add check for GPIO IRQ

    6701
    Update to EFR32 15.4 driver

    6671
    Update doxygen options rules to not strip code comments

    6745
    Clarify mesh configuration values.

    6734
    LPC54XXX: Set the pin function to Digital mode

    6733
    Fix compiler warnings for Maxim platforms

    6644
    Fix build tool with ARMC6/ARMv8M

    6756
    Re-enable flash clock test for NRF52 but with higher tolerance

    6787
    KW41Z: Update SDK TPM driver

    6786
    Moved stats test to platform folder

    6785
    KL82Z: Fix clock selection for PWMOUT driver

    6780
    resolve LWIP compiler warning

    6778
    Add support for open drain leds

    6774
    littlefs: Fix issue with trailing dots in file paths

    6762
    Fix compile error with MBED_MEM_TRACING_ENABLED and ARMC6

    6740
    Lora: Fix max tx power check

    6729
    Add bootloader support for NUCLEO_F411RE target

    6713
    Drop include paths for ARM assembler

    Using this release

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

    Downloads: zip tar.gz

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

    Summary

    This release adds new target support for MTB_ADV_WISE_1530, USI WM-BN-BM-22 and MAX32620C with the MAX32620FTHR platform.

    mbed-coap has been updated to version 4.4.2. This contains a fix for the issue where CoAP UDP retransmission does not work for blocks after the first one for requests (Eg. registration POST).

    On the LPC4088 there was an issue where the chip would hardfault just after a power-cycle. This
    has been fixed in this release.

    We have fixed an issue with the RTL8195AM, which wouldn’t compile in the online IDE due to
    its post-build script. We have refactored our tools to use pyelftools which removes the problem.

    We have included IAR export support for STM32L496AG and STM32L151CC. We have also added support
    for a Code::Blocks project file exporter.

    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

    6503
    [MAX32620C] Add new target

    6511
    Add new target USI WM-BN-BM-22

    6601
    Add new target MTB_ADV_WISE_1530

    Fixes and Changes

    6561
    Stm32 deep sleep clock

    6481
    Code::Blocks project file exporter

    6553
    Correct armc6 detection logic for STM32L4

    6509
    Add an NV_SEED test to the config adjustment script

    6572
    cellular: ATHandler send delay

    6505
    remove MODULE_UBLOX_ODIN_W2 from targets.json

    6544
    add ADC_AN0-2 mapped on PA_0-2

    6550
    Remove MPS2 M1

    6564
    Travis: Fix rate-limit issue with Github requests

    6567
    DISCO_F769NI: set clock_source to USE_PLL_HSE_EXTC

    6169
    CM3DS Maintenance Pull Request: TRNG support (3/4)

    6619
    PR template: fix tick definition

    6600
    [IOTCELL] Setting up channels for AU915

    6618
    Update mbed-coap to version 4.4.2

    6634
    Add iar export support for STM32L151CC

    6625
    rtl8195am - fix excessive compiler warnings

    6620
    Cellular: fixed athandler unit tests.

    6613
    Macro expansion results in a constant boolean expression

    6609
    STM32 PCD negative numbers issue

    6608
    Rework us_ticker and rtc_api/lp_ticker

    6606
    Fix I2C master

    6605
    Rework us_ticker and rtc_api/lp_ticker | Fix compiler warning for spi_api

    6599
    STM32 compilation warning issues

    6598
    LPC4088: Fix hardfault occuring after power-cycle

    6541
    Add mbed-os 5 build support for LPC11C24

    6466
    Nuvoton: Fix issues with SPI

    6468
    Fix deep sleep implementation

    6510
    Adding missing @deprecated to function inline documentation

    6580
    Cleanup get_config (mbed compile –config)

    6607
    Improve SPI block write

    6621
    Use pyelftools for Realtek post-build script

    6637
    Add IAR export for STM32L496AG

    6647
    Fix MCUXpresso LPC I2C driver

    6648
    ADI: Add BUTTON pin names for EV_COG_AD4050LZ and EV_COG_AD3029LZ

    6603
    Optional hardware flow control for STDOUT

    6651
    rtl8195am - Fix more compiler warnings

    6221
    LPC546XX: Add TRNG support

    6660
    Enable flow control in Greentea

    6614
    Macro expansion leads to a bare expression

    6652
    Cellular: Updated doxygen for deprecated API’s.

    6604
    littlefs: Fix some issues with lookahead trust

    6658
    Allow library configs to override target configs

    Using this release

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

    Downloads: zip tar.gz

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

    Summary

    This release adds new target support for RAK811 and Toshiba TMPM46B.

    We have included a new patch version (4.4.1) of mbed-coap. This brings fixes for the following:

    • Block wise messaging call-backs not working logically
    • Allow TCP+TLS transport method to send larger messages without blockwising.

    We have also added an update to the drivers for STM32L1:

    • CubeL1: Updated from V1.6.0 to V1.8.1
    • HAL driver: Updated from V1.2.0 to 1.3.1
    • CMSIS device: Updated from V2.2.0 to V2.2.3

    We have enabled tickless mode on Silicon Labs targets and added support for the v3.0 pin map on
    the NUMAKER_PFM_M487 platform.

    There are a couple of significant issues which have been fixed in this release:

    • Deep sleep was not unlocking properly in the Timeout class.
    • UARTSerial output not working properly on the REALTEK_RTL8195AM platform,causing the device to crash 6358.

    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

    5902
    Added Support for Toshiba TMPM46B

    6043
    add support for the RAK811

    Fixes and Changes

    6415
    rtl8195am: fix LogUART Tx interrupt crash

    6450
    Realtek: serial - line ending fix

    6428
    Avoid incorrect config errors on export with many –source

    6424
    Nuvoton: Support M487 v3.0 pin map

    6416
    lwIP: fix some IPv6 errors, eg TCP keepalive

    6313
    Add missing Doxygen descriptions for Nanostack

    6487
    Minimize the size of uvision include paths

    6373
    flash: add docs for user defined data

    6467
    KL82Z: Update the clock selection method for LPUART module

    6488
    Fix initial SP for new Silicon Labs targets on ARMCC

    6413
    LPC176X: Fix flash program size

    6394
    Nuvoton: Fix us_ticker/lp_ticker

    6475
    Enable tickless mode on Silicon Labs targets

    6494
    [BLE] Fixed inconsistent casing issue for SecurityDb

    6512
    Move Mbed 5 support check so that it affects the exporters

    6518
    Inrease thread stack size to 1024 bytes in NVStore test for NRF52

    6533
    Fix deep sleep locking for Timeout class

    6527
    Test line-ending problems

    6528
    Update mbed-coap to version 4.4.1

    6531
    Fix doxygen comments to reflect the deprecated functions

    6490
    ADI: Fix EV_COG_AD3029LZ and EV_COG_AD4050LZ us_ticker_fire_interrupt() minimal time interval

    6442
    Add test for MbedCRC.h

    6524
    Fix IPv4 address parsing due to not-so-portable scanf modifier

    6557
    LoRa: Fixed cflist decoding issue

    6497
    STM32L1: Update ST HAL driver to CubeL1 V1.8.1

    6552
    Error on invalid mbed_lib JSON

    Using this release

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

    Downloads: zip tar.gz

    We are pleased to announce the mbed OS 5.8.1 release is now available.

    Summary

    This release adds new target support for DISCO_L496AG, VK_RZ_A1H, Laird BL652 and STEVAL-3DP001V1.

    We have included updates to mbed-coap covering versions 4.3 and 4.4.

    The SDK driver for LPC546XX has been updated to version 2.3.

    There was a problem with the REALTEK RTL8195AM post build script not working in the online compiler, 5976 , this has now been fixed.

    A number of updates have been added to the Cellular functionality, including
    the addition of an internal callback API and ATHandler improvements.

    We have added iar export functionality for MTB_ADV_WISE_1510 and flash support for LPC54114
    and LPC546XX.

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

    Known Issues

    There are no new known issues with this release.

    Contents

    Ports for Upcoming Targets

    6102
    Add support for STEVAL-3DP001V1 board

    6164
    Adding Laird BL652 as new target

    6379
    DISCO_L496AG: Add new platform

    6245
    Update for VK_RZ_A1H

    Fixes and Changes

    6153
    Correct exporter clean behavior

    6191
    Simplify json-to-dict utility

    6189
    LPC546XX: Update SDK driver to version 2.3

    6246
    C030 platform I2C initialisation fix

    6228
    Nuvoton: Rework us_ticker/lp_ticker with one H/W timer

    6143
    Correct mbed export with multiple –source params

    6146
    Correct gcc m33 floating point handling

    6173
    Modifies error text reported from RTX from ‘underflow’ to ‘overflow’

    6268
    Unittests fixed

    6202
    Fix max32625mbed

    6235
    mcu_lpc546xx: move “release_versions” to children and fix clock

    6263
    Clarify intention between comparison to zero and the shift operation

    6286
    Small typo fixes in readme.md files

    6271
    Allow build profiles to omit language entries

    6226
    rtl8195am: fix ARM section error

    6257
    Fix for Crash dump formatting issues and adding more info to crash dump

    6290
    Cellular tests: fix power mgmt stub

    6287
    MCUXpresso_MCUS: Apply K64F us_ticker fix across all MCU’s

    6315
    EFM32: make gpio interrupts faster by offloading expected pin state check to user

    6314
    Cellular: ATHandler write improvements.

    6311
    mts_mdot_f411re: Fix for Multi-Tech mDot IAR linker script

    6310
    MCUXpresso: Fix test failures seen with ci-test shield

    6303
    [ATCmdParser]: Align process_oob() to vrecv()‘s newline handling

    6300
    Fixes to LoRa PHY

    6288
    Fix macro definition of iodefine_typedef for RZ_A1H

    6274
    events: Added note about immediate firing of periodic events

    6198
    Flash support: Add flash support for LPC54114 & LPC546XX

    6149
    Fix typos in the files

    5106
    Timeout & LowPowerTimeout tests

    6092
    mbed-mesh-api: add JSON help

    6292
    rtl8195am - improve credentials handling

    6345
    Cellular: Fixed sms unit tests.

    6329
    Cellular: add callback API

    6361
    Convert option list to unicode

    6359
    NVStore: add comments in header file for Doxygen formatting sake.

    6346
    Fix for #6252

    6353
    STM32 RTC init

    6354
    Enable iar export option for MTB_ADV_WISE_1510

    6114
    Remove mbed 2 builds from Travis

    6326
    rtl8195am : fix gpio toggle slow

    6264
    Deprecated warnings for feature/netsocket/cellular

    6372
    Fix doxygen for ITM HAL

    6367
    ADI: Fix on chip flash minimal programmable unit size

    6216
    Correct Realtek post-build script to work in the online compiler

    6192
    Correct syntax for mbed export in Py3

    6356
    Add include search path when preprocessing assembly files for uvision and make_armc5 exports

    6340
    Disables flash clock and cache test

    6291
    Cellular: BC95 echo test fixes

    6370
    STM32 LPTICKER : optimize RTC wake up timer init

    6363
    dir seek fixed - dptr was not updated before checking

    6350
    Cellular: update attach test

    6338
    littlefs: Fix issue updating dir struct when extended dir chain

    6333
    Corrected lwip adaptation TCP flagging

    6330
    NUCLEO_L433RC_P: fix pins definitions

    6392
    Nuvoton: Remove unnecessary UART INT in UART DMA transfer

    6344
    armcc - remove fromelf output before regenerating one

    6168
    CM3DS Maintenance Pull Request: Memory changes (2/4)

    6378
    equeue: Added profiling reports to Travis

    6368
    Sort out volatiles in the atomic functions

    6348
    Fix PR template

    6399
    STM32L4 ADC Internal Channel : correct sampling time

    6412
    STM32L4 ADC correct internal channel management

    6377
    Replace runtime strip_path function with compiler intrinsic equivalents

    6419
    Correct get_config imports

    6437
    Nuvoton: Fix NVSTORE test failed

    6434
    Modified apt-get retry logic with Travis CI retry feature

    Using this release

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

    Downloads: zip tar.gz

    We are pleased to announce the mbed OS 5.8.0 release is now available.

    Summary

    Mbed OS 5.8 focuses on Mbed Enabled modules to reduce development cost, time and risk and provide go-to-market value compared to traditional chip down designs. We are continuing our focus on low power with our sleep/deep sleep profiling tool, with which you can identify objects that are stopping entry into low power modes. The 5.8 release continues to strengthen Arm’s connectivity portfolio with an updated LPWAN stack and updated cellular stack with support for IoT-ready NB-IoT and CAT-M1 technologies. We have also launched the closed alpha developer trial of Mbed Studio, a free desktop IDE designed specifically for Mbed OS.

    In addition, this release contains many minor fixes and enhancements and brings support for 121 target development boards. In the release note below, we summarize some of the key updates to Mbed OS that are part of the Mbed OS 5.8.0 release.

    Mbed Enabled modules

    Time to market and going to production are key challenges for IoT products. Many IoT products rely on modules to reduce time and cost because modules provide integration, certification and ease of going from prototyping to production. We have expanded the Mbed Enabled program to include production modules preverified to support Mbed OS and associated connectivity protocols. The program provides a simple entry point to the marketplace, with mass production quality modules running high-quality, open source software and supporting a diverse suite of connectivity drivers and protocols.

    The Mbed Enabled Module program launched in February 2018 during Embedded World and Mobile World Congress where, along with our lead partners, we exhibited a range of mass production modules. For a list of modules currently available, please visit os.mbed.com/modules.

    Core OS and storage

    Sleep/Deep sleep profiling tool

    Reducing power consumption is a key challenge for embedded devices. Sleep and deep sleep modes are some of the most used mechanisms to reduce power consumption. To better enable the use of sleep and deep sleep functions, you need to know which specific objects are blocking the device from entering sleep. The sleep/deep sleep profiling tool helps you determine what specific peripherals are blocking you from entering low power modes. The tool uses that information to optimize your system design to reduce power consumption when deployed. For more information on how to use this feature, please visit https://os.mbed.com/docs/v5.8/reference/power-management.html.

    Generation of crash dump in fault exceptions

    A fault exception occurs because of an error during normal or exception processing. There are several reasons for occurrence of fault exceptions. Some of the common reasons are execution of an undefined instruction, attempted load or store to an unaligned address and execution of an instruction from a never execute (XN) memory address. When system crashes or hard faults occur, a lack of crash information can make it difficult to triage the problem further. The system can appear to hang if there are no indications of fault exceptions. In such cases, the only way to find more information on the crashes is to reproduce the issue with an attached debugger to find the location and cause of the crash. Reproducing the issue can take longer if it is an intermittent or rare issue. Mbed OS has a new feature that generates crash dump in fault exceptions. Capturing the system context at the time of exception and emitting it through the serial port (or other mechanisms) provides valuable information, so you can triage the fault exceptions. For more information on how to use this feature, please visit https://os.mbed.com/docs/v5.8/tutorials/analyzing-mbed-os-crash-dump.html.

    New drivers and platform APIs

    In the Mbed OS 5.8.0 release, we have also added several new drivers and platform APIs. Two of the notable additions are the System_Reset and NVStore APIs.

    System_Reset: This API is the official Mbed OS API to reset the processor and most of the subsystem. After the reset call, the processor and most components reset, but it does not affect the debug subsystem. For more information, please visit https://os.mbed.com/docs/v5.8/reference/power-management.html

    MbedCRC class: The Mbed CRC class provides software CRC generation algorithms. We support precomputed ROM tables for 8/16-bit CCITT, 16-bit IBM and 32-bit ANSI polynomials. For more information, please visit https://os.mbed.com/docs/v5.8/reference/mbedcrc.html

    NVStore: NVStore is a lightweight module that stores data by keys in the internal flash for security purposes. For each item key, the NVStore module provides the ability to set the item data or get it. Newly added values are added to the end of the existing data, superseding the previous value that was there for the same key. The NVStore module ensures that power failures don’t harm existing data during any operation. For more information, please see https://os.mbed.com/docs/v5.8/reference/nvstore.html

    Connectivity

    The cellular stack now supports NB-IoT and CAT-M1.

    Cellular is enabling connectivity without complicated setup using a gateway. For IoT use cases, power and cost are more significant considerations than data throughput. This is where NB-IoT and CAT-M1 come in. Cellular IoT aims for simpler, low-cost modems tailored for slower, periodic transmissions and is expected to deliver better signal penetration to support devices located deep inside buildings.

    Mbed OS version 5.8 supports cellular-based low power, wide area technologies (CAT-NB1 and CAT-M1).  Mbed OS cellular APIs are designed to ensure that applications use modems and modules in consistent ways. For more information, please visit https://os.mbed.com/teams/mbed_example/code/cellular-example/

    LoRaWAN Stack: LoRaWAN is a low-power wide-area network technology that combines kilometers of range with low power consumption, a great fit for Internet of Things devices. Arm is continuing its investment in LoRaWAN by adding a native LoRaWAN stack to Mbed OS 5.8. The stable, well-tested and (EU) precertified stack makes it easy for device manufacturers to add long-range connectivity to their IoT devices. For more information, please visit https://os.mbed.com/docs/v5.8/reference/lorawan.html

    Upcoming APIs and Features

    Mbed OS thrives on the large ecosystem and support from leading silicon vendors. Mbed OS has several MCU targets and 121 development boards currently supported and Mbed Enabled. Adoption of Mbed OS APIs by the ecosystem ensures that you have a seamless experience. This section indicates what will be in the upcoming releases from the Mbed OS team, enabled by Silicon and Device Partners. To know more, please visit https://os.mbed.com/forum/upcoming-features/

    Mbed Studio

    One of the key pieces of feedback that we received is that you’d like to see desktop tools, allowing you to write applications easily on top of Mbed OS. For that reason, we decided to develop a desktop tool, Mbed Studio, that supports application development, building, debugging and, in the future, a great level of integration with our web services. With Mbed Studio, we’re targeting application development as the focus, bringing together our command-line tools and utilities into an environment that allows you to begin quickly with a single installer. We currently provide desktop command-line tools and utilities, such as pyOCD and Mbed CLI, which you can use to build custom environments or for CI. However, we wanted to make the experience easier for users who are looking for a simple way to program and debug with Mbed. We now are almost ready to open Mbed Studio for closed alpha. If you’d like to volunteer as an alpha tester for Mbed Studio, please register your interest at https://os.mbed.com/studio/

    USB device stack

    One of the key peripherals used in embedded devices is USB. Many devices need the USB device peripheral to support connecting their devices to a USB host, such as a computer. We are adding USB device support to Mbed OS, which allows you to enable the functionality of USB devices. This is available on a feature branch at https://github.com/ARMmbed/mbed-os/tree/feature-hal-spec-usb-device/hal

    PSA Secure Partition Manager

    We are adding a Platform Security Architecture (PSA) Secure Partition Management (SPM). SPM comes with a set of IPC APIs used to exchange data between secure partitions. The PSA IPC API Null implementation lays the groundwork for future hardware-based Secure Partition isolation. Although the code is still experimental, you can try it early on at feature branch at https://github.com/ARMmbed/mbed-os/tree/feature-spm

    Targets and tools

    Thanks to our Partners’ hard work, Mbed OS 5.8 added 18 new target platforms and now supports 121 target platforms. We’ll continue to add targets in our biweekly patch releases as partners work with us on support.

    Mbed CLI v1.5 update

    We have added the repository caching feature to Mbed CLI to minimize traffic and reduce import times. Mbed CLI now caches repositories by storing their indexes under the Mbed CLI user config folder. Compared to a fully checked out repository, indexes are significantly smaller in size and number of files and contain the whole revision history of that repository. This allows Mbed CLI to quickly create copies of previously downloaded repository indexes and pull or fetch only the latest changes from the remote repositories. This dramatically reduces network traffic and download times, especially for big repositories such as mbed-os. For more information, please visit https://os.mbed.com/docs/v5.8/tools/working-with-mbed-cli.html#repository-caching

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

    Misused variable in x509_crt_verify_top()

    • Description: A bug in the X.509 module can potentially lead to two possible vulnerabilities if the application code has been configured to trust certain unusually formed certificates.
    • If the chosen Certificate Authority (CA) certificate does not use DER compliant encoding, but does use DER compliant encoding in an issued certificate (or the adversary manages to get such a certificate signed by the CA), then the maximum path length limit can be overstepped by one, and CRL, time and verification-callback checks will be omitted for the said certificate.
    • If the X.509 Distinguished Name of the chosen CA certificate has more than 11 components, then a remote attacker may be able to trigger a buffer overread. This could potentially crash the application on some platforms.
    • Workaround: Only use standard DER compliant certificates, and use a CA that has an X.509 distinguished name with fewer than 11 components. Note: The overwhelming majority of Certificate Authorities have distinguished names with fewer than 11 components.
    • Reported Issue: https://github.com/ARMmbed/mbedtls/issues/825
    • Priority: MAJOR

    Handshake Messages are not fragmented as per MaxFragmentLength Extension Negotiation.

    • Description: “Once a maximum fragment length other than 2^14 has been successfully negotiated, the client and server MUST immediately begin fragmenting messages (including handshake messages) to ensure that no fragment larger than the negotiated length is sent.” In Mbed TLS, only the application data is fragmented, and the handshake messages are not.
    • Workaround: Disable MaxFragmentLength Extension Negotiation.
    • Reported Issue: https://github.com/ARMmbed/mbedtls/issues/387
    • Priority: MAJOR

    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 through email.
    • Priority: MAJOR

    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

    Mbed TLS causes stack overflow in Mbed OS targets

    • Description: The stack memory usage of some Mbed TLS features is higher than 4 KB, which may cause stack overflow errors when running in constrained embedded environments with Mbed OS, which are particularly limited in RAM.
    • Workaround: The amount of stack required depends on the application and what features of the library it chooses to use. More intensive, demanding tasks may not be possible on more limited, constrained devices, so we recommend designing for the limitations of the target device or choosing a device suitable for your application.
    • Reported Issue: https://github.com/ARMmbed/mbed-os-example-tls/issues/14
    • Priority: MAJOR

    Commissioner does not retransmit message when it receives retransmission

    • Description: There are two issues with DTLS handshake retransmission. First, the joiner fails to correctly parse received records because it does not correctly handle queued retransmissions received. Second, the commissioner may cause a deadlock as it does not retransmit certain records after it receives retransmission as instructed in RFC6347 Section 4.2.4.
    • Workaround: There is no known workaround.
    • Reported Issue: https://github.com/openthread/openthread/pull/1207
    • Priority: MAJOR

    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 is no known workaround.
    • Reported Issue: Reported by the development team.
    • Priority: MAJOR

    uVisor does not support nested interrupts

    • Description: When running an application with uVisor enabled, nested interrupts are not supported.
    • Workaround: There is no available workaround at the moment.
    • Reported Issue: https://github.com/ARMmbed/uvisor/issues/345
    • Priority: Major

    On ARMv7-M targets supporting uVisor, the RTOS runs with the same privilege of uVisor

    • Description: The current architecture of uVisor and of RTX require the RTOS to run with the same privilege of uVisor. As such, the RTOS is considered trusted.
    • Workaround: There is no available workaround at the moment.
    • Reported Issue: https://github.com/ARMmbed/uvisor/issues/235
    • Priority: Major

    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

    Traceback occurs when run with factory default firmware on Realtek RTL8195AM

    • Description: When running mbed-ls on the Realtek board, a traceback happens.
    • Workaround: Version of mbedls in Mbed OS does not have this fix. Workaround is to install mbedls from master until a release is made.
    • Reported Issue: https://github.com/ARMmbed/mbed-ls/issues/276
    • Priority: Major

    Export project to Keil - device not present

    • Description: cmsis-pack-manager assumes that all information is stored in a device tag. According to the official CMSIS Pack specification, however, this is not the case. cmsis-pack-manager needs to be updated to index by variant, as well as device. We currently do not know how many devices are affected by this issue.
    • Workaround: In this case, manual selection of the device and flash programming algorithm may be required.
    • Reported Issue: https://github.com/ARMmbed/mbed-os-example-cellular/issues/41
    • Priority: Major

    OnboardCellularInterface used incorrectly

    • Description: This example invokes methods on OnboardCellularInterface that are not part of the CellularBase abstract class. This means it may not work if OnboardCellularInterface is not a PPPCellularInterface.
    • Workaround: There is no known workaround.
    • Reported Issue: https://github.com/ARMmbed/mbed-os-example-cellular/issues/54
    • Priority: Major

    Wi-Fi connection fails with client compiled by IAR IDE

    • Description: Mbed connector client example programs do not connect to api.connector.mbed.com when built in the IAR Embedded Workbench IDE. They work when you build using Mbed CLI.
    • Workaround: Do not export the Mbed connector example for IAR Embedded Workbench.
    • Reported Issue: https://github.com/ARMmbed/mbed-os-example-client/issues/355
    • Priority: Major

    Client fails to connect using UDP when the Mbed Online Compiler compiles the binary.

    • Description: Using UDP fails when the binary is compiled with Online compiler but works if compiled with mbed-cli GCC_ARM .
    • Workaround: Use TCP-based connections.
    • Reported Issue: https://github.com/ARMmbed/mbed-os-example-client/issues/357
    • Priority: Major

    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. This works for the K64F, so it should work for the Realtek TRL8195AM.
    • Workaround: There is no known workaround.
    • Reported Issue: https://github.com/ARMmbed/mbed-os/issues/5640
    • Priority: Major

    Failure to flash for MTB_ADV_WISE_1570 target

    • Description: It is not possible to flash binaries built for the MTB_ADV_WISE_1570.
    • Workaround: There is no known workaround.
    • Reported Issue: https://github.com/ARMmbed/mbed-os/issues/6252
    • Priority: Major

    Makefile export fails to build larger project in Windows

    • Description: Make will fail with the error: make (e=87): The parameter is incorrect.
    • Workaround: Possible workarounds are 1) Use Linux instead 2) Follow advice here,
      https://stackoverflow.com/questions/12598933/ndk-build-createprocess-make-e-87-the-parameter-is-incorrect
    • Reported Issue: https://github.com/ARMmbed/mbed-os/issues/6335
    • Priority: Minor

    Fixes and changes

    5363
    Add support and tests for extended RTC

    5311
    BLE: Add generic GAP implementation

    5633
    BLE: added function converting error codes into strings

    5578
    CircularBuffer class modification and test

    5559
    Fix for default test config file

    5748
    Fix PR5578

    5621
    CriticalSectionLock class improvement

    5457
    Network interface: Add status callback register

    5784
    RTC test: fix __result variable

    5768
    Added statvfs API to get storage statistics

    5313
    Cordio: Pal Gap implementation

    5802
    RTC time conversion test - reduce test execution time.

    5346
    Add Critical Section HAL API specification

    5597
    critical: fix set exclusive access if not yet defined

    5201
    Test set for critical section

    5789
    Add tests for critical section HAL API

    5926
    bd: Add sync function to the block device API

    5925
    bd: Add get_erase_value function to the block device API

    5022
    Add JSON schema based validation to mbed config script

    5998
    Restrict target_overrides usage

    5852
    ScopedLock implementation

    5848
    Python2+3: mbed compile, mbed test –compile, python unit tests

    5571
    Complete mbed_retarget FileHandle rework

    6033
    Update mbed-coap to version 4.2.0

    6025
    Mesh-api setters for eui64 and pskd

    5604
    TESTS/NETSOCKET: Refinement of netsocket tests

    5847
    Unify fault handling and add script to show faults

    6053
    Nanostack release for Mbed OS 5.8

    5973
    Update Mbed TLS HW acceleration partner code to new hashing API

    5666
    Add exporter for Analog Devices’ CrossCore Embedded Studio

    6032
    Status callbacks

    6096
    Generate/Link secure object file

    6049
    Nuvoton: Rework RTC

    6087
    Integrating Mbed LoRaWAN Stack in Mbed-OS 5.8

    5956
    [feature-hal-itm] Instrumented Trace Macrocell HAL API for SWO debug output

    6076
    Remove ticker interface initialization while Ticker creation.

    6141
    Verifying datarate bug fix

    6163
    Revert “Update Mbed TLS HW acceleration partner code to new hashing API”

    6154
    Tools: Let unicode error messages through

    6160
    Fix issue 6150

    6140
    FlashIAP driver modifications

    6120
    fatfs: Update error code mapping

    6170
    CM3DS Maintenance Pull Request: Driver updates (4/4)

    6186
    Eventloop in main thread to master

    6185
    nanostack-hal: add alternative critical section implementation

    6166
    Make APN lookup the default behaviour for PPPCellularInterface

    6167
    CM3DS Maintenance Pull Request: Bug fixes (1/4)

    5911
    CRC class implementation

    5548
    Tests for SysTimer (the idle loop timer for tickless mode)

    6240
    Improve invalid configuration error messages

    5950
    Reserve and Render header in managed BL mode

    6230
    Add system_reset call

    6179
    littlefs: Update to version 1.3

    5900
    Add NVStore (A.K.A SOTP) feature

    6188
    BLE: Security Manager

    6210
    Update Mbed TLS to version 2.7.1

    6142
    Add optional tracing to sleep manager lock/unlock

    6251
    Fixed Thread Commissioning issue in CoAP service

    6082
    Mbed OS cellular connectivity

    6341
    Add lorawan and nvstore examples for testing

    6328
    MIMXRT: define PullUp default value

    6327
    Cellular doxygen updates

    6323
    fatfs: Revert “Update error code mapping”

    6304
    Add lorawan and nvstore examples for testing

    6301
    Cellular tests: fixed cellular greentea tests by adding timeout

    6285
    Improve json schema and schema errors

    6280
    NVStore: Enclose header file with DOXYGEN_ONLY option as well

    6275
    NRF52: Customize STDIO pins from config system

    Using this release

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

    Downloads: zip tar.gz

    We are pleased to announce the mbed OS 5.7.7 release is now available.

    Summary

    We have added support for the following new targets in this release,
    Laird BL652, STEVAL-3DP001V1, UBLOX_C030_R410M and OSHChip.

    The SDK driver for the LPC546XX family has been updated to version 2.3.

    We have added TRNG support for NRF52832.

    To improve the raising of pull requests we have simplified the required header.
    As before, a detailed description is required, but we now have a check box list from which
    the originator needs to select just one option. This indicates the impact of the pull request.
    E.g. Fix, new feature etc. This will help to ensure that the pull request targets the correct
    release.

    There are also a number of bug fixes.

    Known Issues

    There are no new known issues with this release.

    Contents

    Ports for Upcoming Targets

    5892
    add OSHChip as an mbed target

    5957
    C030 R410M Target Added

    6102
    Add support for STEVAL-3DP001V1 board

    6164
    Adding Laird BL652 as new target

    Fixes and Changes

    6116
    Add TRNG for NRF52832

    6197
    Revert “Added pretty bar printing for compile output”

    6287
    MCUXpresso_MCUS: Apply K64F us_ticker fix across all MCU’s

    6177
    littlefs: Fix handling of root as target for create operations

    5046
    TimerEvent tests

    6193
    ODIN MTB LEDs Fix

    6172
    Use SRAM2 32Kbytes on STM32L475 / L476 and L486 devices

    6217
    STM32 RTC : update free function

    6189
    LPC546XX: Update SDK driver to version 2.3

    6229
    Fix a bug using ELF as output extension

    6209
    Platform: Improve mbed_sleep.h

    6214
    Build issue for M33 core

    6227
    Nuvoton: Add I2C & Serial Pin Name

    6225
    Flash test: fix the time over a longer range

    6231
    pull request: add required info

    5993
    Work around Arm Compiler 6 stdvector perfomance cliff

    6246
    C030 platform I2C initialisation fix

    6228
    Nuvoton: Rework us_ticker/lp_ticker with one H/W timer

    6146
    Correct gcc m33 floating point handling

    6173
    Modifies error text reported from RTX from ‘underflow’ to ‘overflow’

    6202
    Fix max32625mbed

    6235
    mcu_lpc546xx: move “release_versions” to children and fix clock

    6263
    Clarify intention between comparison to zero and the shift operation

    6271
    Allow build profiles to omit language entries

    6226
    rtl8195am: fix ARM section error

    Using this release

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

    Downloads: zip tar.gz

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

    Summary

    In this release we have updated the ST HAL driver for STM32F7 with CubeF7 v1.10.0
    and the ST HAL driver for STM32F4 with CubeF4 v1.19.0.

    We have also added support for Nuvoton M487 ECP Crypto H/W accelerator,
    SERIAL_ASYNCH for STM32F429ZI, 220MHz core speed on LPC54628 and the
    use of LPUART in stop mode for STM32L0/4.

    For lwIP we have enabled EMAC IPv6 support.

    How you write and erase the flash on the NRF52 changes depending on
    whether the SoftDevice is enabled or not. We have added a runtime check
    to ensure the correct flash function is selected.

    There are also a number of bug fixes.

    Known Issues

    6003
    mbed-os-example-wifi hangs on ODIN-W2

    This will be fixed in the mbed-os-5.8 release.

    Contents

    Ports for Upcoming Targets

    There are no new targets supported in this release.

    Fixes and Changes

    6050
    lwip: enable EMAC IPv6 support

    6047
    Fix NVIC Wrapper include for Renesas

    6042
    DISCO_F303VC : STDIO pins correction and alignment with STM32 family

    6035
    Fix serial pins and a typo for ODIN MTB

    6018
    fix compiler warning

    5941
    STM32L0/4 Enable use of LPUART in stop mode

    6058
    Ble: fix size function in advertising_data_t and address_t.

    6051
    add few files to gitignore list

    6070
    remove magic calibration value for HSI in ST’s targets

    6074
    fatfs: Remove extra MBR block

    6083
    tools: build: fix handing of “–stats-depth”

    6063
    STM32F7: Update ST HAL driver with CubeF7 v1.10.0

    6009
    fix for issue “serial example callback not working”

    6095
    mbr: Add note about limitations

    6000
    Prevent detect_targets.py tool script from crashing on known targets

    6068
    Fix for issue #6054 - interrupts scheduled in the past.

    6099
    gnuarmeclipse exporter uses mBed instead of proper casing

    6045
    RTX changes pulled in from d20b8aa

    6029
    RTX5: Pre-processor defines used for assembly

    6112
    STM32F4: Update ST HAL driver with CubeF4 v1.19.0

    6088
    STM32F429ZI add SERIAL_ASYNCH

    6113
    remove unused variable / resolve compiler warning

    6048
    Nuvoton: Rework us_ticker and lp_ticker

    6110
    equeue: Removed RTOS dependencies with RTOS not present

    6118
    equeue: Add note about using global event queues in irq

    6135
    tests-events-timing: print debug info only in case of failure

    6117
    UBLOX C030: I2C avoid any RTOS waits

    6115
    NRF5x: Fix error_t conflict with gcc std>=gnu++11

    5915
    Simplify and Improve error/warning parser for gcc_arm

    6121
    Avoid blowing away .mbedignore files in exporters

    6123
    Correct sector scraping in arm-pack-manager

    6126
    Modified ‘apt-get update’ to loop until successful

    5812
    M487: Support ECP H/W accelerator

    6041
    STM32 STDIO pin redefinition

    6055
    K64F lp ticker driver - calculation bug fix.

    6046
    littlefs: Fix incorrect lookahead population before ack

    6093
    NETSOCKET MBED_EXTENDED_TESTS json configuration

    6124
    Make NRF52 flash work with SoftDevice

    6125
    Add quotes around MBED_BOT parameter

    6139
    LWIP PBUF_POOL_BUFSIZE increased to fit also IPv6 header

    6078
    Pull request template update

    6145
    Correct single file excludes for some exporters

    6156
    retarget: Fix path behaviour without leading slash

    6147
    LPC546XX: Add support for 220MHz core speed available on LPC54628

    6162
    sleep_manager_racecondition test fix for devices with low CPU clock

    Using this release

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

    Downloads: zip tar.gz

    We are pleased to announce the mbed OS 5.7.5 release is now available.

    Summary

    In this release we have added support for the following new targets :

    Laird BL600,
    STM32L082CZ and CMWX1ZZABZ-078 module,
    STM32L443RC and WISE-1510 module,
    GR-LYCHEE,
    iMXRT1050 EVK
    NINA B1
    MTS xDOT (MTB)
    WISE-1570 (MTB/MCB)

    It should also be noted that a couple of other targets have been renamed to
    bring them inline with the target naming convention:

    CMWX1ZZABZ_078 renamed to MTB_MURATA_ABZ
    WISE_1510 renamed to MTB_ADV_WISE_1510

    Anybody using the old names will need to update them.

    There were some functions that were missing in STM32L4 CUBE HAL drivers to
    enable/disable UART Clock in Stop Mode. These have now been added.

    5921 reported that all the public overloads of nsapi_dns_query_multiple() were broken. They are documented as returning the number of addresses found on success, however, the function was always returning NSAPI_ERROR_OK, i.e. zero. This is now fixed.

    We have added bootloader support for STM32F7, flash support for K82F and new
    tests for FileHandle and Transaction class.

    There are also a number of bug fixes.

    Known Issues

    There are no new known issues with this release.

    Contents

    Ports for Upcoming Targets

    5857
    Registration GR-LYCHEE board as a new mbed board

    5904
    add support for STM32L443RC & WISE-1510

    5905
    add support for the murata’s module CMWX1ZZABZ-078 based on STM32L0

    5996
    Adding LAIRD_BL600 MTB

    5826
    NXP: Add support for MIMXRT1050_EVK

    5837
    Adding MTB ublox NINA-B1 as a new target

    5975
    Adding MTB_MTS_XDOT as a new target

    6013
    Add MTB_ADV_WISE_1570 target

    Fixes and Changes

    5951
    STM32 NUCLEO F413ZH and L433RC : STDIO configuration

    5945
    Correct return value of nsapi_dns_query_multiple

    5933
    Add OpenOCD 5x launch file to e2 studio and update naming

    5929
    Add pretty bars for compile output

    5901
    Netbeans Exporter Bugfix

    5947
    STM32L4 : add missing ST HAL UART functions

    5818
    Enforce sector alignmnent for managed bootloader builds

    5936
    STM32 : set all PinMap structures as weak

    5982
    Wise 1510: fix a silent conflict with PR #5947

    5630
    Fix #5079. Support of call to mbedtls_x_finish without calling mbedtls_x_update

    5962
    STM32: Fix usart irq index

    5909
    Let libraries, targets configure bootloader

    5990
    Correct SW4STM32 supported check

    5964
    VS Code exporter: do not overwrite existing (launch|settings|tasks).json

    5984
    EFM32: make peripherals conditional

    5987
    Pre-processor common macro addition

    5994
    allow use of external memory as heap with TOOLCHAIN_GCC_ARM

    5972
    STM32F7: Add bootloader support (new trial)

    6012
    STM32 SPI ASYNC - Add FIFO flush before transfer

    5419
    Add absolute millisecond tick count to RTOS classes

    5876
    lpc546xx and ff_lpc546xx: create parent object MCU_LPC546XX

    6026
    Update uvisor-tests.txt to disable EFM32 in Jenkins

    5895
    Add FileHandle tests

    5797
    ARMC5+6: Specify CPU for ARM scatter file preprocessor

    6007
    Take OUTPUT_EXT into account in managed bl

    6004
    STM32L476/486: Improve SRAM usage for IAR

    6001
    Corrects intermittent CLion exporter issue with cmake build directory

    6015
    Add missing flash device feature to the K82F board

    6017
    Correct auto-sizing last region of bl

    5914
    Add Transaction class unit test.

    5970
    RZ_A1LU: Fix TRNG function

    6027
    rename MURATA type ABZ & WISE 1510 to their expected name

    6030
    M33: -march not required if -mcpu is set

    5971
    Ticker tests fix

    6036
    DISCO_L072CZ_LRWAN1: move target folder

    6031
    M23: Fix CThunk error on Cortex-M23

    Using this release

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

    Downloads: zip tar.gz

    mbed OS 5.7.4 release

    We are pleased to announce the mbed OS 5.7.4 release is now available.

    Summary

    This patch release includes new target support for the MTS Dragonfly, EMW3166 and VBLUno51 targets.

    We have created several bug fixes and new tests for our embedded file system.

    We added two new exporters, which allow users to use CMake with CLion and GCC with NetBeans.

    We have made several USB improvements to NXP targets.

    We released CoAP 4.1.1, along with an update to Thread commissioning.

    This release also includes our many bug fixes and test enhancements.

    Known Issues

    There are no new known issues with this release.

    Contents

    Ports for Upcoming Targets

    5809
    Add MTB MXChip EMW3166

    Fixes and Changes

    5831
    Increase clock tolerance in Flash HAL test

    5808
    ESP8266 Test Config and fixes for tests tcp_echo/tcp_hello_world

    5829
    Fix: Sector/Size overflow from uint32_t

    5824
    DISCO_F407VG : alignment with other STM32

    5787
    STM32: Add support of Flash API for STM32F2 devices

    5760
    Add notes about ISR safety to RTOS doxygen

    5749
    STM32 LOWPOWERTIMER : introduce LPTIM feature

    5731
    mesh-api documentation removal

    5623
    Clarify TCPSocket::recv() and UDPSocket::recvfrom() documentation.

    5456
    platform: make C++ allocation wrappers log the correct caller address

    5727
    Add presentation format descriptor support for nRF5x

    5855
    Allow overriding of DCDC settings per target

    5846
    littlefs: Fix block addr overflow

    5854
    Fix for Silicon Labs RTC

    5795
    STM32 STDIO pins number are now configurable

    5791
    STM32 CAN: fix wrong ID and MASK filter

    5862
    STM32 LPT optimisation

    5867
    BLE: Fix inclusion of BLE.h (case)

    5880
    Nuvoton: Add gpio_is_connected

    5858
    RTL8195AM - move region headers to 0xb000 and 0xc000

    5870
    NSAPI: Add Nanostack multicast membership support

    5761
    littlefs: Fix issue with immediate exhaustion and small unaligned storage

    5819
    Add COMMON folder for tests

    5836
    Thread commissioning fix

    5882
    Add MTB MTS_Dragonfly as a new target.

    5877
    Kinetis USB improvements and fixes

    5878
    LPC USB stability fixes

    5800
    Some enhancements for the USBHost feature and small bug fix

    4719
    mbed Enabled certificate for the VBLUno51 board

    5532
    Exporter for Netbeans GCC_ARM

    5889
    Provide fix for issue #5835 - Tickers update should be atomic

    5866
    RTX idle: sleep without locked deep sleep fix

    5864
    CoAP v4.1.1

    5821
    STM32F7: Add bootloader support

    5896
    STM32LX : HAL_RCC_OscConfig update in PLL configuration

    5898
    Remove RTC as a supported peripheral for NCS36510

    5894
    STM32: fix serial 7bit data format

    5890
    RZ_A1H: cmsis nvic include fix

    5844
    ST-DISCO_L475VG_IOT01A: Improve SRAM use for IAR toolchain

    5903
    STM32F407 : correct ARM scatter file

    5932
    Revert “STM32F7: Add bootloader support”

    5937
    Update CMSIS pack

    5938
    MTB_XX : STDIO configuration

    5934
    NUCLEO_F401RE : PeripheralPins file update

    5928
    littlefs: Set specific hash for littlefs-fuse testing in Travis

    5920
    Fix issue with MBED_11 test (mbed2)

    5918
    NXP LPC4088: Add missing SPI SSEL pin to Pinmap

    5913
    Add missing EFM32 HAL flash init/deinit function calls

    5912
    CriticalSectionLock: fixing missing include

    5910
    fix typos in lint.py

    5907
    STM32F0: fix issue with usarts sharing the same irq vector

    5874
    USB fixes and improvements

    5942
    Remove tickless assert for tick count

    5476
    add cmake exporter for CLion use

    5087
    Add RTC time test.

    Using this release

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

    Downloads: zip tar.gz

    We are pleased to announce the Mbed OS 5.7.3 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 of issues deep in the GattClient logic (improper queueing and order of
    operations). It was deemed more efficient to re-write the implementation than try to patch the previous
    version. As well as fixing the 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 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.

    Known Issues

    There are no new known issues with this release.

    Contents

    Ports for Upcoming Targets

    5740
    Adding MTB ublox ODIN W2 as a new target.

    5608
    NUCLEO_F413ZH: Add support for the NUCLEO-F413ZH board

    Fixes and Changes

    5776
    STM32: Add support of Flash API for STM32F0 and STM32F1 devices

    5253
    Add missing device_name for targets with bootloader

    5435
    Tests for wifi emac interface

    5570
    STM32 UART init update

    5595
    fix nordic critical section

    5606
    Enable tickless on nRF52840

    5673
    mem_trace tests refactoring

    5697
    STM32: Add support of Flash API for STM32F3 devices

    5703
    AD: Fix ADC driver

    5737
    lp_timer test : add a minimum delta value

    4925
    NUC472/M487: Refine code with mbed TLS crypto alternatives

    5651
    ff_lpc546xx: add enet, change led1 and led3 pins

    5708
    Add minimal debug info to release and develop profiles.

    5747
    STM32 : Fix issue to exit deepsleep when RTC has not been initialized

    5775
    Correct memap path handling on windows

    5782
    littlefs: Fix positive seek bounds checking

    5794
    Commit to fix the Online compiler issue for ARM mbed-os on REALTEK_RT

    5807
    Simple typo fix in the README.md

    5792
    STM32F0 : ST CUBE version update to V1.9.0

    5739
    BLE: Nordic pal client implementation

    5722
    Fix bug allowing SPI::abort_transfer to incorrectly unlock deep sleep mode

    5721
    Fix bug allowing I2C::abort_transfer to incorrectly unlock deep sleep mode

    Using this release

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

    Downloads: zip tar.gz

    Mbed OS 5.7.2 release

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

    Summary

    We have added a new example program, mbed-os-example-filesystem which covers both FAT and LittleFS filesystems.

    The GR-PEACH target was previously removed from the supported targets due to incompatibility with cmsis 5 fixes.
    These have been fixed and the target has now been reinstated.

    We have added IAR export support for EV_COG_AD3029LZ, EV_COG_AD4050LZ and bootloader support for MK24F1.

    There are also a number of other bug fixes to the firmware and tests.

    Known Issues

    None

    Contents

    Ports for Upcoming Targets

    None

    Fixes and Changes

    5720
    Add memory barriers to STM32F7xx Ethernet

    5745
    K64F Ethernet: avoid using NULL thread during init

    5734
    Build failed as code section was not included in map.

    5736
    Allow 6LoWPAN applications to leave out channel specification.

    5756
    Add mbed-os-example-filesystem to examples list

    5693
    Enable IAR export for EV_COG_AD3029LZ and EV_COG_AD4050LZ

    5691
    Nordic add app_start config system support for NRF52840 for bootloader

    5628
    Reregistration GR-PEACH as mbed support board

    5681
    Adding bootloader support to MK24F1 target

    5755
    Fix for #5676 make.py generates duplicate file entries in link_files.txt

    5743
    Greentea wifi test cases - disconnect done as teardown after each connect

    5614
    platform: fix mem_trace trace level guard

    5617
    STM32: USBHost clean-up

    5733
    Access to serial device is allowed when DEVICE_SERIAL is defined

    5723
    Remove destruction of WiFi interface in test runs

    5613
    Added init for ODIN EVK LEDs to be off by default

    5770
    Renesas: fix cmsis lib build

    Using this release

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

    Downloads: zip tar.gz

    mbed OS 5.7.1 release

    We are pleased to announce the mbed OS 5.7.1 release is now available.

    Summary

    This patch release includes new target support for the STM NUCLEO_L433RC-P board.

    Silicon Labs’ sleep management HAL has been updated with better MBed RTOS interoperability. Additionally, ST brought several improvements to their Low Power Timer HAL.

    Analog Devices updated their EV_COG_ADx0xxLZ boards, bringing ARMC6 compiler support.

    Several new Ethernet and WiFi tests have been added, along with enhancements to the mbed-os testing infrastructure. We have also added a number of other bug fixes.

    Known Issues

    There are no new known issues with this release.

    Contents

    Ports for Upcoming Targets

    5591
    Support the STM NUCLEO_L433RC-P board

    Fixes and Changes

    5627
    ADI: Add ARMC6 compatible code

    5610
    STM32 - CAN - Fix RTR position bit in TX mailbox register

    5605
    [TESTS/NETWORK] Split Wi-Fi test for secure & unsecure tests

    5598
    Remove unnecessary inclusion of an internal RTX header

    5581
    Remove custom Silicon Labs sleep management

    5577
    REALTEK_RTL8195AM Wifi driver - adds check of credentials validity

    5576
    Ethernet tests update

    5567
    STM32: Add USB Device on DISCO_F413ZH

    5489
    Correct pack_* members to refer to PACK files

    5469
    Unity framework : add float support in error print

    5459
    STM32 Low Power Timer feature updates

    5678
    Add caching of apt-get + pip to .travis.yml

    5667
    STM32: Fix CAN3

    5657
    Correct typo? in e2studio exporter code

    5648
    Add SingletonPtr test

    5635
    Protect local static object construction in ARMCC

    5729
    Travis: define matrix builds for mbed 2 jobs

    5687
    Statically allocate ARMCC required mutex objects

    5715
    Fixed call to deprecated get_details_txt

    5707
    Add IAR exporter for STM32L475VG (mcu of DISCO_L475VG_IOT01A)

    5698
    STM32 : correct compilation issue with USE_FULL_ASSERT macro

    5677
    C030 Battery Charger Voltage Fix

    5670
    Nanostack EFR32 flag fix

    5649
    Fix greentea test mbed-os-tests-netsocket-connectivity

    5644
    Readme updates for style and branding

    5587
    Fix fatal parameter error when deleting/terminating Thread object

    5568
    Greentea Wifi testcase fixes

    5470
    Add device_name for TB_SENSE_12.

    Using this release

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

    Downloads: zip tar.gz

    Mbed OS 5.7.0 release

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

    Summary

    The Arm Mbed OS 5.7.0 release helps to further simplify the internet of things (IoT) and embedded product development with the addition of several new features, such as the high-integrity embedded file system, which provides power loss resilient operation and maximizes the life of the external memory block device by implementing wear leveling techniques. The release also includes an open-source mesh networking stack, which is IPv6, 6LoWPAN and one of the only two open-source certified Thread networking stacks.

    This release also continues our efforts to add comprehensive documentation for Mbed OS. Our ongoing efforts in this area include adding documentation about contributing and using our platform, drivers, RTOS, connectivity and storage APIs, as well as information about our tools. This release also includes improvements to the user experience of our documentation.

    In addition, this release contains many minor fixes and enhancements and brings support for 103 target development boards. In the release note below, we summarize some of the key updates to Mbed OS that are part of the Mbed OS 5.7.0 release.

    Core OS and storage

    High-integrity embedded file system

    Mbed OS introduces a robust, high-integrity embedded file system, which prevents risks of serious data loss due to power loss and significantly improves the life of external block memory by implementing dynamic wear leveling algorithms. Some of the key features are:

    Power loss resilience - The high-integrity embedded file system works consistently through random power failures. During file system operations, the storage on disk is always kept in a valid state. Also, to protect failure, in case of updating a file, the original file remains unmodified until the file is closed or sync is called.

    Wear awareness - The high-integrity embedded file system considers write errors reported by the underlying block device and uses dynamic wear leveling to manage blocks that go bad during the lifetime of the file system.

    Support to SPI NOR Flash and SD cards – We specifically designed it to work on SPI NOR flash and SD cards.

    Along with the traditional FAT file system, the high-integrity embedded file system enhances the storage portfolio of Mbed OS by providing robust and power resilient operation. More information on the high-integrity embedded file system is available at https://os.mbed.com/docs/v5.7/reference/littlefilesystem.html and is currently in early release.

    New drivers and platform APIs

    In the Mbed OS 5.7.0 release, we have also added several new drivers and platform APIs. One of the notable additions includes the ConditionVariable class.

    ConditionVariable class: The ConditionVariable class provides a mechanism to safely wait for or signal state changes. A common scenario when writing multithreaded code is to protect shared resources with a mutex and then release that mutex to wait for a change of that data. If you do not do this carefully, this can lead to a race condition in the code. A condition variable provides a safe solution to this problem by handling the wait for a state change, along with releasing and acquiring the mutex automatically during this waiting period. For more information, please visit https://os.mbed.com/docs/v5.7/reference/conditionvariable.html

    Connectivity

    Open-source mesh networking stack

    We’ve invested many years of effort in building a robust and scalable mesh networking stack, which runs on the 802.15.4 radios. Some of the key principles of this technology are an ability to self-heal the mesh routing and also optimize for low power. The mesh stack has many uses, and the key features are:

    • IPv6/6LoWPAN for 2.4GHz and subGHz.

    • Thread® 1.1 certified for interoperability in connected home applications.

    • Mesh link establishment (MLE) for safe, dynamic and reconfigurable radio link establishment.

    • RPL routing protocol.

    The IPv6 and 6LoWPAN components are Apache 2.0 licensed, and the Thread extensions are under a BSD 3-clause license. Mbed OS applications can use the Mesh and Socket APIs. To use the mesh stack, check the example application mbed-os-example-mesh-minimal. More information on the open-source mesh networking stack is available at https://os.mbed.com/docs/v5.7/tutorials/mesh.html#nanostack

    Upcoming features

    Mbed OS thrives on the large ecosystem and support from leading silicon vendors. Mbed OS has several MCU targets and 103 development boards currently supported and Mbed Enabled. Adoption of Mbed OS APIs by the ecosystem ensures that you have a seamless experience. This section indicates what will be in the upcoming releases from the Mbed OS team and enabled by silicon and device Partners. To know more, please visit https://github.com/ARMmbed/mbed-os/

    LoRaWAN

    We are adding a LoRaWAN API to Mbed OS to enable building LoRaWAN end points with the integrated Mbed OS stack. We will integrate the LoRaWAN stack as part of Mbed OS and provide developers an easy way to connect and use LoRaWAN technology. We will test the integrated stack with several modules to enable fast product integration.

    QuadSPI

    A quad SPI driver enables multiple I/O SPI devices capable of supporting increased bandwidth or throughput from a single device. Some of the advantages of quad SPI include high speeds and that it requires few pins. Several MCUs and memory vendors are adding support for Quad SPI, and it is popular among the use cases that need high bandwidth, such as multimedia, richer graphics and other data-intensive content needing external memory.

    Watchdog

    We are looking to add a watchdog API to Mbed OS to detect and recover from system malfunctions during remote management operations, such as updating the device firmware. The initial watchdog use cases that would be supported are; setting the watchdog, feeding the watchdog, reading the current watchdog status and reading the MCU reset reason.

    MicroSecond and LowPower Ticker

    Power consumption is one of the most important design requirements for IoT devices. Meeting the power budget is becoming challenging because systems today include more sensors, faster responses and more connectivity. We are looking to add a low-power timer with lower accuracy to Mbed OS, which would help to enable the tickless mode and save power. We are also looking to add a unified 64-bit time stamp, allowing devices to seamlessly handle different widths of timers. We plan to enable better low-power performance by adding the feature to turn off the time when the time is not in use.

    RTC

    The real-time clock (RTC) keeps track of the current time in computers and embedded devices. We are looking to update the RTC API to specify behavior that enables it to survive reset and provide the true time.

    Targets and tools

    Thanks to our partners’ hard work, Mbed OS 5.7 added 10 new target platforms and now supports 103 target platforms. We’ll continue to add targets in our biweekly patch releases as partners work with us on support.

    Testing

    We designed Mbed OS to significantly reduce cost and time for embedded software development by providing a production-quality toolset and code. We are committed to delivering high-quality code working across all supported boards and platforms. To ensure all the features of code meet our quality control requirements, we have built an automated testing environment and processes that perform rigorous testing on every line of code. The continuous integration framework is a highlight of our testing framework.

    Continuous integration framework:

    The continuous integration framework ensures that every new feature and change in Mbed OS is tested, so that:

    • For every new feature, we create tests that we then deliver to our partners. For every board to be Mbed Enabled, we need our partners to successfully conduct these tests.

    • Partners must test the changes on their boards before submitting pull requests (PRs) on GitHub.

    • Once the PR is submitted, the Mbed OS gatekeepers manually review the code to ensure it meets the coding guidelines and code standards.

    • Once approved by gatekeepers, the code goes through the automated test setup, which adds code to Mbed OS for testing and builds examples across all the platforms, such as IAR, ARM and GCC.

    • During the testing phase, we select the combination of boards and devices that support a variety of peripherals, MCU cores and features for maximum coverage.

    • To ensure the Mbed OS code is compatible with all the IDEs, we test that the code is exporting properly to all the compilers.

    • We merge the PRs only if the all the above procedures are successful.

    Following is the summary of results for testing conducted for Mbed OS 5.7.0:

    • Total test time is 10,125 hours on actual development boards. Time almost doubled because we are testing nightly on every PR.

    • We have added 111 new test cases since the Mbed OS 5.6.0 release to test new and existing features on Mbed OS. The number of total test cases is 423.

    • We performed 566,440 example builds since the Mbed OS 5.6.0 release.

    • The total number of binaries built is 17,869,800 since the Mbed OS 5.6.0 release.

    We plan to share more details about testing processes, such as our out-of-box testing coverage and system testing, in upcoming release blogs.

    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 document 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 forums.

    Title: Handshake Messages are not fragmented as per MaxFragmentLength Extension Negotiation.

    • Description: Once a maximum fragment length other than 2^14 has been successfully
      negotiated, the client and server MUST immediately begin fragmenting
      messages (including handshake messages) to ensure that no fragment
      larger than the negotiated length is sent. In Mbed TLS, only the application data is fragmented, and the handshake messages are not.
    • Workaround: Disable MaxFragmentLength Extension Negotiation.
    • Reported Issue: https://github.com/ARMmbed/mbedtls/issues/387
    • Priority: MAJOR

    Title: 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 an EXPERIMENTAL stage; use it at your own responsibility!
    • Reported Issue: Issue reported by a customer in email.
    • Priority: MAJOR

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

    Title: Mbed TLS causes stack overflow in Mbed OS targets

    • Description: The stack memory usage of some Mbed TLS features is higher than 4 KB, which may cause stack overflow errors when running in constrained embedded environments with Mbed OS that are particularly limited in RAM.
    • Workaround: The amount of stack required depends on the application and what features of the library it chooses to use. More intensive, demanding tasks may not be possible on more limited, constrained devices, so we recommend designing for the limitations of the target device or choosing a device suitable for your application.
    • Reported Issue: https://github.com/ARMmbed/mbed-os-example-tls/issues/14
    • Priority: MAJOR

    Title: Commissioner does not retransmit message when it receives retransmission

    • Description: There are two issues with DTLS handshake retransmission. First, the joiner fails to correctly parse received records because it does not correctly handle queued retransmissions received. Second, the commissioner may cause a deadlock because it does not retransmit certain records after it receives retransmission as instructed in RFC6347 Section 4.2.4.
    • Workaround: There is no known workaround.
    • Reported Issue: https://github.com/openthread/openthread/pull/1207
    • Priority: MAJOR

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

    Title: uVisor does not support nested interrupts

    • Description: When running an application with uVisor enabled, nested interrupts are not supported.
    • Workaround: There is no available workaround at the moment.
    • Reported Issue: https://github.com/ARMmbed/uvisor/issues/345
    • Priority: Major

    Title: On ARMv7-M targets supporting uVisor, the RTOS runs with the same privilege of uVisor

    • Description: The current architecture of uVisor and of RTX require the RTOS to run with the same privilege of uVisor. As such, the RTOS is considered trusted.
    • Workaround: There is no available workaround at the moment.
    • Reported Issue: https://github.com/ARMmbed/uvisor/issues/235
    • Priority: Major

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

    Title: Traceback occurs when ran with factory default firmware on Realtek RTL8195AM

    • Description: When running mbed-ls on the Realtek board, a traceback happens.
    • Workaround: Version of mbedls in Mbed OS does not have this fix. Workaround is to install mbedls from master until a release is made.
    • Reported Issue: https://github.com/ARMmbed/mbed-ls/issues/276
    • Priority: Major

    Title: Export project to Keil - device not present

    • Description: cmsis-pack-manager assumes that all information is stored in a device tag. According to the official CMSIS Pack specification, however, this is not the case. cmsis-pack-manager needs to be updated to index by variant as well as device. We currently do not know how many devices are affected by this issue.
    • Workaround: In this case, manual selection of the device and flash programming algorithm may be required.
    • Reported Issue: https://github.com/ARMmbed/mbed-os-example-cellular/issues/41
    • Priority: Major

    Title: Wi-Fi connection fails with client compiled by IAR IDE

    • Description: Mbed connector client example programs do not connect to api.connector.mbed.com when built in the IAR Embedded Workbench IDE. They work when you build using Mbed CLI.
    • Workaround: Do not export the Mbed connector example for IAR Embedded Workbench.
    • Reported Issue: https://github.com/ARMmbed/mbed-os-example-client/issues/355
    • Priority: Major

    Title: Client fails to connect via UDP when binary is compiled by Online Compiler

    • Description: Using UDP fails when binary is compiled with Online compiler but works if compiled with mbed-cli GCC_ARM .
    • Workaround: Use TCP based connections.
    • Reported Issue: https://github.com/ARMmbed/mbed-os-example-client/issues/357
    • Priority: Major

    Title: Online Compiler error for the Realtek RTL8195AM board

    • Description: Compiling programs in the online IDE for the Realtek RTL8195AM fail with Error L6236E No section matches selector - no section to be FIRST/LAST.
    • Workaround: None. There is a pending pull request to fix this, which will come in a subsequent patch release.
    • Reported Issue: https://github.com/ARMmbed/mbed-os-example-blinky/issues/102
    • Priority: Major

    Title: 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. This works for the K64F, so it should work for the Realtek TRL8195AM.
    • Workaround: None.
    • Reported Issue: https://github.com/ARMmbed/mbed-os/issues/5640
    • Priority: Major

    Contents

    Ports for upcoming targets

    No new ports in this release

    Fixes and changes

    5060
    BLE: Cordio port

    5113
    STM: I2C: Configure pins in OpenDrainNoPull by default (no pullup)

    5200
    Extend nRF51 AnalogIn voltage range to 3.6 V

    5210
    STM32: Add ADC calibration for L4, F1, F3 devices

    5238
    Include doxygen from test directories

    5028
    Update ticker to map closely to hardware

    5325
    Add fix for Timer test - provide missing get_info ticker interface

    5365
    Remove redundant ISR test

    5385
    SlicingBD: Replace second constructor with default parameter

    5369
    Add API to set ticker IRQ handler

    5088
    UARTSerial: Add flow control and format APIs

    5410
    BLE: Deprecate GapEvent

    5158
    RTOS: Add empty and full functions to Mail and Queue

    5393
    Deprecate CallChain and InterruptManager

    5428
    Shrink RTOS classes

    5426
    BLE: Fix initialization of GattHVXCallbackParams in Nordic port

    3648
    Add ConditionVariable to Mbed RTOS

    5328
    equeue: Add config option to use different timer classes

    5295
    BLE: Gap platform abstraction layer

    5058
    CircularBuffer(): Get available transactions

    5471
    Increase flash program granularity on Realtek RTL8195AM

    5342
    Update CMSIS/RTX with Cortex-A support

    5508
    Fix and add test for ConditionVariable

    5485
    Platform: Allow copy of noncopyable objects

    5475
    BLE: Update heart rate service definition

    5392
    Improve BLE docs

    5296
    BLE: Generic access service abstraction layer

    5196
    Add IPv4 and IPv6 multicast implementation for UDPSocket

    5407
    Python script to add CMSIS/RTX changes in mbed-os

    5299
    BLE: Generic event filter

    5513
    STM32: Initialize ADC peripheral for each AnalogIn object creation

    5528
    Use retarget defines when possible

    5549
    BLE gatt server doc update

    5561
    Definition for stat was missing in header file

    5466
    Make POSIX-like writes write everything when blocking

    5511
    Nanostack OSS release for mbed-os-5.7

    5583
    Remove pointless null check in operator delete

    5601
    Update ODIN drivers to v2.3 RC1

    5596
    Make LDREX/STREX CAS functions strong

    5593
    BLE: Fix greater than or equal to comparison in GattCharacteristic

    5592
    BLE: Fix GattServer::write on Nordic targets.

    5490
    Upgrade ChanFs to R0.13a

    5300
    BLE pal event queue

    5602
    Nanostack release v704

    5538
    Integrate littlefs into Mbed OS

    5675
    Update Cortex-A build errors

    5685
    Export: Fix link in gettingstarted template

    5688
    Mesh fix for Mbed OS 5.7 OOB

    5704
    Fixed LWIP k64f ethernet driver IPv6 multicast groups

    5701
    BLE doxy fixes

    Using this release

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

    Downloads: zip tar.gz

    We are pleased to announce the mbed OS 5.6.6 release is now available.

    Summary

    This patch release includes new target support for the SAKURAIO_EVB_01 board.

    We’ve included an upgrade to the Silicon Labs HAL. This upgrades the version of emlib in mbed to v5.3.3.
    Additionally it enables the use of USART3, USART4 and USART5 for both serial and SPI (important for using TB_SENSE_12’s IMU). It also fixes a number of compiler warnings.

    There is an upgrade of the Silicon Labs radio driver to v2.1.1. This upgrades the RAIL library (on which the Nanostack
    driver is based) making it run more efficiently alongside an RTOS. The binary should now be fully AAPCS-compliant (no more ambiguity on enum size), so should work across all toolchains and the upgrade also lays the foundation for potential BLE enablement on EFR32

    We’ve added USB Device support for DISCO_F429ZI, bootloader support for DISCO_F429ZI and ENET support for LPC546XX.

    There was an issue where dir_rewind and dir_seek were not working as expected for the FAT filesystem
    (https://github.com/ARMmbed/mbed-os/issues/5440). This has now been fixed.

    Finally we’ve adjusted our thread tests to enable them to be run on devices with a small RAM footprint.

    Known Issues

    There are no new known issues with this release.

    Contents

    Ports for Upcoming Targets

    5397
    add target SAKURAIO_EVB_01.

    Fixes and Changes

    5503
    FATFileSystem: provide working dir_rewind and dir_seek

    5512
    DISCO_L072CZ_LRWAN1 can use LSE from LORA module

    5518
    STM32F407VG: Fix RTC

    5323
    malloc test refactoring

    5483
    heap_and_stack test refactoring

    5516
    lpc546xx: fix adc

    5521
    STM32: Add USB Device on DISCO_F429ZI

    5525
    Fixed: errno update failure with IAR8.x

    5535
    NUCLEO_L432KC: Fixed async serial

    5539
    Prevent traceback when memap fails to parse

    5553
    Nuvoton: fix lpticker interrupt

    5454
    Nuvoton: TRNG_Get support 32 bytes unalignment

    5360
    threads test adjust to run on devices with small RAM

    5526
    Fixed mutex assert in armcc fopen and related memory leak

    5616
    Support bootloader for DISCO_F429ZI

    5611
    Realtek RTL8195AM A3 fix

    5609
    LPC546XX: Add ENET support

    5585
    Fix issue with timer timebase on EFR32

    5589
    Nordic: Set handle of user description descriptors.

    5584
    Upgrade to Silicon Labs HAL

    5580
    DISCO_F746NG: add usp_speed configuration

    5579
    Upgrade Silicon Labs radio driver to v2.1.1

    5565
    STM32: SPI 3 wires mode not supported in SPI slave

    5550
    Fix bug in K64F trng_api.c

    5531
    RTL8195AM - refactor bootloader and fota support

    Using this release

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

    Downloads: zip tar.gz

    mbed OS 5.6.5 release

    We are pleased to announce the mbed OS 5.6.5 release is now available.

    Summary

    This patch release includes new target support for the following boards:

    NUCLEO_L496ZG_P
    L-Tek FF-LPC546XX
    Mbed Connect Cloud board
    ADI EV-COG-AD4050LZ
    RedBear BLE Nano 2
    ADI EV-COG-AD3029LZ

    There was a workaround that went into mbed-os-5.6.4 for STM32 F767 rev A devices, to address an issue where the Ethernet peripheral had problems on the RMII interface. This workaround turned out to be an incomplete solution, that has now been corrected for this release.

    We’ve added bootloader support for DISCO_L475VG_IOT01A and HEXIWEAR, CAN3 support for STM32 and initial
    cryptographic acceleration support for the Silicon Labs family.

    We’ve made some quality improvements by extending the test set for Ticker class, updating the BLE
    BatteryService documentation and fixing a number of broken test cases.

    We have also added a number of other bug fixes.

    Known Issues

    There are no new known issues with this release.

    Contents

    Ports for Upcoming Targets

    5424
    NUCLEO_L496ZG_P support

    5344
    add new target L-Tek FF-LPC546XX

    5305
    New Target: Mbed Connect Cloud board

    5144
    Add support for ADI EV-COG-AD4050LZ platform.

    5231
    Add support for RedBear’s BLE Nano 2

    5137
    Add support for ADI EV-COG-AD3029LZ platform

    Fixes and Changes

    5291
    Add RealTek WiFi test configuration

    5394
    ONSEMI: Fix a few issues related to I2C

    5445
    test: realtek net config default to none

    5463
    STM32F412 IAR linker file issue

    5455
    STM32 Flash 2MB GetSector fix

    5453
    Increase flash size on Realtek RTL8195AM

    5436
    STM32: Extend Ethernet RMII workaround

    5430
    malloc test: change stack array to two dimensional array

    5428
    Shrink RTOS classes

    5425
    RtosTimer tests update

    5422
    Add bootloader support for DISCO_L475VG_IOT01A

    5270
    Fix for Nanostack threading on EFR32 devices

    5390
    ncs36510: fire interrupt correct timer fix

    5372
    Doxygen comments fixes

    5370
    event queue test: fix out of memory for NUCLEO_F070RB

    5322
    LPC1768: Fix ETHMEM_SECTION placement for ARM

    5319
    Remove build warnings in LWIP

    5432
    HEXIWEAR: define HEXIWEAR target to support bootloader.

    5464
    Fix lockup issue for REALTEK_RTL8195AM

    5473
    Reorganize defines for firmware updates on Realtek RTL8195AM

    5474
    Limit size of equeue for sigio netsocket test

    5510
    M487/NUC472/NANO130: fix TRUE/FALSE redefinition

    5505
    STM32: HAL smartcard, fix memory corruption in Receive

    5499
    Remove mbed-cloud-client-example-internal.

    5486
    STM32: Add support of CAN3

    5487
    Fix bug for issue: initial pin value not retained

    5482
    DISCO_L072CZ_LRWAN1: HSE clock configuration improvement

    5472
    BLE: Update BatteryService documentation.

    5452
    ONSEMI: Fix I2C issues

    5403
    Provide fixes for Timer and LowPowerTimer tests.

    5261
    Extends test set for Ticker class

    4825
    Silicon Labs: Add cryptographic acceleration support

    5335
    Fix for configurable network driver tests

    5547
    Revert Shrink RTOS classes

    Using this release

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

    Downloads: zip tar.gz

    mbed OS 5.6.4 release

    We are pleased to announce the mbed OS 5.6.4 release is now available.

    Summary

    This patch release includes new target support for LPC1769 and NUCLEO_L496ZG.

    There was an issue on the NUCLEO F767ZI (5294) where ‘Error -3004’
    was returned while trying to establish a socket connection. We have added a workaround to fix this issue. A full
    solution will be available in a later revision of STM32 F767 MCUs.

    A number of tests, (race, semaphore, mail and malloc) for the NUCLEO_F070RB were failing with ‘out of memory’ errors.
    These have been fixed. We have also improved our RTOS testing by adding a new MemoryPool test.

    IAR exporter support has been added for TMPM066 and FLASH hal support has been added for DISCO_L475VG_IOT01A and DISCO_L072CZ_LRWAN1.

    We have also added a number of other bug fixes and tool improvements.

    Known Issues

    The following list of known issues apply to this release:

    Contents

    Ports for Upcoming Targets

    5025
    LPC1769 port

    4650
    NUCLEO_L496ZG: Add new Platform

    Fixes and Changes

    5354
    Activate FLASH hal support on 2 STM32 boards

    5179
    STM32: TRNG: remove call to deprecated HAL_RNG_GetRandomNumber

    5188
    NUCLEO_F207ZG: Analogout improvement

    5260
    RTL8195AM - Fix IAR ielftool zero-padding issue

    5317
    Tools: Check for toolchain and core support for Arm Compilers

    5340
    MCUXpresso: Fix issue of ticker interrupt incorrectly firing

    5347
    MCUXpresso: Fix LPTimer issue when using multiple timeout objects

    5324
    doxygen: Change FileSystemHandle group to platform

    5352
    Fix us_ticker collision and race for RTL8195AM

    5327
    STM32: Remove compilation warnings

    4936
    Add MemoryPool test.

    5320
    Fix ethernet API build warnings for LPC4088

    5332
    Improve domain handling and status checking of updated examples.

    5375
    ChainingBlockDevice: fix changing blocks address

    5376
    mail test: fix out of memory problem for NUCLEO_F070RB

    5377
    semaphore test: fix out of memory problem for NUCLEO_F070RB

    5415
    Remove include from assember in makefile exporter

    5359
    Support TMPM066 in IAR export

    5379
    race test: fix out of memory problem for NUCLEO_F070RB

    5391
    Copy edit pull_request_template.md

    5395
    Resolve doxygen warning in filesystems docs

    5047
    Test set for LowPowerTicker class

    5373
    fs: Correct errno when not finding a mounted filesystem

    5399
    STM32F4/STM32L4: remove MSP template file

    5338
    malloc test: fix out of memory problem for NUCLEO_F070RB

    5400
    Beetle BLE: Fix variable length GATT attribute

    5405
    Ensure Thread stack is 8 byte aligned

    5409
    BLE: Update iBeacon documentation.

    5411
    STM32: Ethernet: Workaround for STM32_F767 revA

    5413
    Collect build artifacts, disable cleanup

    Using this release

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

    Downloads: zip tar.gz

    mbed OS 5.6.3 release

    We are pleased to announce the mbed OS 5.6.3 release is now available.

    Summary

    This patch release includes new target support for the SILICA_SENSOR_NODE.

    We have included an update of the uVisor to v0.31.0. This provides a new static debug box, along with
    some stability enhancements.

    There is an update of the u-blox ODIN-W2 binaries to 2.2 rc1, bringing a fix for a major issue, where a new instance of the OdinWiFiInterface manipulates the system event queue, in such a way that a previous configuration is lost (5211). It also contains an update for RED compliance.

    We have added bootloader support for Lpc1768, NUCLEO_F446RE and K66F. We’ve also added exporter support for the NUCLEO_L486RG.

    In Mbed OS 5.6.2 there was an issue where the default lwIP pbuf pool size was configured to be too small to hold a single DTLS handshake flight, thus causing some connections to fail during the handshaking phase. We have now made this user configurable by adding pbuf-pool-size, pbuf-pool-bufsize and mem-size to the mbed_lib json file for the lwIP interface.

    To further improve our code quality, we have increased our test coverage, adding: * Functional Wifi tests * A low power timer test * Timer class test * Rtostimer tests

    There are also a number of other fixes which are listed below.

    Known Issues

    None

    Contents

    Ports for Upcoming Targets

    5104
    add support for SILICA_SENSOR_NODE platform

    Fixes and Changes

    5038
    Lpc1768 bootloader support

    5077
    Added interface version information to mbed detect command.

    5084
    Allow exporters for NUCLEO_L486RG

    5199
    Add quotes to preprocessor path on export

    5212
    Merging changes from ATParser towards parser unification

    5255
    Prevent use of deleted ticker in Ticker test

    5019
    Fix an incorrect comment in ticker API

    5157
    NUC472/M453/M487/NANO130: Add updates for Nuvoton targets

    5161
    Implement functional Wifi tests

    5192
    Moved STDIO_UART defines for UBLOX_EVK_ODIN_W2

    5232
    RTL8195AM - Fix and cleanup mbed_rtx.h

    5229
    Fix documentation of BLE GattCharacteristic

    5272
    Fix echo test handshake and reduce uart load

    4898
    Enable crypto HW acceleration for STM32F437xG platforms

    4971
    Add test for Timer class.

    5086
    Sleep: Disallow sleep for targets turning off the systick clock at sleep entry

    5147
    Test: deepsleep() API replacement

    5187
    nRFx: Use us ticker for I2C timeout

    5216
    Avoid wait_ms() spin

    5074
    Add Low Power Timer test.

    5223
    Fix analogin scaling for EFM32 target

    5224
    Fix branch updates and make Linux compatible

    5228
    Add bootloaderd support to NUCLEO_F446RE target

    5247
    Add profile argument to mbed-os example build tools

    5250
    lwIP: Add memory configs to JSON

    5252
    Enable MPL by default for 6LoWPAN-ND.

    5263
    STM32: Fix analogout structure/variable wrong initialization

    5264
    Error if OS tickrate is changed

    5269
    STM32: Initialize RTC structures at init phase.

    5287
    Updated u-blox ODIN-W2 binaries to 2.2 rc1

    5288
    STM32: Add alternate pins on NUCLEO 32pins boards

    5289
    STM32: RTC: Call irq_handler whenever interrupt fires

    5292
    Update HeapBlockDevice example

    5275
    uVisor: Upgrade to v0.31.0

    5337
    Add additional note on the HeapBlockDevice constructor block parameter

    5315
    Fix behaviour of empty .mbedignore

    5246
    Remove debug print from memap IAR impl

    5243
    Basic test refactoring

    4989
    add flash iap and bootloader support to K66F

    4947
    Rtostimer tests

    5042
    RTL8195AM - Respect Toolchains paths in post bulid script.

    5081
    Extends test set for EventFlags class

    5278
    Move heap_and_stack tests to TESTS/mbed_bootstrap

    5326
    Remove redundant ISR test.

    Using this release

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

    Downloads: zip tar.gz

    We are pleased to announce the mbed OS 5.6.2 release is now available.

    Summary

    This patch release includes an update for Nanostack to v6.2.2, bringing with it some TCP protocol improvements.

    There were a couple of issues found with deepsleep in mbed-os-5.6.1:

    1) deepsleep being left locked unintentionally,

    2) deepsleep locks not being properly released by the timer class.

    These have now been fixed.

    The K66F has been updated to SDK 2.2 providing necessary updates for the DSPI HAL and Flash HAL drivers.

    In BLE, a flush method has been added to the UART service giving the ability to force send the buffer contents.

    A number of filesystem issues have been fixed including:

    1) adding missing retarget definitions that were available for GCC but not for ARM/IAR compilers,

    2) a fix to fstat to enable seek and related functions to work correctly,

    3) a fix for the case where a directory was not left in an openable state when a previous open operation had
    failed.

    There are also a number of other fixes which are listed below.

    Known Issues

    There are no known issues applying to this release.

    Contents

    Ports for Upcoming Targets

    None

    Fixes and Changes

    4959
    e2 studio exporter update

    4994
    missing includes for filesystem.cpp (build with VisualGDB fails)

    5166
    Force preprocessing of asm for make_armc5

    5165
    Platform: Replace non throwing versions of new operator.

    5197
    Fix LPC54114 vector table size

    4961
    Check for mbed 5 support on export

    4979
    STM32: USBDevice files clean-up

    4982
    Update K66F to SDK 2.2

    5016
    Fix cellular APN_db.h lookup.

    5032
    mts targets: fix debug() usage

    5095
    Release deep sleep lock in destructor of Timer class

    5177
    PWMOut: lock deesleep addition

    5027
    cb: Fix uninitialized memory used for equality check

    5026
    STM32: Lock / Unlock flash for each operation

    5171
    STM32L432KC: increase RAM size from 48k to 64k

    5183
    fs: Fix dir open during failure condition

    4990
    Add flush to the BLE UART Service

    5045
    Ticker class description update - small interval warning

    5050
    RZ_A1H: Correct CAN Message ID and recetption rate in extended mode

    5062
    InterruptIn: Use NULL callback by default

    5099
    Move clock() function from mbed_rtc_time.cpp to mbed_retarget.cpp.

    5193
    Omit libraries and tests from tools coverage numbers

    4795
    Add configurable network driver tests

    5066
    UARTSerial: Avoid readable() ambiguity

    5148
    Enable deepsleep for LowPowerXXX objects

    5006
    Extends test set for Ticker class

    5029
    Adjust whitespace in Odin PinNames file to fit verbose LED pin mappings

    5033
    Mapped lwip buffer error to nsapi no memory error

    5052
    Support VK_RZ_A1H with ds5 & e2studio exporters

    5078
    Enable access to kernel tick information in ISR

    5141
    LPC54608: Swap LED pin connections to match naming on the board

    5152
    Kinetis RTC HAL: Allow writing 0 to the seconds register

    5176
    EFM32: fix fire interrupt (set flags)

    5182
    tools/toolhains - Test for flag passing in constructor

    5089
    STM32 : Disable HSE XTAL choice from the default clock source

    5098
    Doxygen comment fix for Thread class

    5105
    Cortex-M33: Add RTX5 context switcher files

    5130
    STM32: Freeze master timer on stop/breakpoint

    5194
    Ensure us_ticker is initialized before it is used

    5207
    NRF5x: Don’t allocate GPIOTE in DigitalIn

    5208
    STM32F7 : Fix RTC Wake Up Timer issue

    5162
    Change LPC54608 to LPC546XX to include support for LPC54608/18/28

    5242
    Fix LowPowerTimer and nightly builds

    5249
    Nanostack v6.2.2

    5220
    Fix deep sleep lock bugs

    5203
    fs: Fix fstat retarget for regular files

    5237
    examples: remove eddystone ble examples

    5240
    Add retry to handle git clone failure

    5204
    fs: Add missing retarget definitions for ARM/IAR

    Using this release

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

    Downloads: zip tar.gz

    We are pleased to announce the mbed OS 5.6.1 release is now available.

    This release includes new target support for the L-TEK FF1705, a critical workaround to issue #5079
    (MD5, SHA1 and SHA256 hardware acceleration not working for STM32F439xI), plus numerous bug fixes to
    improve the code quality and stability.

    Known Issues

    The following list of known issues apply to this release:

    5145
    make_armc5 exporter does not support NUCLEO_F767ZI, NUCLEO_F401RE and DISCO_L476VG

    Contents

    Ports for Upcoming Targets

    4973
    Add new target: L-TEK FF1705

    Fixes and Changes

    4980
    Stm32 flash update

    5138
    Fix redefinition of mbed TLS error codes

    5143
    RTL8195AM - Fix us_ticker porting

    4932
    Fix STM32 CAN reset to not lose context

    5061
    Travis: Fix requirements install

    5018
    Fix use of AES_ALT on STM32F439 for example-tls-client

    5080
    mbedtls: Disable MD5, SHA1, SHA256 HW ACC for STM32F439xI

    5096
    Remove direct use of us and lp ticker from tests

    4983
    bd: Tweaked block device API to fit SD cards and FTLs better

    5000
    flash: add note about program size

    4993
    LPC1768 IAP Fix

    4684
    Add thread terminate hook

    4968
    Add bootloader support for NXP FRDM-KW24D

    4965
    Add heap stats for IAR

    4779
    Fixed sw4stm32 exporter

    Using this release

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

    Please feel free to ask any questions or provide feedback on this release on the forum,
    or to contact us at support@mbed.org.

  • mbed-os-5.6.0

    Downloads: zip tar.gz

    About this release

    The Arm Mbed OS 5.6.0 release helps to further simplify the internet of things (IoT) and embedded product development with the addition of several new features, such as tickless RTOS scheduler support to enable long periods of low-power sleep and IPv6 support to cellular stack to provide enhanced web connectivity. The release also adds several new drivers and platform APIs, support for IAR Embedded Workbench v8.1 and hardware security enhancements. In addition, this release contains many minor fixes and enhancements and brings support for 93 target development boards. In the release note below, we summarize some of the key updates to Mbed OS as a part of the Mbed OS 5.6.0 release.

    One additional change you may have noticed is developer.mbed.org is now os.mbed.com. We have updated our URL for consistency across the website. The community should experience no significant changes or issues due to this change because all redirects are in place.

    Core OS

    Tickless RTOS Scheduler

    Power consumption is one of the most important design requirements for IoT devices. Meeting the power budget is becoming very challenging as the systems today include more sensors, faster responses and more connectivity. Mbed OS introduces the Tickless RTOS Scheduler to help achieve the design of low power systems.

    Support Tickless Operation: In tickless operation, you don’t have to make a tradeoff between high-frequency timing interval, which consumes more power, and low-frequency timing interval, which results in suboptimal time keeping, because the scheduler schedules the next timer tick in response to the next event rather than a fixed timer tick.

    Integration with Mbed OS: The Tickless RTOS Scheduler is integrated in the native OS and based on the low power ticker. The Tickless RTOS Scheduler is already integrated in the Ticker API. The specifications are released to help other boards support the implementation of the low power timer and Tickless scheduler. We are working with Mbed silicon partners to enable support for the Tickless Scheduler on all Mbed Enabled boards.

    Support for Arm Cortex-M23 and Cortex-M33 devices

    Connected devices are growing at a fast pace, and according to Gartner, there will be more than 20 billion connected devices by 2020. As the number of IoT devices grows, the devices are becoming an increasingly attractive target for cybercriminals. Security is becoming one the most important product requirements for IoT devices. Arm has announced Arm Cortex-M23 and Cortex-M33 processor architecture, which includes TrustZone for Armv8-M and provides hardware-enforced isolation between trusted and untrusted resources while maintaining the efficient exception handling and determinism that have been the hallmark of all Cortex-M processors.

    Mbed OS 5.6.0 release provides initial support for Arm Cortex-M23 and Cortex-M33 based devices. This release includes support for RTX and tools for GCC only. This release is an instrumental step in supporting upcoming Arm Cortex-M23 and Cortex-M33 MCUs. You will benefit from support for Arm Cortex-M23 and Cortex-M33 as the new development boards including those processors start to come out.

    New drivers and platform APIs

    In the Mbed OS 5.6.0 release, we have also added several new drivers and platform APIs. Following are some of the notable additions.

    CriticalSectionLock Class: CriticalSectionLock class enables the code to run with interrupts disabled. More information is available in the API.

    DeepSleepLock Class: DeepSleepLock class enables the code to run with deep sleep locked. More information is available in the API.

    Mbed_error: Mbed_error prevents recursion if error is called again. More information is available in the API.

    NonCopyable Class: NonCopyable class allows the creation of classes whose objects cannot be constructed using a copy constructor or assigned to another. It forces the classes copy constructors to be private. More information is available in the API.

    Apart from the features described above, Mbed OS 5.6.0 also includes several new features, improvements in current APIs and HAL specification to ensure cross platform support of all APIs. You can find all the changes on GitHub.

    Connectivity

    Cellular stack now supports IPv6 along with previous IPv4

    Cellular connectivity is widely used for connecting IoT devices. It is prominent in mobility, such as smart cars, and devices operating in remote areas, such as oil fields. According to Ericsson, 10% of all IoT devices by 2021 will be connected by cellular connectivity.

    Mbed OS already includes the cellular point to point stack with IPv4 connectivity, and in Mbed 5.6.0, we are releasing cellular stack supporting IPv6. IPv6 is being widely adopted because it allows almost unlimited (3.4*10^38) addresses, and IPv4 only allows up to 4.3 billion addresses. More information is available in the cellular documentation.

    Security

    Update to Mbed TLS 2.6.0

    Mbed TLS is an open source, portable, easy to use, readable and flexible SSL library. It enables you to include cryptographic and SSL/TLS capabilities in your embedded products.

    The Mbed OS 5.6.0 release supports the latest release of Mbed TLS 2.6.0. The Mbed TLS 2.6.0 fixes an authentication bypass issue in SSL/TLS. More Mbed security information is available in the security documentation.

    Targets and tools

    Thanks to our partners’ hard work, Mbed OS 5.6 adds eight new target platforms and now supports 93 target platforms. We’ll continue to add targets in our biweekly patch releases as partners work with us on support.

    Support for IAR Embedded Workbench for Arm v8.1

    Mbed OS 5.6.0 enables initial support to IAR Embedded Workbench for Arm v8.1, which is the latest IAR compiler to support Arm MCUs. Although the default compiler version for IAR remains 7.8.x, you can also build the codebase using IAR 8.1 (builds without dependencies on archives). The current support for IAR Embedded Workbench for Arm v8.1 is limited only to the Mbed CLI tool, and we plan to migrate to the IAR Embedded Workbench for Arm v8.1 as a default IAR toolchain in Mbed OS release 5.7.0.

    Support for Arm Compiler 6

    Mbed OS 5.6.0 adds early support for the latest and most efficient version of the Arm compiler, the Arm Compiler 6. This version is based on the LVVM framework, optimized to best use hardware features. You can read about the Arm Compiler 6. The current support for Arm Compiler 6 is limited only to the Mbed CLI tool, and we plan to migrate to Arm Compiler 6 as a default in Mbed OS release 5.7.0.

    Testing

    Mbed OS is designed to significantly reduce cost and time for embedded software development by providing production quality code and toolset. We are committed to delivering high-quality code working across all supported boards and platforms. To ensure that all the features of the code meet our quality control requirements, we have built an automated testing environment and processes that perform rigorous testing on the code. Following are some of the highlights of our testing framework.

    Continuous integration framework:

    The continuous integration framework is designed to make sure that every new feature and change in Mbed OS is tested to ensure:

    • For every new feature, we create tests that we then deliver to our partners. For every board to be Mbed Enabled, we need our partners to successfully conduct these tests.
    • Partners test the changes on their board before submitting a Pull Request (PR) on GitHub.
    • Once the PR is submitted, then the gatekeepers manually review the code to make sure it meets all the coding guidelines and code standards.
    • Once approved by gatekeepers, the code goes through the automated test setup where code is added to Mbed OS for testing and examples built across all the platforms, such as IAR, ARM and GCC.
    • During the testing phase, we select the combination of boards and devices that support a variety of peripherals, MCU cores and features to select maximum coverage.
    • To make sure that the Mbed OS code is compatible with all the IDEs, we test that the code exports properly to all the compilers.
    • We merge the PR only if the all the above is successful.

    Following are the summary results for testing conducted for Mbed OS 5.6.0.
    - Total test time is 5,770 hours on actual development boards.
    - We have added 94 new test cases since the Mbed OS 5.5.0 release to test new and existing features on Mbed OS. The number of total test cases is 312.
    - We performed 361,440 example builds since the Mbed OS 5.5.0 release.
    - The total number of binaries built is 12,826,080 since the Mbed OS 5.5.0 release.

    We plan to share more details about testing processes, such as our out of box testing coverage and system testing, in upcoming release blogs.

    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 document is to provide a single view of the outstanding key issues that have not been addressed for this release. 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 forums.

    Handshake Messages are not fragmented as per MaxFragmentLength Extension Negotiation

    • Description: “Once a maximum fragment length other than 2^14 has been successfully negotiated, the client and server MUST immediately begin fragmenting messages (including handshake messages) to ensure that no fragment larger than the negotiated length is sent. ” In Mbed TLS, only the application data is fragmented and the handshake messages are not.
    • Workaround: Disable MaxFragmentLength Extension Negotiation.
    • Reported Issue: https://github.com/ARMmbed/mbedtls/issues/387
    • Priority: MAJOR

    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 at your own responsibility!
    • Reported Issue: Issue reported by a customer in email.
    • Priority: MAJOR

    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

    Mbed TLS causes stack overflow in Mbed OS targets

    • Description: The stack memory usage of some Mbed TLS features is higher than 4 KB, which may cause stack overflow errors when running with Mbed OS in constrained embedded environments, which are particularly limited in RAM.
    • Workaround: The amount of stack required depends on the application and what features of the library it chooses to use. More intensive, demanding tasks may not be possible on more limited, constrained devices, so we recommend designing for the limitations of the target device or choosing a device suitable for your application.
    • Reported Issue: https://github.com/ARMmbed/mbed-os-example-tls/issues/14
    • Priority: MAJOR

    Commissioner does not retransmit message when it receives retransmission

    • Description: There are two issues with DTLS handshake retransmission. First, the joiner fails to correctly parse received records because it does not correctly handle queued retransmissions received. Second, the commissioner may cause a deadlock as it does not retransmit certain records after it receives retransmission as instructed in RFC6347 Section 4.2.4.
    • Workaround: There is no known workaround.
    • Reported Issue: https://github.com/openthread/openthread/pull/1207
    • Priority: MAJOR

    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

    uVisor does not support nested interrupts

    • Description: When running an application with uVisor enabled, nested interrupts are not supported.
    • Workaround: There is no available workaround at the moment.
    • Reported Issue: https://github.com/ARMmbed/uvisor/issues/345
    • Priority: Major

    On ARMv7-M targets supporting uVisor, the RTOS runs with the same privilege of uVisor

    • Description: The current architecture of uVisor and of RTX require the RTOS to run with the same privilege of uVisor. As such, the RTOS is considered as trusted.
    • Workaround: There is no available workaround at the moment.
    • Reported Issue: https://github.com/ARMmbed/uvisor/issues/235
    • Priority: Major

    Mesh networking applications fail to compile with IAR on non-secure platform

    • Description: If the target has no defined hardware entropy module, then Mbed TLS support is disabled on the build time. This leads to compilation warnings on some Nanostack related modules and compilation failure when using IAR toolchain.
    • Workaround: There is no available workaround at the moment.
    • Reported Issue: https://github.com/ARMmbed/mbed-os-example-mesh-minimal/issues/91
    • Priority: Major

    UARTSerial asserts if debug is enabled

    • Description: UARTSerial attempts to claim a mutex from interrupt context. If debug is not enabled, this fails silently, and the driver works as intended. If debug is enabled, the system stops in the assert.
    • Workaround: Turn off the debug build.
    • Reported Issue: https://github.com/ARMmbed/mbed-os/issues/4537
    • Priority: Major

    Link in GettingStarted.html generated by mbed export is incorrect

    • Description: The link generated by mbed export in the file GettingStarted.html is out of date.
    • Workaround: Navigate to the correct document by going to the Handbook and selecting “Third party development tools” in the “Development tools and aids” section.
    • Reported Issue: https://github.com/ARMmbed/mbed-os/issues/5149
    • Priority: Minor

    Assembling fails for make_armc5 exporter in Windows upon update of Mbed OS

    • Description: After updating Mbed OS on Windows and exporting to make_armc5, the assembler will complain of Invalid line start and Unknown opcode __FPU_PRESENT.
    • Workaround: Remove the mbed-os directory, and recreate it from the upstream mbed-os Git repo.
    • Reported Issue: https://github.com/ARMmbed/mbed-os/issues/5145
    • Priority: Minor

    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

    Ublox EVK ODIN W2 serial baud rate mismatch

    • Description: The default serial port produces incorrect output.
    • Workaround: None.
    • Reported Issue: https://github.com/ARMmbed/mbed-os-example-wifi/issues/58
    • Priority: Major

    The default address (ff03::1) cannot work for multicast

    • Description: The default address works with Thread but not 6LoWPAN.
    • Workaround: None.
    • Reported Issue: https://github.com/ARMmbed/mbed-os-example-mesh-minimal/issues/130
    • Priority: Major

    Ports for upcoming targets

    4631 Add new target NUMAKER_PFM_NANO130

    Fixes and changes

    This is the full list of changes available in this release.

    4518 Add new target in mbedtls importer Makefile for mbedtls tests

    4644 Ticker: add fire interrupt now function

    4814 Merge lwip 2.0.2 stable

    4809 STM32: Align HAL & US tickers

    4517 Add cpp API for CMSIS OS 2 EventFlags

    4908 fs: Add FileSystem::reformat

    4920 Modify LED error sequence to be more recognisable

    4960 Nanostack update for mbed-os-5.6

    5003 Move Cortex specific RTX behind TARGET_CORTEX

    4962 platform: add CriticalSectionLock

    4843 fatfs: Add lower bound to block sizes

    4911 Support cellular IPv4v6 dual stack in LWIP

    4907 Update uVisor to v0.30.0

    4580 Use EventFlags instead of Semaphores

    4406 mbed_events.h: Add ability to request a shared event queue

    5037 Revert “Adjusting Stack size Allocation (IAR, LPC176x)”

    5030 Export uVision linker flags so that bootloader projects build correctly

    4912 Add sleep manager API

    4916 Add mcuxpresso exporter

    5055 Travis: fix the latest breakage - use group:

    4991 Add tickless to some mbed-os devices

    5012 STM32_us_ticker_16b: keep code to cope with past event

    4938 Update IAR to version 8

    5063 Fixing lp ticker and sleep manager tests

    4875 Initial support for Cortex M-23/M-33 devices.

    4987 Update mbed TLS to version 2.6.0

    5073 use gcc assembly for arm 6

    4949 NEW TOOLCHAIN: Add the ARMC6 Compiler

    5093 Disable response files on export

    5090 Correct long call macros for ARMC6

    5111 Emit dependency information with ARMC6

    5069 Changed error print to assert

    5107 mbed_rtx_idle: uVisor: Don’t attempt to sleep

    5122 update server name to os.mbed.com

    5103 Parse libraries with memap-arm

    5116 Separate string literal from macro

    5132 Fix MBED_ VERSION

    5091 Correct booting on Nordic devices with ARMC6

    5094 ARMC6 support for Cortex-M23

    5044 Realtek_RTL8195AM fix for debug profile

    5125 Refactor memap for speed

    The upgrade should be generally transparent to developers using the Mbed OS RTOS APIs, but please report in the forums or contact us at support@mbed.com if you have any issues in this area.

    Using the release

    You can fetch the latest version of the Mbed OS 5.6 release from the mbed-os GitHub repository using this branch.

  • mbed-os-5.5.7

    Downloads: zip tar.gz

    We are pleased to announce the mbed OS 5.5.7 release is now available.

    This release includes an update for mbed-coap to version 4.0.10, bootloader support for DISCO_L476VG and a critical workaround for ‘STM32F439xI-family AES hardware acceleration occasionally produces incorrect output (#4928)’ (achieved by disabling AES acceleration by default). There are also numerous bug fixes and code enhancements.

    Known Issues

    The following list of known issues apply to this release:

    Contents

    Ports for Upcoming Targets

    Fixes and Changes

    4977
    disable -f option for assembly files for IAR

    4944
    STM32: F1 GPIO: Enable AFIO clock

    4950
    M487: Support USB device/host

    4951
    UBLOX_EVK_ODIN_W2- add BUTTON1/2 definitions

    4954
    Fix ISR powerdown in mbed_application.c

    4934
    mbedtls: STM32F439xI: Don’t enable AES acceleration by default

    5001
    Update mbed-coap to version 4.0.10

    4933
    test: fix stats depth variable scope

    4963
    K66F,KW24D,K22F,K64F: Fix NVIC_NUM_VECTORS value

    4939
    Fix crashes on boot on some Kinetis devices

    4929
    STM32F4: Increase ADC sample time for VREF

    4945
    Extends test set for Mail class

    4975
    Stm32 spi 3 wires mode support

    4992
    Fix BLE API docs

    4995
    Add LED color remapping definitions to Odin target

    4996
    Reduce K64F Ethernet driver to 1 thread

    4997
    Correct LWIP_DEBUG definition

    5013
    MTS targets: Don’t use any printf() calls when NDEBUG is defined

    4924
    Adjust Stack size Allocation (IAR, LPC176x)

    4776
    Remove use of internal RTX types

    4881
    [STM32F401xE] Freeze master timer on stop/breakpoint

    4984
    Unify mbed OS tools testing style with what’s used in mbed-ls, htrun, greentea

    4665
    Enable sdram usage of REALTEK_RTL8195AM

    4958
    Add bootloader support for DISCO_L476VG

    5055
    Travis: fix the latest breakage - use group:

    Using this release

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

    Please feel free to ask any questions or provide feedback on this release on the forum,
    or to contact us at support@mbed.org.

  • mbed-os-5.5.6

    Downloads: zip tar.gz

    We are pleased to announce the mbed OS 5.5.6 release is now available.

    This release includes support for new targets NUMAKER_PFM_M487 and TOSHIBA TMPM066, an
    update of mbed-coap to version 4.0.9, plus numerous bug fixes to improve code reliability.

    Known Issues

    The following list of known issues apply to this release:

    4928
    AES hardware acceleration not working for STM32F439xI

    Ports for Upcoming Targets

    4608
    Support Nuvoton’s new target NUMAKER_PFM_M487

    4840
    Add Support for TOSHIBA TMPM066 board

    Fixes and Changes

    4801
    STM32 CAN: Fix issue with speed function calculation

    4808
    Make HAL & US tickers idle safe

    4812
    Use DSPI SDK driver API’s in SPI HAL driver

    4832
    NUC472/M453: Fix several startup and hal bugs

    4842
    Add call to DAC_Enable as this is no longer done as part

    4849
    Allow using of malloc() for reserving the Nanostack’s heap.

    4850
    Add list of defines to vscode exporter

    4863
    Optimize memory usage of wifi scan for REALTEK_RTW8195AM

    4869
    HAL LPCs SPI: Fix mask bits for SPI clock rate

    4873
    Fix Cortex-A cache file

    4878
    STM32 : Separate internal ADC channels with new pinmap

    4392
    Enhance memap, and configure depth level

    4895
    Turn on doxygen for DEVICE_* features

    4817
    Move RTX error handlers into RTX handler file

    4902
    Using CMSIS/RTX Exclusive access macro

    4923
    fix export static_files to zip

    4844
    bd: Add ProfilingBlockDevice for measuring higher-level applications

    4896
    target BLUEPILL_F103C8 compile fix

    4921
    Update gcc-arm-embedded PPA in Travis

    4926
    STM32L053x8: Refactor NUCLEO_L053R8 and DISCO_L053C8 targets

    4831
    Remove excessive use of printf/scanf in mbed_fdopen/_open

    4922
    bug fix: xdot clock config

    4935
    STM32: fix F410RB vectors size

    4940
    Update mbed-coap to version 4.0.9

    4941
    Update of MemoryPool.h header file.

    Using this release

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

    Please feel free to ask any questions or provide feedback on this release on the forum,
    or to contact us at support@mbed.org.

  • mbed-os-5.5.5

    Downloads: zip tar.gz

    We are pleased to announce the mbed OS 5.5.5 release is now available.

    This release includes:
    - mbedTLS SHA1 and SHA256 hw acceleration for NUCLEO_F756ZG
    - Crypto HW acceleration for UBLOX_EVK_ODIN_W2
    - Updating mbed-coap to version 4.0.8
    - Bootloader support for the UBLOX_C030 and NUCLEO_F412ZG platforms
    - Numerous bug fixes and enhancements to improve the stability and functionality of the code.

    Known Issues:

    • None

    Ports for Upcoming Targets:

    • None

    Fixes and Changes:

    • 4623 Improve management handling of multiple instances of analogin ojects
    • 4398 MAX326xx: BLE updates, fixed sleep, open-drain LEDs
    • 4158 NUCLEO_F756ZG / mbedTLS_SHA1 hw acceleration
    • 4750 Enable crypto HW acceleration for UBLOX_EVK_ODIN_W2
    • 4162 NUCLEO_F756ZG/mbedtls: Add hw acceleration for SHA256
    • 4690 test: add us ticker test
    • 4752 RTOS: Queue tests & docs rework
    • 4835 Add bootloader support for the UBLOX_C030 platforms.
    • 4854 NUCLEO_F412ZG add flash driver and bootloader support
    • 4868 STM32F437: remove flash api implementation
    • 4805 K64F: Update the DSPI SDK driver to support the new API to change DUM
    • 4695 F756/F439: add mbedtls md5 hash feature
    • 4833 Updating mbed-coap to version 4.0.8
    • 4822 fix unresolved linker msg: __wrap_
    • 4828 Enhancement - exporter/cdt
    • 4836 mbed exporter: Add IAR support for various NXP platforms
    • 4851 STM32F4_HAL_MMC erase command check is wrong. == has higher precedence than &
    • 4852 SAM_CortexM0P uses uninitialized memory in i2c and uses out of bounds array in pwmout
    • 4857 DISCO_L475VG_IOT01A: Add support of USBHost
    • 4859 Add copyright header to all tests
    • 4813 Dual Flash and Hex file support on NCS36510

    Using the release

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

    Please feel free to ask any questions or provide feedback on this release on the forum. You can also contact us at support@mbed.org.

  • mbed-os-5.5.4

    Downloads: zip tar.gz

    We are pleased to announce the mbed OS 5.5.4 release is now available. This release includes 3 new targets: LPCXpresso54114, LPCXpresso54608 and VBLUno52.

    Here is a full list of all changes and fixes in this release…

    Ports for Upcoming Targets

    4290
    Add mbed support for LPCXpresso54114 & LPCXpresso54608 boards

    4765
    Add support for the VBLUno52 board

    Fixes and Changes

    4620
    Extend tests for RTOS Thread class

    4640
    STM32L1 Flash API and xDot bootloader support

    4664
    STM32: Fix the CAN initializing to the wrong frequency

    4676
    Correctly enable / disable InterruptIn Edges detection

    4682
    Test: RTOS: Semaphore: Rework tests

    4687
    STM: cleanup mbed_rtx.h file

    4708
    Enable greentea testing on CM3DS_MPS2 target

    4733
    Prevent double define in very old builds

    4718
    Toolchain: Add a note about weak functions and header files

    4732
    Correct DAC pin assignment

    4727
    Update UART3 pins for UBLOX_C030 platform.

    4745
    WIZnet W7500*: Remove support for RTC

    4751
    Remove redundant ODIN-W2 target folder

    4662
    BLE/HRM : Fix #4661

    4740
    STM32 : Clock source selection in json config file (PR2)

    4696
    Max32630 UART: Fix IRQ dispatching and CTS/RTS line configuration

    4615
    Add set_baud() method to UARTSerial().

    4706
    Fix inconsistent mbed-trace dummy defines and original function declarations

    4721
    REALTEK_RTL8195AM: FlashIAP read and address scope

    4717
    STM32: Remove i2c_read() and i2c_write() redirects to HAL_I2C_IsDeviceReady()

    4726
    Update ATCmdParser example code

    4731
    Boot: Make ARMC library mutexes dynamic

    4734
    Avoid data loss with serial interrupt used at high baudrates

    4754
    Resolve TLS handshake failing issue for REALTEK_RTL8195AM

    4756
    Fix #4613: remove duplicated startup files for MICRONFCBOARD

    4762
    DISCO_L475VG_IOT : pin update

    4764
    STM32F0 : remove unavailable pins

    4774
    Add support for runtime test specification

    4775
    Fix non-portable defines

    4778
    Add AES HW encryption for NUCLEO_F756ZG in mbedtls

    4782
    mbed-hal: Fixed flash test

    4793
    STM32 I2C : correct async issue

    4794
    NUCLEO_F767ZI : boot issue with GCC

    4714
    Expose SystemCoreClock via cmsis.h to support new CMSIS/RTX

    4744
    Allow user to set default transfer byte for block read

    4807
    LPC MCUXpresso: fix write_fill argument for block write function

    4742
    Deprecate unsupported exporters

    4729
    RTOS: Mutex: Rework tests

    4715
    Nanostack+mbed-client libservice update

    4738
    ONME-3113: Fix GCC_ARM and ARM compiler warnings from mbed-mesh-api

    4755
    Bluepill: hse config fix

    4790
    Improve documentation for memory stat ops

    4800
    Fix infinite calling loop

    4804
    Copy static files only

    Using the release

    You can fetch the mbed OS 5.5.4 release from the mbed-os GitHub repository, using the tag “mbed-os-5.5.4”. Please feel free to ask any questions or provide feedback on this release here, or to contact us at support@mbed.org.

  • mbed-os-5.5.3

    Downloads: zip tar.gz

    We are pleased to announce the mbed OS 5.5.3 release is now available. This release includes only bugfixes.

    Here is a full list of all changes and fixes in this release…

    Fixes and Changes

    4446
    Customer port verification tests for cellular

    4531
    Update branching option to branch from another branch.

    4672
    Cellular: not-supported error if MODEM_ON_BOARD not defined

    4468
    Put quotes around include files

    4685
    Rename runnig_thread to running_thread in rtx_mutex

    4163
    STM32L486RG/mbedtls: add aes hw acceleration

    4659
    Add the correct startup s file in TARGET_STM32F767

    4215
    Add script to lint targets.json

    4711
    added the missing verbose=verbose to printout the command line correctly at build_api.py

    4710
    Correct a typo in the github issue template

    4636
    Double escape defines in gnuarmeclipse export

    4635
    _acquire() function added & removed duplication in format/freq calls

    4548
    Resolve Warnings for mbed-os-examples

    4547
    Sort the config parameters before printing them

    4546
    Fix bad test print and move locks for printf into macro.

    4599
    Update timing tests to be robust

    4720
    FlashIAP: Add explicit read function to flash_api.h

    4525
    Improve the startup code on the STM32F070

    4561
    fatfs: Add full support for multiple fs volume prefixes

    4674
    Fix LED4 for UBLOX_EVK_NINA_B1

    4749
    tools: fix toolchain extend inc paths

    4747
    Remove unused header files includes for REALTEK_RTL8195AM

    4736
    NRF52832: Extend idle thread stack size to 512 bytes.

    4707
    STM32: serial: use proper macro to check interrupt

    4699
    STM32L0 : internal ADC channels

    4694
    DISCO_L475VG_IOT01A: typo corrections in PeripheralPins.c

    4693
    Nordic: Fix multiple defined symbol.

    4691
    STM32: F4: Increase ADC sampling time for VBAT

    4677
    Increase default PPP stack size from 512 bytes to 768 bytes.

    4668
    DISCO/NUCLEO_F429ZI: Enable all alternate functions and pins

    4667
    Update and mute debug messages of REALTEK_TRL8195AM

    4666
    Fix timing issues found in “Flash - clock and cache test”

    4652
    fatfs: Fix unaligned access in disk_ioctl

    4592
    [ONME-3089] - Adjust lowpan ND interface connect timeout

    4634
    Fix the issue #4357: NRF52 doesn’t support simultaneous use of I2C and SPI.

    4725
    Parse and use custom targets in exporters

    Using the release

    You can fetch the mbed OS 5.5.3 release from the mbed-os GitHub repository, using the tag “mbed-os-5.5.3”. Please feel free to ask any questions or provide feedback on this release here, or to contact us at support@mbed.org.

  • mbed-os-5.5.2

    Downloads: zip tar.gz

    We are pleased to announce the mbed OS 5.5.2 release is now available. This release includes new target support for DISCO_F413ZH and VBLUno51 and an update for the STM32F7 cube from v1.6.0 to v1.7.0. It also includes SHA256 and SHA1 hw acceleration support for NUCLEO_F439ZI, USB Device for DISCO_L072CZ_LRWAN1, plus a number of fixes to mbed OS and tools to improve stability and functionality.

    Here is a full list of all changes and fixes in this release…

    Ports for Upcoming Targets

    4410
    DISCO_F413ZH: Add new platform

    4629
    Add support for VBLUno51 board

    Known Issues

    Due to a dependency of stm32f413 on a later patch version of IAR which are currently not available in
    our CI systems, IAR export support for this platform is not available for this release.

    4697
    IAR: remove stm32f413 from definitions

    Fixes and Changes

    4578
    Turn off “browse information” in Uvision template

    4616
    Fix unresolved include of mbed_config.h in Eclipse

    4375
    Stm32 spi : use LL API to improve performances

    4401
    STM32 : Add USB used pins in PinNames.h files

    4520
    Update link in CONTRIBUTING.md

    4103
    Add extra_targets.json support to build tools

    4390
    Nucleo-F070RB It doesn’t work when use internal clock

    4405
    DISCO_L072CZ_LRWAN1: PC_13 definition missing in PinNames.h fix

    4426
    Improve directory scanning performance

    4538
    Avoid lock collision b/w SerialBase & UARTSerial

    4552
    NUCLEO_F767ZI: Add missing IAR definitions

    4557
    Enable I2C and Analogin drivers for CM3DS_MPS2 target

    4572
    DISCO_L072CZ_LRWAN1: Add support of USB Device

    4157
    NUCLEO_F439ZI/mbedtls: add SHA1 hw_acceleration

    4422
    STM32F4 set HSE timeout value to 100ms

    4594
    Introduce mbed::NonCopyable traits

    4598
    Fix style issues in IAR exporter

    4604
    cmain IAR: add mbed main

    4607
    bd: Fix missing init in MBRBlockDevice

    4603
    STM32 : mbed_overrides.c is common for all families

    4638
    DISCO_L475VG_IOT01A: Fix startup files for cmsis5

    4610
    STM32 : targets.json file simplification

    4647
    Remove hardcode UART pins definitions for nRF52832 SoC

    4646
    RTX: Fixed RTXv5 mutex owner list handling.

    4625
    Update STM32F7 cube from v1.6.0 to v1.7.0

    4421
    STM32 : Clock source selection in json config file

    4559
    fatfs: Remove unused fat_filesystem_set_errno function

    4571
    events: Adopt osEventFlags from RTX 5

    4577
    XDOT_L151CC: enable HSI after waking from stop mode so ADC functions

    4601
    rtos: Fix MemoryPool and Queue destructor

    4632
    STM32: fix us ticker set event timestamp double ISR possibility

    4641
    Increase L0 ADC sample time

    4656
    Correct comments in flash api for STM32 L0 targets

    4671
    retarget: fix microlib for mbed 2

    4529
    Manage multiple instances of analog out

    4565
    Add FlashIAP support for REALTEK_RTL8195AM

    4159
    NUCLEO_F439ZI/mbedtls: add SHA256 hw_acceleration

    Using the release

    You can fetch the mbed OS 5.5.2 release from the mbed-os GitHub repository, using the tag “mbed-os-5.5.2”. Please feel free to ask any questions or provide feedback on this release here, or to contact us at support@mbed.org.

  • mbed-os-5.5.1

    Downloads: zip tar.gz

    We are pleased to announce the mbed OS 5.5.1 release is now available. This release includes a fix for a critical issue found in mbed-os-5.5.0: 4584 Introduction of RTX/CMSIS 5 has broken semaphore signaling. We have fixed the issue by reverting behavior to how it was in RTX/CMSIS 4.

    The release also includes support for CM3DS_MPS2 and DISCO_L475VG_IOT01A targets, an update to the u-blox ODIN-W2 driver binaries and bug fixes that improve the stability of the tools and codebase.

    Known issues

    The following list of known issues applies to this release:

    4605: Timing tests are unstable on the ARM_BEETLE_SOC

    Here is a full list of all changes and fixes in this release.

    Ports for upcoming targets

    4414: Enable CM3DS_MPS2 target

    4242: DISCO_L475VG_IOT01A: Add new target

    Fixes and changes

    4545: Filter support with a white list of post-bin hooks in uvision

    4544: Export static files from mbed export

    4542: Issue #4528 K82F: Initialize the UART clock inside the board file

    4530: Enable verbose builds when running example build tests

    4516: Check for correct library naming in Travis CI

    4510: u-blox: Rearrange ODIN target

    4502: STM32: serial: Clear Overrun flag if it is set when checking if readable

    4562: fatfs: Fix initialization of block device in mount/unmount functions

    4504: Add reporting of reserved heap in Greentea

    4554: Fix NUCLEO_L476RG linker scripts

    4563: Increase background stack size to fix overflow

    4364: Add C API for Greentea client

    4540: Support app config option for export

    4541: Fix a bug in print_large_string

    4579: Fix semaphore in RTOS

    4444: Resolve lwIP init twice issue

    4523: Check Ethernet before including lwipopts_conf.h

    4337: Platform support for new CellularInterface in UBLOX_C027 and UBLOX_C030_U201

    4567: Update u-blox ODIN-W2 driver binaries to 2.1 rc1

    Using the release

    You can fetch the mbed OS 5.5.1 release from the mbed-os GitHub repository by using the tag “mbed-os-5.5.1”.

    Please feel free to ask any questions or provide feedback on this release on the forum, or to contact us at support@mbed.org.

  • mbed-os-5.5.0

    Downloads: zip tar.gz

    The mbed OS 5.5 release upgrades to the latest version of CMSIS, paving the way for support of the latest ARM compilers, ARMv8-M Architecture based MCUs and lower power RTOS modes. It also introduces cellular connectivity, embedded storage and hardware security enhancements to further simplify development of connected, managed IoT devices. In addition, this release contains many minor fixes and enhancements and brings target platform support up to 85 targets.

    Core

    mbed OS 5.5 upgrades to the latest CMSIS version, CMSIS5, including the enhanced CMSIS-RTOS2 kernel. This is a significant step in our roadmap to enable support for the latest generation of compilers (ARM GCC Embedded 6, ARM Compiler 6 and IAR Embedded Workbench 8), support for v8-M architecture cores and introduction of low power tick-less RTOS and deep sleep modes.

    The release includes many general enhancements and fixes, and upstreams those that have been maintained within the mbed OS codebase itself. The upgrade should be generally transparent to developers using the mbed OS RTOS APIs, but please report in the forums or contact us at support@mbed.com if you have any issues in this area.

    The file system infrastructure now supports SPI NOR Flash devices, a low-cost, external storage solution. Developers commonly use it in IoT devices to store firmware update images, device credentials and configuration information and to cache data for later syncing to the cloud. You can use the SPI NOR Flash storage with all mbed Enabled platforms, and it is the recommended storage medium for devices requiring firmware update capabilities.

    The release also includes a standard in-application flash programming API, FlashIAP, and first partner implementations. This component supports the upcoming mbed Cloud Update service capability, available to licensees, that manages device firmware update campaigns across fleets of devices.

    Connectivity

    mbed OS 5.5 introduces improved support for cellular connectivity modules, including standard integration through a built-in PPP network interface.

    A Linux-based Thread Access Point reference that uses the Thread border router is now available.

    Our new native mbed OS BLE stack has reached our Early Partner Release milestone. This allows use of BLE transceivers with any mbed Enabled MCU and provides stack consistency across different BLE hardware. Based on this, we will be working with the first mbed Partners to enable support for their BLE transceivers and SoCs using this stack, planning to provide first access to developers in the 5.6 release. Partners interested in supporting BLE transceivers or SoCs with this stack should contact their Partner Enablement Team representatives.

    Security

    mbed OS cryptography incorporates mbed TLS 2.5 and the completion of internal APIs for enabling hardware entropy and symmetric and asymmetric cryptographic acceleration. Many partners are implementing and landing support for acceleration on their target platforms and are seeing significant performance increases. Partner acceleration will land in patch releases as we work with partners to complete security audits and mainline these contributions.

    uVisor updates address several performance and usability issues reported since the last release. Secure boxes on devices with an ARMv7-M MPU now use less memory and provide more user-friendly configuration options.

    uVisor now also supports the new ARMv8-M architecture, including the TrustZone for ARMv8-M security extensions. Support for this architecture is still experimental and is currently only accessible through a feature branch in mbed OS.

    Targets

    Thanks to our partners’ hard work, mbed OS 5.5 now supports 85 target platforms.

    We’ll continue to add targets in our biweekly patch releases as partners work with us on support.

    Fixes and changes

    4315: Add support for ubirch boards https://github.com/ARMmbed/mbed-os/pull/4315

    3906: uVisor: Fix ‘publish’ and core libs dependencies https://github.com/ARMmbed/mbed-os/pull/3906

    3738: fix STM USB config after L4 ,F4, F7 file tree changes https://github.com/ARMmbed/mbed-os/pull/3738

    3867: Filesystem: Revert deprecation of FileHandle https://github.com/ARMmbed/mbed-os/pull/3867

    3996: Check in algo generation code https://github.com/ARMmbed/mbed-os/pull/3996

    3995: Move target related code into it’s own directory https://github.com/ARMmbed/mbed-os/pull/3995

    3997: Move contents of project_api to export/init.py https://github.com/ARMmbed/mbed-os/pull/3997

    3998: Remove dead code in tools https://github.com/ARMmbed/mbed-os/pull/3998

    3848: USBAudio: writesync with 1 sample jitter capability. https://github.com/ARMmbed/mbed-os/pull/3848

    3994: Use OUTPUT_EXT to pick binary type https://github.com/ARMmbed/mbed-os/pull/3994

    4015: DISCO_L053C8: Add support of USB Device https://github.com/ARMmbed/mbed-os/pull/4015

    3987: thread link configuration bypass flag in mesh-api https://github.com/ARMmbed/mbed-os/pull/3987

    4013: Fix a small bug in subtract_basepath https://github.com/ARMmbed/mbed-os/pull/4013

    4100: Edit the README and add Travis CI badges https://github.com/ARMmbed/mbed-os/pull/4100

    4125: STM32 USB configuration file move https://github.com/ARMmbed/mbed-os/pull/4125

    3993: Added list options for –supported command https://github.com/ARMmbed/mbed-os/pull/3993

    4097: Debug build flag + change to sleep behavior in debug mode https://github.com/ARMmbed/mbed-
    os/pull/4097

    3991: events: Fix zero wait condition in non-rtos semaphore https://github.com/ARMmbed/mbed-os/pull/3991

    4175: [NRF52840]: Remove unwanted nRF5 SDK’s app_timer libarary. https://github.com/ARMmbed/mbed-
    os/pull/4175

    4179: uVisor: Fix copy of quick-start doc in exporter script https://github.com/ARMmbed/mbed-os/pull/4179

    4167: Replace deprecated import and correct typo in c_blob_mbed.tmpl https://github.com/ARMmbed/mbed-
    os/pull/4167

    4048: Make LWIP options configurable https://github.com/ARMmbed/mbed-os/pull/4048

    4111: [drivers] Update doxygen errors https://github.com/ARMmbed/mbed-os/pull/4111

    4199: USB: bus reset for KL25Z fix, USBSerial update https://github.com/ARMmbed/mbed-os/pull/4199

    3988: Enable USB capabilities on NUCLEO_F446RE https://github.com/ARMmbed/mbed-os/pull/3988

    4212: Maxim USB library update https://github.com/ARMmbed/mbed-os/pull/4212

    4210: USB: Added support for the logo key to the keyboard https://github.com/ARMmbed/mbed-os/pull/4210

    4155: Thread sec policy https://github.com/ARMmbed/mbed-os/pull/4155

    4110: Add –build-data switch to mbed compile and test https://github.com/ARMmbed/mbed-os/pull/4110

    4233: [platform] Update doxygen comments https://github.com/ARMmbed/mbed-os/pull/4233

    4169: [NXP LPC176X] flash_api.c implementation https://github.com/ARMmbed/mbed-os/pull/4169

    4186: Filesystem: Include ‘.’ and ‘..’ in directory iteration https://github.com/ARMmbed/mbed-os/pull/4186

    4259: Add error check in Stream constructor https://github.com/ARMmbed/mbed-os/pull/4259

    4248: Fixed STM32 USB Device support for mbed Classic https://github.com/ARMmbed/mbed-os/pull/4248

    4298: Remove FLASH capabilities for the ARCH_PRO https://github.com/ARMmbed/mbed-os/pull/4298

    4306: Remove unsupported net libraries https://github.com/ARMmbed/mbed-os/pull/4306

    4307: Remove ARM7 support and targets https://github.com/ARMmbed/mbed-os/pull/4307

    4313: Remove and cleanup old code in the tools https://github.com/ARMmbed/mbed-os/pull/4313

    4235: Nanostack libservice https://github.com/ARMmbed/mbed-os/pull/4235

    4284: LWIP random library and TCP sequence number improvements https://github.com/ARMmbed/mbed-
    os/pull/4284

    4291: USBHost : fix build for TARGET_STM https://github.com/ARMmbed/mbed-os/pull/4291

    4312: BEETLE: Remove unused and conflicting systick https://github.com/ARMmbed/mbed-os/pull/4312

    4316: Remove Cortex A boards as Cortex-A it is not supported in CMSIS5/RTX2 https://github.com/ARMmbed
    /mbed-os/pull/4316

    4319: Enable CMSIS_VECTAB_VIRTUAL for Nordic platforms https://github.com/ARMmbed/mbed-os/pull/4319

    4317: Reduce test overhead in preperation for CMSIS 5 https://github.com/ARMmbed/mbed-os/pull/4317

    4325: Decode STDERR from compiler https://github.com/ARMmbed/mbed-os/pull/4325

    4311: Disable lwIP checksum-on-copy https://github.com/ARMmbed/mbed-os/pull/4311

    4274: NSAPI - Don’t send trailing garbage in DNS queries https://github.com/ARMmbed/mbed-os/pull/4274

    4202: Add support for Unmanaged Bootloader https://github.com/ARMmbed/mbed-os/pull/4202

    4185: Include mbed_debug.h in mbed.h https://github.com/ARMmbed/mbed-os/pull/4185

    4385: Allow examples to specify which repo source to use for testing https://github.com/ARMmbed/mbed-
    os/pull/4385

    4381: Fix vscode intellisense engine to ‘Tag Parser’ https://github.com/ARMmbed/mbed-os/pull/4381

    4340: Thread med support https://github.com/ARMmbed/mbed-os/pull/4340

    4333: Adjust Thread interface connect timeout https://github.com/ARMmbed/mbed-os/pull/4333

    4165: fix #3863 Add an mbed API that allows the init of the CAN at the bus frequency https://github.com/ARMmbed/mbed-os/pull/4165

    4351: STM32L4 cube update from v1.5.0 to v1.8.0 https://github.com/ARMmbed/mbed-os/pull/4351

    4345: Nanostack update https://github.com/ARMmbed/mbed-os/pull/4345

    4331: Have objects depend on their respective compiler invocations https://github.com/ARMmbed/mbed-os/pull/4331

    4328: Remove unwanted (and unused anymore) NRF5_SDK13 BLE port https://github.com/ARMmbed/mbed-os/pull/4328

    4299: STM32F4 cube update from v1.12.0 to v1.16.0 https://github.com/ARMmbed/mbed-os/pull/4299

    4230: Usb host msd block device https://github.com/ARMmbed/mbed-os/pull/4230

    4329: Fix for #3863: STM Check can sync error https://github.com/ARMmbed/mbed-os/pull/4329

    3936: bd: Add MBR block device for standard storage partitioning https://github.com/ARMmbed/mbed-os/pull/3936

    4377: Disable Cortex-A in tooling for better error messages https://github.com/ARMmbed/mbed-os/pull/4377

    4321: Update mbed TLS to version 2.5.0 https://github.com/ARMmbed/mbed-os/pull/4321

    4403: mbed: version macros are not defined on master https://github.com/ARMmbed/mbed-os/pull/4403

    4402: Stm32 f2 cube sdk update to v1.6.0 https://github.com/ARMmbed/mbed-os/pull/4402

    4119: Cellular feature br https://github.com/ARMmbed/mbed-os/pull/4119

    4388: Deprecate config store and related libraries https://github.com/ARMmbed/mbed-os/pull/4388

    4207: spi: Add SPI block-write to C++ and HAL for performance https://github.com/ARMmbed/mbed-os/pull/4207

    4178: [NRF52840]: SecurityManager::getAddressesFromBondTable https://github.com/ARMmbed/mbed-os/pull/4178

    4413: Fix a bug in dependency handling https://github.com/ARMmbed/mbed-os/pull/4413

    4094: [HAL] Add support for 64 bit us timestamp https://github.com/ARMmbed/mbed-os/pull/4094

    4415: Disallow building of mbed OS 2 + RTOS, and remove mbed OS 5 support for Cortext-A https://github.com/ARMmbed/mbed-os/pull/4415

    4411: Adding APIs to namespace mbed https://github.com/ARMmbed/mbed-os/pull/4411

    4427: tests: remove ticker test https://github.com/ARMmbed/mbed-os/pull/4427

    4387: Allow target attribute overrides in app config and pick toolchain with default_toolchain https://github.com/ARMmbed/mbed-os/pull/4387

    4294: Update CMSIS-Core and RTX to version 5 https://github.com/ARMmbed/mbed-os/pull/4294

    4431: Restore mbed OS 5.4 mbed_lwip_ function prototypes https://github.com/ARMmbed/mbed-os/pull/4431

    4389: Assert that mutexes and prints are not use in interrupt or critical context https://github.com/ARMmbed/mbed-os/pull/4389

    3972: FAT: Add support for block sizes of 512-4096 bytes https://github.com/ARMmbed/mbed-os/pull/3972

    4438: Add REALTEK_RTL8195AM to mbed-os https://github.com/ARMmbed/mbed-os/pull/4438

    4087: LocalFileSystem: Repair the FileSystemLike hooks https://github.com/ARMmbed/mbed-os/pull/4087

    4295: Update uVisor to v0.28.1 https://github.com/ARMmbed/mbed-os/pull/4295

    4436: Issue#4250: Fix USB driver for Kinetis devices https://github.com/ARMmbed/mbed-os/pull/4436

    4420: Update CONTRIBUTING.md https://github.com/ARMmbed/mbed-os/pull/4420

    4368: MTS_DRAGONFLY_F411RE/MTS_MDOT_F411RE: add IAR to post_binary_hook toolchains https://github.com/ARMmbed/mbed-os/pull/4368

    4365: Fix i2c communication with pcf8574 on stm32 targets of f1, f2, f4 and l1 families https://github.com/ARMmbed/mbed-os/pull/4365

    4455: mbed-coap fixes https://github.com/ARMmbed/mbed-os/pull/4455

    4454: Warning fixes https://github.com/ARMmbed/mbed-os/pull/4454

    4451: Fix typo in test code https://github.com/ARMmbed/mbed-os/pull/4451

    4439: Proper fix for 1fa30b7403176349557d6aea2f02a2075aa6f03b https://github.com/ARMmbed/mbed-os/pull/4439

    4430: utest optimization: Allow case data structure to be put in ROM. https://github.com/ARMmbed/mbed-os/pull/4430

    4424: Fix corner cases in STM32 16bit tickers https://github.com/ARMmbed/mbed-os/pull/4424

    4423: NUCLEO_F412ZG: Remove hal_conf file from NUCLEO_F412ZG https://github.com/ARMmbed/mbed-os/pull/4423

    4417: STM32: Fix 32-bit us ticker interrupt scheduling https://github.com/ARMmbed/mbed-os/pull/4417

    4216: STM32s Serial: Correct handling of parity bits https://github.com/ARMmbed/mbed-os/pull/4216

    4453: Safely initialize RTC on kinetis devices https://github.com/ARMmbed/mbed-os/pull/4453

    4425: Doxygen template and CI to not produce warnings and errors https://github.com/ARMmbed/mbed-os/pull/4425

    4449: Fix semaphore usage on lpc1768 emac https://github.com/ARMmbed/mbed-os/pull/4449

    4493: Fix typo that used 16kB for stack. https://github.com/ARMmbed/mbed-os/pull/4493

    4434: Doxygen EventQueue updates to not produce warnings and errors [DOC Changes Only] https://github.com/ARMmbed/mbed-os/pull/4434

    4496: Fix typo in tools code to handle bootloader builds https://github.com/ARMmbed/mbed-os/pull/4496

    4469: 17q2 l4 bootloader - Rebase https://github.com/ARMmbed/mbed-os/pull/4469

    4474: STM32 L0: Add Flash API support - Rebase https://github.com/ARMmbed/mbed-os/pull/4474

    4501: Fix compilation for NCS36510 RF driver. https://github.com/ARMmbed/mbed-os/pull/4501

    4499: Fix rtc api time conversion https://github.com/ARMmbed/mbed-os/pull/4499

    4497: Silicon Labs: Add TRNG support https://github.com/ARMmbed/mbed-os/pull/4497

    4495: NRF52840: TRNG support https://github.com/ARMmbed/mbed-os/pull/4495

    4494: Use absolute paths for bootloader binaries https://github.com/ARMmbed/mbed-os/pull/4494

    4480: rtc_time: Fix incorrect return value when the calendar is not available. https://github.com/ARMmbed/mbed-os/pull/4480

    4471: [Silicon Labs] Fix compile warnings and ticker test failure https://github.com/ARMmbed/mbed-os/pull/4471

    4482: [Silicon Labs] Bugfix for bootloader on Pearl and Mighty Gecko - Rebase https://github.com/ARMmbed/mbed-os/pull/4482

    4489: mbed sdk boot: fix gcc sw init hook attribute https://github.com/ARMmbed/mbed-os/pull/4489

    4481: Add bootloader support stm32f439xI - Rebase https://github.com/ARMmbed/mbed-os/pull/4481

    4476: Add TRNG support for KW41Z https://github.com/ARMmbed/mbed-os/pull/4476

    4473: [Silicon Labs] Enable dynamic heap with ARMCC https://github.com/ARMmbed/mbed-os/pull/4473

    4441: lwip - fix typo and cleanup coding style https://github.com/ARMmbed/mbed-os/pull/4441

    4450: Doxygen template https://github.com/ARMmbed/mbed-os/pull/4450

    4508: Doxygen combined HAL, RTOS, and features/Framework updates to not produce warnings and errors
    [DOC Changes Only] https://github.com/ARMmbed/mbed-os/pull/4508

    4511: Fix Cortex-M0 devices https://github.com/ARMmbed/mbed-os/pull/4511

    4445: Fixes for exporter issues https://github.com/ARMmbed/mbed-os/pull/4445

    4475: Silicon Labs: Add bootloader support https://github.com/ARMmbed/mbed-os/pull/4475

    4477: Silicon Labs: Fix bug with SPI MISO and CS handling https://github.com/ARMmbed/mbed-os/pull/4477

    4484: STM32L4 Flash support https://github.com/ARMmbed/mbed-os/pull/4484

    4466: Clean up dead classes in retarget layer https://github.com/ARMmbed/mbed-os/pull/4466

    4509: NRF52840: enabled SdBlockDevice capability https://github.com/ARMmbed/mbed-os/pull/4509

    4503: mbed sdk boot: copy vectors addition https://github.com/ARMmbed/mbed-os/pull/4503

    4506: Disable error trapping for mbed 2 builds https://github.com/ARMmbed/mbed-os/pull/4506

    4513: Disabled lwip ethernet ipv6 multicast filter for STM boards https://github.com/ARMmbed/mbed-os/pull/4513

    4472: Silicon Labs: Add flash API support https://github.com/ARMmbed/mbed-os/pull/4472

    4519: Fix mktime test https://github.com/ARMmbed/mbed-os/pull/4519

    4448: Add mbed-os-example-cellular to release data https://github.com/ARMmbed/mbed-os/pull/4448

    4369: Increase DHCP timeout, and rework networking tests logic https://github.com/ARMmbed/mbed-os/pull/4369

    4470: Flash API support using the MCUXpresso drivers https://github.com/ARMmbed/mbed-os/pull/4470

    4490: tests: Reintroduce ticker test. https://github.com/ARMmbed/mbed-os/pull/4490

    4483: Improve error messages for bootloader build errors https://github.com/ARMmbed/mbed-os/pull/4483

    4487: Resolve Realtek device small code space issue https://github.com/ARMmbed/mbed-os/pull/4487

    4536: STM32 - fix bug where sockets stop receiving data https://github.com/ARMmbed/mbed-os/pull/4536

    4543: Fix STM32 crashes on boot due to unset VTOR https://github.com/ARMmbed/mbed-os/pull/4543

    4566: Fix mbed2 failures https://github.com/ARMmbed/mbed-os/pull/4566

    Known Issues

    mbed TLS accepts certificates that use weak signature algorithms

    • Description: mbed TLS accepts X.509 certificates that use the following signature algorithms: md4WithRSAEncryption, md5WithRSAEncryption and sha1WithRSAEncryption. These algorithms are considered weak or unsafe due to the hashing algorithms used.
    • Workaround: For mbed TLS 2.1 and above, the default mbed TLS profile for mbedtls_x509_crt_verify() excludes all these weak algorithms and is safe to use. There are no known workarounds for mbed TLS 1.3.
    • Reported Issue: Received via email.
    • Priority: Critical

    Handshake messages are not fragmented as per MaxFragmentLength Extension Negotiation

    • Description: “Once a maximum fragment length other than 2^14 has been successfully negotiated, the client and server MUST immediately begin fragmenting messages (including handshake messages) to ensure that no fragment larger than the negotiated length is sent.” In mbed TLS, only the application data is fragmented, and the handshake messages are not.
    • Workaround: Disable MaxFragmentLength Extension Negotiation.
    • Reported Issue: https://github.com/ARMmbed/mbedtls/issues/387
    • Priority: Major

    IP addresses in the X.509 certificate subjectAltNames

    • Description: Parsing IP addresses in the X.509 certificate subjectAltNames is not supported yet. Certificate chains relying on IP addresses in subjectAltNames return a BADCERT_CN_MISMATCH error.
    • 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

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

    mbed TLS causes stack overflow in mbed OS targets

    • Description:
      The stack memory usage of some mbed TLS features is higher than 4 KB, which may cause stack overflow errors when running in constrained embedded environments with mbed OS, which are particularly limited in RAM.
    • Workaround: The amount of stack required is dependent on the application and what features of the library it chooses to use. More intensive, demanding tasks may not be possible on more limited, constrained devices, so we recommend designing for the limitations of the target device or choosing a device suitable for your application.
    • Reported Issue: https://github.com/ARMmbed/mbed-os-example-tls/issues/14
    • Priority: Major

    Commissioner does not retransmit message when it receives retransmission

    • Description: There are two issues with DTLS handshake retransmission. First, the joiner fails to correctly parse received records because it does not correctly handle queued retransmissions received. Second, the commissioner may cause a deadlock because it does not retransmit certain records after it receives retransmission as instructed in RFC6347 Section 4.2.4.
    • Workaround: There is no known workaround.
    • Reported Issue: https://github.com/openthread/openthread/pull/1207
    • Priority: Major

    uVisor does not support nested interrupts

    • Description: When running an application with uVisor enabled, nested interrupts are not supported.
    • Workaround: There is no available workaround at the moment.
    • Reported Issue: https://github.com/ARMmbed/uvisor/issues/345
    • Priority: Major

    On ARMv7-M targets supporting uVisor, the RTOS runs with the same privilege as uVisor

    • Description: The current architecture of uVisor and of RTX require the RTOS to run with the same privilege as uVisor. As such, the RTOS is considered trusted.
    • Workaround: There is no available workaround at the moment.
    • Reported Issue: https://github.com/ARMmbed/uvisor/issues/235
    • Priority: Major

    mbed-os-example-client linking fails in ARMCC for Realtek board

    • Description: mbed-os-example-client takes more flash space than reserved for Realtek board. For it to link properly, more code has to move to SDRAM, which is not yet implemented or tested.
    • Workaround: There is no available workaround at the moment.
    • Reported Issue: https://github.com/ARMmbed/mbed-os/issues/4462
    • Priority: Major

    Mesh networking applications fails to compile with IAR on unsecure platform

    • Description: If the target has not defined a source of hardware entropy, then mbed TLS support is disabled. This leads to compilation warnings on some Nanostack related modules and compilation failure when using IAR toolchain.
    • Workaround: There is no available workaround at the moment.
    • Reported Issue: https://github.com/ARMmbed/mbed-os-example-mesh-minimal/issues/91
    • Priority: Major

    UARTSerial asserts if debug is enabled

    • Description: UARTSerial attempts to claim a mutex from interrupt context. If debug is not enabled, this fails silently, and the driver works as intended. If debug is enabled, the system stops in the assert.
    • Workaround: Turn off the debug build.
    • Reported Issue: https://github.com/ARMmbed/mbed-os/issues/4537

    Introduction of RTX/CMSIS 5 has broken semaphore signalling

    • Description: RTX 5 reduced the semaphore count limit from UINT16_MAX to the arbitrary value 1024 and added an assert that would halt if the semaphore count exceeded this limit. This is especially problematic for applications that are using the semaphore for signaling. In RTX 4, the semaphore was the only library-friendly mechanism available for signaling, and in RTX 5 it is still the only option for the C++ layer. This breaks a number of the higher-level APIs.
    • Workaround: None
    • Reported Issue: https://github.com/ARMmbed/mbed-os/issues/4584
    • Priority: Critical

    Using the release

    You can fetch the latest version of the mbed OS 5.5 release from the mbed-os GitHub repository using the branch “mbed-os-5.5”.

    Please feel free to ask any questions or provide feedback about this release on the forum, or to contact us at support@mbed.org.

  • mbed-os-5.4.7

    Downloads: zip tar.gz

    We are pleased to announce the mbed OS 5.4.7 release is now available. This release includes a flash API and IAR exporter for nRF52840 plus a number of bug fixes to improve the stability of the code base.

    Known issues

    There are no known issues for this release.

    Fixes and changes

    4284: Improve LWIP random library and TCP sequence number

    4334: Revert partially “Remove Cortex A support from CMSIS/RTOS”

    4395: Allow generic core exports to UVision

    4282: Flash API nRF52840

    4383: #4354 Fix MOTE_L152RC GPIO Write

    4382: Update cmain.S license

    4332: Fix for blockwise observation failure

    4303: Enable IAR exporter for nRF52840

    4324: STM32F3: Remove dependence on a specific flash vector table location

    4393: Race tests: Fix conditional check for MBED_RTOS_SINGLE_THREAD being defined

    4368: MTS_DRAGONFLY_F411RE/MTS_MDOT_F411RE: Add IAR to post_binary_hook toolchains

    4455: Make mbed-coap fixes

    Using the release

    You can fetch the mbed OS 5.4.7 release from the mbed-os GitHub repository, using the tag “mbed-os-5.4.7”. Please feel free to ask any questions or provide feedback on this release on the forum, or to contact us at support@mbed.org.

  • mbed-os-5.4.6

    Downloads: zip tar.gz

    We are pleased to announce the mbed OS 5.4.6 release is now available. This release includes new target support for DISCO_L072CZ_LRWAN1 and RO359B. There is an update of the u-blox ODIN driver to v1.3 rc2 and an update of the STM32 F1 STM32 cube (SDK) to v1.5.0. There are also a number of bug fixes and tool enhancements to improve the quality and stability of the codebase.

    Known issues

    There are no known issues for this release.

    Ports for upcoming targets

    4256: DISCO_L072CZ_LRWAN1: Add a new platform

    4302: [RO359B] Add platform

    Fixes and changes

    4270: ODIN: Disable sleep because it’s not compatible with Wi-Fi driver

    4238: lwIP - power up EMAC before reading its settings

    4149: STM32F3: Handle USB ISTR and endpoint registers correctly

    4276: Avoid 03/05 intel-hex records for Nordic devices

    4289: LPC4088: Add “LPC4088Code.binary_hook” to the white list of the embit

    4309: Limit ISR stack to 4k on NUCLEO-F429ZI

    4308: Fix NVIC_SetVector type in HAL for MAX32630FTHR

    4226: [WIZnet][W7500] Add support for mbed OS 5

    4241: [NUC472/M453] Fix serial error with sync/async calls interlaced

    4245: [nRF5 + nRF52840]: Merge nRF52840 to [NRF5] sources

    4272: STM32 NUCLEO boards with Ethernet connector: Solve conflict with D11 arduino pin

    4286: Remove unsupported Coide exports

    4293: Remove duplicate optimization flags in IAR export

    4296: Update STM32 HAL f1 v1.5.0

    4305: Increase STM32 timeout for SPI transfers

    4310: Fix RAM vector table for NCS36510

    4314: Fix timeout units in events timing test

    4263: STM32F4xx: Consider all DMA ready/busy states in conditionals

    4338: u-blox ODIN driver v1.3 RC2 for mbed OS 5

    4353: Add static to nRF5 SDK11 macro definition

    4366: Move duplicated AnalogIn and PwmOut to nRF52 directory

    Using the release

    You can fetch the mbed OS 5.4.6 release from the mbed-os GitHub repository, using the tag “mbed-os-5.4.6”. Please feel free to ask any questions or provide feedback on this release on the forum, or to contact us at support@mbed.org.

  • mbed-os-5.4.5

    Downloads: zip tar.gz

    We are pleased to announce the mbed OS 5.4.5 release is now available. This release includes exporter support for Visual Studio Code and Qt Creator Generic project, LWIP support for LPC4088, some tool updates, plus a number of bug fixes and enhancements to improve the quality of the codebase.

    Fixes and changes

    4059: [Silicon Labs] Rename targets

    4115: Add support for Qt Creator Generic project export and associated Makefile

    3915: Add Visual Studio Code exporter

    4205: [Tests] Race test - add NOT_SUPPORTED for single threaded environment

    4187: [NCS36510] Reduce default heap size allocated by IAR to 1/4 of RAM

    4145: [Test] Add nanostack to examples.json file

    4093: [Update.py] New feature - update a branch instead of a fork, and make general improvements

    4225: Fix missing device_name for xDot, and remove progen

    4243: [Config] Add new line to config header file

    4251: Fix C++11 build error with u-blox EVK-ODIN-W2

    4236: [STM32] Fix warning related to __packed redefinition

    4224: Add mbed new . output to export

    4190: LPC4088: Enable LWIP feature

    4136: Change behavior when bootloader is specified but does not exist

    3881: Remove debug links to printf/exit in NDEBUG builds

    4260: Inherit Xadow M0 target from LPC11U35_501

    4249: Add consistent button names across targets

    4254: Remove unused variable in TARGET_NXP/lpc17_emac.c

    Using the release

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

    Please feel free to ask any questions or provide feedback on this release on the forum, or to contact us at support@mbed.org.

  • mbed-os-5.4.4

    Downloads: zip tar.gz

    We are pleased to announce the mbed OS 5.4.4 release is now available. This release includes a reworking of the internal ADC channels code for numerous STM boards, a new callback API for CAN, support for the bootloader and FlashIAP for NUC472/M453, plus numerous core software and tools bug fixes to improve and further stabilize the codebase.

    Fixes and changes

    4008: [NUC472/M453] Support bootloader and FlashIAP

    4102: Add SCL and SDA defs for I2C[0-2]; redefine I2C_[SCL,SDA] to I2C2

    4106: Fix a scoping typo in toolchains

    4118: [STM32F4] Rework internal ADC channels

    4126: [STM32F4] Remove SERIAL_TX and SERIAL_RX from available pins

    4069: Update gnuarmeclipse to preprocess linker scripts

    4107: Allow configuration of artifact name in app config

    4122: Fix compiler warning in mbed_retarget.cpp

    4123: Update CAN to new Callback API

    4148: Revert “STM32F4 Internal ADC channels rework”

    4152: [STM32F4] Rework internal ADC channels

    4074: [Silicon Labs] Update pinout

    4133: [U-BLOX_C030] Default XTAL is now 12MHz onboard. Option to use Debug 8MHz

    4141: Fix mbed_board.c compiler warning

    4168: Generate GNU ARM Eclipse .mbedignore file with jinja2

    4170: Fix include paths for Windows builds

    4173: Fix Traceback in CMSIS export

    4142: [EFM32] Fixed pwmout_all_inactive being inversed

    3888: [Tools] Add new examples

    4016: [NRF5] Fix rtc overflow-while-set-timestamp issue

    4031: [STM32] Increase IAR heap size for big RAM targets

    4129: Remove old filesystem test

    4137: [MCUXpresso] Update ARM linker files to eliminate reserving RAM for stack and heap

    4150: Move config system into its own folder and refactor header generation

    4171: Fix typo in lpcxpresso exporter template

    4172: Fail IAR exports without linker scripts with NotSupportedException

    4176: [STM32L4] Rework internal ADC channels

    4184: [Events] Remove strict-aliasing warning

    4192: Fix gcc [-Wsign-compare] warning

    4154: [STM32F7] Rework internal ADC channels

    4174: [NRF52840] Fix rtc overflow-while-set-timestamp issue

    4180: [UBLOX_C030] Create target hierarchy for the specific versions of the C030 board

    4153: [STM32F2] Rework internal ADC channels

    Using the release

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

    Please feel free to ask any questions or provide feedback on this release on the forum or to contact us at support@mbed.org.

  • mbed-os-5.4.3

    Downloads: zip tar.gz

    We are pleased to announce the mbed OS 5.4.3 release is now available. This release includes new target support for nRf52840 and UBLOX_C030. There are also a number of bug fixes to improve the stability of the code and improvements to the tools.

    Ports for upcoming targets

    3841: Add nRf52840 target

    3992: Introducing UBLOX_C030 platform

    Fixes and changes

    3951: [NUCLEO_F303ZE] Correct ARDUINO pin

    4021: Fix a macro to detect when RTOS was in use for the NRF52840_DK

    3979: [KW24D] Add missing SPI defines and Arduino connector definitions

    3990: [UBLOX_C027] Construct a ticker-based wait, rather than calling wait_ms(), in the C027 board startup code

    4000: Add some type checking of configs

    4003: Fix OBOE in async serial tx for NRF52 target, fix #4002

    4012: [STM32] Correct I2C master error handling

    4020: [NUCLEO_L011K4] Remove unsupported toolchain files

    4046: [USBHOST] Fix device disconnection from hub during hub port reset

    4049: [Tools] Turn off page alignment of sections

    4065: [K66F] Move bss section to m_data_2 Section

    4014: [Issue 3763] Reduce heap allocation in the GCC linker file

    4030: [STM32L0] Reduce IAR heap and stack size for small targets

    4060: [lpc1768] Remove invalid use of IP_SOF_BROADCAST_RECV option

    4070: Elide adding regions to profile when empty

    4072: Remove superfluous space

    4085: Fix mbed-cli issue #468 and add LPCTargetCode.lpc_patch to POST_BINARY_WHITELIST

    4101: Modify semihost_disabledebug() to support more interface FW revs

    4109: [NUCLEO_L476RG] Make minor serial pin update

    3911: [IAR exporter] Extend debugger settings template with modifiable options needed for Nordic targets

    3982: [Ticker] Fix kl25z bug for handling events in the past

    4112: Only link in LPC17xx ethernet ISR as needed

    4098: Raise error when mbed_app.json is bad

    Using the release

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

    Please feel free to ask any questions or provide feedback on this release on the forum, or to contact us at support@mbed.org.

  • mbed-os-5.4.2

    Downloads: zip tar.gz

    We are pleased to announce the mbed OS 5.4.2 release is now available.

    This release includes support for the new target EFM32PG12, some driver updates for NUC472/M453, an update for STM32 to Cube version v1.6.0 and TLS hw acceleration (AES ECB) for NUCLEO_F439ZI. There are also bug fixes and improvements to the tools and mbed-os core.

    Ports for upcoming targets

    3934: [Silicon Labs] Update to HAL and devices

    Fixes and changes

    3691: [TLS/hw acceleration] AES ECB for NUCLEO_F439ZI

    3827: Correct return values for I2C::write(int, const char*, int, bool)

    3862: Trap earlier when a Thread instance is reused

    3869: [NCS36510] Default range changed from 0 to 950mV - ADC

    3893: [STM32F7] Update STM32 Cube version v1.6.0

    3895: Use PATH env variable when GCC found in PATH

    3917: Fix mistake register setting in serial_format()

    3931: ARM Pack Manager improvements

    3927: [DELTA_DFBM_NQ620] Add RC calibration setting and revise mbed_overrides.c

    3747: bd: Add randomness to block device test and more debug friendly output

    3918: [NUC472/M453] Support unique locally administered MAC address and other driver updates

    3920: Adjust heap size to work for both tls-client and mbed-client

    3924: Don’t set the build_dir to anything on export

    3933: #3593 Add template entry to fix exported project build error

    3953: OS2 tests minor updates for STM32

    3969: [NUCLEO_F302R8] Add missing PB_8/PB_9 CAN pins

    3975: [NSAPI/lwIP] Free held netbuf on close

    3976: mbed-coap error fixes merge to mbed OS

    3968: [Greentea] Fix test code mbed-os-tests-mbed_hal-flash

    3949: Fix C declaration of dir functions and types

    3922: Fix/improve error parsing from API messages

    3939: Update mbed trace

    Using the release

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

    Please feel free to ask any questions or provide feedback on this release on the forum, or to contact us at support@mbed.org.

  • mbed-os-5.4.1

    Downloads: zip tar.gz

    We are pleased to announce the mbed OS 5.4.1 release is now available.

    This release includes an update of mbed TLS to version 2.4.2, bringing essential and critical security patches, including a fix for CVE-2017-2784. For core mbed OS, there are a number of bug fixes to improve the stability of the code and improvements to the tools.

    Fixes and changes

    3716: fix for issue #3715: correction in startup files for ARM and IAR, alignment of system_stm32f429xx.c files

    3741: STM32 remove warning in hal_tick_32b.c file

    3780: STM32L4 : Fix GPIO G port compatibility

    3831: NCS36510: SPISLAVE enabled (Conflict resolved)

    3832: lwip: Increase timeout on network tests with python projects

    3836: Allow to redefine nRF’s PSTORAGE_NUM_OF_PAGES outside of the mbed-os

    3840: STM32: gpio SPEED - always set High Speed by default

    3844: STM32 GPIO: Typo correction. Update comment (GPIO_IP_WITHOUT_BRR)

    3846: STORAGE: removal of unsupported tests having ported to sd-driver repository

    3850: STM32: change spi error to debug warning

    3860: Define GPIO_IP_WITHOUT_BRR for xDot platform

    3875: Add post-build hook white-list to exporters

    3880: DISCO_F469NI: allow the use of CAN2 instance when CAN1 is not activated

    3897: Ignore FuzzyWuzzy warnings

    3898: Prevent underflow in heap size calculation

    3913: [NRF51822] Fix reference to sleep in hal_patch override

    3795: Fix pwm period calc

    3828: STM32 CAN API: correct format and type

    3842: TARGET_NRF: corrected spi_init() to properly handle re-initialization

    3843: STM32L476xG: set APB2 clock to 80MHz (instead of 40MHz)

    3852: Ignore build directory from scan resources

    3866: bd: Fix missing const attributes on functions

    3879: NUCLEO_F446ZE: Add missing AnalogIn pins on PF_3, PF_5 and PF_10.

    3877: Update mbed TLS feature to mbedtls-2.4.2

    3902: Fix heap and stack size for NUCLEO_F746ZG

    3864: Fix mbed 2 builds

    3829: can_write(): return error code when no tx mailboxes are available

    Using the release

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

    Please feel free to ask any questions or provide feedback on this release on the forum, or to contact us at support@mbed.org.

  • mbed-os-5.4.0

    Downloads: zip tar.gz

    This is the release note for ARM mbed OS 5.4.0. It summarizes the major enhancements in this version.

    You can find the mbed OS 5.4.0 release on GitHub.

    About this release

    mbed OS 5.4.0 incorporates functionality you can use to prepare for the upcoming mbed Cloud device management services. This includes bootloader and filesystem infrastructure and the certified Thread 1.1 stack for developers. In addition, this release contains many minor fixes and enhancements and brings target platform support up to 74 targets.

    The following sections provide more details about this release.

    Core

    mbed OS 5.4 adds flexible filesystem support to address the needs of IoT applications requiring storage within the end node. This release already includes a FAT filesystem implementation for removable media, such as SD cards, and future releases will add embedded flash filesystems and encryption.

    The filesystem is integrated with the C standard libraries of the ARM, IAR and GCC compilers. It is available for use across all mbed Enabled platforms.

    The release also includes early access to the mbed OS bootloader, so partners can add support for their targets’ flash controllers. This forms part of the support for the upcoming mbed Cloud Update service, which allows managing device firmware update campaigns.

    To read the documentation, see file system and bootloader.

    Connectivity

    mbed OS 5.4 uses the recently certified mbed Thread 1.1 stack to provide solutions for building end nodes and border routers.

    A Linux-based Access Point reference that uses the Thread border router is also available.

    The mbed OS LoRaWAN APIs are available for partner feedback and integration.

    Security

    The mbed crypto libraries in mbed TLS include all the internal partner APIs and documentation for enabling hardware entropy and symmetric and asymmetric cryptographic acceleration. Partners are working on implementations for their target platforms, and a partner workshop will support them. We expect support for the first set of targets in 5.5.

    Upcoming

    The feature branch work on our CMSIS5 and CMSIS-RTOS2 upgrade is nearing completion, so testing will begin soon after the release of 5.4. We are aiming for inclusion on mainline for 5.5.

    Throughout the year, we also plan a program of upgrading supported compilers to ensure the latest features and fixes from the different ARM compilers are available to developers; this will mean supporting ARM GCC Embedded 6, ARM Compiler 6 and IAR Embedded Workbench 8.

    If you would like to be involved in helping test any of these upgrades to help minimize the effect on developers, please contact us.

    Targets

    Thanks to our partners’ hard work, mbed OS 5.4 now supports 74 target platforms.

    We will continue to add new targets in our biweekly releases as partners introduce support.

    Fixes and changes

    Please see the mbed-os GitHub repository referenced below for a full list of changes introduced in this release.

    Known Issues

    Online IDE does not support multiple binary production

    • Description: Compiling an application with bootloader only produces the standalone application binary. It should produce the composite binary.

    • Workaround: Use mbed CLI.

    • Reported Issue: https://github.com/ARMmbed/mbed-os-example-bootloader-blinky/issues/4

    • Priority: MAJOR

    mbed TLS causes stack overflow in mbed OS targets

    • Description: The stack memory usage of some mbed TLS features is higher than 4 KB, which may cause stack overflow errors when running in constrained embedded environments with mbed OS, which are particularly limited in RAM.

    • Workaround: The amount of stack required depends on the application and what features of the library it chooses to use. More intensive, demanding tasks may not be possible on more limited, constrained devices, so we recommend designing for the limitations of the target device or choosing a device suitable for your application.

    • Reported Issue: https://github.com/ARMmbed/mbed-os-example-tls/issues/14

    • Priority: MAJOR

    mbed TLS DTLS renegotiation checks also compare record epoch value

    • Description: The TLS renegotiation routines execute after the DTLS record sequence number for incoming or outgoing messages has exceeded a user-defined period. According to the RFC 6347 Section 4.3.1, the record sequence is a 6 byte unsigned integer, but the mbed TLS function ssl_check_ctr_renegotiate() compares 8 bytes. The additional 2 bytes correspond to the record epoch value, which may result in the incorrect execution of the renegotiation routines.

    • Workaround: There is no known workaround for this issue.

    • Reported Issue: https://github.com/ARMmbed/mbedtls/issues/687

    • Priority: MAJOR

    mbed TLS server does not check that TLS_FALLBACK_SCSV is the last cipher suite

    • Description: An mbed TLS server does not check that the TLS_FALLBACK_SCSV value is the last element in the cipher suites part of the ClientHello message. Note that RFC7505 Section 4 states that placing the SCSV at that position is a SHOULD for the client. However, the server behavior description in RFC7505 Section 5 does not prescribe anything regarding the location of the TLS_FALLBACK_SCSV in the ClientHello.

    • Workaround: There is no known workaround for this issue.

    • Reported Issue: https://github.com/ARMmbed/mbedtls/issues/810

    • Priority: MAJOR

    mbed TLS commissioner does not retransmit message when it receives retransmission

    • Description: There are two issues with DTLS handshake retransmission. First, the joiner fails to correctly parse received records because it does not correctly handle queued retransmissions received. Second, the commissioner may cause a deadlock because it does not retransmit certain records after it receives retransmission as instructed in RFC6347 Section 4.2.4.

    • Workaround: There is no known workaround.

    • Reported Issue: https://github.com/openthread/openthread/pull/1207

    • Priority: MAJOR

    Using the release

    You can fetch the mbed OS 5.4.0 release from the mbed-os GitHub repository using the tag “mbed-os-5.4.0”.

    Please feel free to ask any questions or provide feedback about this release on the forum, or to contact us at support@mbed.org.

  • mbed-os-5.3.6

    Downloads: zip tar.gz

    We are pleased to announce the mbed OS 5.3.6 release is now available.

    This release includes a number of bug fixes to improve stability.

    Fixes and Changes

    3590: [NUC472/M453] Export IAR project and other bugfixes

    3740: STM32L4 HAL update for RTC Wake Up Timer

    3739: STM32F7 : remove multiple HSE_VALUE define value

    3759: STM32: spi_frequency table index fix

    3760: Fix #3756 for 64 bytes transfers

    3779: NCS36510: Fix the sporadic semaphore timing issue

    3806: NXP KL43Z/KL27Z: fix spi format bits check

    3814: NCS36510: I2C idle delay of 1us

    3803: Bug fix of initial value of interrupt edge in “gpio_irq_init” again

    Using the release

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

    Please feel free to ask any questions or provide feedback on this release on the forum, or to contact us at support@mbed.org.

  • mbed-os-5.3.5

    Downloads: zip tar.gz

    We are pleased to announce that the mbed OS 5.3.5 release is now available.

    Fixes and Changes

    3432: Target STM USBHOST support

    3181: NUCLEO_F207ZG extending PeripheralPins.c: all available alternate functions can be used now

    3624: Fix Stack stats by running the test command with “-DMBED_HEAP_STATS_ENABLED=1”

    3626: NUCLEO_F412ZG : Add USB Device +Host

    3628: Fix warnings

    3629: STM32: L0 LL layer

    3632: IDE Export support for platform VK_RZ_A1H

    3642: Missing IRQ pin fix for platform VK_RZ_A1H

    3653: Adding fatal error detection to toolchains

    3661: [Exporters] Add core to uvision exporter template

    3664: Fix ncs36510 sleep definitions

    3655: [STM32F4] Modify folder structure

    3657: [STM32L4] Modify folder structure

    3658: [STM32F3] Modify folder structure

    3685: STM32: I2C: reset state machine

    3689: Updated to allow for new directory structure for mbed-dev source.

    3718: Fixing uvisor defines to fix build issues

    3692: uVisor: Standardize available legacy heap and stack

    3621: Fix for #2884, LPC824: export to LPCXpresso, target running with wron

    3649: [STM32F7] Modify folder structure

    3669: Adding case insensitive ‘error’ detection

    3695: Enforce device_name is valid in targets.json

    3717: Add IAR export support for NUCLEO_F207ZG

    3723: NCS36510: spi_format function bug fix

    3727: Fix access before variable defined bug in test_api

    3708: [NUC472/M453] Fix USB EP setting error in USBAudio

    Using the release

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

    Please feel free to ask any questions or provide feedback on this release on the forum, or to contact us at support@mbed.org.

  • mbed-os-5.3.4

    Downloads: zip tar.gz

    We are pleased to announce the mbed OS 5.3.4 release is now available.

    This release includes:

    • New target support for DISCO_F769NI, DELTA_DFCM_NNN50 and MAX32630FTHR.
    • Miscellaneous tool updates and fixes.

    Known Issues

    No known issues for this release.

    Ports for Upcoming Targets

    3571: DISCO_F769NI introduction

    3605: Add DELTA_DFCM_NNN50 platform

    3640: [MAX32630FTHR] Adding new platform

    Fixes and Changes

    3397: Add uVisor support for the DISCO_F429ZI

    3573: fix failing RTC initialization for MTS_DRAGONFLY_F411RE

    3575: Dev stm factorize gpio

    3584: STM32: make PeripheralPins.h a common file

    3583: STM32F7 Cube FW new release v1.5.1

    3534: Turn on debugging by default when exporting. Remove optimizations for IAR and Uvision

    3560: Refactor scan resources to account for base_paths

    3574: Fix invalid assert in exporters

    3578: Target system - Inherit names from target parents

    3586: Linking to latest

    3587: Fixing toolchain executable not found error for build.py

    3588: arm-pack-manager - fix tracebacks

    3594: Allow user overrides of LINKER_SCRIPT Make variable

    3599: K22F: Enable TRNG

    3600: [toolchains] Refactor sys libs

    3603: Delete testing_mbed_OS_5.md

    3604: Renaming test_env.cpp in greentea to avoid warning

    3608: Exporters: make jinja engine strict

    3612: tests: Fix error on MacOS for udp_dtls_handshake test

    3613: README: Build info; Docs version updated

    3614: STM32: make PortNames.h a common file

    3617: EFM32GG: Fix GCC_ARM linker script

    3618: STM32: Move types definitions to a common file

    3601: Clean export dir

    3630: Delete mbed_targets.md

    3631: F3 CUBE update V1.7.0

    3635: STM32 I2C : Fix bug in i2c_byte_read function

    3651: Max32630 - fix LED4

    Using the release

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

    Please feel free to ask any questions or provide feedback on this release on the forum, or to contact us at support@mbed.org.

  • mbed-os-5.3.3

    Downloads: zip tar.gz

    We are pleased to announce that the mbed OS 5.3.3 release is now available.

    This release includes numerous fixes to code and tools (listed below).

    Known Issues

    There are no known issues for this release.

    Fixes and Changes

    3470: [RZ/A1H]Support RTX v4.80 for Cortex-A and a few Malloc API

    3488: Dev stm i2c v2 unitary functions

    3492: Fix #3463 CAN read() return value

    3503: [LPC15xx] Ensure that PWM=1 is resolved correctly

    3504: [LPC15xx] CAN implementation improvements

    3513: NUCLEO_F412ZG - Add platform in RTOS tests + build_travis

    3514: [NUC472/M453] Remove Tab in USB HAL

    3518: Preventing app_config from clobbering CLI macros

    3526: lwip - Fix static IP address issues with IPv4

    3531: Correctly format include paths for eclipse export

    3537: Remove default -m and -i options for project.py

    3538: Remove deprecated clean argument

    3539: NUCLEO_F412ZG - Add support of TRNG peripheral

    3540: STM: SPI: Initialize Rx in spi_master_write

    3438: K64F: Add support for SERIAL ASYNCH API

    3521: Repair the Emblocks exporer and rename to EmBitz

    3550: events - Fix overflow of timeout on STM32F4

    3559: exporters - group by directories in prj root

    3519: MCUXpresso: Fix ENET driver to enable interrupts after interrupt handler is set

    3528: Modify update command to directly edit the mbed-os.lib files for each example

    3532: Eclipse debug fixes (build w/ DEBUG=1 and load symbols)

    3544: STM32L4 deepsleep improvement

    3546: NUCLEO-F412ZG - Add CAN peripheral

    3547: Add support for ethernet-only configuration with Nanostack.

    3551: Fix I2C driver for RZ/A1H

    3562: Alphabetize UVision groups

    3558: K64F UART Asynch API: Fix synchronization issue

    3563: LPC4088 - Fix vector checksum

    3567: Dev stm32 F0 v1.7.0

    3577: Fixes linking errors when building with debug profile

    Using the release

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

    Please feel free to ask any questions or provide feedback on this release on the forum, or to contact us at support@mbed.org.

  • mbed-os-5.3.2

    Downloads: zip tar.gz

    We are pleased to announce the mbed OS 5.3.2 release is now available.

    This release includes:

    • New target support for UBLOX_EVK_NINA_B1.
    • A rename of the KSDK2 package to MCUXpresso.
    • CAN support for the DISCO_F303VC.
    • A number of bug fixes and improvements.

    Ports for Upcoming Targets

    3459: Target: Add new target UBLOX_EVK_NINA_B1

    Fixes and Changes

    3430: Fix ci shield eeprom test

    3381: STM32F1 : map ST HAL assert into MBED assert

    3389: STM32F2 : map ST HAL assert into MBED assert

    3390: STM32F3 : map ST HAL assert into MBED assert

    3402: nsapi - Fixed open/close issue in Socket

    3410: STM32L4 : map ST HAL assert into MBED assert

    3422: Enable CAN on DISCO_F303VC

    3428: Change slave address in I2C master slave asynch test

    3442: Dev stm i2c f1

    3450: Correctly filtering examples in test script

    3460: KSDK I2C: Update the return value to match the API documentation change

    3478: Delete TESTING.md

    3477: Delete COMMITTERS.md

    3479: Delete Toolchain_Profiles.md

    3480: Delete config_system.md

    3481: Delete memap.md

    3339: USB audio callback rx and tx

    3472: [RZ/A1H]Fix TTB setting of RO_DATA area

    3439: Remove unused arguments from detect targets

    3451: Rename KSDK2 to MCUXpresso. This is the new name of this package

    3469: Remove invalid thread::start example

    3391: STM32F4 : map ST HAL assert into MBED assert

    3454: STM32: Refactor lp_ticker.c + rtc_api.c + sleep.c + rtc_api_hal.h files

    3457: [ONME-2844] Supporting non-blocking connect()

    3458: [ONME-2844] Avoid option level collisions

    3484: Limiting the thread stack for parallel threads test

    3486: Move clean functionality out of the export api

    3493: Delete events.md

    3494: Delete ignoring_files_from_build.md

    3476: Removing default toolchain paths

    3489: NUCLEO_F103RB - Correct CAN and PWM alternate-functions

    3405: Repair the transmit mailbox (0,1,2) empty interrupt flag not clear BUG

    3473: Stm32f7 ethernet fix for IAR issue #3387

    3475: Delete BUILDING.md

    3483: Improve error message when exporting for make without a linker script

    3490: Fix deprecated Thread ctor usage in RTOS tests

    3502: MCUXpresso I2C: Handle 0 byte write

    3500: Update mbed-client-c version 3.0.4

    3365: [NUC472/M453] Support USB device

    Using the release

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

    Please feel free to ask any questions or provide feedback on this release on the forum, or to contact us at support@mbed.org.

  • mbed-os-5.3.1

    Downloads: zip tar.gz

    We are pleased to announce the mbed OS 5.3.1 release is now available.

    This release includes target support for FRDM-KW41 and mbed Enabled Maker board with NINA-B1 and EVA-M8Q.
    There are also bug fixes and tool fixes. Please see below for a list of the changes.

    Ports for Upcoming Targets

    3241: Add support for FRDM-KW41

    3291: Add mbed Enabled Maker board with NINA-B1 and EVA-M8Q

    Fixes and Changes

    3062: TARGET_STM :USB device FS

    3114: Fix issue with unrecognized uvision file types

    3213: STM32: Refactor us_ticker.c + hal_tick.c files

    3274: Pass toolchain path info to subprocesses

    3283: Remove remaining references to Curl from ARM pack manager

    3288: Dev spi asynch l0l1

    3289: Bug fix of initial value of interrupt edge in “gpio_irq_init” function.

    3302: STM32F4 AnalogIn - Clear VBATE and TSVREFE bits before configuring ADC channels

    3305: Support building mbed_critical.c with C++ compiler

    3320: STM32 - Add ADC_VREF label

    3321: no HSE available by default for NUCLEO_L432KC

    3352: ublox eva nina - fix line endings

    3322: DISCO_L053C8 doesn’t support LSE

    3345: STM32 - Remove TIM_IT_UPDATE flag in HAL_Suspend/ResumeTick functions

    3309: [NUC472/M453] Fix CI failed tests

    3157: [Silicon Labs] Add support for EFR32MG1 wireless SoC

    3301: I2C - correct return values for write functions (docs) - part 1

    3303: Fix #2956 #2939 #2957 #2959 #2960: Add HAL_DeInit function in gpio_irq destructor

    3304: STM32L476: no HSE is present in NUCLEO and DISCO boards

    3318: Register map changes for RevG

    3330: Fix project profile parsing

    3336: Squashed ‘features/FEATURE_LWIP/lwip-interface/lwip/’ changes from d7

    3349: [Exporters] Fix generic ARM CPU target in uvision

    3350: [Exporter docs] index.json update instructions

    3317: NUCLEO_F429ZI has integrated LSE

    3312: K64F: SPI Asynch API implementation

    3324: Dev i2c common code

    3331: Enabled example export building for more examples

    3347: USB_4 : test OK with IAR ,GCC_ARM(limitation to ARM not needed)

    3355: IAR export will not fail in the absence of a CMSIS pack

    3362: Increase stack size in malloc test for Cortex-A

    3369: Add CAN2 missing pins for connector CN12

    3377: STM32 NUCLEO-L152RE Update system core clock to 32MHz

    3378: K66F: Enable LWIP feature

    3382: [MAX32620] Fix serial readable function.

    3399: NUCLEO_F103RB - Add SERIAL_FC feature

    3409: STM32L1 : map ST HAL assert into MBED assert

    3416: Rename i2c_api.c for STM32F1 targets to fix IAR exporter

    3368: CFSTORE fixes for building with DEBUG trace enabled

    3348: Fix frequency function of CAN driver.

    3366: NUCLEO_F412ZG - Add new platform

    3379: STM32F0 : map ST HAL assert into MBED assert

    3385: Remove deprecated flags args

    3393: ISR register never re-evaluated in HAL_DMA_PollForTransfer for STM32F4

    3408: STM32F7 : map ST HAL assert into MBED assert

    3411: STM32L0 : map ST HAL assert into MBED assert

    3413: Deduplicate IAR exporter templates and enable a few more targets

    3414: Remove unnecessary absolute paths from IAR and ARM compilers

    3415: [make exporters] Add quotes to echo statements

    3424: STM32F4 - FIX to add the update of hdma->State variable

    3427: Fix stm i2c slave

    3429: Fix stm i2c fix init

    3434: [NUC472/M453] Fix stuck in lp_ticker_init and other updates

    3436: Fix network echo test host scripts for Mac

    Using the release

    You can fetch the mbed OS 5.3.1 release from the mbed-os GitHub repository,
    using the tag “mbed-os-5.3.1”.
    Please feel free to ask any questions or provide feedback on this release on the forum or to contact us at support@mbed.org.

  • mbed-os-5.3.0

    Downloads: zip tar.gz

    This is the release note for mbed OS 5.3.0, summarizing the major enhancements in this version.

    You can find the mbed OS 5.3.0 release on GitHub.

    About this release

    This release makes available early versions of key new features we are working on in development branches, alongside many enhancements and bug fixes to our stable release codeline. These new features will be of particular interest to partners and developers who would like to observe and contribute to their development ahead of them being made generally available.

    The new feature developments made available are:

    You can follow our development of these features - and contribute to them - by working with the feature branches linked above.

    In addition, the main mbed OS 5.3 release includes a number of fixes since 5.2 and now supports 70 target platforms.

    The following sections provide more details of these and other changes in this release.

    Core

    A first functional integration of the next generation CMSIS5 libraries, including the new CMSIS-RTOS2 RTOS kernel. This upgrade is integrated under the mbed OS Peripheral and RTOS APIs such that it will have little or no impact on developers, but provides important enhancements that can be taken advantage of internally.

    These enhancements include:

    • Primitives and integration points for supporting TrustZone for Cortex-M and mbed uVisor
    • Improved RTOS kernel
    • Support for ARM Compiler 6
    • Many patches and modifications that mbed OS had made to CMSIS4 and CMSIS-RTOS now incorporated directly in to the CMSIS5 and CMSIS-RTOS2 codebases

    This allows tracking of the latest CMSIS5 development, and will be brought in to the mainline release when it is ready. Impact on end developers when this happens should be very limited, but open up further opportunities for mbed OS functionality and portability.

    Security

    Building on the Hardware Entropy work in mbed OS 5.2, mbed OS 5.3 adds the integration points for implementing Hardware Acceleration on different target platforms. This support extends to both Symmetric and Asymmetric encryption operations, and when implemented for a target will transparently provide benefit for developers directly or indirectly using functions that rely on TLS/DTLS or other Cryptographic operations.

    Partners looking to provide implementations for their targets should contact their ARM Partner Enablement representative for guidance, such that support can be made available for developers using their platforms in future mbed OS releases.

    Connectivity

    New LoRaWAN APIs are introduced to provide native development support for LoRaWAN applications on any mbed Enabled LoRa hardware. These APIs are available for partners and developers to analyze and help refine whilst the full mbed OS LoRaWAN stack is integrated, ahead of making it available as part of our mainline release. In particular, please contact us if you have an interest in LoRa and LoraWAN as a module manufacturer, OEM product developer or network provider.

    Wi-Fi support has also been further improved, with built in support for both the u-blox ODIN-W2 and Espressif ESP8266 modules. Look out for further partner support, which will become available in patch releases.

    Targets

    Thanks to our partners’ hard work, mbed OS 5.3 supports 70 targets platforms.

    We will continue to add new targets in our bi-weekly releases as partners introduce support.

    Fixes and Changes

    Please see the mbed-os GitHub repository referenced below for a full list of changes introduced in this release.

    Known Issues

    [Beetle] BLE scan doesn’t work on BLE.

    • Description: On the beetle board, BLE scanning doesn’t work and the scan procedure will never report any advertisement even if the procedure has been successfully launched.
    • Workaround: None
    • Reported Issue: https://github.com/ARMmbed/mbed-os/issues/3400

    Odin Ethernet requires configuration

    • Description: The default network interface for the Odin is Wi-Fi.
    • Workaround: Make Ethernet the default interface by removing “EMAC” from “device_has” in targets.json
    • Reported Issue: https://github.com/ARMmbed/mbed-os/issues/3419

    sockets do not work for NUCLEO_F746ZG using IAR toolchain

    NUMAKER_ PFM_NUC472 does not work with uvision

    mbed TLS causes stack overflow in mbed OS targets

    • Description:
      The stack memory usage of some mbed TLS features is higher than 4 KB, which may cause stack overflow errors when running in constrained embedded environments with mbed OS which are particularly limited in RAM.
    • Workaround: The amount of stack required is very dependent on the application, and what features of the library it chooses to use. Obviously more intensive, demanding tasks may not be possible on more limited, constrained devices, so we recommend designing for the limitations of the target device, or choosing a device suitable for your application.
    • Reported Issue: https://github.com/ARMmbed/mbed-os-example-tls/issues/14

    DTLS renegotiation checks also compares record epoch value

    • Description:
      The TLS renegotiation routines are executed after the DTLS record sequence number for incoming or outgoing messages has exceeded a user-defined period. According with the RFC 6347 Section 4.3.1 the record sequence is an 6 byte unsigned integer, but the mbed TLS function ssl_check_ctr_renegotiate() compares 8 bytes. The additional 2 bytes correspond to the record epoch value, which may result in the incorrect execution of the renegotiation routines.
    • Workaround: There is no known workaround for this issue.
    • Reported Issue: https://github.com/ARMmbed/mbedtls/issues/687

    Using the release

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

    Please feel free to ask any questions or provide feedback on this release on the forum, or to contact us at support@mbed.org.

  • mbed-os-5.2.3

    Downloads: zip tar.gz

    We are pleased to announce the mbed OS 5.2.3 release is now available.

    This release includes a number of fixes and additional tests, along with adding I2C_ASYNCH capability for NUCLEO_F410RB and DISCO_F469NI, and support for a single UART shared by multiple serial objects on NUC472/M453.

    Known Issues

    3314: TLS handshake fails using WiFi in mbed OS 5.2.3

    Fixes and Changes

    3087: Update pack-derived files, and add safely test to uVision exporter

    3113: Add static assert macro

    3127: Fixed the issue about push/pop of VFP register.

    3176: Modifying micro:bit pin names to mirror micro:bit edge connector

    3202: Fix arithmetic error in rtos-based wait

    3205: [Exporter tests] Export only

    3207: Add mbed OS version macros

    3208: [example tests] Adding a clone and a deploy step to allow optimizations in CI.

    3206: [Exporter/compile tests] Examples test filters

    3010: Add .hpp to list of Uvision Exporter extensions

    3160: Fix wrong index at LPC43xx tx end ring assignment

    3247: WiFi: Minor fixes to docs and includes

    3232: nsapi - Fix missing NSAPI_UNSPEC check in gethostbyname for ip literals

    3222: [Export - Make] Add message that informs the user which hex to flash

    3220: rtos - Mark the RtosTimer class as deprecated

    3217: Add I2C_ASYNCH capability for DISCO_F469NI

    3211: [NUC472/M453] Support single UART shared by multiple serial objects and other updates

    3198: NUCLEO_F410RB: Add I2C_ASYNCH capability

    3194: Update K64 sdk drivers

    3191: Fix lwip_mac_address buffer overflow and set_ip_bytes out of bound access

    3188: [Exporters] Append targets to scan list for exporting tests

    3159: User trim values for NCS36510

    3243: Fix make exporters compilation

    3229: [Tools - Toolchains] Allow dependency parsing to fail, gracefully continuing

    3231: STM32F3: DISCO_F303VC - Add missing UART and ADC pin muxing options

    3233: K20xx Calculate PWM clock relative to bus clock

    3237: Added back USART 6 pins

    3248: test i2c slave: use standard Arduino pins for NUCLEO_F411RE

    3250: Change MBED_DEPRECATED def order to support Keil 4

    3253: Fix default polarity on LPC43XX PWM driver

    3257: Baudrate in test spec

    3258: Prevent process pool inside of process pool when building tests

    3065: nsapi - Remove assertions on same-thread send/recv

    3238: Dev i2c stm32f4hal

    3244: callback - Relax type-deduction in callback class

    3251: Dev stm32l0 cube v1.7.0

    3252: [NORDIC - NRF51 - MBED 2] Fix non handled RTC IRQ

    3262: Add API which cleans Dcache in IAR compiler.

    Using the release

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

    Please feel free to ask any questions or provide feedback on this release on the forum, or to contact us at support@mbed.org.

  • mbed-os-5.2.2

    Downloads: zip tar.gz

    We are pleased to announce the mbed OS 5.2.2 release is now available.

    This release includes support for new targets: Sara-N, MAX32625, FRDM-K82F and k22512.

    Other key highlights are:

    • Implementation of the API for serial port flow control in NRF51 targets.

    • Support for 6LoWPAN PAN ID filter added to mbed mesh API configuration.

    • Updated u-blox ODIN-W2 drivers.

    • A number of bug fixes and tool improvements.

    Known issues in this release

    There is currently a DNS resolution failure in Thread mode. This causes a failure in the mbed-os-example-client and will be fixed in a subsequent release. This can be worked around by reverting to mbed-os-5.2.0.

    Ports for Upcoming Targets

    3011: Add u-blox Sara-N target.

    3099: MAX32625

    3151: Add support for FRDM-K82F

    3177: New mcu k22512 fixing pr 3136

    Fixes and Changes

    2990: [tools] Parallel building of tests

    3008: NUCLEO_F072RB: Fix wrong timer channel number on pwm PB_5 pin

    3013: STM32xx - Change how the ADC internal pins are checked before pinmap_

    3023: digital_loop tests update for STM32

    3041: [nRF5] - added implementation of API of serial port flow control configuration.

    3092: [tools + tests] Adding parallelized build option for iar and uvision exporters

    3084: [nrf5] fix in Digital I/O : a gpioe pin was uninitialized badly

    3009: TRNG enabled. TRNG APIs implemented. REV A/B/C/D flags removed. Warnings removed

    3139: Handle [NOT_SUPPORTED] exception in make.py

    3074: Target stm init gcc alignement

    3140: [tests] Replacing getchar with RawSerial getc in greentea-client

    3158: Added support for 6lowpan PAN ID filter to mbed mesh api configuration

    2988: Update of can_api.c fixing #2987

    3175: Updating IAR definition for the NCS36510 for IAR EW v7.8

    3170: [tests] Preventing test from printing before Greentea __sync

    3169: [Update of #3014] Usb updates

    3143: CFStore fix needed for the Cloud Client

    3135: lwip - Fix memory leak in k64f cyclic-buffer overflow

    3048: Make update.py test compile examples prior to updating mbed-os version.

    3162: lwip/nsapi - Clean up warnings in network code

    3161: nsapi - Add better heuristic for the default record of DNS queries

    3173: [Exporters] Add a device_name to microbit entry in targets.json

    3072: i2c_loop tests update for STM32

    2958: Allowing mbed_app.json files to be discovered for tests.

    2969: [nRF52] - switch irq priorities of driver handlers to the lowest level

    3078: lwip: Allow several configuration macros to be set externally (bis)

    3165: Add address type checks to NanostackInterface

    3166: nsapi_dns: Provide 2 IPv6-hosted default servers

    3171: [tools] Fixing project.py -S printing problem

    3172: [Exporters] New export-build tests

    3184: #3183 Compiler warning in trng_api.c with K64F

    3185: Update tests to fix build failures. Also make the code similar to oth

    3104: [NuMaker] Support CAN and fix PWM CLK error

    3182: Exporter documentation

    3186: MultiTech mDot - add back SPI3 pins

    3187: [Export-Make] Use internal class variable for resolving templates in makefiles

    3195: [Exporters - Make-based] Quote the shell call in mkdir and rmdir

    3204: [Export build-test] Directory traversal error

    3189: [Exporters - Make-based] Force make exporter to search PATH for compilers

    3200: Using Popen for uVision and unifying the structure of the build function

    3075: nsapi - Add standardized return types for size and errors

    3221: u-blox odin w2 drivers update

    Using the release

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

    Please feel free to ask any questions or provide feedback on this release on the forum, or to contact us at support@mbed.org.

  • mbed-os-5.2.1

    Downloads: zip tar.gz

    We are pleased to announce the mbed OS 5.2.1 release is now available.

    Fixes and Changes

    2966: Add kw24 support

    3068: MultiTech mDot - clean up PeripheralPins.c and add new pin names

    3089: Kinetis HAL: Remove clock initialization code from serial and ticker

    2943: [NRF5] NVIC_SetVector functionality

    2938: InterruptIn changes in NCS36510 HAL.

    3112: events - Remove unused variable warning in ndebug builds

    2953: nsapi - Fix leftover bytes from suffix during ipv6 parsing

    3108: Fix sleep function for NRF52.

    3076: STM32F1: Correct timer master value reading

    3085: Add LOWPOWERTIMER capability for NUCLEO_F303ZE

    3093: [SDFileSystem] Enable / Disable serial debug.

    3097: Arm-Pack-Manager Remove pycurl dependency

    3046: [BEETLE] Update BLE stack on Beetle board

    3005: New build profile and docs

    3122: [Silicon Labs] Update of Silicon Labs HAL

    3022: OnSemi RAM usage fix

    3121: STM32F3: Correct UART4 and UART5 defines when using DEVICE_SERIAL_ASYNCH

    2897: nsapi - Standardize support of NSAPI_UNSPEC

    3024: analog_loop tests update for STM32

    3142: Targets- NUMAKER_PFM_NUC47216 remove mbed 2

    Using the release

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

    Please feel free to ask any questions or provide feedback on this release on the forum, or to contact us at support@mbed.org.

  • mbed-os-5.2.0

    Downloads: zip tar.gz

    This is the release note for mbed OS 5.2.0, summarizing the major enhancements in this version.

    You can find the mbed OS 5.2.0 release on GitHub.

    About this release

    This release builds on the significant enhancements that came in mbed OS 5.1 to add the following headline features:

    • WiFi SoCs and Modules – mbed OS now supports flexible integration for different SoC, Module and Network Processor WiFi architectures, opening up fully integrated platforms as development targets. As part of this work, the IP stack has also been upgraded to the latest LwIP version (2.0), bringing support for both IPv4 and IPv6 to Ethernet and WiFi targets.

    • Hardware Entropy – mbed OS now supports integration of Hardware Entropy sources, essential for strong platform security. Partners with targets containing True Random Number Generators (TRNGs) have already been integrating support so developers will be able to automatically take advantage of enhanced security.

    • Memory Profiling - mbed OS core components and tools have received a number of enhancements to allow memory footprint tracking and analysis. This includes runtime tools for tracking of dynamic memory utilisation and heap information, and stack checking to trap stack over-runs.

    mbed OS 5.2 also extends target support to over 60 target platforms.

    The following sections provide more details of these and other changes in this release.

    Core

    An Events library is now part of the core platform, providing simple primitives for scheduling one-time or repeating events. The library can act as a drop-in scheduler, provide synchronization between multiple threads, or just act as a mechanism for moving events out of interrupt contexts.

    We have added dynamic memory profiling features, allowing tracing the maximum heap usage at runtime, as well as invoking callbacks on each memory operation for more sophisticated annotation. Statistics, including current and maximum bytes allocated and the number of allocations, give visibility of the dynamic memory behavior that can be used in test regression scripts, alongside the existing static memory footprint analysis information.

    Security

    A portable HAL adds support for strong hardware entropy sources such as on-chip True Random Number Generators (TRNGs). These are used as part of the entropy pool the security functions of mbed OS rely on, ensuring each platform uses the maximum hardware-based security it can provide.

    Cipher-based Message Authentication Code (CMAC) support is added, and used in the mbed OS Thread stack.

    The version of mbed TLS integrated within mbed OS has been upgraded to the latest version (2.4.0). For more details, see the mbed TLS 2.4.0 release note.

    Connectivity

    We have introduced support for different WiFi hardware architectures, enabling mbed OS to run on integrated WiFi SoCs and modules as well as work with companion WiFi network processors. This provides hardware design flexibility, and opportunities for significant BOM and complexity reduction, by running mbed OS on the WiFi modules themselves.

    The developer-facing WiFi APIs use the existing mbed OS socket interfaces (used by all IP networking) and network control features. The APIs bring up an interface, including setting the security credentials, scanning for available network access points and to read the signal strength (RSSI) for the current active connection.

    This release introduces support for the u-blox ODIN-W2 integrated WiFi module. We are actively working with a number of other WiFi partners that will be introducing support for their WiFi targets in forthcoming patch releases.

    The core IP stack used in mbed OS for Ethernet and WiFi has been upgraded to LwIP 2.0, bringing support for both IPv4 and IPv6. This complements our mesh networking stack, already optimised for providing 6LoWPAN and Thread networking support for 2.4GHz and Sub-GHz 802.15.4 radios.

    Services

    The mbed Device Connector Client is now delivered as a separate module that will be updated as new mbed device management services are introduced.

    Tools and workflow

    The mbed CLI tool has had numerous updates and improvements. For more details, see the mbed CLI repository.

    The tools now support toolchain profiles, in particular to enable simple debug and release configurations.

    The Online IDE now supports git and GitHub repositories, so you can use both mercurial and GitHub distributed version control systems.

    The export mechanism supporting project generation for different toolchains and IDEs has been redeveloped to be more versatile and scalable, and now uses CMSIS-Packs for target information. When exporting to MDK and IAR, the corresponding target CMSIS-Packs must be available. Known issues include limited target coverage, needing additional configuration steps in IDEs to have projects fully functional, and exporters for Make may have linking errors where archives are used. We will be working with our silicon and tools partners to improve target coverage and project generation in future patch releases.

    mbed Enabled

    The mbed Enabled program continues to provide compliance criteria and technical requirements for boards, on-board interfaces and end products. It is unchanged for mbed OS 5.2, but we expect to introduce stricter requirements for Hardware Entropy support in future releases.

    The following resources are available:

    Targets

    Thanks to our partners’ hard work, mbed OS 5.2 has been extended to support over 60 targets.

    We will continue to add new targets in our bi-weekly releases as partners introduce support. If you are a partner, please see details in the Partner Portal.

    Known Issues

    • UBLOX_EVK_ODIN_W2 - mbed-os-example-client - no connection established when using WiFi.
    • ARM_BEETLE_SOC does not support IAR and uVision export.
    • ARCH_PRO does not flash in uVision (missing flash algorithm).
    • NUCLEO_F401RE export for uVision is not supported.
    • UBLOX_EVK_ODIN_W2 - The WiFi driver on u-blox ODIN-W2 enables a range of weak cryptographic primitives in mbed TLS to support legacy protocols. This can make the TLS connection vulnerable too, and could be subject to a downgrade attack. It is therefore not recommended to use mbed TLS on this platform for production use.

    Getting Started

    To get started with this release, see the Handbook.

  • mbed-os-5.1.5

    Downloads: zip tar.gz

    We are pleased to announce the mbed OS 5.1.5 release is now available.

    This release includes extended IAR support, uVisor on Beetle and fixes to the exporting process.

    Ports for Upcoming Targets

    2669: Added u-blox C029 target

    2707: [EFM32] Add IAR support for remaining Silicon Labs targets

    2819: MultiTech xDot platform support - 09.26.2016

    2827: include MultiTech xDot in mbed 5 releases

    Fixes and Changes

    2648: Disable RTOS tests for STM32 8K targets

    2522: Add CThunk for CM7

    2682: classic mbed: bugfix can loop test

    2518: Enable uvisor on Beetle

    2685: Replace vendor specific register usage in stm32f4_emac.c with basic register

    2688: Avoid type collision by renaming callback variable

    2561: lwip - Add checks for invalid state of network

    2571: STM32F7 - Add asynchronous serial

    2612: Fixed bug on memap (non-default output path)

    2616: STM32F3xx - Add Serial Flow Control pins + enable it

    2619: NUCLEO_L152RE - Add Serial Flow Control

    2620: NUCLEO_F429ZI - Add SERIAL_FC macro

    2659: Fix exported project file group naming

    2665: nsapi - Add equality operators to SocketAddress class

    2666: [EFM32] Microsecond ticker optimization

    2671: tools-exporters! - Globally add a gettingstarted.html

    2672: [EFM32] Fix exporter to pull root path

    2674: tools - Correct adding repo_files

    2675: Revise checking toolchain path

    2681: STM32F0xx - Add support of ADC internal channels

    2687: [NRF5] Add fs_data symbol in data secton for gcc

    2696: Add device_has to all nrf51 devices

    2697: tools-exporters! - disable inclusion of repo-dirs in zips by default

    2703: TARGET_NRF5: Changed ‘serial_baud’ implementation to support special baud rates.

    2704: DISCO_L476VG: add SPI nicknames

    2710: Remove “lib” and “lib64” from the mbed-OS .gitignore file: they do no

    2721: tools - Add documentation about profiles to the toolcahins

    2723: KSDK serial_api.c: Fix assertion error for ParityEven

    2735: Fixing archived library builds for IAR

    2463: [STM32L0] Add asynchronous serial

    2572: Fix STM32F407VG target name and LPC11U6X linker errors

    2698: DELTA_DFBM_NQ620 target

    2722: lwip - Fixed error code on disconnect TCP socket

    2731: [TARGET_STM] IPV4 feature hal files factorisation

    2542: Dev spi asynch stm32f4

    2614: Change default uvision exporter to uvision5

    2640: [NUCLEO_F072RB-NUCLEO_F070RB] RTOS issues

    2650: STM32F3 - Add low power timer

    2662: Update CONTRIBUTING.md

    2744: FEATURE_IPV4/TESTS: result status could be wrong

    2754: New exporter build tests

    2757: Refactor Target and Config away from global variables

    2852: Release - Update custom target handling

    2415: [STM32F0] Add asynchronous serial

    2585: Added support for ADC only pins in LPC43xx

    2622: [STM32F4] Add asynchronous I2C

    2719: Updated ARM linker scripts for Kinetis platforms that use SDK 2.0

    2727: Serial init timeout: increase default value

    2728: Added ethernet and enabled IPV4 feature for the EVK-ODIN-W2/C029 target

    2739: STM32 / IPV4: #2685 has been forgotten with #2731

    2747: [LPC11U68] Fix pin interrupt select offset

    2751: STM32L0xx - Add Serial Flow Control

    2753: [NUCLEO_F767ZI] Add CAN capability

    2759: STM32F0 - Add low power timer

    2763: STM32L1 - Add low power timer

    2764: STM32L4 - Add low power timer

    2771: STM32L4 - Update deepsleep implementation

    2775: Update KSDK SDHC driver for K64F & K66F

    2788: Print percent complete when building

    2792: [NUCLEO_F303ZE] MBED-OS5 capability

    2779: [NUCLEO_F103RB] RTOS tests update

    2712: Fixing constant cleaning when compiling tests

    2762: STM32L0 - Add low power timer

    2761: STM32F7 - Add low power timer

    2800: Removed –no_static_destruction from IAR IDE flags

    Using the release

    You can fetch the mbed OS 5.1.5 release from the mbed-os GitHUb repository,
    using the tag “mbed-os-5.1.5”.
    Please feel free to ask any questions or provide feedback on this release on the forum, or to contact us at support@mbed.org.

  • mbed-os-5.1.4

    Downloads: zip tar.gz

    We are pleased to announce the mbed OS 5.1.4 release is now available.

    This release includes many minor enhancements and fixes, adds some target HAL ports in preparation for upcoming new targets (ST Disco F769NI, Delta DFBM NQ620, MTM mtconnect 04S, ST Nucleo f303ze), and some early additions for runtime heap memory tracking features we’re working on that we’ll share more on soon.

    Changes and fixes

    2442: Malloc heap info

    2487: Runtime dynamic memory tracing

    2607: Fix uvisor memory tracing

    2393: [tools] Prevent trace-backs from incomplete args

    2588: Timing tests drift refactor

    2245: Refactor export subsystem

    2548: Nucleof303ze

    2545: Added define guards for SEQUENTIAL_FLASH_JOURNAL_MAX_LOGGED_BLOBS so

    2575: tools-config! - Allow an empty or mal-formed config to be passed to the config system

    2130: stm32 : reduce number of device.h files

    2419: [STM32F1] Add asynchronous serial

    2521: [NUCLEO_F207ZG] Add MBED5 capability

    2538: STM32F4xx - Add support of ADC internal channels (Temp, VRef, VBat)

    2562: Fix GCC lazy init race condition and add test

    2576: Add smoke test that builds example programs with mbed-cli

    2578: Fix double free in NanostackInterface

    2583: github issue and PR templates

    2587: add PTEx pins as option for SPI on Hexiwear - for SD Card Interface

    2601: Adding ON Semiconductor copyright notice to source and header files.

    2613: Correctly providing directories to build_apis

    2643: Fix thread self termination

    2651: Use lp_timer to count time in the deepsleep tests

    2584: Set size of callback irq array to IrqCnt

    2582: [GCC_CR] fix runtime hang for baremetal build

    2580: lwip - Add check for previously-bound socket

    2579: lwip - Fix handling of max sockets in socket_accept

    2514: Updated FlexCan and SAI SDK drivers

    2504: [Disco_F769NI] adding new target

    2559: [utest]: Allow the linker to remove any part of utest if not used

    2657: [MAX326xx] Removed echoing of characters and carriage return.

    2654: DELTA_DFBM_NQ620 platform porting

    2645: NUCLEO_F446ZE - Enable mbed5 release version

    2634: Updated USBHost for library changes

    2633: Updated USBDevice to use Callback

    2630: Test names not dependent on disk location of root

    2624: CFSTORE Bugfix for realloc() moving KV area and cfstore_file_t data structures not being updated correctly

    2623: DISCO_L476VG - Add Serial Flow Control pins + add SERIAL_FC macro

    2617: STM32F2xx - Enable Serial Flow Control

    2615: [MTM_MTCONNECT04S] Added support for MTM_MTCONNECT04S

    2597: [HAL] Fixed “intrinsic is deprecated” warnings

    2596: [HAL] Improve memory tracer

    2594: Fix TCPServer constructor

    2589: [NUC472] Fix heap configuration error with armcc

    2593: Add app config command line switch for test and make

    2604: Tools - Fix fill section size variation

    2678: Fixing NCS36510 compile on Linux

    Using the release

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

    Please feel free to ask any questions or provide feedback on this release on the forum, or to contact us at support@mbed.org.

  • mbed-os-5.1.3

    Downloads: zip tar.gz

    The mbed OS 5.1.3 release is now on GitHub.

    New targets

    • KL27Z_IAR
    • MAX32620HSP_ARM_STD
    • MAX32620HSP_GCC_ARM
    • MAX32620HSP_IAR
    • NCS36510_ARM_STD
    • NCS36510_GCC_ARM
    • NCS36510_IAR

    Changes in the version

    • Added support for NSAPI_REUSEADDR to the lwip interface.
    • STM32F3 family : Add and enable asynchronous serial, plus tests.
    • STM32L4 family : Add and enable asynchronous serial, plus tests.
    • Fixing issue where GCC fails to report compile errors when non-verbose.
    • Add ethernet and IPV4 support for: NUCLEO_F207ZG, NUCLEO_F429ZI, NUCLEO_F767ZI, DISCO_F746NG.
    • RZ_A1H - Enable SPI1 on pins P6_4 to P6_7.
    • KL27Z : SPI driver bug fixes and Improvements, ARM linker file update.
    • STM32F4, STM32F7 families : Add entropy functions, documentation, code improvements, fix build issues.
    • HEXIWEAR: Update I2C pin mapping, Add support to create KDS projects.
    • LWIP - fix recv blocking send on accepted sockets.
    • SingletonPtr bugfixes.
    • Beetle: Implement sleep API.
    • uVisor: Update to v0.20.1-alpha, minor documentation update.
    • STM32F3 : fix RTOS IAR test, RTOS GCC_ARM test.
    • nrf5x : Introduce uart hardware flow control configuration.
    • K64F/K22F: Implement HAL lp_timer API.
    • Ticker: Move ticker initialisation to object creation time.
    • STM32F4 : remove printf from pwmout
    • NXP : Fix multiple definition errors in GCC_CR build, fix linker errors.
    • Add TOOLCHAIN_GCC_CR support.
    • STM32L1 family : Add and enable asynchronous serial, plus tests.
    • mbed-client : Fix Bootstrap and Connector functionality.
    • NUC472 : Fix Ethernet wrong INT status in RX_Action.
    • RTX_CM_lib.h : fix compiler warning.
    • NUCLEO : Use GCC small build for 64K flash STM32.
    • STM32F2 family : Add and enable asynchronous serial, plus tests.
    • uvisor : Move page heap after uVisor private data, update page allocator.
    • K64F: Revert to hardcoded stack pointer in RTX .
    • dns-query : Internal API change , documentation, Added support for multiple results and ipv6.
    • Add support for implementation-provided DNS servers.
    • Adopted netconn_gethostbyname in the lwip interface.
    • Restructured nsapi_dns.h to have clear separation between C/C++ .

    Tool fixes

    • Tests: New ones added and some updates to existing.
    • RTOS:
      • K64F: Revert to hardcoded stack pointer in RTX.
      • Adding NCS36510 support.
      • Add MAX32620 target support.
      • Fix implicit declaration of function ‘atexit’.

  • mbed-os-5.1.2

    Downloads: zip tar.gz

    The mbed OS 5.1.2 release is now on GitHub.

    • RTOS - fix stack for K64F, NRF52 armcc, NRF51:
    • Main thread stack checking enabled.
    • Fix heap limit checking and make memory regions explicit.
    • Deprecate macro - add since argument.
    • Override new and delete operators to trap errors.
    • Maxim - I2C and DAC bugfixes.
    • STM - STM32F4 - serial flow enablement, enable async serial.
    • pwm and analog definition clean-up.
    • Nordic - NRF51 - fix for overflow in the ticket.

  • mbed-os-5.1.1

    Downloads: zip tar.gz

    The mbed OS 5.1.1 release is now on GitHub.

    • RTOS - fix joining a terminated thread.
    • K64F name fix for cmsis and hal.

  • mbed-os-5.1.0

    Downloads: zip tar.gz

    This is the release note for the mbed OS 5.1.0 release. It summarises the major changes in this version of mbed OS, as well as the requirements for partners looking to support this release on development platforms.

    The mbed OS 5.1.0 release is on GitHub.

    About this release

    This release marks significant changes and enhancements that have accelerated features of our roadmap, opened up the applicability of mbed OS to many more IoT use cases, and unlocked compatibility with our mbed OS 2 “Classic” ecosystem.

    Version summary

    The headline changes in this release are:

    • RTOS - mbed OS now incorporates an RTOS. This much-requested feature provides native thread support to the OS and applications, simplifying development and integration of complex and robust application components like networking stacks. It also enables both blocking and non-blocking design patterns. The RTOS requires very limited system overhead.
    • Tooling - we have simplified the tooling and introduced native support for building and testing across the ARM Compiler 5, ARM GCC Embedded and IAR compiler toolchains. A command line interface script (mbed CLI) now drives the established mbed OS 2 build system to build the OS and associated developer applications and components. Dependencies are explicitly pinned to provide full reproducibility of builds. The target and toolchain can be selected independently of each other, and we run CI on mbed OS across all these compiler toolchains on every commit. yotta is not used in this release.
    • Compatibility - the introduction of the RTOS and changes to tooling have allowed the possibility of compatibility with the mbed OS 2 (“Classic”) ecosystem. We have taken this opportunity to re-base and merge the two development lines so that we now have just one platform and one set of tools. Existing partners can take advantage of investments made in mbed over the years, and both new and existing partners need to invest in only one project. Developers can benefit from all legacy components and libraries, alongside the existing and new features of mbed OS.

    These architectural changes enable merging the mbed OS 2 and mbed OS 3 codebases, websites and ecosystems, and are marked with a major revision update - mbed OS 5 (2+3=5!).

    Our mbed OS 5.0.1 was an internal version available only to partners, and mbed OS 5.1.0 is the first generally available.

    Based on these changes and the hard work of our partners, mbed OS target support is also accelerated. This release supports multiple target platforms from multiple partners, with more ports regularly made available on a newly introduced minor release tick every two weeks.

    The following sections provide more details of these and other changes in this release.

    Core

    RTOS

    mbed OS now incorporates an RTOS.

    The RTOS core is based on the widely used open-source CMSIS-RTOS RTX, providing an established kernel that can support threads and other RTOS services on very tiny devices. The RTOS primitives are always available, so that drivers and applications can rely on features such as threads, semaphores and mutexes. The RTOS is initialised ahead of entering the main() thread, enabling components to rely on RTOS facilities even if the core application is single threaded.

    The implementation is based on CMSIS-RTOS RTX 4.79.0, and we will be tracking and contributing to the development of CMSIS-RTOS releases, allowing us to pick up support for new versions and architectural features such as TrustZone for Cortex-M.

    The MINAR eventing-only scheduler is not included in this release. An alpha version of a more flexible event scheduler library is available, supporting the same design patterns within RTOS threads and components. This library will be merged and managed as part of the core OS codebase once it reaches release maturity.

    Drivers and support libraries

    There is now driver support for a wide range of standard MCU peripherals across the extended target platforms:

    • DigitalIn, DigitalOut, DigitalInOut
    • InterruptIn
    • PortIn, PortOut, PortInOut
    • BusIn, BusOut, BusInOut
    • AnalogIn, AnalogOut
    • PwmOut
    • I2C, I2CSlave
    • SPI, SPISlave
    • Serial

    Improved API documentation is now available here.

    These drivers have been internally upgraded to integrate thread safety logic, while maintaining compatibility with the mbed OS 2 APIs. This has been done within the generic components of the drivers to avoid changes to the different HAL implementations.

    A new Callback class supersedes FunctionPointer (still supported) to provide a more flexible and neater syntax for capturing and calling static function and class member callbacks. It now uses the same class regardless of the number of arguments on the callback.

    C libraries

    The C libraries provided with each of the supported toolchains have been integrated into mbed OS, including implementation of thread safety support.

    Security

    uVisor

    uVisor has been upgraded to support the RTOS.

    We have made the modifications CMSIS required to allow uVisor to hook interrupts. These will be upstreamed to future CMSIS releases.

    uVisor now includes a disabled mode for ARMv7-M and ARMv6-M architectures that maintains code compatibility even when uVisor is not present or active, enabling a smooth software upgrade path as platforms introduce support for uVisor.

    Crypto

    The crypto libraries now support:

    • An insecure NULL entropy mode to simplify support during development.
    • A HAL API for providing strong entropy sources based on a hardware TRNG.
    • A reasonable strength entropy source based on non-volatile storage.

    mbed TLS

    We have integrated version 2.3.0 of mbed TLS, providing TLS and DTLS support for services.

    See the mbed TLS 2.3.0 release note.

    Please note, applications using mbed TLS on boards that have not yet implemented hardware entropy support must use the NULL ENTROPY configuration to build. However, please be aware that no security will be offered by mbed TLS in those cases.

    Connectivity

    The sockets API has been revised to support:

    • Multiple stacks
    • Multiple interfaces
    • Synchronous and asynchronous APIs

    We have successfully applied this to Ethernet, 6LoWPAN Mesh and WiFi interfaces.

    We’ve introduced an 802.15.4 MAC HAL to enable simplified porting of the 6LoWPAN and Thread stacks to different 802.15.4 radios. This release includes ports for multiple transceivers.

    We have released a 6LoWPAN Border Router reference application and an associated Linux-based Access Point example that demonstrates 6LoWPAN nodes connecting via an Access Points to the mbed Device Connector service. A development Thread Border Router is also available to mbed Partners.

    We’ve extended our Bluetooth Low Energy (BLE) API to support user-defined scheduling policies. This maintains compatibility with mbed OS 2 BLE applications, while allowing developers to take advantage of the RTOS to design more efficient solutions. The Bluetooth API is now supported across multiple vendor silicon, covering both SoC and MCU plus Transceiver chipset arrangements.

    Services

    mbed OS integrates the latest mbed Cloud Client, providing connectivity and management services from mbed Device Connector.

    See the mbed Device Connector site.

    Tools and workflow

    We’ve reworked the tools and workflows to address feedback from previous releases on the use of yotta and the desire for backward compatibility with mbed OS 2 (“Classic”). In this release we build the OS, components and applications using modified versions of the mbed OS 2 build scripts.

    mbed CLI

    You can use a new top level command line interface (mbed CLI) to drive the build, package management and test scripts. It is also a natural integration point for IDEs.

    See the mbed CLI repository.

    Dependencies

    This release does not use yotta; applications depend instead on a single mbed OS repository where all dependencies are pinned, making applications reproducible and simplifying development and management.

    See the mbed OS repository.

    Code compatibility and toolchain support

    Code is compatible with c99/C++03, and doesn’t use any C++11 or C++14 features.

    We now support building and testing across multiple toolchains (ARM Compiler 5, GCC ARM Embedded, IAR). Supporting these three toolchains is a requirement for partner ports.

    The build tools now emit static RAM and FLASH sizes and a top level breakdown on every build.

    Exporting to Third Party IDEs

    We support generation of project files to enable opening mbed OS projects in Keil MDK, IAR Workbench and other environments. This is useful for development and launching debug sessions, and can be achieved from mbed CLI or the mbed Online Compiler.

    mbed Enabled

    We’ve formalised the mbed Enabled program, providing versioned compliance criteria and technical requirements for boards, on-board interfaces and end products.

    The following resources are available:

    Targets

    Thanks to our partners’ hard work, including an onsite workshop, the mbed OS 5.1 release already supports the following targets:

    We will add new targets in our bi-weekly releases as partners introduce support. If you are a partner, please see details in the Partner Portal.

    Getting Started

    To get started with this release, see the Handbook.