Important update: Arm Announces End of Life Timeline for Mbed. This site will be archived in July 2026. Read the full announcement.
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
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 inconnectivity/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 Platform15343
Add proper support for NUCLEO-H723ZG.15337
Nuvoton: Support new target NUMAKER_IOT_M46715330
Add TMPM4NR PlatformFixes and Changes
15383
fix STM I2C compiler inline issue15382
Mimxrt1050 lpuart15378
STM32F303xC: correct RAM size15374
CAN: read can do only up to 8 bytes, error if more is reported15373
Check CAN DLC length value15370
Fix socket default interface ID only being used partially15369
test: Disable failing tests due to echo server15368
fix STM32L1 FLASH_SIZE for cat.3 devices with DEV_ID 0x43615367
Fix mesh connect semaphore not releasing causing blockage15366
Add support of NSAPI_ICMP sockets in Nanostack15363
scancode: Fix license index failure15357
scancode: Limit click version to <815356
STM32F1: add MCU_STM32F103xD and MCU_STM32F103xG support15355
Targets: NXP: IMXRT: Fixed GCC_ARM lds syntax.15353
Add TMPM4GR Platform15352
M2354: Support FS-USBD15350
Rethink STM32 I2C v2 HAL15344
Correct MAX32620 boards macro for USB library.15343
Add proper support for NUCLEO-H723ZG.15341
Replace MAX32660, MAX32670 I2C driver with final one in MSDK15337
Nuvoton: Support new target NUMAKER_IOT_M46715333
Nuvoton: I2C: Fix potential role switch failure15330
Add TMPM4NR Platform15329
Add complete support of DHCP relay interface ID option15325
Updated System file and Scatter file15323
Fix missing mbed:: prefix issue15322
STM32WL: fix MBED_CONF_STM32WL_LORA_DRIVER_SLEEP_MODE option15320
LoRaWAN AS923 Add SUB_REGION AS1..AS415317
Fix for calculating CAN timing settings for STM3215313
M487: Fix mbedtls_ecp_point_cmp() call with null argument15312
STM32WL preparation for new chip rak3172sip15311
Fix missing global up callback in CellularContext15306
Add missing unlock() in file_truncate in FATFileSystem15302
rename: PwmOut::read_pulsewitdth_us() to PwmOut::read_pulsewidth_us()15299
Make STM32F412xE targets build15297
cli2 artifact name property support for cmake targets15295
lwiperf: fix double-free of pcb on errorUsing 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
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 MAX3267015199
Support for the NUCLEO_G0B1RE board15194
Add Toshiba M4KN PlatformFixes and Changes
15291
Mts 001 mtdot clk fix15289
M487: Fix crypto h/w port15287
Mbed TLS: Fix wrong MPI N in ECP Curve448 curve15286
STM32G4: Fix serial port at low speed baud15284
Fix MPS2 CM3DS ethernet driver15281
Bluetooth: Inform privacy risk of using signed writes.15280
Support ITM tracing for Ambiq Apollo3 targets15279
STM32F334xx wrong RAM size15277
STM32L0: add MCU_STM32L071xB support15274
tcp_out: fix tcp_output_fill_options() arguments15273
add the possibility to customize the delimiter of the ATHandler in AT15271
semihosting: Fix typo in semihost_rename15270
Github actions: use safe.directory for actions invoking git15269
STM32G4 : enable UART ASYNC15268
STM32L0 : I2C2 was missing15263
Add MAX3267015261
Mbed TLS: Fix compile error with ECP alternative15258
STM32F0: Fix target codes for number of UARTs15256
STM32F1: add MCU_STM32F103xC support15251
Correct heap region calculation for Maxim targets15249
STM32G4: Fix I2C timing15240
ESP8266: Fix serial flow control inconsistency on reconnect15239
STM32G4: enable QSPI for custom boards15238
Updated I2C pin names in PinNames.h header15232
STM32H7: add MCU_STM32H753xI support15231
STM32L1: build error with STM32L151xB MCU15230
STM32G4: corrections for STM32G491xE, STM32G4A1xE and STM32G471xE15229
STM32H7 : fix I2C5 build error15227
lorawan: Fix Join Request retransmission timing (Interop test)15225
lorawan: Fix issue in unconfirmed_retransmission behavior15223
CMake: Fix command line too long with Ninja/ARMClang on Windows15222
Fix strrchr() not declared for IAR15221
Add ability to use multiple UARTs on STM32L0, STM32G0 when IRQ is shared15219
Use MBED_FILENAME instead of FILE in MBED_ASSERT15217
Fix STM32 radio driver when bandwidth is 015215
STM32 : add MCU_STM32L4P5xG and MCU_STM32L412xB support15214
Allow unit tests to be compiled with -fno-exception15212
STM32H7: increase i2c slave rx limit.15210
ST: correct LED pins for DISCO_L562QE15207
Add Nuvoton NuMaker-IoT-M263A CAN bus support15206
STM32: fix SPI 16 bit mode15205
Add USBDEVICE to NUCLEO_F722ZE target15204
STM32G0 FLASH : support MCU with dual bank15200
M487: Fix UART 6/7 base address encoding15199
Support for the NUCLEO_G0B1RE board15195
Add option to disable CM0P_SLEEP component for Cypress targets15194
Add Toshiba M4KN Platform15193
STM32 : remove several warnings15192
Add option to disable WHD component for Cypress targets15190
Make gpio irq api portable15189
nRF52: GPIO: Assert that init succeeds15187
Nanostack release v15.1.0 to master15184
Fix initialisation sequence of RTC15183
STM32WL : add robustness15181
Fix LoRa sx1276 Low Power sleep, now 3uA15178
Add netbuf-recvinfo-enabled config to LWIP settings15177
Fix overflow at extremely low RSSI15176
mstd::span rename index_type to size_type according to specUsing 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.
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
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
Summary of changes
Fix Ublox C030 SARA-R412M onboard cellular device serial (target default instance).
Summary of changes
Whit the following
mbed_app.json
config example, theONBOARD_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.directory15155
Add invalid data case to tdbstore ram init15148
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 port15109
Add MAX32660EVSYSFixes and Changes
15174
M2354: Fix potential issues in TF-M15169
B_U585I_IOT02A supports OSPI15166
Change google test git tag to main15164
STM32L1: add support of MCU_STM32L151xB15161
M2354: Adjust TF-M configuration to fit AWS IoT application15154
STM32WB55 HCI driver: version dependent rom size15153
STM32F722ZE port15152
Fix rounding bug when formatting floats with minimal_printf15151
Update psutil to 5.6.7 and PyElfTools to 0.2715149
InterruptIn: add note about enabling interrupts in rise/fall15147
NetworkStack: Remove stub implementations of socket_x_control15145
QSPIF: Add missing mbed namespace prefix to header file15141
mergify: fix needs work labels if CI fails15140
M2354: Enable post-build for custom board partially with Mbed CLI15139
Fix for PWM resume issue, SWINTEGRATION-5715138
STM32: Remove non-UTF characters15137
STM32WL update drivers version to CUBE V1.1.015136
STM32WL LORA radio: add a critical section15134
STM32WL: UART2 was missing15133
STM32WB/STM32WL: I2C issue15132
STM32: fix USB_reenumerate() for STM32F315130
STM32H743: correct pack manager rom value15128
Fix USB on DISCO_F769NI15127
mergify: fix issue with labels when PR is closed15126
mbed_create_distro() reborn: a function to make adding multiple targets easy15124
pin_names-arduino_uno test : UART test case update15123
STM32: introduce new wifi driver for B-U585I-IOT02A15120
STM32: enable STM32H735xG STM32H7B3xIQ for custom boards15117
CLI2: copy mapfile for diff statistics15116
STM32F3 - enable USB_DEVICE for NUCLEO_F303ZE15114
Fix ARM toolchain #L6803W Relocation warnings15111
DTLSSocket - destruction while handshaking lead to error15109
Add MAX32660EVSYS15107
LWIP: Provide inline replacements for htons() and htonl()15103
Nanostack release v15.0.0 to master15099
STM32H7: enable more custom boards15098
STM32F303xC: cmakelist issue15095
CMake: greentea: Migrate the NFC EEPROM test to CTest15082
STM32F1: add more alternate functions15081
STM32: STM32_gen_PeripheralPins.py v1.20.415080
STM32F4: CAN issue with F407 target15077
CAN: Use uintptr_t for can_irq_ids15075
STM32G0 update drivers version to CUBE V1.5.015074
STM32 : default SPI and I2C for targets with ARDUINO-NANO15068
connectivity tests: avoid HardFault with null pointer15065
STM32L5/STM32U5 : CAN support15062
Lora drivers: explicit lib requirement14610
Power management stat : add verbosity level for MBED_SLEEP_TRACING_ENABLEDUsing 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
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
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
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
Summary of changes
This PR provides the following updates to the Wi-SUN software stack (nanostack):
MAX32630FTHR: Port USBSerial from mbed6.x
Summary of changes
USB HW implementation added for MAX32630FTHR board.
[mbed-os-5.15] Add system time read/write callbacks to mbed-mesh-api
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/14754connectivity tests: Early test skip
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: #14767Impact of changes
None
Migration actions required
None
mbed-os-5.15: Update mbed-coap to version 5.1.11
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
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
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
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
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)
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 whileCANIF2_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
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
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/14549Nuvoton: Fix hal_watchdog_kick() with WDT stopped (5.15)
Summary of changes
This PR is backport of #14555 to
mbed-os-5.15
branch. It tries to fixwatchdog_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_M487mbed-os-5.15: Add API to reset MAC statistics and Wi-SUN statistics
Summary of changes
Added API to reset MAC statistics and Wi-SUN statistics.
This is copied from https://github.com/ARMmbed/mbed-os/pull/14439Impact of changes
None
Migration actions required
None
M487: Fix crash on WDT reset from power-down (5.15)
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
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
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/14462Impact 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.1515026
[mbed-os-5.15] Nuvoton M480/M451 CAN API support mask feature15011
Travis CI migration to GitHub Actions14833
[mbed-os-5.15] Nanostack release v14.0.014830
MAX32630FTHR: Port USBSerial from mbed6.x14818
[mbed-os-5.15] Add system time read/write callbacks to mbed-mesh-api14771
connectivity tests: Early test skip14770
mbed-os-5.15: Update mbed-coap to version 5.1.1114745
mbed-os-5.15: remove python 2.7 tests from travis14744
test examples: remove tls socket, it was deprecated some time ago14682
[mbed-os-5.15] Update mbed-coap to version v5.1.1014618
mbed-os-5.15: Add API to get Wi-SUN Neighbor Table14597
LPC15xx extended CAN fix (5.15)14566
mbed-os-5.15: Mesh api: Added PHY mode, channel plan IDs and configuration functions14565
[mbed-os-5.15] Nanostack release v13.0.014556
Nuvoton: Fix hal_watchdog_kick() with WDT stopped (5.15)14552
mbed-os-5.15: Add API to reset MAC statistics and Wi-SUN statistics14502
M487: Fix crash on WDT reset from power-down (5.15)14498
UARTSerial writes even if tx is disabled14464
mbed-os-5.15: Added new start methods to Wi-SUN BR with WisunInterface parameter and deprecated the old onesUsing 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
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
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 introduction15012
Add platform MTS_DRAGONFLY_L496VGFixes and Changes
15078
M2354: Fix TF-M 1.415073
CMake: QSPIFBlockDevice: Guard unit test directory15067
Greentea: Fix flash overflown issue in callback_big test15066
CMake: Fix platform wait_ns greentea test Cmake15061
Fix replacement of event queue background.15060
set locale in mbed-os-env Docker image15059
Fix Thread::start() and general_block_device test’s thread allocation/deallocation15052
Fix mbed-os-env docker digest retrieval15051
Allow to use all STM32 targets prescaler for LPTIM15050
Update to TF-M v1.4.015045
Workaround for a bug in malloc() from newlib-nano 4.1.0 (in GCC 10.3)15043
FIX: update click version to fix scancode15041
CMake: Set TARGET_NAME macro15040
New feature: send/recv message implementation added to network stack15034
add RTC using HSE to target STM32F115032
CMake: Fix escaping of quotes in response file15031
connectivity-netsocket-tests-tests-network-wifi test suite configuration simplification15030
M2354: Fix LCDCP missing in TF-M CLK pass list15029
M2354: Fix incorrectly resolved peripheral base with security15028
STM32 SPI: Update and improvement15027
M2354: Generate unique MCUboot image version15024
M2354: Enhance TF-M SDH stability15022
STM32U5 new family introduction15020
Nuvoton: M480/M451 CAN API support mask feature15019
Refactor platform greentea cmake15018
hal-tests-tests-mbed_hal-flash compilation warning15017
STM32WL fixed current consumption for mode RBI_CONF_RFO_HP15016
Fix IAR cmsis update breakage15012
Add platform MTS_DRAGONFLY_L496VG15010
Reduce spam on trace because of calling read/write while handshaking15007
docker: Upgrade GCC to 10.3-2021.0714989
SFDP: Add support for multiple configurations and sector maps14981
Fix STM32 SPI 3-wire (synchronous API)14951
CMake: Refactor rtos greentea cmake14926
Eth: STM32: Overriding HAL callbacks in stm32xxUsing 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
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.cppImpact 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 ofFATFileSystem
.
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
Summary of changes
Fixes #14856
Add a new argumentTEST_SKIPPED
tombed_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 withctest
, 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
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
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
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
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 size15006
Disabled interrupts on smt32f7 and stm32h7 before calling disable data cache15003
Add bluetooth support files to Cypress BSPs.15002
Add missing include for PinNames.h15000
Fix Extended Message Filter count in STM CAN API14997
python: Upgrade pywin3214995
travis ci migration to github action14993
Add boilerplate unit test code to currently untested modules14988
CYW43XXX Cordio HCI driver: update BT power up sequences to remove redundant delay (500ms) during HCIDrive initialization14983
SFDP: Add unit tests for Sector Map Parameter Table parsing14982
CYW43XXX Cordio HCI driver: fixed MCU deep-sleep locking flow14980
github action fix for uppercase repository owner14979
requirements.txt - remove manifest-tool 1.5.2 and mbed-cloud-sdk14978
DOCKER: fix a bug in docker building GHA14976
Add more uarts for STM32F103xG14972
M2354: Support PSA Firmware Update14970
USB connect problem in non blocking mode14956
STM32_gen_PeripheralPins script update14953
Rework post-build to support multiple executables14952
github actions for mbed-os-env docker management14948
Fix lorawantimer unit test14945
TFM: Add missing IPC file for PSA Firmware Update14944
CMake: unittests: Show all tests in CTest report14941
Update references to time values to use chrono14940
python: Allow newer prettytable with newer python14939
Standard Pin Names validation script update14935
mbed_retarget: enable IAR build14932
Remove host_tests from mbed-os/tools14929
Unit tests: Move target_h/ stubs into libraries’ test doubles14927
add workflow for checking ble feature selection compilation14924
Refactor cellular unittest CMake14922
Cellular: AT command fix - hex string shouldn’t be quoted on bc9514921
BLE: suppress error when no path is passed in for ble security db14920
Refactor connectivity netsocket unittests14919
BLE: fix missing define guards for feature selection14914
Deprecate the Greentea metrics API14912
Move ble stubs to FEATURE_BLE lib14911
FatFs: upgrade to R0.14b14910
Allow LoRaWAN STM32WL driver debug led to be inverted14909
SPIF: fixed _address_size to always initialize as 3_BYTES in ::init()14902
CMake: tests: Support skipping unsupported test with reason14900
Update CMSIS to 5.8.014894
Unit tests: Connectivity: Make lorawan test header dependencies explicit14892
Add CTest support formbed-drivers-ticker
greentea test14880
Dont require icetea14831
DISCO_WB5MMG: add RGB LED14821
RTOS: Add configuration to enable RTX events14805
i2c: fix issue #14735 with multiple buses14730
Add config macros for device-variant, freq-support and xtal config14575
CMake: Enable improved armclang support in CMake 3.2114397
add SPI NAND Block device driver14288
BG96: Add segmentation to TCP socket sendUsing 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
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
Summary of changes
Adds new BLE API call to manually attempt to synchronise the security manager DB.
Feature: Make changes for Cortex-A5 support
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
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
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 thenCYW43XXX
support toPORTENTA_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 inmbedtls/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() API14913
802.15.4 stm-s2lp-rf-driver update to v1.0.1014905
STM32 : README updates about custom boards14899
STM32WL: correct CMakeLists.txt for STM32WLE5xC14898
Fix gcc_arm linker script for stm32f407xg targets14897
ST BLUENRG BLE: STWIN SensorTile board introduction14896
Move connectivity nanostack libservice stub14895
ADC: STM32H7: Skip Negative input analog channels (INN)14890
Move connectivity mbedtls stubs14888
Portenta: Add BLE support using CYW43XXX generic transport layer14887
Updated can bit timing parameters as per the ISO11898-214884
Remove theUNITTEST
macro from production code14882
Unit tests: storage: Only use headers, sources and definitions needed by each test14881
Standard Pin Name: LED1 issue for targets without LED14876
CMake: greentea: Remove dependency on global MBED_PATH14875
enable google and azure example application tests in ci14874
CMake: ReplaceMBED_TEST_LINK_LIBRARIES
withMBED_TEST_BAREMETAL
14873
Move connectivity netsocket stubs14872
Add STM32WLE5 for custom targets LORA_E5 and RAK317214870
CMake: Remove mbed-stubs-rtos-headers library14864
analogout: STM32: modified analogout_free api14862
Unit tests: Move storage stubs into the storage directory14850
PSA: Fix compile error with NV seed14849
SPIFBlockDevice: Add mbed namespace to BD_ERROR_DEVICE_ERROR14844
Analogout free implementation for F4/F7/H7 boards14843
InterruptIn : STM32: Implemented error catching for multiple gpio on the same irq line14842
Move connectivity lora stubs14838
Eth: STM32: Updating documentation on mbed_otp_mac_address()14837
K64F: Fix pin names and migrate to Arduino Uno form factor14835
Move stubs cellular headers14834
Move connectivity cellular stubs14828
CMake: Add CMake to mbed-psa greentea tests14827
Move hal stubs to hal directory14826
CMake: unit-tests: Make events UNITTESTS only depend on headers it uses14824
BLE: Manual BLE security manager db synchronisation14823
Move events stubs to events dir14822
STM32H7: correction for FLASH API for CM414820
BLE: Clarify ble event docs with crossreferences14819
Move rtos stubs to the rtos directory14817
Add system time read/write callbacks to mbed-mesh-api14816
Nanostack release v14.0.014815
Enable PSA tests on K64F/K66F and fix missing PSA Crypto init in TLSSocketWrapper14814
BG96: Add correct get_ip_address implementation14813
CMake: unit-tests: Make drivers unittests only depend on headers it uses14808
driver/i2c: STM32: I2C performance issue solved.14807
M2354: inherit PSA_V8_M devices14803
Use standalone greentea-client14787
Cypress Asset Update14786
Move mbed-stubs-drivers to the drivers directory14783
tfm-post-build: Don’t capture subprocess stdout14780
Update python requirements14778
CAN TxIRq callback never called -STM32G47414776
driver/i2c: STM32: I2C memory usage and time delay in read-write solved.14773
Move mbed-stubs-platform to the platform directory14751
Fix for fcntl() flags definition14718
Feature: Make changes for Cortex-A5 support14716
Cellular: Add AT handler buffer size to configuration14688
Solution for mutex problem in CAN read ISR14677
Changes required in STM CAN read API14663
Portenta: Add support to generic COMPONENT_WHD14227
CYW43XXX: Add generic transport layerUsing 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.
- Changed
-
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
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)
Summary of changes
This changes adds
std::nowthrow
and the checks for allocation failure to all places in thenetsocket
portion that lacked it. This change addresses #14210.Impact of changes
add_event_listener
inNetworkInterface
now returns an error if the method fails. Previous attempts to add the event listener would attempt to use an unchecked standard dynamically allocatedns_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 allocatednew 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 theTCPSocket
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 returnsnsapi_error_t
instead ofvoid
. The two return values possible areNSAPI_ERROR_OK
andNSAPI_ERROR_NO_MEMORY
in the case of memory allocation failure.Mesh api: Added PHY mode, channel plan IDs and configuration functions
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/14251Enable the RWW function of Macronix Flash MX25LW51245G in OSPI block device driver
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 inmbedtls/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 NUCLEO14441
M2354: Support Nuvoton’s new targetFixes and Changes
14801
BKE: fix statements outside correct feature guard blocks14797
run example-tls on faster K64F board (than K66F)14772
Improve implementation of Mbed TLS timing14768
Update mbed-coap to version v5.1.1114767
connectivity tests: early skip fix14765
Fix unittest check14760
mbedtls: Rename Mbed timing implementation14756
mbedtls: Add an alt implementation of timing14753
Add mbed prefix into atomic14752
LWIP Broadcast socket option added14750
Increase SPI stack size to 2048 for BlueNrg driver14749
Fcntl setting improvement,14748
Correct ufsi timing calculation14747
BLE: fix advertising set termination event14746
STM32WB: introduce STM32WB15CC NUCLEO14743
Nuvoton: Support watchdog on M251/M261 series14741
MbedTLS: Add definition checks for TRNG14740
Fix ‘netsocket: several dynamic allocation results not checked’ (#14210)14739
M2354: Substitute HIRC for HXT to clock PLL14738
Gate ticker (timer0) clock on deepsleep for MAX32620FTHR14737
BLE: Add cmake unittest fakes for BLE and events14736
STM32 USB: update init14734
STM32WL LORA: HW specific out of STM32WL_LoRaRadio class14733
STM32H7 ADC : dual pad feature update14729
tools/STM32 Modified Python script generates Peripheral Pins14724
STM32G0: correct voltage scaling control14722
STM32 TRNG: update init to match all configs14721
Nuvoton: Enable no HXT/LXT configurability14720
STM32L5: corrected voltage scaling when using MSI14713
lgtm: Add initial LGTM configuration file14710
BLE: support non-low power devices14709
CMake: Remove forgotten debug message14708
test: Fix function does not return a value warnings14705
Fix frozen tools check never failing14704
Pin name tests update14702
Silence expansion-to-defined for nrfx14701
Add Travis test to make sure text files are UTF-8 encoded14699
STM32 astyle format14698
STM32: Fixed I2C Bug14697
TESTS: rename variable interface to fix broken tests14693
Fix compilation errors with kvstore - TDB_INTERNAL option to store BLE bonding info14692
STM32WB: improve FLASH size14691
Add GitHub action for issue triaging script14689
Information on Asynchronous SPI limitation on High Speeds14687
STM32L5 update drivers version to CUBE V1.4.014686
STM32: correct __cplusplus brackets14684
Fix missingas_entry
method in KVStoreSecurityDb14683
Baremetal tests: enable BLE tests with NUCLEO_WB55RG14678
Serial: remove shadowing member variables14675
i2c:start()
should aquire the bus14674
Update mbed-coap to version v5.1.1014672
BLE: Fix advertising start and stop14671
enable aws example test in CI14670
STM32: add information in README for SLEEP feature14669
STM32L152: Added ADC Bank_B functionality14668
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 CMake14665
Travis: Move frozen tools check to the end14664
Enable FlashIAP for MCU_NRF5283214662
Add CANMessage deep comparison operators14659
STM32: make i2c_salve_read return the number of bytes read14652
tls: Upgrade to Mbed TLS v2.25.014629
Mesh api: Added PHY mode, channel plan IDs and configuration functions14617
Add legacy I2C/SPI pin aliases14608
STM32H7 update drivers version to CUBE V1.9.014593
STM32F7 update drivers version to CUBE V1.16.114592
STM32G4 update drivers version to CUBE V1.4.014574
Fix string buffer length in UUID trace helper14547
CMake: Remove all unittest.cmake script from test suite14536
STM32: Add LP_TICKER and US_TICKER optimisation macro14471
COMPONENT_WHD: make reusable code available for other targets14441
M2354: Support Nuvoton’s new target14221
Enable the RWW function of Macronix Flash MX25LW51245G in OSPI block device driverTest 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
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 configurationsTDB_EXTERNAL_NO_RBP
andFILESYSTEM_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
andFILESYSTEM_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 toTDB_EXTERNAL_NO_RBP
orFILESYSTEM_NO_RBP
should switch to useTDB_INTERNAL
,TDB_EXTERNAL
,FILESYSTEM
ordefault
depending on their use cases.Add API to get Wi-SUN Neighbor Table
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#14586Added API to reset MAC statistics and Wi-SUN statistics
Summary of changes
Added API to reset MAC statistics and Wi-SUN statistics.
This is copied from https://github.com/ARMmbed/mbed-os/pull/14439Implement polymorphism for CAN driver
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 inmbedtls/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 target14505
Adding NXP TARGET- MIMXRT1170_EVKFixes and Changes
14661
Delete STM32F401XE.ld14657
Deprecate broken TDB_EXTERNAL_NO_RBP and FILESYSTEM_NO_RBP in kv_config14656
CMake: Only force Ninja response files on Windows14655
mbedtls_stub: Add missing include14653
requirements: Relax Click version requirement14651
STM32L4 update drivers version to CUBE V1.17.014631
driver/I2C: STm32: Updated HAL_I2C_ErrorCallback function to store information about error reason in obj_s->event14628
ARDUINO_UNO form factor and new PinNames for MIMXRT1050 target14627
Dispatch Gap::stopPeriodicAdvertising to the right function.14626
STM32WB update drivers version to CUBE V1.11.114625
BLE: Fix overwriting attribute data from read auth callback14624
error: use __INITIAL_SP from cmsis instead of RTX one14623
Updated SDK 2.9.1 and added Flash Support for MIMXRT1170_EVK14619
Add API to get Wi-SUN Neighbor Table14612
CAN: fix slave CAN start filter bank setup14609
STM32L0 update drivers version to CUBE V1.12.014605
BLE: Fix traces14603
Avoid init class definition for compatibility14602
Deprecate indications event onConfirmationReceived14599
STM32WL: enable lora with baremetal14594
STM32_gen_PeripheralPins.py : TargetName correction14589
fix(docs): corrects various typos in project documentation14588
Add v8.1-M architecture awareness14587
create symlink for all sub examples which has mbed-os.lib14585
add #include “wsf_os.h” into hci_drv_apollo3.h14583
musca: Add detect_code for MUSCA B114582
Update TF-M to v1.3.014581
STM32G4 : serial issue with LP_UART114578
STM32 : new DISCO_WB5MMG target14576
Trace: Change tr_debug color from gray to bright blue14573
Nanostack release v13.0.014571
CMake: STM32: Add missing emac init files14569
remove cmake specific example list14567
M487: Resolve WDT reset H/W limit14561
Add bare metal support to Renesas targets14555
Nuvoton: Fix hal_watchdog_kick() with WDT stopped14554
HAL ticker tests update14553
Added API to reset MAC statistics and Wi-SUN statistics14551
Travis: update to focal dist14550
Fix DeviceKey documentation regarding RoT14548
STM32F4 update drivers version to CUBE V1.26.114542
STM32F3 update drivers version to CUBE V1.11.214540
Improve condition for declaringstruct timeval
14539
STM32G0 update drivers version to CUBE V1.4.114538
Cmake: Add MBED_TEST_MODE macro14537
Better document MemoryPool behaviour14505
Adding NXP TARGET- MIMXRT1170_EVK14497
Check for duplicate status callbacks before adding to the list14451
STM32 : enable PinMap_GPIO table14336
Implement polymorphism for CAN driver13791
mbedtls: Don’t attempt to use default_random_seedUsing 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.
- Description: Parsing IP addresses in the X.509 certificate subjectAltNames is not supported yet. In certificate chains relying on IP addresses in subjectAltNames a
-
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
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
Summary of changes
We are removing the old and broken ble services in favour of the external services repository.
Standard Pin Names
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
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 theread/write, etc
calls. This would enable an MCP23008 driver to provideDigitalOut
-like objects that abstract away the intermediate I2C transfers. These objects can then be passed to older APIs usingDigitalOut
pointers.
For this to work properly, some of theDigitalIn/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’sCAN
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 inmbedtls/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-G431RBFixes and Changes
14546
CMake: Fix mbed-802.15.4-rf driver14545
examples: Deprecate mbed-os-example-bootloader14543
Fix Unbuffered serial enable/disable issue on Cypress kits14541
Increase baud rate of mbed-os-example-crash-reporting to 11520014532
Make ticker computation use shift-by-014529
CMake: Fix Mbed TLS compilation on Cortex-M0/0+/1/M2314527
Tests: use only NUCLEO_F401RE for the NFC examples14524
M487: Adjust placement of SYS_UnlockReg in WDT reset code14521
Updated TARGET_STM32 board pinMap_PWM table with GPIO_NOPULL14516
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 set14507
make target list for applications in examples_cmake.json consistent with examples.json14506
Add GattUpdatesEnabledCallbackParams struct14499
STM32F1 update drivers version to CUBE V1.8.314496
STM32: cleanup around devicename information from CMSIS pack14491
Update FPGA documentation14486
CMake COMPONENT_BlueNRG_MS: fix mbed-ble14485
STM32: RTC HSE support review changes14483
Improve HeapBlockDevice, TDBStore and tests14482
STM32L4: align all system_clock files14481
STM32WL: update “lora.max-sys-rx-error”14480
STM32: Standard Pin Names14479
STM32L1: enable USBDEVICE14478
STM32L1 : enable ADC after deepsleep14477
STM32: Add STM32L5 in arm_pack_manager index file14473
Update cmake supported example list14472
CMake: supportOUTPUT_EXT
fromtargets.json
14469
STM32: remove critical sections in flash_program_page14467
Musca targets: align and clean up configurations14466
GigaDevice: Add bare metal support for targets14465
Maxim: Add bare metal support to targets14463
Wisun: Add new start methods to Wi-SUN BR with WisunInterface parameter and deprecated the old ones14460
Ambiq: Fix baremetal build profile when using CLI 114457
Update UART pin names & add MBED_CONF_TARGET_STDIO_UART overrides14455
Fix RTOS & OS wrapper header conflicts for Mbed CLI 114450
FPGA SPI : decrease test frequency for ASYNC test cases14447
Remove paths to fetched TF-M repos from .gitignore14445
STM32WB/STM32WL: watchdog LSI frequency14444
STM32: reset GPIO value is analog mode14442
Improve WisunInterface set_network_size docs14438
Update Event Queue Documentation14437
Remove ownership/acquire in QSPI/OSPI driver14436
BLE: replace obsolete services with the new services repo14435
Fix missing linkage of mbed-mbedtls-cryptocell310 to mbed-mbedtls14429
CMake: Fix STM target build failures14428
CMake targets: remove labels usage, not required anymore14424
WIO_BG96: fix macro exclusion - use cellular14421
SDP-K1: enable IAR compilation14396
TF-M: Switch to vanilla TF-M’s OS wrapper14381
Standard Pin Names14359
Add bare metal support to NXP targets14259
Support STM Nucleo-G431RB14243
STM32: Add HSE support to RTC14198
Feature bluetooth traces13209
Implement polymorphism for DigitalIn/Out/InOutUsing 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.
- Description: Parsing IP addresses in the X.509 certificate subjectAltNames is not supported yet. In certificate chains relying on IP addresses in subjectAltNames a
-
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
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/14431Add integer overflow check to the malloc wrappers
Summary of changes
Backport of #14407
Add a check that the combined size of the buffer to allocate andalloc_info_t
does not exceed the maximum integer value representable bysize_t
.[mbed-os-5.15] Bring in MIMXRT1050_EVK changes from feature-wisun branch
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
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/14261Impact of changes
None
Migration actions required
None
[mbed-os-5.15] Nanostack release v12.8.0
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
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
Summary of changes
Corrected nanostack coverity warnings.
This is mbed-os-5.15 version of:
https://github.com/ARMmbed/mbed-os/pull/14146Impact of changes
None
Migration actions required
None
[mbed-os-5.15] Fix
mbed device-management
command for Python 3.8Summary of changes
Bump the
future
module version to 0.18.0 to fix anImportError
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 inv0.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
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/14018Impact of changes
None
Migration actions required
None
FIX: update cryptography version to 2.5 or later
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
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/13937Impact of changes
None
Migration actions required
None
[mbed-os-5.15] Network interface MAC address set/get
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/13902Remove nanostack-border-router example from list of supported examples
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
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 docs14408
Add integer overflow check to the malloc wrappers14326
[mbed-os-5.15] Bring in MIMXRT1050_EVK changes from feature-wisun branch14263
[mbed-os-5.15] Added missing const qualifier to mesh ethernet mac addr get14170
[mbed-os-5.15] Nanostack release v12.8.014168
[mbed-os-5.15] travis: fix 3.5 test bug in attrs14147
[mbed-os-5.15] Corrected nanostack coverity warnings14057
[mbed-os-5.15] Fixmbed device-management
command for Python 3.814046
[mbed-os-5.15] Corrected Wi-SUN certificate add and remove functions on Wi-SUN interface14034
FIX: update cryptography version to 2.5 or later13954
[mbed-os-5.15] Replaced new calls with nothrow version of the call on mesh api13920
[mbed-os-5.15] Network interface MAC address set/get13897
Remove nanostack-border-router example from list of supported examples13879
mbed-os-5.15: Add FLASH, FLASHIAP & bootloader support for VK_RZ_A1H boardUsing 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
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
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 existingtools/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
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 toARM_MUSCA_B1_NS
andARM_MUSCA_S1_NS
as target names should be changed to have_NS
removed from the names.Add lw ip opttion for rdnss
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 inmbedtls/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_write14422
Fix Lora timer cancellation14419
STM32: remove mbed.h include in connectivity14418
EP_ATLAS: Fix mbedtools build errors14416
CMake: Fix FF1705_L151CC build14411
CMake: Fix Cortex-A9 flags for GCC_ARM toolchain14410
CMake: Fix Renesas build error on Linux14407
Add integer overflow check to the malloc wrappers14403
update baud rate of CY8CKIT064B0S2_4343W to 11520014402
Fix sys/stat.h issue for unit tests on macOS14401
Workaround for Cortex-M33 Arm toochain linking14393
Doc update: post build now supported on TF-M targets14392
STM32WB: enable QSPI for custom boards14391
Update secure binaries with platform init fix for ARM_MUSCA_S114390
Add extern “C” around am_hal_secure_ota.h functions14387
Update serial_api.c - Issue #14353 - Setting BufferedSerial pin to NC throws runtime assertion14386
Freescale: Remove IAR from list of supported toolchains14380
CMake: Refactor target MCU_STM32F103xE library name14379
Nuvoton: Enlarge NuMaker PWM duty cycle range14378
CMake: Pass application/test name to post build operation14376
CMake: Add mbed-cmsis-cortex-m into Nuvoton target14375
CMake: Update readme for greentea test build procedure14374
targets: Remove target. prefix from ARM-CM3DS-MPS2 override14373
Add bare metal support to Nuvoton targets14372
S1SBP6A: Add bare metal support14368
Fix CMake include path for the minimal-printf test14367
fix typo: replace underscore by hyphen in lwipstack/mbed_lib.json14363
Add bare metal support to Silicon Labs targets14362
Fix imgtool import for CYTFM_064B0S2_4343W signing14361
CMake: support signing TF-M targets with post binary hooks14355
CMake - Configure memory map per target to allow multiple add_executable14354
Update TF-M support to v1.214351
STM32 - Add if !defined check for USE_HAL_XXX_REGISTER_CALLBACKS14350
ARM_MPS2_Target: Fix conflicts in IAR configuration14349
Add bare metal support to Nordic targets14348
Add bare metal support to ARM FM targets14347
Add bare metal support to Ambiq targets14346
Add bare metal support to Analog Device targets14345
Add bare metal support to Toshiba targets14344
CMake: Fix PSOC6 post build script14343
Add lw ip opttion for rdnss14342
use calloc for new_interface_server14341
Update stm32xx_emac driver traces14340
STM32L5: enable USBDEVICE14339
STM32F4 update drivers version to CUBE V1.26.014338
STM32: update readme with clock information14337
STM32L1 update drivers version to CUBE V1.10.214334
CMake: Remove references of APP_TARGET14328
CMake: Fix Greentea tests14325
EP Atlas Target Updates14323
Bring in MIMXRT1050_EVK changes from feature-wisun branch14321
Mergify: remove stale label when PR is merged14318
CMake: Fix path to STM32F0 GCC linker scripts14316
MAX32625: Fix CMake build14315
NUVOTON: Remove CMake listing of M261 include directory that do not exist14314
CMake: Fix ARM MUSCA NS targets build14313
CMake: Fix Cortex-M33 GCC build14311
CMake: Fix Cortex-A9 builds with GCC_ARM14306
CMake: Create CMSIS library targets to remove dependency on MBED_TARGET_LABELS14305
BLE: fix indexing of array in Cordio host stack14304
CMake: Refactor post-build hook to remove APP_TARGET references14303
Add STM32F103xE SOC support14301
Add bare metal support to Renesas targets14300
Add bare metal support to ARM_MPS2_Target family of targets14299
CMake: Refactor mapfile generation14298
CMake: remove debug print14295
CMake remove IAR references in the tree14293
STM32L4 : align CMakeLists.txt with all STM3214291
Add bare metal support to freescale targets14271
Add .editorconfig fileUsing 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.
- Description: Parsing IP addresses in the X.509 certificate subjectAltNames is not supported yet. In certificate chains relying on IP addresses in subjectAltNames a
-
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 creationMigration 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.
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.
Summary of changes
Add a function to test if a handler is present in an event chain.
Update EventQueue API to use chrono times
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 inmbedtls/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 support13979
Support for ST STM32 NUCLEO-G431KB Development BoardFixes and Changes
14289
CMake: Refactor Cypress targets14286
CMake: remove workaround for targets prior refactor14284
CMake Arm SSG: refactor CMake targets14282
CMake: Refactor Nuvoton targets14281
CMake: refactor GigaDevice targets14280
CMake: Refactor WIO_EMW3166 support14279
CMake: Refactor Silicon Laboratories targets14277
Apollo3: Fix run time error due to memory mapping14276
CMake: refactor Samsung targets14275
Fix ST targets naming and linker script issues14272
Change CMAKE_BINARY_DIR to CMAKE_CURRENT_BINARY_DIR14270
CMake Maxim: fix targets naming14269
CMake: Refactor Toshiba targets14268
CMake: Refactor NXP targets14267
CMake: Refactor Nordic targets to be CMake buildsystem targets14266
Fix up some ST CMake targets14265
CMake: remove need for APP_TARGET14264
BLE: fix termination of periodic advertising sync14261
Add missing const qualifier to mesh ethernet mac addr get14257
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 targets14253
CMake: refactor Renesas targets14252
CMake: Refactor Freescale targets14250
example-psa - add MUSCA_S1 and update baudrate14249
STM32WL : add LoRa support14248
MAX32625MBED: Gate ticker (timer0) clock on deepsleep14247
CMake: Refactor Greentea test CMakeLists.txt14246
ARM FM: refactor CMake targets14245
STM32WL: I2C and ADC full support14244
Analog Devices: refactor CMake targets14242
Ambiq Micro: refactor CMake targets14239
BLE: fix passkey for display being returned reversed14238
Update list of licenses in LICENSE.md14235
CMake: Add post build operation support14232
CMake: Fix Cypress MCU_PSOC6_M4 build14230
nRF52: clean pwm structures on deinit14228
CMake: rename greentea test macro14215
STM: Fix Hal_GetTick wrap around errors14213
Add cortex-m55 to CMake support14212
Expose the public Stream API14207
Adding NUCLEO_WL55JC support14205
CMake: better detection of memap dependencies14204
Set executable suffix in CMake14203
Adding USB HS Support to the SDP-K114202
BLE: return OK when stopping advertising set that is not active14201
Update maximum version of intelhex to 2.3.014199
Refactor ST Mbed targets to be CMake buildsystem targets14197
Upgrade gtest to 1.1014196
CMake cores: fix cpu/fpu flags14195
LoraRadio test update for baremetal support14190
CMake cores: fix NS cores14181
CMake: Add support for Mbed TLS Greentea tests14179
Fix minimal-printf floating point decimal output error14092
NFC: Add support for M24SR driver14031
BlockDevices: specify mbed namespace where needed14030
STM32H7: Compute I2C timing according current I2C clock source13979
Support for ST STM32 NUCLEO-G431KB Development Board13975
Update EventQueue API to use chrono timesUsing 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.
- Description: Parsing IP addresses in the X.509 certificate subjectAltNames is not supported yet. In certificate chains relying on IP addresses in subjectAltNames a
-
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
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
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
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
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
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
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 argumentsTEST_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 canON/OFF
via CMake command-line argument at the configuration time to select/unselect baremetal greentea test
CMake: Create mbed-greentea library
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
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
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
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 implementingSERIAL_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
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 inmbedtls/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 targetFixes and Changes
14186
NXP: Fix CMake support and clean up14185
CMake: Correct ARM toolchain MCU core flags14180
Cypress: Fix CYTFM_064B0S2_4343W CMake build14175
Add declaration to expose enable_* functions from SerialBase14173
Update cert for testing server14169
Nanostack release v12.8.014166
ARDUINO_NANO33BLE: don’t define Arduino pins if compiling in Arduino core14159
CMAKE : correct “Cortex-M7F” link parameter14155
CMAKE / M33 : DOMAIN_NS issue14154
STM32: correct cmake compilation issues14149
STM32G4: enable TRNG and correct dual bank flash detection14148
Corrected nanostack coverity warnings14145
STM32H7: disable uSD transceiver14144
Update for Arduino Pinnames14143
Travis: Remove make.py test for events and littlefs14142
STM32L4: Correct heap size formula14137
Storage: Fix FATFileSystem unmount issue14135
NXP: Fix heap size formula in scatter files14134
GigaDevice: Fix heap size formula in scatter files14133
STM: Fix heap size formula in scatter files14132
Apollo3: Fix heap size formula and stack start address in scatter file14131
MUSCA_B1: Fix heap size formula in scatter files14130
NRF52840: Fix heap size formula in scatter files14129
EFM32GG: Fix heap size formula in scatter files14126
tests: Limit PSA crypto tests to Arm-v7M targets14125
BLE: Fix Security Manager key generation14120
STM32F439 : correct cmake compilation14112
ARM linking issue: compile out trace when not available14111
BLE: fix scanning/advertising when extended features are available but disabled on host14109
Remove deprecated connectivity examples14108
travis: set attrs to 19.1.0, fixes python 3.5 issue14104
CMake: Fix the listing of system_clock.c for STM32F413xH14103
CMake: Add support for netsocket/network Greentea tests14101
CMake: Add CMake support for netsocket greentea test14100
CMake: Fix path to Ambiq BLE source file14099
CMake: Add support for CORDIO Greentea tests14098
CMake: Add support for LoRaWAN Greentea tests14095
CMake: Add CMake support for events greentea test14094
CMake: Add CMake support for rtos greentea test14093
CMake: Add Support for hal greentea test14091
CMake: Add support for NFC Greentea test14090
CMake: Add support for Blockdevice Greentea tests14089
CMake: Add support for Filesystem Greentea tests14088
CMake: Add support for KVstore Greentea tests14087
Update events period method to check for invalid values14084
BLE: Fix GattServer callbacks not being copied to GattServer instance of the service14083
Add SLEEP/DEEPSLEEP support for MAX32630FTHR14080
Add bare-metal support for MAXIM targets14079
CMake: Add Blockdevice dependency to KVstore library14078
CMake: Add support for OSPIF blockdevice14076
Replace macros in MbedTester to avoid conflicts14075
Maxim targets; Add USB stack implementation14074
CMake: Add cmake support for Toshiba targets14072
CMake: Add CMake to platform greentea test14071
Addinternal
subfolder to USBDriver’s CMakelists14068
Enabled USBDevice in targets.json for H743ZI214066
STM32F2 update drivers version to CUBE V1.9.214065
CMake: streamline kvstore support14064
examples:create build_data after example application build14063
Support arbitrary storage alongside WiFi firmware in external storage on Cypress targets14062
Cypress Asset Update14061
CMake: Create mbed-greentea library14060
CMake: Add CMake to drivers greentea test14055
CMake: Remove TODO note in device_key list input source file14050
fix QSPI-API for NRF5214049
DISCO_L072CZ_LRWAN1: enable LORA by default14048
nanostack: correct Wi-SUN certificate add and remove functions on Wi-SUN interface14047
Remove unsupported Nordic SoftDevice build support14045
CMake: add support for Nordic targets14042
CMake: Add support for all Ambiq Micro Mbed targets14041
Add SPDX identifier to files in storage14038
Fixmbed device-management
command for Python 3.814036
Add SD component and Update SD card SPI interface for Maxim’s MAX32630FTHR14035
Remove unsupported Renesas target include files14032
STM32: RESET GPIO during init is configurable14029
STM32H7: FDCAN: use PLL1Q frequency for calculations14027
CMake: Fix Analog Devices targets support14023
Adding QSPI support to SDP-K1 board support package.14021
CMake: Add support for Renesas targets14020
Add SPI bitwidths to ST targets where supported14008
Add proper power save mode command format for MTS_DRAGONFLY_L47114007
Clean-up: TDBStore no longer requires BlockDevice to have flash behaviour13976
PSoC 6: rework sleep overrides by Cypress’s debug macro13968
CMake: Add support for all ARM SSG Mbed targets13965
Clarify the time units stated in the delay and period function headers for events13944
CMake: Add requirements.txt file for required Python modules13881
Add std::span implementation for cxxsupport13826
Add Arduino Portenta H7 as target13809
Remove Cellular dependency in netsocket13246
Support to BlueNRG_2 BLE componentUsing 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.
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. The0x01
was a leftover from softdevice’s days.Network interface MAC address set/get
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: #13902Restructure KVStore to one library per store type
Summary of changes
Fixes: #13657
Mutually depends on: https://github.com/ARMmbed/mbed-os-example-kvstore/pull/60
In #13307 we combined multipleKVStore
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 asFileSystem
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 (containingmbed_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, containingkvstore_global_api
functions andKVMap
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 onembed-storage-kvstore
target. Hopefully the CMake team will later componentise each type of KVStore intombed-storage-kvstore-<type>
. similar to what they’ve already done forBlockDevice
s. @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"
inmbed_app.json
. Note that theKVStore
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 requiresmbed-storage-blockdevice
) to your app’sCMakeLists.txt
.Add width modifier and prepending zeros for hexadecimal output and decimal precision for floating point
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 givenMBED_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 givenMBED_CONF_PLATFORM_MINIMAL_PRINTF_SET_FLOATING_POINT_MAX_DECIMALS
is used.Optimise mbed_ticker_api.c
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 optiontarget.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 inmbedtls/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 targets14019
Port analog devices to CMake14017
Nuvoton: Remove DISABLE/ENABLE macro definitions in BSP14014
Update GattAuthCallbackReply_t enumeration.14009
ble cyw43xxx: dev/hci driver terminate14005
Correct/clarify TimerEvent::insert documentation14003
STM32H7: system power supply configuration14002
STM32F0 update drivers version to CUBE V1.11.214001
Add missing retry to atomic exchange14000
Add octa RAM calibration feature to GR-MANGO.13998
Add crash reporting and autoreboot capability to MTS_DRAGONFLY_L471QG13996
TDBStore: pad program units when writing record_header_t; ensure work buffer is large enough13995
CMake: Add support for GigaDevice targets13992
STM32_gen_PeripheralPins.py v1.1913988
BLE: Fix periodic advertrising sync based on advertiser list13987
CMake: Set required toolchain and processor flags globally, instead of per-target13985
CMake: fix memory map generation13978
S5JS100: remove idle hook in favour of Mbed-default idle hook13977
CMake: Add support for all Samsung Mbed targets13973
stm32: delete objects.h13972
CMake: Add support for WICED target13970
CMake: Add support for all Maxim Mbed targets13969
Maxim: Remove support for some Maxim targets13964
CMake: Add support for all ARM FM Mbed targets13963
Fix ThisThread warnings13962
STM: fix ARMClang sct files, using proper -E command13961
Silabs: Remove EFR32_1 rail files13960
Add const keyword to get_erase_size declaration13959
CMake: Add support for all Silicon Labs Mbed targets13958
Fix a typo in STM32F3’s CMakeList.txt13957
Replaced new calls with nothrow version of the call on mesh api13953
Add nanostack dependency lib13952
CMake: Add support for all Freescale Mbed targets13951
MCU_NRF52832 (NRF52_DK, SDT52832B): use two-region memory model to support MicroLib13950
Freescale: Remove KL27Z files13949
Fix mbed::Dir type handling in fat_filesystem13948
CMake: Simplify BLE library inclusion13947
Fix erase type determination for [Q/O/]BlockDevice::erase()13946
Update to reflect Mbed CLI 2 changes13945
Freescale: Remove K20XX files13942
ble: Fix persistence in SecurityDB13939
STM32: LSE DRIVE feature update13936
Network interface MAC address set/get13935
Dragonfly Nano(MTQN): power on/off so soft_power_on() fix13934
CMake: Add support for Cypress targets13932
Reduce ST QSPI/OSPI trace verbosity to debug13931
STM32 I2C: use correct HAL API13930
CMake: pass macros to ARM toolchain linker13929
STM32: LPUART clock source selection up to a serial driver13928
Clean remnant of experiment with ARM toolchain13925
Cypress: Remove CY8CKIT_064S2_4343W files13924
CMake: Add support for all NXP Mbed targets13922
CMake: add nuvoton targets13921
TARGET_NXP: Remove support for LPC55S6913918
TARGET_NXP: Remove support for LPC11U6X13917
Move SFDP to blockdevice13915
CMake: add all TARGET_STM targets13914
STM32 FLASH API : add critical sections13908
Restructure KVStore to one library per store type13907
Workaround to fix RTC-reset issue on the EFM32GG11_STK370113906
STM32G070: generic target creation13898
Adding CAN function to GR-MANGO13896
STM32 OSPI support13780
STM32 H7: fix USB in sleep mode13777
STM32 : full GPIO reset during mbed init13755
Fix MBED_ERROR call in init_os_timer13548
Add width modifier and prepending zeros for hexadecimal output and decimal precision for floating point13085
Change MBED_STATIC_ASSERTs version for built-in12897
Optimise mbed_ticker_api.cUsing 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
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
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
andmbed-baremetal
. The rest of the components in the Mbed OS repository are targets prefixed withmbed-
, for examplembed-ble
andmbed-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 inmbedtls/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 options13905
STM32L4: ADC compilation issue with L42213904
CMake STM32L475xG: fix linker/startup inclusion13900
mergify: fix travis rename check13895
CMake: Fix error that prevented re-build13894
Fix compilation warnings13893
MIMXRT1050_EVK return bootloader support13891
Remove nanostack border router from examples list13889
Nanostack release v12.6.213887
CMake: Specify mbedtools in the build instructions13886
Don’t require too old mbed tools13885
TEST: update cmake example on ble examples13882
CMake: Use relative paths to list source files and directories13880
S1SBP6A fix RTC range13878
Add missing blockdevice mbed_lib.json13874
STM32F3 update drivers version to CUBE V1.11.113870
CMake: Address review comment from PR#1356613869
Create a USB drivers library13867
SysTimer: Prevent unacknowledged tick overflow when halted for a while13864
Fix bare metal builds on Cypress targets13862
STM32 SERIAL: free RTS/CTS pins13861
Ambiq apollo3 fix of an SPI related SD bug13859
STM32L4: Use HSI for LPUART13853
Samsung: fix baremetal #1385113849
Add apollo3 sleep13848
Q/OSPIFBlockDevice: fix misconception in minimum program size13847
Add workaround for files with permissive binary licenses13846
STM32 usb: fixing missing header file13843
Fix linking issue #13793 when using -O0 compiler optimization in ARMC13839
cmsis: remove math header file13833
Add new Gap::EventHandler callbacks to ChainableGapEventHandler class13832
Fix GCC_ARM non-contiguous FW forK64F
andK66F
13828
fix ble example names13822
BLE fix periodic advertising list function parameter checking13817
STM32: define RCC_LSE_BYPASS to allow using PC_15 as gpio13816
STM32: allow HS USB endpoints and increase USB OTG_HS endpoints number13811
Ble conditional compilation13810
Remove missing examples from the config13808
Remove erroneous character from SPDX identifer13802
STM32F4 FLASH API update13800
OSPI: enable feature in baremetal test configuration13797
STM32: add setting for LSE drive load level13796
Update README.md to remove WEP test case with NULL data13768
COMPONENT_FPGA_CI_TEST_SHIELD: better debug print13753
Remove Unneeded nordic-bsp Folder from Cordio13747
Renesas: fix timing to wait UART completion in deep sleep function13699
Fix sfdp_find_addr_region algorithm13698
Fix SPIF read dummy cycles not being reset13692
Fix I2C slave bugs on Renesas RZ/A series.13691
Remove unused Nordic TARGET_SDK_1113671
Add an socket option to set type of service to set specific precedence for QoS13566
CMake: Add initial supportUsing 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.
- Description: Parsing IP addresses in the X.509 certificate subjectAltNames is not supported yet. In certificate chains relying on IP addresses in subjectAltNames a
-
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
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/13740mbed-os-5.15: Add initialization check to RADIUS ipv6 address
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/13588M2354: Upgrade to BSP v3.00.001 (5.15)
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
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)
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_M252mbed-os-5.15: Add certificate remove before add to wisun tasklet
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/13608mbed-os-5.15: Enable Nanostack DNS cache usage
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/13733mbed-os-5.15: Nanostack release v12.6.0
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: #13718mbed-os-5.15: Mesh interface global up is indicated always on bootstrap ready
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/13666mbed-os-5.15: Nuvoton: Fix NuMaker I2C timeout
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
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
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
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
Summary of changes
Changing Pin Names for Arduino header on STM32H747
M2351: Support GCC and IAR
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.
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 includeSDHI
.Update Mbed CoAP to v5.1.7
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.
- MappedMBED_CONF_MBED_CLIENT_RECONNECTION_COUNT
Pelion Device Management Client configuration option toSN_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
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 valueARM_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
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
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: #13550Nuvoton: Fix degrading QSPI to SPI (5.15)
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
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
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
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
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 #13134ci: Update
arm-none-eabi-
versionSummary 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
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.
Summary of changes
This PR included following features:
- ODIN binaries compiled with latest toolchains
- Fixes ARMmbed#12582
- Fixes ARMmbed#12573Known 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.813775
mbed-os-5.15: Add initialization to radius retry values13774
mbed-os-5.15: Add initialization check to RADIUS ipv6 address13770
M2354: Upgrade to BSP v3.00.001 (5.15)13758
mbed-os-5.15: Add APIs for Device min sense and CCA threshold table13739
Nuvoton: Enable fault handler dump message on CM23 targets (5.15)13736
mbed-os-5.15: Add certificate remove before add to wisun tasklet13735
mbed-os-5.15: Enable Nanostack DNS cache usage13719
mbed-os-5.15: Nanostack release v12.6.013715
mbed-os-5.15: Mesh interface global up is indicated always on bootstrap ready13709
mbed-os-5.15: Nuvoton: Fix NuMaker I2C timeout13696
adapting to new s3 bucket location in travis.yml13693
TEST: Extend the kvstore test time out to 120s13661
K82F, KL82Z: Fix the I2C SDK driver slave transfer13652
Fix STM32H747 Arduino pinout13643
M2351: Support GCC and IAR13639
Add SD, USBDEVICE & LPTICKER support for VK_RZ_A1H board.13606
Update Mbed CoAP to v5.1.713578
Fix for linker issue in AdBun-M06613576
mbed-os-5.15: Add external RADIUS server configuration to Wi-SUN Border Router13559
[mbed-os-5.15] Nanostack release v12.5.013537
Nuvoton: Fix degrading QSPI to SPI (5.15)13525
device_management.py supports application access keys 5.1513512
mbed-os-5.15: Nuvoton: Fixed NUC472 SD buffer alignment13496
[mbedos-5.15] Updating mbed-mesh-api13495
[mbed-os-5.15] Add WiSun network size configs in JSON13487
ci: Updatearm-none-eabi-
version13451
[mbed-os-5.15] Nanostack release v12.4.013450
[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
Summary of changes
~Requires #13727 to be merged first~
Merged #13727 since this PR is closely tied to it.
Introduces aChainableEventHandler
base class that is essentially a singly-linked-list of EventHandlers along with two subclasses:
-ChainableGattServerEventHandler
that enables chaining togetherGattServer::EventHandler
s
-ChainableGapEventHandler
that enables chaining togetherGap::EventHandlers
s
The ChainableGattServerEventHandler class allows an application toregister
separate event handlers (eg: for different services that need to handleGattServer
events) and then set the globalGattServer::setEventHandler
to the instance ofChainableGattServerEventHandler
with all registeredGattServer::EventHandler
s.
The ChainableGapEventHandler accomplishes that same as above forGap:EventHandler
implementations.
Common functionality has been split off intoChainableEventHandler
.
See #13728 for discussion around this implementation.Impact of changes
None
Migration actions required
None
Feature ble host privacy
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/13706Impact 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 functionstartAdvertising
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 toGap::EventHandler
to catch the change of advertising state.Add mutiple push and pop for circular buffer
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
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 inmbedtls/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 targetFixes and Changes
13787
Update Mbed CoAP to v5.1.813785
BLE: Fix access to attcCb.onDeck and attsCb.prepWriteQueue access13782
scancode: fix SPDX check - only warning13779
BLE: Fix scan state and host resolution of RPAs13778
STM32G4 update drivers version to CUBE V1.3.013771
Separate cloud example configurations to another file13757
wisun: Add APIs for Device min sense and CCA threshold table.13749
Add missing args to weakly defined PalRtc functions13745
Scancode: Fix false positive reported by scancode output analyser script13744
Use NUCLEO_F429ZI for Azure IoT Hub and Google IoT Core examples testing13743
Define SD and STORAGE for the MAX32630FTHR and prevent warnings during compilation on Mbed 5.12 and above13742
nanostack: Add initialization to radius retry values13741
STM32L4 update drivers version to CUBE V1.16.013738
Nuvoton: Enable fault handler dump message on CM23 targets13737
Add certificate remove before add to wisun tasklet13734
BLE: Introduce ChainableEventHandler and subclasses13733
Enable Nanostack DNS cache usage13729
BLE: Enable getting an implicitly-created CCCD throughGattCharacteristic::getDescriptor
13725
STM32: update SetSysClock for NUCLEO_L476RG13724
Add license notice to Arm copyrighted source files plus SDPX to already licensed files13723
Add crash RAM to STM32F412xG13718
Nanostack release v12.6.013717
Feature ble host privacy13714
nanostack: mesh interface global up is indicated always on bootstrap13713
STM32H7: add NUCLEO_H7A3ZI_Q new target13707
Fix ESP826613704
ble: reset transport last and reset the default chars in gatt server13697
STM32L5 update drivers version to CUBE V1.3.113694
adapting to new s3 bucket location in travis.yml13690
STM32H7 update drivers version to CUBE V1.8.013684
nanostack: fix inclusion of kvstore13683
USB STM32: fix header inclusion, removing mbed.h13681
Nrf52840 spim3 updates13679
Nuvoton: Fix NuMaker I2C timeout13677
psoc64: Update flash layout of CYTFM_064B0S2_4343W13674
Samsung: uart fixes13669
STM32L0 update drivers version to CUBE V1.11.313659
STM32WB update drivers version to CUBE V1.8.013655
STM32_gen_PeripheralPins.py v1.1713654
Remove WEP security Green Tea Test case as the WEP security Key are sequence of Hex Values13653
Use impl namespace in GattServer att_cb registration, not ble13649
Make mbed-trace available to bare metal13646
Make STM32F412xG system_clock.c functions weak13645
Patch STM32F4 HAL to fix F412CG USART3 issue13640
STM32: Fix system clock setup for XTAL and/or internal source on STM32H74313634
STM32L4: link issue with IAR13633
STM32WB: FLASH compilation issue with baremetal13632
fix DAPLINK error for S1SBP6A Target using GNU Toolchain.13623
Refactor mbed-os design docs13621
Refactor remaining TESTS related to hal, rtos, and platform dir13619
Travis: remove status functionality13611
Edit on Toolchain linker files for stm32L071xx target13610
Fix #13490 Cellular disconnect does not deactivate context13607
Update Mbed CoAP to v5.1.713602
WEP Security fix for Cypress Target Kits13601
Fix AnalogIn implementation on STM32G4 series13600
Refactor COMPONENT_FPGA_CI_TEST_SHIELD directory structure13595
Nordic: Support 31250 baud rate13593
STM32F: skip LittleFileSystem default instance and TDBStore tests13586
travis: license check for new files13565
Feature stm32g4 can support13563
Add mutiple push and pop for circular buffer13549
Make readdir reentrant13545
Fix enabling/disabling BLE-Features13432
Enable PDP type IPV6 and IPV4V6 to support more cellular service prov13406
STM32F1 USBDevice12644
Add OSPI driver to support the Octa mode of Macronix octaflash MX25LM51245GUsing 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.
- Description: Parsing IP addresses in the X.509 certificate subjectAltNames is not supported yet. In certificate chains relying on IP addresses in subjectAltNames a
-
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
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/13530Impact of changes
None
Migration actions required
None
Fix pwm out resets after suspend
Summary of changes
Fixed a Problem where PwmOut resets settings after suspend.
The problem is described here: https://github.com/ARMmbed/mbed-os/issues/13480Impact 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 inmbedtls/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 Update13509
Adding STM32L071xx target13196
Add ARM_MUSCA_S1 as a new target platform13006
NUCLEO_G031K8: Add new targetFixes and Changes
13594
PSA - Generate root of trust before accessing kvstore13592
Add test examples.json config for Azure and Google Cloud13587
MCU_STM32G031xx : decrease boot-stack-size13584
Revert “Always build both .hex and .bin files”13583
STM32: correct few Arduino pins value13580
TEST: Update example scripts for cmake feature13579
double negation fixed and ifs normalised13574
Fix a typo in PeripheralPins.c for EFM32GG1113573
Add RADIUS configuration options to Wi-SUN13572
STM32H7 ADC: clock selection lost after deepsleep13564
STM32Gx: LSI clock selection when LSE is not available13562
Nanostack release v12.5.013558
STM32L4+ : SRAM3 is powered off in deepsleep13552
general_block_device test: support non-uniform erase sizes13547
Nuvoton: Fixed NUC472 SD buffer alignment13546
Remove duplicate mbed-os/TESTS/host_tests scripts13544
TEST: remove MUSCA_B1 from attestation example test13542
B_L4S5I_IOT01A: new ST target13538
Ambiq AMA3B1KK and SparkFun Artemis Boards Target Update13536
Nuvoton: Fix degrading QSPI to SPI13533
Update test examples.json AWS config13531
Nuvoton: Set M252 Flash internal size for kv store test13524
device_management.py supports application access keys13523
STM32H7 ADC: No MultiMode configuration needed for ADC213522
STM32 USB connect procedure update13518
add option for a custom cert in connectivity-netsocket-netsocket-tls13516
Cypress: Rename CY8CKIT_064B0S2_4343W to CY8CKIT064B0S2_4343W13514
STM32 USB: use SNG_BUF13513
STM32 readme update13509
Adding STM32L071xx target13502
Targets: Add default “supported_form_factors” for all targets13501
USB-DEVICE tests: move host scripts13497
Updating mbed-mesh-api13494
Add WiSun network size configs in JSON13493
Fix SSID bug on Cypress Targets13492
Fix pwm out resets after suspend13489
Refactor hal directory13486
Fix heap stats overhead_size calculation13484
KVSTORE tests: move directories13481
STM32G0 compilation warning13476
Fix trivial compiler Warnings13475
Ble remove user facing abstraction13473
Nanostack release v12.4.013472
Fix for targets where DEVICE_SPI or DEVICE_INTERRUPTIN are defined but not both13470
Update dragonfly linkers13469
Support ignore list for spell checks13468
Add ccache to travis13467
Cypress: Update psoc6cm0p library to 1.2.1.67613464
adr: Recommend CMSIS component source structure13462
BLE remove address from API to cancel connect13460
Move PSA FEATURE_EXPERIMENTAL_API directory to platform13459
platform: fix internal platform headers13456
USBPhyHw: remove mbed.h inclusion13452
Use boot stack size from config system13449
BLE: Fix writing attributes larger than MTU size13445
Refactor storage COMPONENT_xx directory13443
Update mbed-client-cli from v0.5.013435
ci: Updatearm-none-eabi-
version13434
Move Callback tests to platform, USB tests to drivers13433
Refactor device_key13430
Relocated libraries in features/frameworks13425
Fix bare metal support on Cypress targets13416
Update CYSBSYSKIT_0113400
Call mbed_tfm_init before mbed_toolchain_init13399
QSPIF: options to preset reset sequence for legacy SFDP13397
Provide enablement of nrf52840 SPIM13375
Add GR_MANGO as a new target13196
Add ARM_MUSCA_S1 as a new target platform13006
NUCLEO_G031K8: Add new targetUsing 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.
- Description: Parsing IP addresses in the X.509 certificate subjectAltNames is not supported yet. In certificate chains relying on IP addresses in subjectAltNames a
-
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 target13382
M252: Support custom board13358
Add CYTFM_064B0S2 4343W TargetFixes and Changes
13447
psoc64: Update TF-M release image13420
Updating with new links and correct branding13419
PSOC6: update BSP startup code to match psoc6pdl-1.6.113418
Update PSoC64 TFM release package.13414
Refactor NFC directory structure13410
Refactoring \lorawan –> moving it inside \connectivity.13409
Move BlueNRG-MS driver into connectivity/drivers/ble/FEATURE_BLE13408
Fix memory leak in DNS cache13404
Restructure cryptocell13401
Added error checking to can_filter() for Classic CAN13392
Adding Samsung Bioprocessor S1SBP6A target13390
Fix cancel connect13386
PSoC6: update to psoc6pdl-1.6.113385
Restructure Mbed TLS13382
M252: Support custom board13379
Fix baremetal nightly test build issue13377
Move nanostack rf driver from features to connectivity13374
Fixed ThisThread flag_wait_any functions (fix #13360)13371
Restructure lwipstack directory13366
Fix IAR assembler errors on except.S13365
BLE streamlining13363
Refactoring \nanostack –> moving it inside \connectivity.13362
TESTS: update tests and fixing time drifting tests in rtos folder13358
Add CYTFM_064B0S2 4343W Target13357
Move emac-drivers from features into connectivity directory13356
Drivers directory restructuring13351
Fix MTS_DRAGONFLY_F413RH drag and drop failure13349
travis: Reject changes to tools13337
Fix Mbed TLS + TF-M integration issues13335
Restructure netsocket directory13333
Events directory restructuring13332
Nuvoton: Update M252 target name13330
Remove doubly defined symbol from mbed_lib.json13326
Adding NUCLEO_F429ZI to AWS example13325
Nuvoton: Revise the pin name of M263A button13323
Travis: fix scandcode failure13317
Fixed doxygen for Kernel::Clock::time_point argument13314
Storagesystem_storage
directory restructure13307
Restructure storage kvstore directory13306
Include mbed_assert.h in Queue13304
STM32WB update drivers version to CUBE V1.7.013301
Remove MTS_DRAGONFLY_F411RE post binary hook that adds the bootloader13300
Restructure storage filesystem directory13298
Refactoring \platform directory13294
Update MTS_DRAGONFLY_F411RE bootloader to work with mbed 5 & 613293
BLE Fix read and write callbacks for descriptors not firing if characteristic is not readable or writable13284
Refactor PPP library13283
BLE: Cordio bugfix fixed size writes under size must be allowed13279
TESTS: removed mbed OS 6 unsupported target in examples test13276
MASTER - LICENSE.md - clarify filesystem licensing13273
Restructure storage blockdevice directory13264
Moving around a few items within \rtos13261
Refactor cellular directory structure13255
Move mbed-coap to connectivity/libraries13254
Move nanostack-libservice into connectivity/libraries13253
Allow unit tests defined anywhere in mbed-os13244
Move storage from features into mbed-os root directory13234
Move drivers from components to connectivity13229
STM32 custom target: create MCU_STM32xx for each familyUsing 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)
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.
Summary of changes
Removing unused pins from SDP-K1 board support package.
Nuvoton: Add new target NU_M2354_NPSA_S/NS
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
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)
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
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 bootloader13338
Cleaning up SDP-K1 board support package.13320
Updating targets.json file for SDP-K1 board.13275
5.15 - LICENSE.md - clarify filesystem licensing13245
Nuvoton: Add new target NU_M2354_NPSA_S/NS13184
Nordic NRF52 GPIO API: Fix failure to clear the field ‘skip_gpio_setup’ in a local13164
ESP8266: Avoid duplicate data sends (5.15)13151
[mbed-os-5.15] Added Wi-SUN Interface APIs13150
Nuvoton: Support EMAC bus reset as while bus err (5.15)13147
Ws management API missing lib13114
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
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
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
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
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
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 inmbedtls/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_B113285
Use a different key to sign Non-secure image for ARM_MUSCA_B1 target13263
psa: Update TF-M for ARM_MUSCA_B113258
Fix deprecated warning messages in Cypress code13257
Remove invalid unicode characters from mesh-api/mbed_lib.json13252
Implements iterators for the Span class to be compatible with std::span13247
GreenTea: Fix inconsistency of Greentea KV message13237
STM32 custom target: Add missing information in arm pack manager for bootloader13230
Fix duplication of KW41Z Nanostack driver13227
Revert “Fix kv parsing bug in greentea client.”13225
BLE remove unused CYW4343X file13224
ADV_WISE TLS config duplication13223
PSoC Targets: Increase greentea sync timeout13222
STM32 PWM : avoid glitch after duty cycle change13221
STM32 ANALOGOUT and DEEPSLEEP13219
STM32WB RNG: enable use from both M4 and M0+ cores13217
Feature cordio update 20 0513213
Reduce LED use in automatic CI tests13210
Fix hal-sleep/sleep_manager Tests on Cypress Targets13207
TEST: update NRF52840_DK with correct FPAG configuration13206
Usb device init: wait_us fix13205
LWIPStack: set sockets non-blocking13199
TEST: Update kvstore tests with shorter timeout13198
Cypress: Update WHD to version 1.91.213191
Fix ordering in adjust config.sh13188
TEST: Add spif-driver support for baremetal test build13180
Update mbed-coap to version 5.1.613174
tests-mbed_timing_fpga_ci_test_shield-watchdog update with clock accuracy13173
STM32L4: I2C init parameters for L4+ MCU13172
Cypress: Fix internal JIRA. Add check if cybsp_init() is successful13171
Re-enable AWS example, limit targets13152
Add Wi-SUN Interface APIs13038
BLE: Add KVStore Security DB13011
Always build both .hex and .bin filesUsing 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
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
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
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
Summary of changes
Removed the unused variable and the redundant
const
return fromset_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
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
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
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)
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
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-mcdImpact 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
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-mcdImpact 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
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: #13079Impact 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
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
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/12798Impact 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
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. Clonembed-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
Summary of changes
Deprecates (in doxygen only)
MBED_STATIC_ASSERT
andMBED_STRUCT_STATIC_ASSERT
macros as these uses are now provided with the built-instatic_assert
(or for C without<assert.h>
:_Static_assert
).
Cuts down the number ofMBED_STATIC_ASSERT
andMBED_STRUCT_STATIC_ASSERT
macro definition#if
cases to just C++ or not C++.
Ifstatic_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
andMBED_STRUCT_STATIC_ASSERT
macros are deprecated, users should usestatic_assert
going forward as these could eventually be removed.Fix Mbed TLS
adjust-config.sh
scriptSummary 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 theadjust-config.sh
script to look for a the end of theconfig.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
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
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 toARM_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
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
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
andLowPowerTimer
are a little more flexible, and slightly optimised.Migration actions required
n/a
Added kv store adaptation to nanostack file interface
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
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
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
Summary of changes
Add a macro for adding bitwise operators to
enum class
types.
This addition is necessary to use bitwise operators onenum 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 withstatic_cast
calls.
In the future, standard Cenum
bit flags could be converted over toenum 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
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, theAnalogIn
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 overridingtarget.default-adc-vref
. Additionally, anAnalogIn
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 inmbedtls/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 Atlas12482
NUCLEO_G474RE: Add new platformFixes and Changes
13175
psa: Remove not needed TF-M ITS KVStore adapter13165
Remove Musca A1 target13158
WIFI: Add NSAPI_PRESENT macro in the WicedInterface13149
Cellular: ALT1250: Store RAT to permament memory13148
M2351: Remove from master13144
Fix esp8266 driver compilation warning13143
STM32H7: correct Ethernet issue in baremetal13142
EMAC: Fix Chrono compliation warnings13135
Restore MTS_MDOT_F411RE bootloader binary13130
Cypress: us_ticker fixes13128
Add support for Embedded Planet target Atlas13122
Cypress: Add target CY8CKIT_064B0S2_4343W, update psoc6pdl, psoc6cm0p13119
Move target implementations of NanostackRfPhy into nanostack-interface13118
Replaced rtos profile with full profile13117
Fix compliation warnings13115
MIMXRT1050_EVK: Add USB support13100
Fix BOOT_HEADER_SIZE allocation in ARM scatter files (#13058)13098
Cellular: Fix CellularContext destructor memory leak13095
STM32: MCU_STM32 supports rtos and bare-metal profiles13093
UNITTESTS: Fix TestPPPInterface::get_interface_name13091
STM32 baremetal support step3/3 (F2/F4)13090
STM: move us_ticker_defines.h include13089
Add a coverage_patterns kwarg to ARM_MICRO13086
STM32F1 update drivers version to CUBE V1.8.013083
STM32H7 update drivers version to CUBE V1.7.013082
Nanostack release v12.3.0 to master13081
Reinstate post build hooks for legacy targets13077
Python reference equality changed to value equality13073
STM32H7: FPGA tests support13070
add mbed-os-example-aws to the example list13069
Cellular: Fix unittest for CellularNetwork13066
mergify: add release type13064
nxp: fix vector redefinition from CMSIS13060
BLE: fix direct advertising on Cordio13055
BLE: RF tester commands (and Cordio unhandled command complete)13053
STM32 more information in README file13052
BLE: fix conn params update13048
Allowed to set Wi-SUN certificates in DISCONNECTED state13047
NRF: Migrate ARM Compiler 5 feature re-locate zero initialized variables13046
Use std::chrono based functions13045
CYESKIT_064B0S2_4343W: Remove parentheses from arduino pins13044
NRF: fix implicit declarations13043
NRF serial: Use nrf_uarte_event_t enum to avoid implicit conversion13042
Ensure all overridden virtual functions are marked withoverride
13041
Cordio: put parentheses to correct order of precedence in ternary expressions13040
BLE: Add tx power control to cordio HCI driver13039
BLE: remove limitation in the Cordio to update adv payload13037
BLE: Fix privacy and signing handling in Security Manager13036
STM32_gen_PeripheralPins.py script v1.1213035
Fix capacity check when service data are added to BLE advertising payload13034
ST boards: Fix sleep tracing13030
Fix ThisThread::get_name definition13022
STM32: add weak TargetBSP_Init function13019
Documentation update - MBRBlockDevice::partition type parameter13016
tests-mbed_hal-rtc patch to match IAR compilation issue13015
Force callback non-trivial for IAR13014
DISCO_H747I_CM4 is supporting now hex format13013
Cellular: Fix packet data registration after CREG13009
Add support for the Telit ME310 module13002
Deprecate MBED_STATIC_ASSERT and MBED_STRUCT_STATIC_ASSERT for built-in keyword13001
STM32 baremetal support step2 (L1/L4/WB)12998
Fix Mbed TLSadjust-config.sh
script12996
STM32F412 bypass PLL configuration when already done by bootloader12992
STM32 baremetal support step1 (F0/F1/F3/H7/L0)12991
Nuvoton: Support EMAC bus reset as while bus err12988
OS timer uses LPTICKER by default, then USTICKER12985
Update CYSBSYSKIT_0112983
Mutex::unlock - decrement _count inside lock12979
stack_size_unification test: set expected stack sizes from config12973
Cellular: Enable tac info for ALT125012966
DRAGONFLY_F413RH: Update power on and power off functionality12955
Replace Mbed PSA with TF-M PSA12937
Modify the operation of setting qspi frequency when calling Octo controller12905
Timer: minor revisions12900
Added kv store adaptation to nanostack file interface12899
Added Wi-SUN statistics interface12898
Add new configuration parameters to Wi-SUN network interface and Border Router class12824
Optimise fault handler assembly12772
Add enum class flag definition to platform12751
STM32WB: enable USB Device12747
STM32 MBEDTLS support with HW crypto12615
FPGA UART test cases addition with 7 and 9 bits data length12482
NUCLEO_G474RE: Add new platform12471
Extend AnalogIn API: read_voltageUsing 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.
- Explicitly disable the timer used for the us_ticker before attempting to enter DeepSleep.
-
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.013072
[mbed-os-5.15] Allowed to set Wi-SUN certificates in DISCONNECTED state13033
[Mbed OS 5.15] Upgrade to Mbed TLS 2.22.013031
Mbed OS 5.15: Warn on unrecognised error12986
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 propertyUsing 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 theSecurityManager::EventHandler
interface and register it withSecurityManager::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()
andble::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 withGap::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 isble::whitelist_t::entry_t
.
This is used byGap::setWhitelist()
SecurityManager::generateWhitelistFromBondTable()
.Gap::ConnectionParams_t
Superseded The latest GAP API requires full-fleged ble::ConnectionParameters
.ble::central_privay_configuration_t
Typo fixed Renamed to ble::central_privacy_configuration_t
.Supported compilers
This release has been tested and is known to fully support the following compilers: * ARMC v6.13 * GCC v9
Other versions of the compilers may not work as expected.
Migration Guide
This section lists specific changes in this release that may need special attention.
DeviceKey Root of Trust generation refactored
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 theDeviceKey
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
Summary of changes
string_to_pdp_type
is only used inCellularContext
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
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
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 theThread::start
method.Remove unsupported folder
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
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
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
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
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
Summary of changes
- 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. - 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. - 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. - 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.
- Added the new test suite for testing the build tool changes for default_lib and supported_c_libs.
- 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
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
Summary of changes
For consistency with
std::shared_ptr
, andmbed::Callback
, and as a
potential optimisation aid, giveSharedPtr
a distinct constructor for
nullptr
.Impact of changes
Optimise clearing by adding
nullptr
overload.Migration actions required
The added
nullptr
overload meansSharedPtr(NULL)
orSharedPtr(0)
will no longer work; you must useSharedPtr(nullptr)
orSharedPtr()
.Add MBED_FALLTHROUGH attribute
Summary of changes
C++17 standardised
[[fallthrough]]
forswitch
statements to suppress compiler warnings. Provide access to it, or compiler-specific alternatives.Impact of changes
MBED_FALLTHROUGH
attribute added tombed_toolchain.h
- a portable equivalent for C++17’s[[fallthrough]]
.Migration actions required
None
NVStore: already deprecated implementation removed
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
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 toCallback
.
CellularBase/AT_CellularBase removal
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 ~2kBMigration 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
Summary of changes
TDBStore
no longer requires Flash based block device.Storage related test improvements and small fixes
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 doesMBED_ASSERT()
if both parameters,start
andstop
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
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)
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 viaPOLY_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
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
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 reversedCallback(func, arg)
- Replace use of
attach
with simple assignment, such ascallback = func;
orcallback = { func, arg };
Add Getaddrinfo interface for multiple DNS adresses
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_IPAdd an exception for ARMC5 toolchain build
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
Summary of changes
This PR adds the function
set_random_address
to theHCIDriver
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
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) bytesARM:
Total Static RAM memory (data + bss): 261554(+8) bytes
Total Flash memory (text + data): 127573(-1193) bytesIAR:
Total Static RAM memory (data + bss): 25479(+296) bytes
Total Flash memory (text + data): 102418(-527) bytesThe RAM increase is because
ATHandler
is no longer created with a new -operator, and is instead a member ofAT_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 defaultFileHandle
and shares it with AT -classes.
- Controlling hang-up -detection moved asCellularContext::configure_hup()
. It can no longer be configured viaCellularDevice
.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 takesFileHandle
as parameterCellularDevice::get_file_handle()
removed.ATHandler::get_file_handle(
) can be used instead.
Cellular: Remove API’s empty default implemetations
Summary of changes
Cleanup the Cellular API by removing empty default implementations and making them pure virtual.
Targeted for release-version 6.0.0.
Impact of changes
- Classes inheriting
CellularDevice
will have to have implementation for the new pure virtual methods: clear()
get_context_list()
- Classes inheriting
CellularContext
do not have to have implementation for: get_netmask()
get_gateway()
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”.
Summary of changes
- Rename
target.default_lib
totarget.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
Summary of changes
Disable coverage report filtering because of poor results.
e.g.
mbed test --unittests -r Socket --coverage html
g
This command will run all unittests with names containingSocket
and then create coverage report with the same scheme, filtering all source files with names containingSocket
.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
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
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()
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)
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’sCIPDOMAIN
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
Summary of changes
Implement the
BufferedSerial
class to replaceUARTSerial
.BufferedSerial
isUARTSerial
renamed to convey the original purpose of the class. Also remove usage ofUARTSerial
in Mbed OS Core diretoriesUpdate Mbed TLS and Mbed Crypto to latest as of 2019-12-20
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 viambedtls_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 areseed_counter
value of0
to mean “not yet seeded” will need to instead handle errors from calls tombedtls_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
Summary of changes
Remove various
Thread
methods that were deprecated in Mbed OS 5.10Impact 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
orThisThread::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
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
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 behaviourMigration 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
Summary of changes
Added an
lto
build profile extension forARMC6
toolchain. * added-flto
tocommon
flags, * added--lto
&--lto_level=Oz
told
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
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
Summary of changes
Modified Mutex lock() and unlock() APIs to return
void
as return status value deprecated.Impact of changes
Breaking change: Mutex
lock()
andunlock()
methods return status value have been deprecated since Mbed OS 5.9, so changed the return value tovoid
.Migration actions required
Use Mutex
void lock()
,void unlock()
methods.Remove Mutex deprecated API
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
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.1Remove FileSystemLike deprecated APIs
Summary of changes
Removed FileSystemLike deprecated APIs.
Impact of changes
Breaking change: FileSystemLike
opendir
andopen
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)
andopen(DirHandle **dir, const char *path)
methods.Remove DirHandle deprecated APIs
Summary of changes
Removed DirHandle deprecated APIs.
Impact of changes
Breaking change: DirHandle
closedir
,readdir
,rewinddir
,telldir
andseekdir
methods have been deprecated since Mbed OS 5.4 and they are removed now.Migration actions required
Use DirHandle
close
,read
,rewind
,tell
andseek
methods.Remove mbed power management deprecated API
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
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
Summary of changes
Removed FileHandle deprecated APIs.
Impact of changes
Breaking change: FileHandle
lseek
,fsync
, andflen
methods have been deprecated since Mbed OS 5.4 and they are removed now.Migration actions required
Use FileHandle
seek()
,sync()
, andsize()
methods.Remove the deprecated CallChain class and its APIs
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
Summary of changes
Removed the CriticalSectionLock deprecated APIs.
Impact of changes
Breaking change: CriticalSectionLock
lock
andunlock
methods have been deprecated since Mbed OS 5.8 and they are removed now.Migration actions required
Use the static methods
CriticalSectionLock::enable()
andCriticalSectionLock::disable()
.Remove the deprecated ATCmdParser APIs.
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()
, anddebug_on()
Remove the deprecated Ticker APIs
Summary of changes
- Removed the Ticker deprecated APIs
- Updated the async greentea test to use
attach
withcallback
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)
andattach_us(callback(obj, method), t)
Remove InterruptIn deprecated APIs
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))
andfall(callback(obj, method))
Remove the deprecated the InterruptManager APIs
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
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
Summary of changes
Use
override
andfinal
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
Summary of changes
Use
override
andfinal
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
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
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.
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.
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 userMigration actions required
Use
attach(callback(obj, method), type)
Enable minimal-printf by default for all builds
Summary of changes
This PR enables minimal-printf library for all builds. That means that all calls to printf family (including snprintf) will be handled by the minimal-printf library. Main reason for the change are substantial ROM savings that can reach up to 20k. The below table shows result for simple RTOS blinky example in two variants (explicitly calling printf and without) for two boards and three profiles:
Impact of changes
Minimal-printf library supports most of the basic usecases:
* %d: signed integer [h, hh, (none), l, ll, z, j, t]. * %i: signed integer [h, hh, (none), l, ll, z, j, t]. * %u: unsigned integer [h, hh, (none), l, ll, z, j, t]. * %x: unsigned integer [h, hh, (none), l, ll, z, j, t], printed as hexadecimal number (e.g., ff). * %X: unsigned integer [h, hh, (none), l, ll, z, j, t], printed as hexadecimal number (e.g., FF). * %f: floating point (enabled by default). * %F: floating point (enabled by default, treated as %f). * %g: floating point (enabled by default, treated as %f). * %G: floating point (enabled by default, treated as %f). * %c: character. * %s: string. * %p: pointer (e.g. 0x00123456).
If your application requires more advanced functionality you’ll have to revert to using standard library version.
Migration actions required
If your application requires advance features of printf family calls, you’ll either simplify it or switch to the standard C library version. To do so modify your application configuration in
mbed_app.json
file to override the parametertarget.printf_lib
with the valuestd
as shown below:"target_overrides": { "*": { "target.printf_lib": "std" } }
IPCore String-based API removal
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 callgethostbyname()
if DNS address resolution is needed.GCC: Add a build profile extension with the link-time optimizer enabled
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. EarlierGCC_ARM
versions 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 asection(".section_name")
attribute). In general, when a function is considered for inlining, thesection
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 asection ".section_name" will not fit in region "region_name"
type errors. -
The
common
flags defined for theGCC_ARM
toolchain are now appended to theld
flags during a mbed-cli build. Previously, thecommon
flags were appended only toasm
,c
andcxx
flags. Having the same flags for the compiler and the linker is required when using the link-time optimizer (which is the case for thelto
build profile extension). Any options unrecognized by the linker should be moved fromcommon
toasm
,c
orcxx
.
Correct Timeout rescheduling
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 theCallback
to almost nothing.Fixes #12940.
Impact of changes
Migration actions required
Correct core RTOS sleep routine timing
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 ofOsTimer::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 usemilliseconds
, it should match the period ofOsTimer
, which theoretically can be different.Fixes #12920.
Remove unsupported targets
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
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
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
- USBSerialMigration actions required
None.
Remove unsupported targets
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
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.
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
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.hRemove unsupported targets
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
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
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
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
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 onplatform.callback-nontrivial
.
Migration actions required
- Add
"platform.callback-nontrivial": true
to yourmbed_app.json
if a build error indicates that it is required - or change your code to only use trivial functors inCallback
.
BLE: remove deprecated APIs from Gatt and SecurityManager
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
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-driversImpact of changes
Enable using Lora with no additional repositories, all of them part of Mbed OS.
Migration actions required
None
Remove Mbed SPM
Summary of changes
Remove
FUTURE_SEQUANA
andFUTURE_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
orFUTURE_SEQUANA_M0
Remove PSA implementation for v8-M and dual CPU targets
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
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.comImpact 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
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
Summary of changes
- Remove BLE
LegacyGap
class and implementations. Mapble::Gap
to globalGap
. - Add non-deprecated APIs (originally found in
LegacyGap
) toGap
and implementations intoGenericGap
. - Remove/replace legacy BLE event signalling (callback chains) in favour of EventHandler, where possible.
- Remove
BLEProtocol::
and replaceAddressType_t
withown_address_type_t
/peer_address_type_t
,AddressByte_t
withaddress_t
, etc. - Replace
BLE::Address_t
(for accessing address types + values in whitelists) with the new equivalentwhitelist_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()
fromLegacyGap
are removed, as device name and appearance can be set viaAdvertisingDataBuilder
and saved by the application. But there were previously no deprecation warnings for them. *get/setPreferredConnectionParams()
are dropped fromGap
- 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
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
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
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
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
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
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
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
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 ofTCPServer
Remove deprecated netsocket methods
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
-> UseSocket::sigio
TCPSocket(S *stack)
-> Use defaultTCPSocket
constructor and callopen
separately
UDPSocket(S *stack)
-> Use defaultUDPSocket
constructor and callopen
separatelySocketAddress rework
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
orint
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 useNetworkInterface::gethostbyname
orNetworkStack::gethostbyname
. - Code failing due to the now-explicit bool operator should be reviewed to check intent.
Remove deprecated BLE:: APIs and unsupported services
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
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
outputSummary 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
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
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
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 6Impact 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
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
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
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
Summary of changes
Removed Semaphore deprecated APIs.
Impact of changes
Breaking change: Semaphore
wait
andwait_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
andtry_acquire_until
methods.Netsocket: Introduce set_ip_address and get_dns_server APIs
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 objectFully enforce NonCopyable
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
Summary of changes
Removed mbed wait deprecated APIs.
Impact of changes
Breaking change:
wait
andwait_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++) orthread_sleep_for
(C). If you wish to wait (without sleeping), callwait_us
.wait_us
is safe to call from ISR context.Replace with weak mbed_error_hook implementation (deprecate the hook function)
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 callingmbed_set_error_hook()
.
I thought it would be simpler to create ambed_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 specificmbed_error_hook()
implementation.Migration actions required
Add property API to InternetSocket
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
Summary of changes
Add Chronos versions of time-related APIs to RTOS classes, Ticker-related classes and EventQueue.
Kernel::Clock
,HighResClock
,LowPowerClock
andRealTimeClock
act as the Chrono clocks. (C++ standard clockssystem_clock
,steady_clock
andhigh_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
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
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’sstd::tm
, but then - to convert tochrono::time_point
we’d have to go throughstd::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 toESP8266Interface
to callget_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
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
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 meansCallback(NULL)
orCallback(0)
will no longer work; users must useCallback(nullptr)
orCallback()
. If application code usesCallback
with a non-trivial functor, they will get a compilation error directing them to turn onplatform.callback-nontrivial
.
Disable mbed 2 and unsupported targets
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/11233Impact 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
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
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
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 branchClean-up S2LP driver configuration
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
andmbed_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
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 useTicker
for a periodic callback or to useTimeout::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 deprecatedattach
andattach_us
calls.Cypress: Misc target updates
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
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
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
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
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
Summary of changes
Follow-up adjusting #12425 , improving (in my opinion, at least) the timing for
Mail
,Queue
andMemoryPool
. 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_untilIn 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
andput
can be used for untimed blocking operations. In the interim, you have to usetry_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 avoid
return, similar to the change made toMutex::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
Summary of changes
Fixes https://github.com/ARMmbed/mbed-os/issues/12552
I implemented theset_network
function, which configures static network address andset_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
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
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
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
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
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
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 inmbedtls/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 support12286
Add new target: NUCLEO_L452RE-P12597
Cellular: Add ALT1250 PPP cellular target12458
Add Musca B1 target12787
Cypress: Add CYESKIT-064B0S2-4343W12603
Add target CYSBSYSKIT_0112576
M487: Support custom board12801
Add base support for STM32H745Fixes and Changes
12385
DeviceKey Root of Trust generation refactored.12256
Update psa binaries for 6.0.0-alpha112238
Minimal-printf: Fix wrapping of printf functions for the ARM compiler12236
Fix baremetal build failures12218
tests tickers: adapt ticker_interrupt_test() test case for high frequency tickers12217
Nuvoton: Add DEVICE_USBDEVICE detection in usbd implementation12216
Fix dl_channel tests12215
Cellular: Implementation of virtual get_ip_address funtion in ublox-api12214
Cellular: Move string_to_pdp_type method to CellularContext12202
Increase MSI clock frequency when exiting deep sleep12200
Minor fixes for peripheral pins on Dragonfly Nano12196
LWIP: don’t pbuf_free(NULL) on socket close12195
Corrected PPP debug trace flagging12194
Nanostack Socket event handler fix12193
Cellular: Move cellular event queue thread ownership to CellularDevice12189
Removed hardcoded CY8CPROTO_062_4343W bt baudrate limit.12188
Greentea test :Added the print in the exception handler12186
STM serial init: Set pin function only if pin is defined (not NC)12185
BLE: fix pointer not set to null on delete12182
Update watchdog tests to run with bare metal profile12181
Add DTLS in Connectivity’s design document12179
TESTS: Update testing of examples in mbed-os12178
Fixes for LPC55S69_NS TLS tests12176
Nuvoton: Support usbd12175
Minimal-printf: Fix documentation as floating point is disabled by default12173
Change size embedded in the temp_ram_page_data12170
Nuvoton: Support dynamic heap configuration on IAR12169
syntax error corrections - rm unnecessary semicolons12162
CMSIS-pack update for STM32WB-family12155
LPC11U24: Fix baremetal build and runtime error12151
NRF5x: Fix baremetal linker error12144
NRF52840: Use 2 region memory model for the ARM toolchain12143
Blockdevice config changes to make it possible to run littlefs filesystem tests12141
Thread: remove constructors deprecated in 5.112138
TESTS-MBED_HAL-COMMON_TICKERS no more executed12133
Cellular: Suppress long AT traces12132
LWIP: Remove unused MBOX configs12131
Cellular: Fix Gemalto/Cinterion driver12128
Remove unsupported folder12123
Cellular: Refactor cellular variable visibilities12122
ATHandler refactoring12121
Serial: Deprecate the class and promote UnbufferedSerial instead12120
ONME-4433 SocketAddress::operator== should also check port12118
Fixed Serial ambiguity for enable_input and enable_output12114
Cellular: Fix to not use all zero address for DNS12113
Fix for issue #12104 (STM32 can_init_freq() ignores frequency)12111
Microlib: Disable feof function usage in general filesystem test12110
Moved CP Max recv len into mbed_lib.json12109
Replace RawSerial as it has been deprecated12108
Wi-sun network event handler update12101
Bare metal: Retrieve error context after crash12099
Implemented recommended fix from https://github.com/STMicroelectronic12098
Wrong order of code fixed12097
cypress target: fix iar warnings12095
Update MXRT1050 to SDK 6.012092
Refactored away onboard_modem_api because it is not needed at all12089
Update offloaded TLSSocket to TLSSocket design12086
TARGET_STM: fix flash api 64bit address alignment on L4 and WB12085
PSA setup template changes.12083
Cellular: Add check for network congestion in BC95 driver12081
Expose target_offset and header_offset parameters in targets.json12080
Unittest cleanup made12079
Coverity fixes12078
Cellular: Add PPP/IP config flags in CellularInterface.json12073
Unittests: fix for PRs 12051 and 1199612071
Minimal Console: Use static pin map12069
STM32: astyle update12068
Enabling small C library option and deprecating uARM toolchain12067
STM32 GPIO IRQ : add a critical section in gpio_irq_init12065
Non-IP socket implementation for NIDD over CP12064
Valgrind support added for unittests12063
Move get_ip_address_if() to NetworkStack and include it in multihoming test12061
NANO130: Support dynamic heap configuration on IAR12057
NUC472/M487: Limit EMAC receive frame length as 151812055
cmsis: remove arm math12052
fpga tests: clear uart fix12051
Unittest configuration mechanism improved12050
Fix TDBStore sizes for SecureStore tests12048
SharedPtr: add nullptr constructor12045
Netsocket test adjusted to Wisun12044
increased qspi size for cypress integration fs tests12043
Modify itm_api.c for EFM32 targets12041
Add QSPI and relevant test support for target EP_AGORA12038
Cypress: Remove qspi_frequency() call.12037
SharedPtr: add move operations12034
SysTimer: Suppress implicit virtual warning12032
Add MBED_FALLTHROUGH attribute12029
STM32F0: create STM32F091xC target12027
Modify nsapi_dns tests to be module tests12026
Update HAL file to Toshiba’s TMPM4G912025
Platform: Delete an unused astyle output file12024
ONME-4366 - Fix UBLOX_EVK_ODIN_W2 fails in emac tests due to heap mem12020
Fix issues in setting radio access technology12019
Cypress: rework lptimer hal12018
STM32_EMAC cleanup12017
NVStore: already deprecated implementation removed12013
Add UDP ECHOTEST with connect/send/recv calls12012
USB device HID test: remove duplicated define12011
STMOD_CELLULAR: improve debug print12008
Cellular: Fix ATHandler string handling11997
Remove deprecated FunctionPointer class11996
CellularBase/AT_CellularBase removal11995
MCU_NRF52840 target configuration fixes11988
Small fixes for SecureStore11987
TDBStore refactoring11986
Storage related test improvements and small fixes11980
DISCO_L4R9I: update clock configuration for all clock sources11976
LWIP system mailbox overflow fix11975
PPPinterface: remove faulty address getter check for invalid pointer11962
Bug in mbed_alloc_wrappers.cpp11961
UnbufferedSerial: Introduce the class to replace RawSerial11957
MbedCRC and CRC HAL revisions (6.0 redo)11952
Fix for Dragonfly nano and registration for LTE-M plans11927
Speed up unittests by not limitting Make to spawn more processes11920
Simplify pull request template headers and instructions11897
MbedCRC: improve init value handling and tests11891
minimal-printf: Enable using a target configuration parameter11880
Remove deprecated Callback methods11878
Improve API documentation and test coverage11866
Update pycryptodome version11817
ESP8266 “busy s…” fix (ONME-4352)11653
Add Getaddrinfo interface for multiple DNS adresses11594
M2351: Pre-build secure image/lib to favor pelion application10959
M2351: Support TFM level 112457
Update STM32 EMAC driver - limit RX frame length12424
Nuvoton: Fix GPIO IRQ and RTC12422
Cypress Asset Update12419
Fix #12290: crash_log_parser on py312411
add FLASHIAP in targets.json for KVStore used in PDMC12409
FIX: LPUART clock source selection should be left to serial driver12408
LPC408X: Delete the ethernet_api.c files12407
Disable restricted uart peripheral for NRF5284012405
EthernetInterface fix detecting change of connection status on ARCH_MAX12404
M2351: Update BSP and bugfix12403
FPGA: Enlarge timeout with mbed_hal_fpga_ci_test_shield-i2c12401
Remove float symbols from apps that use the NFCController class12400
Add an exception for ARMC5 toolchain build12399
Cellular: Delete created context if activation fails12398
Add BlockDevice unittests and fix issues they revealed12397
Testing: Fix buffer overflow in ATHandler_read_bytes UT test12396
PDP Type needs to be IPV4V612395
I2CEEBlockdevice: fix i2c read return value12394
Fix SDIO communication issue on Cypress 1M boards and other minor fixes12393
Fix Musca-A1 gcc linker12392
Fix psa_key_management_operations12391
mergify: CI only if PR is without conflicts12389
Update InterruptIn.h12386
TEST: fix a bug in ATCmdParser test12383
Fix thread_sleep_for with zero wake_delay12382
Fix BufferedSerial visibility of private base class enum enumerators12380
DISCO_L475VG_IOT01A: Add a list of restricted GPIO pins for testing12379
Add STDIO UART as restricted for FPGA testing for all targets and support for restricting GPIO12378
TEST: Refactor mbedmicro tests to use utest framework12369
LPC1768: Fix ARM toolchain baremetal by defining 2 memory region12368
Fix NRF52840_DK UART driver and adapt FPGA test12366
M2351: Support GCC12364
MIMXRT1050: Update for deep sleep latency12363
Mergify: fix release version label12362
TARGET_STM: L0 CUBE SPI async mode send next byte after previous one is read12359
MXRT1050: Add bootloader support12357
TARGET_STM32F1: don’t set ADC common register when ADC doesn’t support it12356
Fix NRF51, NRF52 gpio_irq_init() function12353
M2351: Support IAR12350
implements i2c_free for STM12349
Nanostack: Update Wi-SUN configuration12345
USBMSD; NFCEEPROM; mbed_compat: Fix compiler warnings12344
Unittests for DNS improvements12342
LPC55S69: Fix UART & GPIO HAL to pass FPGA CI test shield tests12341
STM32L4: Fix the UART RX & TX data reg bitmasks12339
Cellular : add modem version in mbed trace12338
STM32L5 : add DISCO-L562QE board support12336
Disable write buffering on debug builds.12335
Remove CPU usage example from CI build12334
Update cellular drivers/tests for UBLOX_C030_R412M12333
UDP echotests fix in case of no memory or device busy.12332
FIX: Disable Analogin D13(PA_5) on some NUCLEO targets12331
STM32: enable QSPI test with MX25LM51245G octo SPI12330
Fix FAT filesystemferror
greentea test(SD Component)12329
AT_CellularStack: crash during TCP test12327
Doxygen: don’t extract static members12326
Correct SysTimer absolute time calculations12324
Fix inconsistency between mbed crc and psoc6 crc implementations.12322
minimal-printf: README correction12321
Ble driver set random static address12320
ONME-3433 ESP8266 driver support for UDP get - modified ESP8266 drive12317
MXRT1050 Flash support12316
Fix general filesystem greentea test12315
Add check for APPLE & MACH to fix unit tests on macOS12312
Fix to sending IPV6 UPD packet fails IPv6 enabled in SoftAP intf12310
Greentea DNS tests workaround.12308
Tests: add missing mbed_trace.h multihoming header12307
Fix the missing retrieve error context function call.12305
Cellular: Remove support for multiple ATHandlers12304
QSPIF: Enable QPI mode as a second option, if available12303
Fix ARM compiler warning for microlib12302
Remove _LIBCPP_EXTERN_TEMPLATE ARMCC compilation flag12299
MIMXRT1050: Add Watchdog support12297
Corrected minimal-printf README12296
FPGA_CI_TEST_SHIELD : force all peripheral to be tested12295
STM32H7 correct PWMOUT instances12293
Cellular: Remove API’s empty default implemetations12292
Multiple labels need to be in an array of strings12291
Minor optimisation to ATCmdParser unit test code12287
Fix unittests on windows(mingw)12286
Add new target: NUCLEO_L452RE-P12283
STM32WB - Update CubeDriver from v1.0.0 to v1.4.012282
Fix for issue #12268 (SerialBase.cpp: fix initialization list)12281
Cellular: Refactor socket_stack_init() from generic to modem specific12280
EFM32: add UART and LEUART for EFM32GG1112278
Rename “default_lib” to “c_lib”.12275
Fix call to sorted by providing key to sort on.12274
mergify: enable for any pull request12273
unittests: disable coverage report filtering12270
BUGFIX: SFDP Sector Map Table Parameter ID LSB is 0x8112269
mergify: add fixes to the conditions12267
Fix UDP socket test cases12265
Refactor unnecessary functions from cellular driver12263
unittest: fix coverage filtering12262
Test: Increase the UART flush delay12261
Cellular: Fix compilation fail with APN lookup enabled12260
Add KSZ8041 as a supported PHY for the LPC17xx series12258
Disable the cell AUX UART by default on EP_AGORA12257
psa: Ensure spaces before partition name comment12254
unittest: fix ATCmdParser test segfault12253
storage_abstraction: deprecated since Mbed OS 5.5 and now removed12251
Cellular: Remove friend definitions from cellular state machine12249
Cellular: Remove deprecated CellularDevice::stop()12245
NUCLEO_WB55RG - add device name “STM32WB55RGVx”12243
Add timer shutdown after time stop on deinit12241
M2351: Remove LPTICKER to spare memory for non-PSA minimal secure build12240
Cypress: add SoftAP host tests12239
Fix DNS multiple query hints to perform both IP4 and IP6 tests12237
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 image12230
TEST: use K64F replace DISCO_L475VG_IOT01A to run some example test12228
Need RAM and ROM size for compilation12227
Cellular: AT + QICSGP set up APN fix12226
target_test - assert if sectors keyword missing12225
Fix baremetal heap and stack initialisation12223
RZ_A1H and GR_LYCHEE: Enable bootloader support12220
NRF5x targets: Replace UARTSerial references with BufferedSerial12213
ESP8266: Replace UARTSerial references with BufferedSerial12211
Cellular: Replace UARTSerial references with BufferedSerial12210
Fix for issue #10725: disable lp-ticker for STM targets which uses RTC/LSI for lp-ticker12209
NXP target: Replace UARTSerial references with BufferedSerial12208
ST targets: Replace UARTSerial references with BufferedSerial12207
Add BufferedSerial class to replace UARTSerial12201
TARGET_STM: FW driver files refactor proposition12199
Format targets.json12198
uARM: Fix deprecate warning printing wrongly for GCC_ARM/IAR toolchain build12166
NRF52840_DK: Fix baremetal linker error12160
nRF52: Properly configure nRF SDK for nRF52-series targets12157
ESP8266: Avoid duplicate data sends12154
NRF51822: Fix baremetal linker error12153
Hackathon: Increase coverage of the SPI master FPGA test12152
Updated 113 targets with missing detect_codes12150
Update Mbed TLS and Mbed Crypto to latest as of 2019-12-2012142
Thread: remove methods deprecated in 5.1012139
HAL: Add a get_capabilities() function to ResetReason API12060
Improve reliability of KVStore general tests12035
Preparation for Callback changes12023
GCC: remove -fno-delete-null-pointer-checks11904
TOOLS: enable build greentea test coverage for HW11874
ARMC6: Add a build profile extension with the link-time optimizer enabled11433
FPGA CI shield: Add a watchdog timing test12611
STM32F4 UART issue when parity enabled12601
Remove RtosTimer deprecated class12599
Greentea kvstorage tests Cypress targets fix.12598
Change Mutex lock and unlock APIs return value to void12597
Cellular: Add ALT1250 PPP cellular target12596
Remove Mutex deprecated API12595
Fixed typo ‘timout’12590
Importer script: remove apache-2.0.txt12583
STM32F7: baremetal profile support12580
Reverting #12312 as it breaking current WiFI connect()->Disconnect() sequence12571
C++11-ify NonCopyable12567
STM32 EMAC : increase thread size when mbed-trace is enabled12560
crypto: Update to Mbed Crypto 3.0.112559
DISCO_L4R9I correct LED pins12558
Fix issue when TDBStore has varying erase sizes between areas.12557
M487: Fix crash on WDT reset from power-down12554
Remove FileSystemLike deprecated APIs12553
Remove DirHandle deprecated APIs12551
Remove mbed power management deprecated API12550
Remove mbed interface deprecated API12549
Remove FileHandle deprecated APIs12548
tests-integration-net-single: fix build error12545
threads: fix timeout (set to 25)12543
TLSSocket: Remove deprecated connect12540
fix for suppress ‘unknown object name’ messages from memap.py12537
Minor optimization to improve readability of code12536
Fixed typo ‘thead’ in thread_neighbor_class.h12534
Remove the deprecated CallChain class and its APIs12533
Remove CriticalSectionLock deprecated APIs12531
Add check so that FlashIAP does not allocate memory on flash_init failure12530
Remove reset reason from Future Sequana targets.12529
travis: scancode ret value not cat fix12527
Remove the deprecated ATCmdParser APIs.12526
GCC: Fix the toolchain LTO workaround for Python 312525
Remove the deprecated Ticker APIs12524
Bugfix: Concurrent SFDP header address init fixed12521
Remove explicit include of mbedtls/config.h12520
Fix initialization order for I2CEEBlockDevice12519
tests-mbed_hal-sleep_manager: fix counter wraparound handling12518
Remove InterruptIn deprecated APIs12514
mergify: add “mergify skip” label12511
allow reconfiguring a running watchdog12509
EFM32: RTCC bugfix for #1237412508
Fix minimal-printf stack overflow12507
Cellular: release _semaphore only once12506
Fix 2 string based IP address removal regressions12505
travis: ignore grep return value for scancode12502
Fixed macro error12501
Remove the deprecated the InterruptManager APIs12500
Remove the deprecated ethernet APIs12499
Cellular: For ublox modem, read ‘@’ char first then send data.12498
TEST: update usb tests and guard them with macro12496
EFM32: fix mbed_hal-pinmap test12495
C++11-ify virtualisation in FileHandle + Serials12492
Update psoc6cm0p asset to version 1.1.1.12491
Fixed error of function ‘mac_fcf_lenght’12490
Fixed error of structure mlme_key_descriptor_t12489
C++11-ify virtualisation in lwIP classes12488
C++11-ify virtualisation in Nanostack classes12487
C++11-ify virtualisation in netsocket12484
TDBStore magic number if endian sensitive fix comment12481
Nanostack release for Mbed OS 612480
Fix SPDX identifiers and licenses (excluding features and targets)12478
M2351: Fix some minor issues12477
HAL: Add a get_capabilities() function to GPIO API12476
Fix build failure when target’s cmsis doesn’t exist12475
Proposal to remove SPIFReducedBlockDevice12473
Fix Freescale MCUXpresso AnalogOut12467
Inline nsapi_create_stack(NetworkStack)12466
MBED_STACK_STATS_ENABLED : Add stack_name information in greentea metrics12464
STM32 EMAC : add configuration choice and connection check12462
Fix static ram memory statistics for arm compiler12460
Allow MISO/MOSI set to NC during SPI initialisation (fix for issue #12435)12458
Add Musca B1 target12454
Nuvoton: Optimize spi_master_write(…) in case of no SPI MISO pin12453
STM32 TRACE_GROUP update12451
STM32 : enable MBED trace for QSPI12450
SFDP: consolidation of SFDP parsing [3/5]12449
Add missing pins def for ARDUINO_NANO33BLE12447
fix targets device_name with nrf51822 32K SoC12446
Add Eight-Bit-Addressing mode to I2CEEBlockDevice.12445
Fixed typo: ‘lenght’ in ip6string.h12444
Fixed typo: ‘lenght’ in ns_crc.h12443
Fixed typo: ‘lenght’ in coap_service_api.h12442
Fixed typo: ‘lenght’ in minimal-printf12441
CAN: fix length calculation (fixes #12311)12440
Implement reset_reason api for cypress targets12438
Fix CY8CPROTO_062_4343W baremetal build12437
travis: add PR license check for missing/not-valid license files12436
Remove GPIO pin-maps used for FPGA testing12431
Nordic NRF52 GPIO API: Fix non-deterministic failure to configure interrupt handling12427
Minor optimisation to mcr20a-rf-driver code12426
SFDP: consolidation of SFDP parsing [2/5]12421
Cypress Targets Reorganization12420
Remove the deprecated CAN APIs.12415
STM32H7 : add readme file for dual core use12384
STM32WB : update BLE part with better support12358
FIX: add cbor module in the requirement.txt12319
Fix userallocatedevent imp12318
SFDP: Move Sector Map Parameter Table parsing under SFDP module12233
Enable minimal-printf by default for all builds12206
Kvstore tests11942
IPCore String-based API removal11856
GCC: Add a build profile extension with the link-time optimizer enabled12941
Correct Timeout rescheduling12938
Correct core RTOS sleep routine timing12935
Remove unsupported targets12924
STM32F4 bypass PLL configuration when already done by bootloader12919
ExhaustibleBlockDevice: revert commit 10481f212913
usbcdc: provide doxygen only macro for doxy builder12889
Convert newlines on all terminal (tty) devices by default12876
802.15.4 STM S2LP driver update12874
nRF: use Mbed-default boot-stack-size & fix stack_size_unification test12873
Bare metal profile: USB class device support12872
Add the Doxygen note to non-supported RTOS kernel APIs.12866
Update mbed-coap to version v5.1.512864
Remove unsupported targets12860
STM32F7 update drivers version to CUBE V1.16.012855
Bare metal: Enable signals greentea test12853
ARCH_PRO: Remove uARM tooolchain support12852
Update mbed-coap to version 5.1.412850
Fix intermittent sync fail in tests-filesystem-general_filesystem12849
TEST: Update example test12846
Revert “Remove MTB_STM_S2LP target”12844
Add invalid data case to tdbstore ram init12843
enable storage tests on baremetal12841
Drops prebuild bootloaders not supported in Mbed OS 612840
Musca-B1: Grant Non-Secure access for MHU0 on EXP012839
Nuvoton: netsocket correction of judgment errors12833
Override c_lib to small for all targets12830
Cellular: Fix BG96 offloaded DNS query for new API12828
Update CYSBSYSKIT_0112827
enable common tickers & lp_tickers hal tests in baremetal mode12825
Turn on ARM linker –inline12823
Allow Devicekey::generate_root_of_trust() to define key size.12819
Cypress: Fix unitialized memory in spi_master_write12818
Add the Doxygen note to non-supported RTOS and Driver class.12817
Cellular: Disable AT traces when mbed-trace is disabled12816
Baremetal: Enable Semaphore greentea test12815
Cellular: Fix build problem if cellular.debug-at is set as null12811
Remove deprecated Platform header files12810
Remove unsupported targets12804
Cellular: Check if serial is supported12802
Nuvoton: Add ‘sectors’ configuration option into targets.json12799
TDBStore: Handle odd number of sectors in block12797
Add custom board option to STM32 pins generation script12792
Seeed: Removing unsupported Seeed targets for OS 612791
Fix for IPv6 Dual Stack support12787
Cypress: Add CYESKIT-064B0S2-4343W12786
Baremetal: Enable kernel_tick_count greentea test12785
Cordio: Apply Packetcraft’s fix for possible SweynTooth vulnerabilities12783
LittleFSv2: Bring in v2.212779
Baremetal: Enable EventFlags greentea test12778
Add I2C api to Musca-B1 target12775
Remove unsupported targets12769
Fix WIFI-GET-RSSI test case failure and remove extra label from CYW9P62S1_43438EVB_01 in target.json12768
ESP8266 Drv support baud-rate switch12765
Update MTS_MDOT_F411RE target and remove bootloader from tools12763
Cellular: Fix ATHandler::read_string to handle delimiter inside string12761
Callback: Trivial default12758
Fix: Return the correct std I/O device handle for Microlib in retarget code12757
Update Mbed OS with Mbed Crypto merged into Mbed TLS12755
Update astyle filtering rules for Nanostack12754
Nanostack release for Mbed OS 612752
PSoC 62/63: set correct mbed_ram_start and mbed_ram_size12748
Fix build failure due to C lib selected12746
Removed Toshiba targets (AdBun-M066, M3H6 & M3HQ).12745
add config option for phy media interface12744
Change files in TARGET_SDT64B12743
mergify: Add 5.15 rule12742
BLE: remove deprecated APIs from Gatt and SecurityManager12741
Add Semtech Lora radio drivers12739
FIX: update usb device tests for deprecated API12738
Remove Mbed SPM12737
Remove PSA implementation for v8-M and dual CPU targets12736
rtos: Improve CMSIS-RTOSv2 app compatibility12735
Make MUSCA B1 and MUSCA A1 TF-M ready12734
NUCLEO_WB55RG : enable IAR export12733
odin targets: remove release version12731
Testing: Fix multihoming test compilation issues12730
BLE Gap deprecation cleanup/rework12729
Mbedtls fixes12728
STM32 EMAC : increase thread-stacksize12719
FPGA CI TEST SHIELD: add test config json file12716
M487: Update BSP12715
RZ_A1H remove usage of ethernet hal API12712
Fix LTO issue with minimal-printf12711
targets:MIMXRT1050: Add QSPI flash support12708
Remove compatibility for Arm Compiler versions prior to 6.01.005012706
Tests: Remove support for ARM Compiler 512705
mbed-client-cli: Remove support for ARM Compiler 512704
LWIP: propagate the apimsg->err out of netconn_apimsg()12702
TFM: Remove ARM Compiler 5 considerations12701
Add custom BT Firmware image for CYW9P62S1_43012EVB_0112699
Storage: Remove support for ARM Compiler 512698
Drivers: Remove support for ARM Compiler 512696
rtos: declare vector table type as in Technical Note 1157812694
Remove netsocket icetea tests and TCPServer12693
USBMSD security updates12692
EFM32G11: Add RGB LEDs to PinNames.h12691
Replace small with std C lib if not supported by a target’s toolchain12690
STM32: solve GCC Unspecified RTOS error12686
STM32 EMAC : remove TIMEOUT issue when cable is not plugged yet12685
Remove deprecated netsocket methods12683
SocketAddress rework12682
MBED TRACE default level is INFO12681
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 IAR12677
STM32H7: enable QSPI12676
Remove deprecated BLE:: APIs and unsupported services12674
Remove Maxim and SoftDevice BLE stacks which do not support the latest APIs12673
Mergify update12672
Remove deprecated ARMC5 reference frommbed compile -S
output12671
Netsocket/lwIP Stack: Remove support for ARM Compiler 512670
ESP8266: Fix typo: gateway to netmask12668
tests-integration-fs-threaded: makes tests independent from each other12667
Add check for return code in DeviceKey to avoid injecting invalid ROT12666
Makefile: render compatible with some GNU make versions (revert #12646)12663
Migrate NUCLEO_F303K8 to Mbed OS 5 baremetal12662
Add workaround for STM32F4 hardfault in sleep mode12661
Adjusted SecurityManager Doxygen ASCII art12660
M2351: Support custom board12659
Rebuild WICED libraries after Mbed update12658
tests-integration;tests-filesystem: fix code causing compiler warnings and enable more tests12655
Remove ARMC5 reference from Mbed OS platform12654
Removed all references to __CC_ARM12652
Add moduletests for FileSystemStore12651
Cellular: Make Quectel EC2x modem start up timeout configurable12649
Expose SerialBase IrqType member to UnbufferedSerial class12648
Nanostack: Add config for Wi-SUN device type12646
Makefile: fix for overlong command line12645
Storage: Use internal flash for KVStore always if default config12642
M263: Support custom board12640
Remove minimal-printf extension profile12639
Remove the deprecated ethernet hal APIs12638
Enable storage tests to all targets12637
Cordio: fix for issue #1262512636
Extend unit tests for TDBStore12633
Cellular: Add offload TLSSocket implementation inside feature flag12632
Fix snprintf in minimal-printf library12631
Update psutils to address security issue12630
mbed test with dual core targets12629
Add “rtos-api” to bare metal12626
STM32F4 update drivers version to CUBE V1.25.012624
Cellular: Support EC2x power control pin support no connect12617
Correct doxygen for Mail::get12612
TEST: add RTOS macro to enable integration test12610
Add UBLOX_onboard_modem_api for power up UBLOX_C027.12609
Remove Semaphore deprecated APIs12607
Use toolchain’s struct stat if available12606
Netsocket: Introduce set_ip_address and get_dns_server APIs12603
Add target CYSBSYSKIT_0112589
Cellular: Add deativation of context associated with profile12581
Fully enforce NonCopyable12576
M487: Support custom board12572
Remove mbed wait deprecated APIs12570
Improve nsapi_create_stack12569
Replace with weak mbed_error_hook implementation (deprecate the hook function)12547
EFM32: update emlib to 5.9.112528
SFDP: consolidation of SFDP parsing [5/5]12522
Add property API to InternetSocket12472
Add WPA3 support in mbed-os for green tea tests12463
Clean up and optimise socket statistics12456
COMPONENT_BlueNRG_MS creation : ST Bluetooth Low Energy module12425
C++ Chrono support12410
Remove the deprecated RawSerial, UARTSerial, Serial12387
Add Objects Extensions Configuration Parameter to HAL12300
Add get_time function to ESP826612271
Make cypress psoc64 TFM ready and also add TF-M initialization12161
nRF52 I2CSlave Implementation12036
Callback extension and optimisation11726
Disable C++ static destructors in ARMC6 compiler11629
Refactor TDB internal bounds computation12995
build tools: fix target toolchain12984
Disable mbed 2 and unsupported targets12982
build api: fix release version12981
IOTSTOR-1044 - SPIFBlockDevice is broken in Mbed OS master(6),12978
Update psoc6pdl to v1.5.212977
STM32: remove uARM toolchain12971
MemoryPool fixes12961
Remove nRF51 targets12960
STM32 code cleaning for MBED-OS612959
STM32: targets json rework12958
Fix vector table bug when using bootloader on STM32WB5512956
NRFCordioHCIDriver: remove idle_hook (and RTOS dependency)12951
Clean-up S2LP driver configuration12949
CMSIS: update to CMSIS 5.7.012947
Fix setting the QE bit on ISSI Flash memories12945
Cleaning up PinNames.h for SDP-K1 board.12944
Fix the USB MSD greentea host side pyusb_msd.py script12943
Cypress: Update assets to latest12942
Add Timeout rescheduling test12923
Nuvoton: Refine more on watchdog HAL12917
Bare metal profile: Enable USB serial greentea test12916
USB basic and hid greentea test cleanup and enable to the bare metal profile12915
Optimise HAL_GetTick API12914
Add possibility to configure Mesh MAC neighbourtable size.12909
Cypress: Misc target updates12906
Work around C++14 assert problem12904
SDBlockDevice: Convert to Chrono12903
Nanostack HAL: Convert to Chrono12902
USB: Convert to Chrono12901
Rationalise Mail/Queue/MemoryPool timing APIs12896
Nuvoton: Fix watchdog reset failure on meeting Hard Fault12890
[SX1272 & SX1276 Driver] Fix Fifo Pointer in Continuous Mode12888
Musca-B1: Fix I2C pinmap array12875
KVStore: Fix buffer overrun when device key size doesn’t match12865
Nuvoton: Support bare-metal profile on NANO130 and M45312856
ST Boards: Remove uARM tooolchain support12836
Wi-SUN added regulatory domain Brazil12808
KVStore: Remove incorrect check with non-default configuration of FLASHIAP12805
Tests: USBSerial: Handle minimal printf limitations12801
Add base support for STM32H74512721
ESP8266: static address configuration and dhcp enable/disable added12623
LPC1114: baremetal profile support12433
ESP8266: Convert to Chrono12432
NFC: Convert to Chrono12430
Cellular: Convert to Chrono12429
DTLSSocketWrapper: Convert to Chrono12428
nsapi_dns: Convert to Chrono13008
tools: Warn when ARMC5 is no longer supported13007
tools: Support default_lib and c_lib13003
Mark PSA as an experimental APIUsing 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 CordioFor 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 binaries12869
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.1512863
STM32 GCC Unspecified RTOS error12859
Update mbed-coap to version 5.1.412854
Implement psa_hash_*() functions12845
Backport SweynTooth fix for Cordio to 5.1512842
Remove ethernet interface logic for SoftAP and STA12813
[mbed-os-5.15] Nanostack release to mbed-os-5.15 branchUsing 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
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 viambedtls_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 areseed_counter
value of0
to mean “not yet seeded” will need to instead handle errors from calls tombedtls_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.1512776
Update stm32 emac ethernet driver12771
Cypress: Partial backport of #1276912767
Upgrade to Mbed TLS 2.21.0 and Mbed Crypto 3.1.012753
Cypress: Backport PRs from 6.0 to 5.15.212727
USBMSD security updates (bp #12693)12724
RZ_A1H and GR_LYCHEE: Enable bootloader support (Mbed OS 5.15)12723
Mbedtls fixes for 5.15.212717
Add fix for STM32F4 hardfault in sleep mode12653
Fix issue when TDBStore has varying erase sizes between areas. (Backport)12650
Cellular: ALT1250 PPP cellular driver for mbed-os 5.1512485
Nanostack release for Mbed OS 5.15Using 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 defined12087
Bad AT+COPS command with plmn12005
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 support12106
Add Samsung Exynos i S111 target12093
TARGET_STM: add support of board NUCLEO_G071RB12306
STM32L5: NUCLEO-L552ZE-Q new targetFixes and Changes
12377
Update psoc6cm0p asset to 1.1.012370
OKDO_ODIN_W2: Reenable lp-ticker and BLE12355
HANI_IOT: add new target board support12306
STM32L5: NUCLEO-L552ZE-Q new target12167
Update Cypress Targets and Assets12164
Pr dev/remove hardcoded timeout in cypress bt code12147
mbed-coap uint16 overflow fix12146
mbed-coap buffer overflow fix12140
STM32 clean mbed_rtx.h file12134
Fix LPC11U35_401 baremetal build12126
Robustify equeue multithread unit test12106
Add Samsung Exynos i S111 target12093
TARGET_STM: add support of board NUCLEO_G071RB12088
Cellular: Fix AT command for COPS manual network selection12022
Make ESP8266 compatible with bare metal profile12015
STM EMAC: compilation issue with ARMC5Using 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
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-intervalthey need to be removed or checked for validity.
Remove string-based API usage within mbed-os
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 toESP8266
module, anticipating future string-based API removal.Impact of changes
None.
Migration actions required
None.
Updates to tools for Python 3 compatibility
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
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
Summary of changes
- Provide types that will hold static pin maps for peripherals (
PWM
,AnalogIn
,AnalogOut
,SPI
,I2C
,UART
,QSPI
,CAN
). - Provide
xxx_init_direct(xxx_t *obj, static_pinmap_t *)
functions to HAL API (these functions will not use pin map tables). - Provide additional constructors in drivers layer, which will use the
xxx_init_direct(xxx_t *obj, static_pinmap_t*)
HAL functions. - Provide default weak implementations of
xxx_init_direct(static_pinmap_t *)
functions. These functions will call standardxxx_init(xxx_t *obj, PinName, ...)
function (backward compatibility for targets that don’t support static pin map mechanism). - Provide
constexpr
utility functions to look up for pin mapping in compile time (requires C++14). - Initialize console using static pin map mechanism, so
hal\mbed_pinmap_common library
is not needed and can be removed. - Modify FPGA tests to verify
xxx_init_direct(xxx_t *obj, static_pinmap_t*)
APIs.
Make SMS configurable in Cellular stack
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
Summary of changes
Add a minimal console implementation in
mbed_retarget
to provide basic console functionalities.
A new configuration parameterplatform.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
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
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 additionalvoid *persistent_data
parameter to the slot validation callback, regardless of whether thepersistent_data
will be used or not.Old New psa_drv_se_validate_slot_number_t
did not have a modifiablepersistent_data
parameterpsa_drv_se_validate_slot_number_t
now has a modifiablepersistent_data
parameterNew 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.
TDBSTore::init()
is now allowed to return error codes from underlying BlockeDevice.
Previously, the API was limited to return onlyMBED_ERROR_READ_FAILED
orMBED_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
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
Added support for DER formatted certificates and keys to Wi-SUN certificate API.
DNS manual cleanup mechanism added
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
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
CellularStateMachine
callsCellularDevice::clear()
to clean-up the modem on initialconnect()
.
The previous functionality can be restored by defining the flagcellular.clear-on-connect: false
.ESP8266 nonblocking connect/disconnect
This release contains changes for ESP8266 nonblocking operations, which make them compliant with documentation:
connect()
anddisconnect()
will now return immediately in non-blocking mode and pass all blocking operations to asynchronous thread.- In the case of consecutive calls of
connect()
ordisconnect()
, the returned value from the second one may beNSAPI_ERROR_BUSY
. - If
ESP8266Interface::set_credentials(...)
is called during connecting to the network, it is not executed andNSAPI_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
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 beforeconnect()
calls, where Mbed TLS based TLSSocket allows setting these beforeopen()
call.This PR also includes a reference implementation for BG96 cellular modem.
Add watchdog lower limit timeout test
watchdog_features_t
extended by twouint32_t
members:clock_typical_frequency
andclock_max_frequency
. These values can be used to determine the accuracy of an uncalibrated watchdog clock.Introduce an Mbed config to enable XIP
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
inmbed_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
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
The handling of enable/disable input/output of
UARTSerial
is moved intoSerialBase
. 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
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 inmbedtls/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-4343W11846
Add support for Makerdiary nRF52840-MDKFixes and changes
11979
Bare metal Greentea tests compilation fixes11978
LPC55S69_NS: Fix bare metal compilation error11971
TDBStore: Unlock the master mutex even after garbage_collect()11967
Fixed crashing nsapi_dns unittest11966
Fix targets.json syntax errors11963
STM32 USB: Add __HAL_RCC_PWR_CLK_ENABLE11959
Minimal Console: Fix compilation error11958
Add support for Wi-SUN RF channel configuration11956
tests-mbed_hal-sleep_manager: Fix regression found on since PR #1172111950
DISCO_H747I: Add support of MBED_TICKLESS11949
Fix for ArmC5 compilation errors for some targets11947
Minimal Console: Fix syntax errors11944
Cypress: Minor fix for mbed astyle11943
Split integration tests in fs/net11941
Remove string-based API usage within mbed-os11938
STM32: Update and align serial_clear implementations11937
Cellular: Replace CellularSocket.rx_avail with pending_bytes11936
DNS tests: Cancel asynchronous dns query if it times out11935
Cellular: Mark to be deprecated in CellularDevice11930
Add FlashIAP to NUCLEO_L4R5ZI11928
Allow MBED_ASSERT to throw errors in unittests, so we can verify it11926
Fixed Greentea FileHandle test for microlib11925
Fixed Greentea minimal-printf test for microlib11923
Cellular: Fix PPP to wait until connected event from (LWIP) PPP11921
Updates to tools for Python 3 compatibility11919
Cypress: FPGA: Improve SPI async calls11918
IOTSTOR-978: Bug fixes to TDBStore and SecureStore11915
TESTS: Fix TCP/TLS send_timeout test to nonblocking11914
Deprecate string-based APIs in IPCore11913
LPC55S69_NS default TDBStore size increased to 32kB11911
Update mbed-coap to version 5.1.211908
I2C byte read/write transmission improvement11901
Update MPN for CYW9P62S1_43012EVB_01 board11899
Fixes to PR template11895
TESTS: Allow ipv6_link_local_address() as unsupported11892
Bring static pin map extension to master11890
S2-LP: Sync with development repository11889
Nanostack release for Mbed OS 5.1511888
Pelion enable for UNO_91H11887
Add target for CYW9P62S1_43438EVB_0111886
Add target for CY8CPROTO-062S3-4343W11885
Update to WHD 1.60 release11884
Update Cypress targets11882
DISCO_L475VG_IOT01A: Fix bare metal profile Greentea tests11881
UBLOX_EVK_ODIN_W2: Fix bare metal build and Greentea tests11877
Fix for sending IPv6 UDP packet over link local interface11875
Bare metal: Fix Arm toolchain Greentea test compilation for NUCLEO_F411RE11873
Make SMS configurable in Cellular stack11870
STM32F7: linker scripts updates11868
Cypress Target update to support Manufacturing Test11867
Fix for Cypress GPIO driver (fix for issue #11835)11865
IAR: Enable linker optimizations for develop/release profile11851
Enable FAT ChaN lib configuration with mbed_lib.json11846
Add support for Makerdiary nRF52840-MDK11841
Wi-Fi: Reorder Greentea tests with minor fixes11839
SerialBase.h|cpp [-Wreorder] compiler warning fix11829
USB STM32: Don’t wrap direct function calls in MBED_ASSERT11827
DISCO STM32H747I ETHERNET support, but disabled11825
Bare metal Greentea test for storage component11824
Skip bare metal Greentea test for Network component11821
Skip bare metal Greentea test for PSA component11819
Add code to verify if external Wi-Fi module is still responsible11811
STM32H7 FLASH API issue with M4 core11808
Document Socket API functions return values11796
mbed_retarget: Add a minimal console implementation to provide basic functionalities11789
STM32H7: code and feature alignment for both NUCLEO and DISCO targets11785
Deprecates NVStore11783
Adding set baud rate routine11773
Fix watchdog reset test11755
Unittests for nsapi_dns11735
Dns unittest preparation11721
Bare metal Greentea support11720
ATCmdParser: Merge scanf and recv functions11713
Remove Tickless from STM32F4 targets11711
STM32F7 update drivers version to CUBE V1.15.011701
Arm toolchain: heap setup micro-optimization11687
Update to Mbed TLS 2.20.0d0 and Mbed Crypto 2.1.0d011682
Make FPGA tests to pass on CI targets (SPI, analogIn, PWM)11675
STM32 USB update step 111654
Adjustment of netsocket tests to the lossy mesh network limitation.11641
PmwOut: Add method to enable/disable PWM11634
Serial design draft11595
Check return of BlockDevice::init() in TDBStore.11556
Modified Wi-SUN tasklet to return success when calling connect twice11551
Coverity updates11539
Enable DER coded certificate support to Wi-SUN mesh API11535
DNS manual cleanup mechanism added11514
ESP8266 unlocks deep sleep when disconnected11480
Enable tickless mode in additional tested targets11469
Cellular: Disable cellular.clear-on-connect by default11463
Enable tickless mode in MAX32630FTHR11460
ESP8266 Unified Mbed trace prints.11459
Replaced in ESP8266::oob* recv() with scanf()11444
QSPI : Define default pins at drivers level11430
Member get_interface_name implemented in ESP8266Interface11414
Cellular: Add API to clear CellularDevice11409
ESP8266 nonblocking connect/disconnect11357
Offloaded TLSSocket and BG96 support for it11332
mbed_error.c: Better HW fault exceptions and stack dump11203
Add watchdog lower limit timeout test11032
Add test header files and defined behavior for APIs tested using FPGA-Test-Shield11006
Introduce an Mbed config to enable XIP10978
LwIP: Add ICMPv4 Socket support10940
Deinitialize the pin definition10924
Free serial resources if not needed anymore10618
Tools: Check for GCC 9, rather than 612059
Config: Fix bootloader config errors - propagate errors12058
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 linking12039
Fix build errors for bare metal Greentea tests on NRF52840_DK12033
static pin-map: patch for SerialBase class12030
Updates the Cypress Wi-Fi Host Driver to 1.7.012006
FIX: Fix a bug introduced by static pin map11991
TESTS: Fix integration tests11983
Ublox Odin Driver OS 5 v3.7.1 rc3: Network-Wi-Fi Test Crash Fixes11970
Avoid crashes during fault handler12117
Storage features: fix static pin-map for ArmC512112
Notify on configuration exception rather than breaking buildUsing 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.
- Provide types that will hold static pin maps for peripherals (
-
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 board11605
DISCO_H747I dualcore support11434
Initial addition of files to support CY8CKIT_064S2_4343W targetFixes and Changes
11902
Cellular: Enable ePCO IE for BG96 driver11872
Change mbed-os-example-wifi to build only DISCO_L475VG_IOT01A11871
TESTS: Add socket.set_timeout in udpsocket_echotest11869
IOTSTOR-978: Skip a unstable testcase until fixed11861
Replace calls to printf() with mbed-trace in netsocket tests11859
Cellular: Fix queue scheduling for bare metal11854
ATHandler build warning fixed11850
Correct PB_6/PB_7 Serial AF mapping11848
Remove ITM Trace support from Arduino Nano 33 BLE11844
EFM32: Enable RESET_REASON and WATCHDOG for EFM32GG11_STK370111843
Fix ethernet memory handling issues on CM3DS11840
Update Cypress WifiHostDriver to version 1.5011836
Add sender address and port verification to UDPSOCKET_ECHOTEST11834
Fix flag checks to allow disabling unsecure tests11833
TESTS: turn off blinky log compare test due to example changed11831
BLE: Added call to delete the security database object upon SM reset.11830
Cypress: Add implementation of free() for gpio11828
MCU_LPC11U35_501: fix MCU inheritance11823
IOTBTOOL-333: Fix SimpleQueue build failure on py311822
TLSSOCKET_HANDSHAKE_INVALID test skip if DNS AAA record not available.11818
Adding baud rate setting to TLS and UDP echo burst tests11816
Fix failure of building non-RTOS for GR-PEACH, GR-LYCHEE and VK-RZ/A1H11815
Updated targets.json file to go along with pr-1177011814
USBMSD: implement MODE SENSE (10) command11813
Fix ARM issue 11795: - Cypress: SPI FPGA test: tester always respond11810
SecureStore: Add member initializers for inc_handle_t11800
Update common Cypress libraries11797
IOTSTOR-953: Fix address calculations from SlicingBlockDevice11790
nrf52: reset UARTE peripheral in serial_free11782
equeue: avoid non-standard bit shifts11780
Nuvoton: Add implementations of HAL API i2c_free and analogin_free11777
IOTBTOOL-377: Fix scatter file include path online11776
Fix for issue #11769 (Cypress: PWM FPGA test wrong assert)11775
LPC55S69: fix serial_set_flow_control11772
Cellular: updated cellular context flags and cid in ublox-api11770
Update CM0P pre-built images to build 1.0.0.3511767
Increase STM32 default deep sleep latency to 4ms11765
Cypress: fix GPIO mode NONE11763
Display full path of generated coverage output from unittests.11759
STM32 QSPI: Use defines for setting address size11756
Add option to use CCMRAM on F303xE.11754
Cellular: Added write_hex_string to AT handler11752
FlashIAP: Get erase value from HAL instead of hardcoding it11749
M2351: Change base target name ‘NU_PFM_M2351_CM’ to ‘NU_PFM_M2351’11748
Fix spurious link up/down when AP IP address range change11747
Update the internal kvstore flash reservation size to from 7k to 65K for Cypress Devices11743
fpga i2c test: limit tested peripherals11742
Fix the reset_reason host test in the CI11739
Nrf52 i2c byte rw fix11736
Nuvoton: Remove TRNG support11734
nxp LPC55S69: fix i2c pin mapping11729
minimal-printf: Fix handling of the two character sequence %%11728
minimal_printf: Fix high level C functions that print to the console11725
DeviceKey: Fix random key doesn’t generate with custom entropy source11724
iar export for TT_M3HQ and TT_M4G911719
Ensure modem echo is off before sending other AT commands11718
Handle legacy process event first on connection complete11717
Fix Quectel M26 context hang11715
Add CYW9P62S1_43012EVB_01 board11714
LWIP::get_ipv6_addr for link-local only11710
Update examples testing scripts11709
Update CMSIS pack index json for STM32H7xx family11708
TARGET_STM: remove warning and fix typo on SPI11706
MCU_NRF52840: Switches to correct Product Anomaly Notification(PAN) macro11700
Add bootloader support for Seeed Arch-MAX11699
Fix for missing os_cb_section11698
Clean up ARM toolchain heap+stack setup in targets11697
USB-Cypress: Lock sleep when USB is initialized11695
GREENTEA: init trace if trace is enabled in json11694
Fix components setting for GR-PEACH and GR-LYCHEE11693
UDPSOCKET_ECHOTEST change to tolerate duplicate packets11692
NRF52840_DK: enables FLASHIAP for the device11691
QSPI: document use of QSPI_NO_INST11690
Changed mbed gpio-port api to match gpio api11688
Clearing UART TC Flag prevents deep sleep, so do not clear it11686
Corrected nanostack PAE controller11685
Check-in PSA related auto-generated files to support online compiler.11684
Add support for nRF52 Watchdog11683
Baremetal profile fixes11679
STM32L4 TRNG clock configuration11677
Update BT Firmware to version 128.11676
nrf52 - fix i2c/twi driver11673
stm32f4xx_hal_pcd.c@346,22: unused variable ‘ep’11672
STM32F767ZI - I2C FastModePlus not properly enabled11671
nrf5x - add missing gpio_set implementation11669
Fixed issue with integer overflow when converting time units11668
Update Cypress WiFi driver code to version 1.4011667
Fixes IPv6 multicast join issue11662
Allow WhdAccessPoint scan results with extended parameters11661
mbed_rtc_time.h lacks an include guard11660
Fix dropped bytes on spi write11657
Cellular: Fix apn check11650
Nuvoton: Re-implement TRNG HAL with TRNG H/W11646
Fix swapped BT pins on CYW943012P6EVB-0111645
Enable tickless for PSoC6 targets11644
Cypress Cordio BT Driver setting Host MCU active during Host Wake assert11642
STMOD_CELLULAR: remove flow control support for DISCO_L4R9I11636
EFM32GG11_STK3701: add QSPIF component config11635
USBDevice: add documentation on USB suspend/resume to enter deep sleep11631
Qspi frequency test fix11630
Cellular: Change visibility of _is_connected as protected11624
LittleFS: Update to v1.7.211623
STMOD_CELLULAR: set CTS with PullDown11622
nRF52 SDK 15.0 - Enable more than 1 interrupt11620
Fix enum type to align with psa-arch-tests11619
Add FLASHIAP component to DISCO_H74711609
IOTBTOOL-407 Fix microbit to use Arm C511605
DISCO_H747I dualcore support11604
Introduce qspi_inst_t type for QSPI instructions11603
Report errors returned by _qspi_configure_format11602
Allow for arbitrary QSPI alt sizes11599
FUTURE_SEQUANA: SPI HAL API fixes11586
Cleaned up Mbed LWIP configurations11580
Remove target dependency in ublox cellular APIs11578
Add synchronization and switching between WhdSoftAPInterface and WhdSTAInterfaces11571
Allow OS_THREAD_LIBSPACE_NUM as a macro11563
Simplify pull request template11547
Fix for UBLOX_EVK_ODIN_W2 fails in emac test.11536
STM32 EMAC configuration update11531
Improve QSPIFBlockDevice conformance to SFDP11512
Fix Failure in Cryptocell tests on Montgomrery curve11475
TEST: add atecc608a example to compilation test11457
tools: add silent option to build11434
Initial addition of files to support CY8CKIT_064S2_4343W target11429
Move script to check for floats and make it Python 2 compatible11375
NSAPI DNS query IP version check for non LWIP stacks.11279
Add API to get ipv6 link local addressUsing 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 dragonfly11561
Add TARGET_CY8CPROTO_063_BLE11407
Add OKDO platform11384
ST DISCO-H747I introduction11176
Support Nuvoton target NUMAKER_M252KGFixes and Changes
11678
Travis CI: Fixed issue where jobs are getting stalled/timing out11649
Fix memory leak on NetworkInterface destruction11647
Nanostack RF driver updates for Mbed OS 5.14.111639
Nanostack patch release for mbedos 5.14.111638
Change imgtool lib import to relative import11628
Make devicekey remainder test more meaningful11627
pinmap_peripheral function: update error code for easier debug11626
DISCO_L4R9I: update default STMOD+ pin11625
Revert tickless on UBLOX_EVK_ODIN_W211621
STM32L151: update calibration memory address11618
Cellular: Fix CellularStateMachine to not loop between init/power states11616
Cellular: Setting timeout before send command in gethostbyname.11615
Cellular: Remove old deprecated tests11612
IPCore unittests improvements11607
Tests: USB: Move control endpoint buffers to heap11601
DNS tests modification for ESP8266-specific scenario11598
AT_CellularDevice.cpp - unused variable err warning11597
Missing errno.h include11596
LoRa: Fix build warning about _ongoing_tx_msg11590
Moved Cypress TriggerMux initialization out of the HAL and into the BSP11589
Enable PSA tests for fastmodel11587
ATCmdParser doxygen header’s documentation update for scanf11585
NRF52: Fixed missing guard in port_api.c11583
STM32H7 ST CUBE V1.5.0 update11582
TEST: change integration fs test format and mount order11581
Cellular: Fix setting of PDP context ID (cid)11573
Add 413 dragonfly11572
Tighten GCC 2-region _sbrk11568
Speed up unit test build with parallel jobs11567
Simplicy QSPIF target overrides for PSoC611566
EP_AGORA: Add config logic to enable BLE, cell, and LoRa by default11564
Fix ARMC6 linker error for the bare metal profile11562
STM32H7: memory relocation11561
Add TARGET_CY8CPROTO_063_BLE11560
Explicitly set tdb internal flash size for PSoC6 Targets11558
Coverity fixes11548
Cellular: Fix resolving of DNS server IPv4/6 address11546
Tests: USB: Fix Python 3 compatibility11542
Update Cypress targets11541
esp8266 oob* : recv() brought back where it was needed11540
Tests: USB: Update error handling in basic tests11538
Cellular: Enable IPV6 for WISE_157011534
Cellular: Handle SEND FAIL and ERROR response11529
PSOC6: update to PDL 1.3.111525
STM32WB/STM32H7 : LSI selection when LSE is not available11523
Correct force inline syntax for IAR compiler11518
Cypress Cordio Driver Update11517
TCP Packet loss happens due to running of out of Mailbox size.11516
Update to latest psoc6csp11499
Cellular: Fix stop tag for Quectel M26 send command11498
iar export: fix invalid optmization flag - remove from misc11495
Improve cellular unittests11494
Fix Coverity issue: Initialize FlashIAP non-static member in constructor11491
Equeue chain, add documentation of using equeue_destroy11490
Cellular: Add flow control (IFC) in BG96 AT driver11489
Examples.py add –jobs argument11488
Cellular: Fix get_interface_name to not include leading zero11486
update googletest to v1.8.111483
Change reset_reason test timeout.11478
Refactor CRC constructor method to remove warning11474
Remove Mbed Crypto source files before importing11473
Fix compilation warnings from GCC in netsocket/network tests11472
Suppress Coverity warnings11471
STM32WB ADC : consecutive VBAT reading11470
Prevent unreachable statements and correct variable sizes.11465
Updated mbedTLS CRYPTO target to be more flexibly configured for supported boards11464
TEST: update compare log file name11462
Minimal-printf: Remove file printing in README and update tables11458
Tests: USB: Use libusb0 backend on Windows11456
IOTBTOOL-349: Correct handling of spaces in project name.11455
minimal-printf: Add capability to run floating point tests manually11454
ST: Change the LSI_VALUE according to documentation11453
Fix Coverity issues11452
Coverity changes in USBMSD.cpp11449
Coverity changes in USBDevice.cpp11448
STM license file update11447
Coverity changes in USBHID.cpp11446
add missing asserts to UserAllocatedEvent class11445
Add catch-all rule to makefile template11443
Enable asynchronous serial with DMA for K66F11440
Add missing documentation about tls testing11439
Remove unreachable statements warnings11438
Correct doxy-spellchecker error message11437
Harmonise Doxygen comments in drivers, events, platform and rtos dirs11427
ESP8266Interface buffer null-terminated and parameters of scan function in correct order11424
Stack type ip versions11421
Dns synchronous cache fix11420
Fixed smsc9220_emac link_out memory management.11417
Change stack sizes of threads used in tests. GR_LYCHEE failing CI11408
Remove mbed_trace dependency to Nanomesh headers11407
Add OKDO platform11404
FUTURE_SEQUANA: InterruptIn implementation bug fix11396
Remove floating point from AT_CellularSMS11395
Avoid non-trivial copy when initializing lorastack struct11394
Replace wait_ms calls with rtos::ThisThread::sleep_for11393
Cast void pointer before deallocating with delete[]11392
Remove minor build warnings11384
ST DISCO-H747I introduction11383
Change LSI_VALUE in STM implementation.11382
Use very verbose to see more details in case of problem11381
M263: Enlarge required deep sleep latency11380
M263: Enlarge LPTICKER_DELAY_TICKS for safe11379
M263: Fix FPGA CI testing failing11377
Fixed byte string related TypeError if using python3.11372
Cellular: Fix BG96 power on and connect11368
Add pin speed controlling interface11347
Fix NRF52832 softdevice memory map11338
Bring down interface when stopping softap11330
RTL8195AM - resuscitate AMEBA GCC/ARMCC support11314
Add executable analaysis tool for floating point checks.11297
Differentiate alt and dummy cycles in QSPIF11254
Update gcc.py for preprocessing in linker script11176
Support Nuvoton target NUMAKER_M252KG11046
Initial implementation of Cypress Crypto hardware acceleration for mbedTLS10991
Explaining how to opt in modules10684
Cellular: fix ATHandler destructor possible crash on deleteUsing 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
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
- NoneWhy 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 usedKEYPAIR
in the previous API version. For example,PSA_KEY_TYPE_ECC_KEY_PAIR
replacesPSA_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 thanPSA_KEY_LIFETIME_VOLATILE
. As part of key creation, usepsa_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 creationAllocating 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 thepsa_key_derivation_operation_t
structure replacespsa_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()
, andpsa_cipher_update()
have changed fromunsigned char
touint8_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
replacesunsigned char
inmbedtls_psa_inject_entropy()
. The macroMBEDTLS_PSA_INJECT_ENTROPY
replacesMBEDTLS_PSA_ENTROPY_INJECTION
.Netsocket: Change DNS retry and total attempt counts
DNS lookup is done for each of five predefined servers twice. This change affects the previous DNS lookup functionality only when it’s expected that DNS is made three times on the very first DNS server.
Although that’s unlikely needed, the previous functionality can be restored reverting the changes to DNS configuration.uVision export: Handle more C++ language standards
- Mbed OS now uses C++11 language and C++14 library constructs, so requires the C++ compiler to be set to C++14 standard or later. Custom build profiles that select C++98 or C++11 are no longer supported. (ARMC5 should work in its C++11 mode, as C++14 library replacements are provided in-tree, but ARMC5 is not officially supported).
- uVision export now requires MDK 5.28a or later, as
-std=gnu++14
mode cannot be selected in earlier versions. In Mbed OS 5.13, the Vision exporter was selecting-std=gnu++11
, but this is no longer sufficient.
Cellular: moved string_to_pdp_type from AT_CellularContext to Cellular
Moved string_to_pdp_type from AT_CellularContext to CellularUtil. string_to_pdp_type is a common method for AT and other layers. Without moving there will be duplicate methods.
Feature public headers
This will break user code that was using an internal API using a prefixed path, for example
#include "foo/bar.h"
instead of#include "bar.h"
.Port the cryptocell 310 cmac driver
This is a target update, adding hw accelerated CMAC, however, it can also be considered as a breaking change, as it removes support for key sizes other than 128 bit keys, and removes support for DES CMAC.
Port CC 310 sha 512 driver
SHA384 is not supported, returning
MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED
Port aes cc310 driver
This is a target update, adding hw accelerated AES, however, it can also be considered as a breaking change, as it removes support for AES other than 128 bit keys.
Sleep rework, RTOS API for bare metal, wait deprecations
- Subset of RTOS API now available in bare metal builds
- Full power save functionality now available in bare metal builds via RTOS API
- Consistent sleep vs wait API naming - wait() and wait_ms() deprecated
Migration notes
- Use of
wait
andwait_ms
should be reviewed to check whether sleeping is appropriate or not in the context the call occurs - if so, change toThisThread::sleep_for
/thread_sleep_for
, else change towait_us
.
Update to Mbed TLS 2.19.1
The Mbed TLS key export feature’s export keys callback, new in Mbed TLS 2.19.0, now requires use of
const
on its hello.random buffers (7th and 8th parameters). This is an API change.f_export_keys_ext
in ssl.h now has signature:int (*f_export_keys_ext)( void *, const unsigned char *, const unsigned char *, size_t, size_t, size_t, const unsigned char[32], const unsigned char[32], mbedtls_tls_prf_types );
Convert TZ target name ‘NPSA’ to test spec platform name
Define naming rule for TrustZone targets: ‘PLATFORM’_[‘NPSA_‘]’S’/’NS’, where:
1. ‘PLATFORM’ for test spec platform name, which is registered in platform database of mbed-os-tools.
2. ‘NPSA’ for non-PSA targets. Defaults to PSA target if absent.
3. ‘S’/’NS’ for secure/non-secure targets.M2351: Enhance secure/non-secure image build flow for non-PSA target
Changes for NuMaker-PFM-M2351:
1. Change target name to NU_PFM_M2351_NPSA_S for non-PSA secure target and and NU_PFM_M2351_NPSA_NS for non-PSA non-secure target. Original target name NUMAKER_PFM_M2351 is recycled.
2. Combine secure image and non-secure image into one in non-secure target post-build. With this, user just needs to flash the combined image instead of flash secure image and then non-secure image separately.
3. To drop pre-built secure image in mbed-os tree and provide custom one, add the line ‘“target.extra_labels_remove”: [“NU_PREBUILD_SECURE”]’ into ‘mbed_app.json’ instead of via .mbedignnore.What’s new
add queue static allocation support
Adds UserAllocatedEvent API to provide mechanism for event posting and dispatching without utilization of queue internal memory.
Nanostack release for mbed OS 5.14
This release contains updates for the Mesh protocols:
- Stability improvements and bug fixes to Wi-SUN.
- Enabled Nanostack PPP protocol support.
This version of Wi-SUN stack is inter-operable only with itself (development work still on-going).
Wi-SUN protocol is tested using functional protocol testing suites.
Wi-SUN non-functional testing is performed using more than 100 devices connected to single Wi-SUN network.
Thread stack is verified using protocol testing suite that includes certification test suiteSys timer should let deep sleep happen
When next SysTimer wake-up is scheduler far enough, always consider
that deep sleep may be entered and program an early wake-up.So that even if deep sleep is only allowed some time later, it can be
entered. If not doing this, then the deep sleep would be prevented by
SysTimer itself and may not be entered at all.This has been proved to happen in a simple blinly example.
Add a gpio pinmap
Add a weak
gpio_pinmap()
, that every target has to override, to provide a set of pins for GPIO testing.Add Atomic
template - Added
Atomic<T>
template to make atomics easier in C++.
PSA storage: Conform to “PSA 1.0.0” spec release
PSA Storage: Add the integrity only and no replay protection flags.
Changed EventQueue::cancel to return boolean value
EventQueue::cancel now returns the boolean value to indicate whether the cancel was successful or not.
Cellular: add method to set authentication type to CellularContext
Add new method virtual void set_authentication_type(AuthenticationType type) to CellularContext so application can set the correct authentication type.
Add C++11/14 support utility file
- Various modern C++ forward-compatibility helpers have been added in
mbed_cxxsupport.h
to assist with C++11 and later code, including supporting ARM C 5 as much as possible.
Adding stmod_cellular component
This library allows enabling the cellular module that is connected to the STMOD+ connector of the board.
Currently supported cellular modules are Quectel UG96 and BG96 expansion boards that are included in [p-l496g-cell01] (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
This makes no change to existing code and users. Only affects future porters.
Add minimal printf
To replace the standard implementation of the printf functions with the ones from the minimal-printf library, the custom
minimal-printf
profile should be used when compiling with mbed-cli. For example:$ mbed compile -t <toolchain> -m <target> --profile release --profile minimal-printf
Add
C++ headers - A set of C++11/14 library support headers have been included in
platform/cxxsupport
. These include standard-C++-like APIs, egmstd::atomic
in<mstd_atomic>
, to improve on implementations provided with toolchains. Seeplatform/cxxsupport/README.md
for more information.
Created PPP interface and PPP service classes to netsocket
Add Cellular PPP connection support to Nanostack. Support is made by creating a common PPP service class that both lwIP and Nanostack can use for cellular connectivity.
Affected components are lwIP and Nanostack on board IP stacks, new netsocket PPP interface and PPP service class. Cellular network interface, cellular classes and “nsapi_ppp.h” interface are not modified. No changes are required from the users of the Cellular network interface to continue using the lwIP as the default IP stack.
To use the Nanostack IP stack with the Cellular network interface instead of the lwIP stack, cellular application configuration must be modified in following way:
Set the default stack to nanostack
"nsapi.default-stack": "NANOSTACK"
Configure PPP to IPv6 only mode (Nanostack does not support IPv4)
"ppp.ipv4-enabled": false, "ppp.ipv6-enabled": true,
mbed-mesh-api: Add new API for Wi-SUN configuration
Add new APIs to Wi-SUN network certificate handling and network configuration. This includes:
- network name
- regulatory domain, operating mode and operating class
- setting own and trusted certificate
- removing own and trusted certificatesOptimize debug profile flags for size
Changed the Debug compiler profile to favor size optimization over speed optimization.
Enterprise security support
Add NSAPI_SECURITY_WPA2_ENT type to nsapi_security enum.
- Phrase helps to connect to an 802.1X capable network.
- Phrase conforms to WPA2-AES and WPA-TKIP with enterprise security.
Add a gpio-irq pinmap
Add a weak
gpio_irq_pinmap()
, that every target has to override, to provide a set of pins for GPIO IRQ testing.AT_CellularSMS: allow configuring SMS encoding (7-bit/8-bit) at initialization
AT_CellularSMS::initialize
takes an additional encoding parameter that defaults to 7-bit (behavior of existing code does not change, one needs to opt-in to send 8-bit SMS)Change default optimisation level to O1 when exporting to uVision
Default uVision optimisation level changed to O1. It matches the debug profile.
Known Issues
We publish Mbed OS as a collection of modules on GitHub. Issues are raised in the specific repositories and then tracked internally. The purpose of this section is to provide a single view of the outstanding key issues that have not been addressed for this release. As such, it is a filtered and reviewed list based on priority and potential effect. Each item summarizes the problem and includes any known workarounds, along with a link to the GitHub issue (if applicable). We welcome any comments or proposed solutions.
For more information about an issue, contact us on the forum.
TLS: IP addresses in the X.509 certificate subjectAltNames
- Description: Parsing IP addresses in the X.509 certificate subjectAltNames is not supported yet. In certificate chains relying on IP addresses in subjectAltNames a
BADCERT_CN_MISMATCH
error is returned. - Workaround: merge branch 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 inmbedtls/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 managedRelease 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_W2Coverity
- 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_M263AFixes and Changes
11402
STM32L4 USB device11400
nsapi_dns: cleanup dns queue when running out or memory11391
EvenQueue: fix template functions passing UserAllocatedEvent<…> as argument.11370
Driver Updates + ARMC6 driver support + WIFI fixes11369
Specify QSPI frequency for more Cypress targets11367
Cypress 5.14 rollup11359
Update mbed-coap to version 5.1.011356
Fix WHD link state change event handling11355
Initial support for Serial Flash on PSoC Devices11354
Update linker scripts based on latest PDL 1.311353
Add reserved resources metadata to Cypress BSPs11349
TDBStore bugfix: won’t rely on flash erase value to detect is a sector erased11348
Mutex: _count incrementation brought back11345
Fix bare-metal configuration to support Pelion Device Management Client11344
S2-LP: Sync with development repository11343
ESP8266: Support power pin in custom wiring11342
add queue static allocation support11339
mbed-os/LwIP changes and fixes in auto-IP for Bonjour Conformance Test11337
Updating SDP-K1 PinNames.h.11335
Nanostack release for mbed OS 5.1411334
I2 c sequential communication rework11326
Update PDL for Cypress Targets11324
PSOC6: Update CSP to latest11322
Updated the LWIP buffer pool size for PSoC611319
Update WHD to 1.30.011315
Update Mbed OS for PSA Crypto API 1.0b311309
MCUXpresso Kinetis SPI drive: Add a delay between CS assertion and first sclk edge11306
At handler improvements11304
RSSI getter fixed for ESP826611303
NUCLEO_H743ZI2 : increase system clock from 400 MHz to 480 MHz11302
Enable json overriding ESP8266 default baud rate11301
STM32L4+ : increase system clock from 80 MHz to 120 MHz11298
Explicitly set rbp_internal_size for TARGET_PSOC611296
Fix missing offset in TBStore read from flash11294
KL43Z: Enable FALSHIAP storage11293
K82F: Add USBDEVICE support11291
Stm32 ospi qspi fallback support11290
MX25LM51245G QSPI test config file11289
Replace TEST_ASSERT_INT_WITHIN usage in netsocket tests11276
Add integration tests11275
Enable building feature storage with a bare metal profile11272
mbed fault handler: fix mbed_fault_context parameter11269
storage: fix potential memory corruption and check return values11266
ADC internal temperature support and EMAC header fix11265
Addand ARMC5 11249
Make AT_CellularSMS::list_messages support index 0 in SMS inbox11248
Allow ATHandler::read_int to return 0 successfully11247
AT_CellularSMS: set “international” flag in PDU when applicable11246
Cellular: Fix BG96 AT driver for IPv611245
AT_CellularSMS: allow configuring SMS encoding (7-bit/8-bit) at initialization11244
Netsocket: Change DNS retry and total attempt counts11239
crypto: Copy legacy crypto from Mbed Crypto11236
Force inline Timer::attach() to get rid of floating-point instructions11235
minimal-printf should not bypass the retargetting code11225
Vision export: Handle more C++ language standards11224
Coverity issues fixed11220
Fix cellular dns test with IAR compiled binary11213
Moved partial profile to a subdirectory11212
Change default optimisation level to O1 when exporting to uVision11211
Review follow-up mstd fixes11208
Atomics: GCC fix for M23 (again)11201
Cellular: Fixed improper AT handler setup through virtual calls in co11200
Cellular: moved string_to_pdp_type from AT_CellularContext to Cellula11191
Cellular: move RAT reading to better support ublox custom boards11190
Cellular: failure when deleting created context is not considered error11185
Move rtos & platform TARGET directories to source11181
mbed-mesh-api: Add new API for Wi-SUN configuration11154
Cellular API shutdown to stop state machine11152
Nuvoton: Fix FPGA CI test failing11149
Cellular: Remove unnecessary local variables11148
Cellular: Fix SIM pin enter command11145
Implement queue.count()11142
Relocate USB target specific code to roottargets
directory11136
USBDevice: Avoid forcing end device to be derived from USBDevice class11126
Optimize debug profile flags for size11122
Support Nuvoton’s new target NUMAKER_IOT_M263A11119
Riot Micro cellular device11104
Enterprise security support11099
Update EP_AGORA target pinout11084
NVStore.cpp (and KVStore) - run-time failure handling missing11082
Cellular: Add BG96 AT driver with DNS support11076
ARMC5extensions 11074
Add a gpio-irq pinmap11073
Feature public headers11072
STM32L4: update drivers version to CUBE V1.14.011070
IAR: Suppress “exceptions are disabled” warning11067
Add Unittest equeue tests11058
BLE: allow overriding event signal11053
Add Mbed bootloader support to CY8CKIT_062_WIFI_BT and CY8CPROTO_062_4343W11051
Add minimal printf11050
DISCO_L4R9I new target11039
AddC++ headers 11038
Extend the GPIO HAL API tests11019
Nuvoton: Modify wait ns(…) to provide more accurate implementation11018
PSOC6_SB: initial integration of Cypress Secure Boot target CY8CPROTO_064_SB11009
FPGA SPI: remove 4 and 12 bits size support10980
LwIP: make TCPIP_THREAD_PRIO configurable10974
Created PPP interface and PPP service classes to netsocket10971
Nanostack: sync libservice with changes in master copy10947
Port the cryptocell 310 cmac driver10921
STMOD_CELLULAR: readme file additional information10919
AT Cellular Network: mutex lock issue10913
Port CC 310 sha 512 driver10907
Port aes cc310 driver10900
Armcc5 compilation fixes10895
Reduce Event.h and EventQueue.h using C++1110885
Reduce Callback.h using C++1110877
Cellular: Ublox cellular context activation updated for C030_R412M10868
Add C++11/14 support utility file10866
Adding stmod_cellular component10847
PSA storage: Conform to “PSA 1.0.0” spec release10841
TARGET_STM: Add DEVICE_SPI_COUNT to use SPIs without interference10837
Toolchain attributes - use C++11/C1110829
PSA: TFM import10821
Cellular: Refactor APN db implementation to reduce memory usage10813
Make ARMC5 and IAR develop profile also size optimized10792
Fix: Allow target size restriction for LPC55S6910750
Changed EventQueue::cancel to return boolean value10741
M2351: Override wait_ns to provide more accurate implementation10711
Add i2cee-driver to components10703
Cellular: Removed boilerplate code10699
MbedCRC: make buffers const void *10694
Cellular: add method to set authentication type to CellularContext10683
Export wait_ns to be overridable10660
Add SCLK and SIN stats to SPIMasterTester10659
Replace uses of ArrayView with mbed::Span10644
Add a gpio pinmap10274
Add Atomictemplate 10104
Sleep rework, RTOS API for bare metal, wait deprecations11467
Convert TZ target name to test spec platform name11450
Minimal-printf: Set default configurations to false11441
Organize source files and add Doxygen labels11435
Update to Mbed TLS 2.19.0 and Mbed Crypto 2.0.011419
Adds missing include required by fixed-width format specifiers11418
NRF52: fix config11412
Kinetis update to fix tickless11410
Mesh API, Wi-SUN: Initialize Wi-SUN settings with values from json11385
Fix problem with low level lp_ticker STM wrapper11376
Update PDL documentation and metadata11526
Fix added to unlock AT handler mutex11522
Sys timer should let deep sleep happen11521
Bux fix: Context can be cleared using CGDCONT after sim ready state11493
Update to Mbed TLS 2.19.111487
Convert TZ target name ‘NPSA’ to test spec platform name11484
Delaying message id random initialization to later stage.11479
no-systick targets: fix systick irq handler setup11423
Nanostack release for mbedos 5 1411288
M2351: Enhance secure/non-secure image build flow for non-PSA targetUsing 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
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 target11063
Add CC3220SF_Launchxl to Mbed OSFixes and Changes
11284
K22: Add USBDEVICE support11282
K22F: Add FlashIAP for storage11280
Tweak stm_spi_api Coverity warning.11274
Add ethernet support on NUCLEO_H743ZI board11273
Fix Coverity uninitialized pointer field Thread.h11270
Update mbed-coap to version 4.8.111268
Update MCUXpresso SDK SPI drivers11267
NXP MCUXpresso: optimize us_ticker for LPC platforms11261
MCUXpresso: Add TICKLESS support for LPC platforms11260
Typo in USBSerial.h function prevents compilation11259
FATFS / IAR compilation issue Pe02911255
Update NVRAM image for target CY8CMOD-062S2-4301211250
hal fhss timer: removed unnecessary and potentially unsafe memset11243
Python3 fixes11241
LoRaWAN: Terminate RX when receiving uplink messages11237
Fix TT_M3HQ build problem11231
Python3 fixes11226
LPC1768 Watchdog & Reset Reason11222
BLE: fix recursive call11216
BLE: make advertising data parser handle early termination11215
LPC1768: Make use of the other 32K of RAM11204
BLE: add nonscannable connectable type11194
Greentea testing wifi connect nonblocked11193
FATFileSystem::stat() enabled for all compilers11189
__cplusplus guard fixed pwmout_device.h for STM32 families11188
MIMXRT1050_EVK: Add TRNG support11183
M252KG: Fix kvstore-static_tests failing with OOM11180
tweak atomic_test timeout11178
ST: Watchdog: Fix timeout registers value calculation11172
make watchdog kick reset test pass CI (LSI problem)11171
Add Nuvoton M261 sub-family into arm_pack_manager11169
TLSSocketWrapper::recvfrom sets SocketAddress output variable11167
Fix lp ticker and common ticker tests11166
Fix inclusion of test related directories by build tool11165
Allows placing KVStore and update images on separate storage devices - to internal and external flash11157
Relax us ticker frequency requirement + test update11137
Add Arduino Nano 33 BLE target11127
Fix ANALOGIN support for LPC55S6911118
Add new features to Toshiba’s TMPM46B11116
Define IC related pin names for the L-Tek FF_LPC546XX target11063
Add CC3220SF_Launchxl to Mbed OS11021
Nuvoton: Enlarge LPTICKER_DELAY_TICKS for safe11020
Nuvoton: Enlarge required deep sleep latency10796
NXP: Enable MBED_TICKLESS on various NXP platformsUsing 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 members11173
Coverity and compilation warnings fixes11168
Xpresso: qspi_write fix11163
Bring back SPIF module-specific debug logs11162
Add DNS servers from cellular PDP to nsapi11161
Fix include path issues on NRF5x with Cordio11160
Nuvoton: Remove dead code nu_delay_cycle_x411151
Fix PSoC 6 inout pins11150
__cplusplus guard fixed pwmout_device.h for STM32F411141
freescale: fix i2c_byte_read function11139
STM32F413 Crash Capture11138
fix rom start & size for CY8CKIT_062_WIFI_BT & CY8CPROTO_062_4343W11132
Fix MBED_ASSERT for UTs11131
FUTURE_SEQUANA: Add missing serial_free() implementation11130
Updated testcases11123
NRF52 need to call TIMER_TASK_SHUTDOWN for current consumption11103
STM32F7: Do not generate redundant IN tokens11101
PSoC 6 I2C and SPI driver updates11086
Mbed-os compile without DEVICE_SERIAL11080
Add target for CY8CKIT_062S2_4301211071
PSOC6: USB device implementation11066
Cellular: Fix cellular statemachine stop and BG96 power upUsing 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 once11079
NRF52840: enable TRNG in Nordic SDK config11078
NRF52840: fix include path issues for ble pal cordio ll and gcc11077
NRF52840: remove align instructions from gcc linker for ARM.extab exi11069
add defines sectors for STM32F446ZE11064
MCUXpresso: Fix the LPC GPIO IRQ driver11062
Fix SAADC resolution for nRF52-based targets… again11060
MCUXpresso: Update LPC spi driver11059
GCC ARM: Increase develop and release debug level11052
Update MCUXpresso AnalogIn driver for LPC devices11049
Normalize line endings for IM880B startup files.11042
Fixed serial_device IRQ infinite loop bug due to uint8_t overflowing in STM devices11035
mbedtls: Update to Mbed TLS 2.18.111028
Fix FPGA CI Test Shield warnings11026
Add a restricted peripheral list11022
Fix watchdog tests failing with OOM11015
Fix wrongly declared ADC pinout for EFM32GG11 STK3701A11014
Increase ADC tolerance to 5% in FPGA-based tests11010
FPGA SPI: ASYNC issue11008
Enable FPGA-based SPI testing on Silicon Labs targets11007
Fix PWM output on Silicon Labs targets for large pulsewidths11005
FPGA PWM: wait 1 period before measurement11004
FPGA I2C: correct init bloc number11003
LPC MCUXpresso: Remove extra I2C transaction on byte write10994
Add DEVICE_SERIAL_FC guards to serial HAL API10963
PSA TESTS: Include mbedtls/config.h before evaluating MBEDTLS_PSA_CRYPTO_CUsing 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 nRF52840Important 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
andreset_reason
- Added new drivers:
ResetReason
andWatchdog
- 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 - seeus_ticker_api.h
for the details of enabling optimizations on other targets. It can be optimized further if the optiontarget.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 IM880B10884
NUCLEO_H743ZI2 new target support10633
Add new features to Toshiba’s TMPM4G910629
Add support for the Embedded Planet Agora targetFixes and Changes
11027
PSOC6: add LwIP configuration for Cypress boards11013
Revert “K64F, STM32F429: IAR linker scripts dynamic heap fix”11012
Remove FPGA analog out test11011
Allow re-initialising an I2C peripheral on Silicon Labs targets11002
LPC546XX: Add pins to LPCXpresso restricted list10997
Removing absolute paths to compiler executables10990
Fix doxygen_options.json for ResetReason10989
SPI FPGA test extension + SPI driver fix (K64F)10984
Skip form factor pins marked as NC10982
STM32 LPUART minor update for easy maintenance10977
Fix out-of-bounds array access in tests-mbedmicro-rtos-mbed-malloc10976
Fix error in tests-mbed_drivers-ticker when LED2 is not connected10975
Restrict FPGA tests to Arduino form factor10972
add new target IM880B10968
Add FLASHIAP for MTB_STM_S2LP10967
ESP8266: fix driver’s support AT firmware version10966
Add RZ/A1 settings to arm_package_manager10964
Add newline after mbed error so greentea shows it10954
Watchdog: Clean up the doxygen comments10950
Enable split heap in K64F/K66F devices10948
BLE: fix flex word10944
Update I2CTester for fpga-ci-test-shield10939
Fix SAADC resolution for nRF52-based targets10938
K64F, STM32F429: IAR linker scripts dynamic heap fix10934
Fix: Low frequency clock will now selected by given “lf_clock_src” setting.10933
Nordic NRF52832 cache ON10932
Internal delay loop code alignment to 1610928
STM: Correct macro test in us_ticker_defines.h10925
Doubled ATHandler’s BUFF_SIZE10920
Kinetis MCUXpresso: Update the clock drivers10910
Increase dns-response-wait-time10908
Fix netconn_recv_tcp_pbuf ARMC6 linker error10896
microlib support: Specify compiler version unable to build without the fix10894
Add adjust-check-config script to mbedtls importer10893
cellular: fix file permission10888
Remove macro MBEDTLS_PSA_CRYPTO_C from PSA targets10884
NUCLEO_H743ZI2 new target support10881
Fix Nordic/Mbed Critical Section API Inconsistency (In Builds w/o Softdevice)10879
PSA Crypto for all targets10874
Add new features to Toshiba’s TMPM3H610873
Add new features to Toshiba’s TMPM3HQ10870
HAL I2C: adds missing DEVICE_I2C guards10869
LPC55S69: fix cosFactor data size in header file10867
LoRaPHY: Pass frequency set in rx_config() to caller10864
TLSSocket: print certificate info only when tracing is enabled10861
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 set10857
Bring watchdog feature branch into master10856
STM32: enable CRC for all L0/L4/F710855
Nuvoton: Fix idle thread stack underflow in debug build10846
MbedCRC doxygen fixes10845
Wrong timeout value in greentea tests10842
Cellular: Stack type fixes10840
Cellular: cellular socket flags updated10835
M23: Fix compile error with mbed fault handler10834
Fixed UDP sendto if IP version not match10833
fix IAR compile error on fastmodels10826
Add STM32H743ZI to IAR export definition10825
Cellular: Fix PLMN debug trace for IAR10824
STM32: pwmout_write: configure channel only when not already enabled10823
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’s10811
socket close callback10808
Cellular: Added handling for BG96 network PDP context deactivation10807
NSAPI/lwIP: Use netconn_recv_tcp_pbuf10804
TARGET_STM: SPI: update pull up config depending on clk polarity10798
TARGET_TT:Add GPIO INT pin with PT110795
FastModel: trun off MPU for FVP_MPS2_M0P10794
LWIP DNS servers setting/getting fixed.10793
STM32: remove compilation warnings10791
bootloader: Fix LPC55S69 bootloader segmentation10790
STM32H7 enable LPUART10782
GR_LYCHEE,RZ_A1H,VK_RZ_A1H: Fix greentea test failure with ARMC610781
Include TICKLESS stack size increase even without LPTICKER_DELAY_TICKS10779
Add support for SPIF of size bigger than 16Mbyte10776
UDPSOCKET_ECHOTEST_NONBLOCK performance improvement.10775
STM32H7: refactor TARGET directory10774
Fix serial IRQ handling10772
Workarounds for GAP advertising issues on Cordio10769
PSOC6: add SOFTFP to standard component list10767
usb_device-msd test: fix powershell unmount script issue10762
Disable only time drifting test cases and fix GREENTEA_SETUP() call in tests10761
Fix networkinterface non-blocking status test10758
Move Seeed ARCH_MAX to TARGET_STM32F407xE MCU10757
Add support I2C 3 for target EFM32G1110756
Cleaned up trace log SPIF Block Device10755
hal_qspi_test: undo buggy code10752
STM32L0: Add DEVICE_SPI_COUNT to DISCO_L072CZ_LRWAN1 + MTB_MURATA_ABZ10751
TARGET_TT:Setting wisely pin mode for TT_M3HQ.10749
Examples: enable more tests for examples10746
PSA protected storage: Add encrypt & RB protect flags by default to set.10744
Fixes in Sys Timer test10742
CThunk: Fix assertion when CThunk object is destroyed10739
M487: Fix wait_ns test failed10708
TARGET_STM: SPI: add pulse on master transmissions10707
Add C++14 sized delete operators10706
mem pool size: Fix calculation of memory pool size for portability10705
Atomics: GCC fix for M23 (ARMv8-M baseline)10704
microlib support: Fix build with Arm Compiler 6 and MicroLib10702
Add extra idle debug stack size in case all STATS are enabled10701
STM: replace C++ low power ticker wrapper with a low level wrapper10700
Update HAL Sleep manager test to cope with STM32 LPTIM HW10698
timeout_tests: do not call sleep from test thread10697
STM32H7: flash issue while erasing sector in Bank 110696
Cellular: Fix socket connect on UBLOX_AT driver10695
GD32_F450ZI : Add bootloader support10692
PSOC6: initial integration of Cypress HAL10689
nRF52840 USB Device Implementation10688
Add a top level README file for USB tests10686
MAX32630.sct fix10680
Add compilation flags to rf_configuration10676
STM32: common cmsis.h and device.h files10674
TARGET_TT: adding switches to PinNames10672
Fix typos in the FPGA CI Test Shield component10665
Add hardcoded Echo server defaults for Greentea socket tests.10663
PSOC6: move cmsis.h and device.h out from psoc6pdl directory10656
Cellular: AT_CellularContext disconnect in non-blocking mode10654
USBHostMSD: Implement BlockDevice get_type()10653
STM USBHALHost: Fix NULL pointer dereference10651
USBHost: Wait for device to implement SET ADDRESS10647
Fix LWIP warning issues found by Coverity scan10633
Add new features to Toshiba’s TMPM4G910629
Add support for the Embedded Planet Agora target10619
Fastmodel: enable flashIAP and kvstore10609
wait_us optimization10588
Cell bg96 power10536
Changes required by the ST low power ticker wrapper.10501
Remove excessive info and debug prints in SPIF driver10484
Cellular: Telit ME910 driver10466
STM32H7: WATCHDOG and RESET_REASON support10437
PSA: Exclude mbed-hal-spm test for M23 targetUsing 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
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
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
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
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
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 forregister
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
Nanostack send calls return more accurate information in case of errors.
Update CMSIS to 5.5.1
CMSIS updated from 5.4.0 to 5.5.1.
KVStore: Support external storage out of mbed-os tree
Support external storage out of mbed-os tree in KVStore. To enable it, you need to:
- Configure KVStore configuration parameter
blockdevice
toother
. - Override
get_other_blockdevice()
to provide block device out of mbed-os tree.
C++ BlockDevice *get_other_blockdevice();
Update to LWIP 2.1.2
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
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
Remove FEATURE_STORAGE and all underlying deprecated features: cfstore, flash-journal and storage-volume-manager.
Mail/MemoryPool: blocking alloc
Mail
andMemoryPool
now provide blocking forms ofalloc
calls that can sleep the thread until a memory block is available.Cellular: CellularContext must provide access to CellularDevice
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
We have:
- Separated atomic APIs into
mbed_atomic.h
frommbed_critical.h
. Code not includingmbed.h
may need to check their includes. - Added atomic
fetch_add
,fetch_sub
,fetch_and
,fetch_or
,fetch_xor
andcompare_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
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
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
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
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
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
ESP8266Interface: new API to configure country code and channels to be used.
Default to Cordio BLE stack for NRF52* targets
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 inmbedtls/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 targetFixes and changes
10675
Update Mbed TLS 2.18.0 rc110666
Bring Nordic SDK v15 update to master10646
Fix deprecation notice for ble::Gap::getState()10640
BLE HealthThermometerService: correct GATT characteristics10639
Cellular: Preventing Socket ID assignment until actual socket creation at the modem10638
Fix AdvertisingDataBuilder UUID insertion bug10636
+UPSND sent to poll activation status10635
BLE: Deprecate UARTService and suppress compiler warnings10634
BLE: Fix deprecated API calls in battery and thermometer services10631
Update cube h7 to 1.4.010627
Remove targets FUTURE_SEQUANA_M0_PSA and FUTURE_SEQUANA_PSA10625
TESTS: Update examples.json to enable testing10624
Nanostack release for Mbed OS 5.1310623
Cellular: Fix unit test valgrind warnings10621
Fix usb_device-msd test Python dependencies10620
Update mbed-coap to version 4.8.010617
Change W7500 GPIO driver10616
Fix bug Operator new[] out of memory10615
This allows CPP application to use the functions from cc.h10614
Include mbed-greentea==1.7.1 for mbed-os-tools==0.0.810606
PSA release script update: Add toolchain option10605
K66F: Update SAI and SAI EDMA driver to SDK 2.510602
Runtime DNS server addition implement10598
Add Wi-Sun certificate options to mesh API configuration JSON10597
SysTimer should be buildable without lp ticker10596
Introduce Semaphore::acquire methods10594
Arm Compiler 5: Fix mbed_atomic_impl.h assembly10593
Cellular: Fix flow control pin configs for BC95 and Gemalto targets10591
M2351: Fix serial sync error in SPDMC test10587
GR_LYCHEE,RZ_A1H,VK_RZ_A1H: Fix greentea test failure with Arm Compiler 610582
Add LED4 definition in PinNames.h of SDP-K1 board10581
BLE: Management of Tx path on Cordio10580
BLE: Put the acl buffer size in config10557
Cellular: Initialize CellularContext member variables in correct class10554
Cellular: Fix compile warnings from cellular10553
Add semihosting and SWO examples to mbed_override_console()10540
Check in files for the FPGA CI test shield10521
TEST: Update Python script to enable examples smoke test10511
Cellular: Fix setting of statemachine timeout10505
Improve importer.py10489
gpio_api.h: Clarify desired behavior for NC10482
Allow NC pins to be instantiated on Silicon Labs platforms10478
DataFlash: Change erase size to pages to reduce memory usage10476
LWIP TCP socket close - disconnecting fix10475
Implement nanostack eventloop tick timer10473
Add exception case for IPv6 only mode of BG9610456
LWIP 2.1.2 tcpip thread stack overflow fix10454
Enterprise_mode_+_wifi_configuraiton_api: update ODIN drivers to v3.7.0 RC110442
Cellular: Make AT_CellularContext::get_context() virtual10427
Set compilers to C++14 and C1110410
Nanostack: Translate errors from sendmsg10402
Cellular: Send disconnect to correct ctx10398
Clean up Arm toolchains from get_mbed_official_release()10366
Update CMSIS to 5.5.110355
KVStore: Support external storage out of mbed-os tree10353
Update to LWIP 2.1.210328
Add option to disable default UART console10324
Cellular: New state machine state and better info from stm10322
GCC: remove-fno-builtin
option10258
Remove FEATURE_STORAGE and all underlying deprecated features10254
Remove unused tools modules and document the used ones10244
Add the INTERRUPTIN compilation guard for ESP826610225
Mail/MemoryPool: blocking alloc10210
Cellular: CellularContext must provide access to CellularDevice10162
BLE - Notify HCI driver of host stack inactivity10151
Sleep manager: Optimize counter10150
Timer: Remove hard-coded lp_ticker knowledge10147
Assembler atomics10146
CellularBase -> CellularInterface tidy10056
Cellular: Retry logic for CellularContext connect10053
Cellular: Make CellularStateMachine timeouts configurable10043
Add vprintf to Rawserial10021
Enable post build bootloader merging in uVision9960
Use LP tickers for waiting in no-RTOS builds when available9955
ESP8266: Treats Wi-Fi scan results as out-of-band data; new API to adjust Wi-Fi scan settings9944
GCC - Add support to split heap across 2-RAM banks9927
ESP8266: Country code API9476
Asynchronous Serial API fixes and refactoring9443
Add USBCDC_ECM class9221
Add ARM_MUSCA_A1 target9111
CAN: Fix signness mismatch inCANMessage
constructors10747
Cypress: Fix issue #1061310740
ARMC6: Suppress “register deprecated” warning10733
Fix NRF52 memory pools10722
mbed-crypto: Automatically enable entropy injection10716
Update requirement for manifest-tool10809
ns_list: avoid UINT_FAST8_MAX (fix Arm Compiler 5 builds)10805
Fix Arm Compiler 5 compilation10802
Update to Mbed TLS 2.18.0rc310786
Re-enable complilation for Wi-Fi and nanostack examples10770
mbed-crypto: Update to Mbed Crypto 1.1.0d110753
Fix NRF52 enabled UART count and enable UART0/110709
Default to Cordio BLE stack for NRF52* targets10875
Cellular: Remove IPv6 and IPv4v6 as supported properties for BG9610764
BG96 IPv6 support and socket ID fix for BG96 and M26Using 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 thanCortex-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_connect10578
Modify PinName file to keep correspondence with spec10575
BLE: fix CCC callback not being called when writing to a CCC10573
Change “aplication” to “application”10570
STM32 astyle updates10544
Py3 fixes for test scripts10543
Cellular: Increase receiving timeout for UDP echo non-blocking test10541
Adding QSPI support to target RHOMBIO_L476DMW1K10539
Add mbed studio flag during assembly10538
Enabled crash reporting for DISCO_F407VG target10534
NANO130: Fix optimization error with NVIC_SetVector/NVIC_GetVector on ARMC610530
C027 Fix for modemOn flag10529
Cellular: Target name change for ublox cellular instance10527
Nuvoton: Add COMPONENT_FLASHIAP support10524
TRAVIS: turn off upload python test code coverage10523
Removing support of FLASHIAP in general_filesystem tests10520
Permit non-TrustZone ARMv8 build10512
requirements: update urllib3 to 1.24.210500
This removes many const char* warnings related with LWIP_ASSERT()10496
Allow application to override LWIP_RAW10483
PSOC6: move mbed_sdk_init to mbed_overrides.c10480
SPI: Prime asynch transaction buffer on construction10479
STM32WB: Update Flash size10468
Add support for CAN to SiLabs targets10287
Enable MTS_DRAGONFLY_F411RE to register with PelionUsing 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.
- Non-TrustZone ARMv8 targets now supported (core must be set to
-
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:
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.md10516
32 Byte key derivation may fail with a 16 Byte ROT key10513
Fix ARMC6 fpu detection for M33 core10509
LPC55S69: Add support for UART hardware flow control10507
PSA: mbedSPM correct SPM initialization order10506
Add missing ADC pins mapping for FRMD-K66F (#10498)10502
PSA: TFM import10493
STM32F303RE: Activate FLASHIAP10492
Remove sleep lock/unlock from Silicon Labs HAL implementation10490
Cellular: Added UT for case when read_string buff size hits middle of10488
Cellular: Add description for CellularProperty10485
NVStore.cpp compiler warning removal (os_ret)10477
Wi-SUN: adds greentea test config10474
fix usb msd test python dependencies10472
Fix USB control transfers using small size10471
SDP-K1: Updates to target code10465
Cellular: fix calls to ATHandler::read_string(…) give correct size10463
Cellular: Add WISE-1570 handling for socket closing URC10462
Nanostack: release connect_semaphore only when it is pending10461
Update wifi driver for rda target UNO_91H10453
Cellular: Minor doc update for CellualrSocket object10451
MIMXRT1050: Readd IAR support10449
Configure UNO_91H to support PDMC compile10448
Size should be calculate after confirm the final start address10443
Fix for downloading the wrong binary in the online compiler10438
PSA: Pass TFM_LVL macro to linker files10436
NUC472: Workaround for unknown error with power-down10435
Add support for QSPI to Cypress Boards10434
Nanostack network handle does not always call status cb for BOOTSTRAP events10426
UDPSOCKET_ECHOTEST fails if a packet of every size was not sent10401
NUC472: Support crash capture for no-XRAM configuration10390
Correct some CPU selections in tools10364
Refactor PSA code generators10303
STM32L4xx: IAR memory maps updated10078
Fix heap init error in rtos-less code10018
STM: Update linker script for using SRAM1 and SRAM2 in ARMUsing 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 platformFixes and Changes
10421
Update Jinja2 for CVE-2019-10906 fix10420
Updated mbed-cloud-sdk to 2.0.610419
FUTURE_SEQUANA: Clean up “unused variable” compiler warnings10418
CordioGattServer: reset settings variable before ANDing the properties to it10417
suppress coverity error10415
rtos/drivers: add license information10414
ExhaustibleBD: licensed under Apache 2.010412
FUTURE_SEQUANA: Fix flash_api bug introduced with e16d2d81d910411
Cellular: Added BG96 handling for socket closing URC10409
Fixing default algorithms in cmsis pack index10408
Update comments and improve readability for the BusInOut class10407
Fix warnings on PSA secure builds10406
Modify CMSIS pack manager to properly handle OSError10395
mbed_error: Avoid negative left shift10394
Networking: Fix some ARMC6 warnings10393
approcah -> approach10391
Update the writing example in unit testing README10387
Atmel SAMG55: Cortex-M4 -> Cortex-M4F10386
ARM MPS2: Cortex-M4 -> M4F & M7 -> M7FD10385
README file for wifi tests gives configuration example10384
Toshiba: Cortex-M4 -> Cortex-M4F10383
GigaDevice: Cortex-M4 -> Cortex-M4F10382
SDP_K1: Cortex-M4 -> Cortex-M4F10381
ECHOTEST internal loop simplification and fix10380
Nordic QSPI data must be written from/read to aligned buffers in RAM10378
STM32: protect compilation when DEVICE_USTICKER is disabled10377
Fix ESP8266 driver behavior on connection failures10376
LPC55S69: Fix APB bridge security programming10375
Cellular: Fix to delete PDP context on disconnect10369
L3IP interface input handler change.10368
FUTURE_SEQUANA_PSA fix PSA Protected storage10367
Increase background stack size to fix overflows with debug profile10363
Flagging WEAK method implementation for default construction10358
Error print improvements10354
Cellular: Using new rather than malloc in debug_print10350
Fix doxygen comment in USBDevice10349
Fix crash capture feature for nuvoton10348
Parse M33 + GCC_ARM map files10347
Fix detection of supported targets for mbed 2 builds10346
FUTURE_SEQUANA: Add suport for ARMC610343
TARGET_STM32F7: Reset QSPI in default mode on abort for all versions.10341
Cellular: Check for URC during AT response stop10340
BLE: fix missing implementation call10338
Cellular: Fix deleting of state machine to correct class10335
PSA release.py - Check that required toolchains are in PATH10334
MXRT1050_EVK: Fixes test failure seen with ARM & IAR toolchain10333
Allow toolchain paths to be wrapped in quotes10332
Break up large prints from –supported10330
Reduce greentea socket tests failures related to network issues10318
Crash with MTB_MXCHIP_EMW3166 has been corrected.10314
i.MX RT1050: Reactivate data cache10301
examples test compile optional verbose10292
Cellular: Basic driver for Quectel EC25/EC2110268
PSoC6 serial driver: Setup RTS and TX lines on deepsleep entry/exit10257
Correct Python 3 errors and lint warnings in build_release.py10232
PSA Crypto Service - multipart operation memory fixes10124
Enable low-power ticker and Sleep for FastModels10096
Add USB HID tests10020
Fix single-threaded apps for IAR v8 builds10019
uARM - Move heap region after IRAM110004
M2351: Support memory custom partition9981
test_soap_connection_handler leaks memory when open_connection fails9967
Fix for projects exported as a zip file (affects online compiler)9966
tools: fix the path generated to the sct file9870
Re-enable MPS2 platform9844
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.0Our 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 WriteWe 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 target10133
Adding STM32_F439 as a new MTB target10115
Uhuru RAVEN: Adding platform HAL10000
Adding support for SDP-K1.9814
Adding NUCLEO_WB55RG supportFixes and Changes
10317
Fix for DigitalOut(NC) instantiation for all Toshiba targets10304
equeue: align passed-in buffer10302
BLE: force mandatory services to have lowest handles10299
MIMXRT1050: Fix ENET issues10296
Build script: add explicit console log in case of linker script error10295
eclipse_gcc_arm export improvement10294
NUCLEO_L4R5ZI_P: enable sw4stm32 export10290
README link to license guide 404s10289
PSOC6: Rebuild WICED libraries10288
Revert limiting Renesas targets to ARMC610282
Nuvoton: Support export IAR8 project10281
Adding support for S2_LP (WiSUN) as a new MTB target10280
Remove CFSTORE VERSION file (colliding with an ARM 6.12 C++ header file)10276
Parse Errors and Warnings from Arm Compiler 610275
Updated AWS url for astyle.10270
BLE SimpleAdvertisingBuilder moved functions out of mbed_assert calls10269
cellular: valgrind defect fix10267
PSOC6: Modify lp_ticker to 32 bit10260
Remove leftover waffle comments from README.md10248
TARGET_STM32F7: Refresh cache when erasing or programming flash10246
LPC55S69: Update Flash driver to set clock frequency10243
Nanostack::EthernetInterface::bringdown() can handle blocking mode10240
Add Python modules to LICENSE file10234
Update flash algo default with CPM 0.2.410231
Nanostack ARMC6 update10230
Cellular: cellular_network_test Compilation Error Removed10229
Cellular: Power ON Wait Increased for C030_U20110222
Travis CI: Updated astyle to work with updated .astyleignore file10221
Travis CI: Replaced ‘./’ with ‘^’ in .astyleignore file.10219
BLE: fix scan timeout being called from interrupt10214
LoRaWAN: Adding TOA and Channel info in RX metadata10213
GR_LYCHEE,RZ_A1H,VK_RZ_A1H: Fix greentea ticker test case failures10212
Fix tempsensor cal1 constant in stm32f3xx_ll_adc.h10209
Nuvoton: Add button names BUTTON1/BUTTON210206
Define program_cycle_s for LPC55S69 & CY8CKIT_062_WIFI_BT10200
update vscode default gcc arm version to 6-2017-q1-update10196
LoRaWAN: Fixing premature RX2 closure10194
readme: remove waffle as not supported soon10190
Fixed compilation error in LWIPStack class if lwip tcp is disabled.10185
Nanostack 802.15.4 RF drivers update10184
Cellular: Increase receiving timeout for UDP echo non-blocking test10182
Workaround for ARMC6 Windows 7 assembler issue10181
DISCO_L496AG: Add PMOD and STMOD+ connector10180
Fix SPIF speed for MTB_ADV_WISE_1570 and max packet size for BC9510179
Cellular: C030_N2XX default interface10178
Nuvoton: Remove SD component from targets.json10171
Fix QSPIF Bus mode mask and quad enable write SR size10166
Travis CI: Tweak astyle to not over-exclude files10160
Crypto access control additional tests10156
MTB_STM_L475: fix UART clock10155
Remove dependency on us_ticker HAL apis for non USTICKER targets10154
Fix for LoRaWAN downlink sequence counter rollover10149
STM32H7 ADC internal channels10145
RTOS API: minor tidies10144
Atmel RF: use system wait_ns10143
STM32 ADC INTERNAL CHANNEL reset after read10142
Nanostack 802.15.4 RF drivers update10140
Cellular: fix astyle for files that already in master10138
Cellular: don’t allow ATHandler read/write if filehandle not usable10133
Adding STM32_F439 as a new MTB target10131
Add baremetal example to testing10122
mbed_error.c: fix warnings10121
Cellular: Improve ATHandler AT debug traces10120
Cellular: Fix network interface test for cellular targets10118
Selectively append changes to exported config files10115
Uhuru RAVEN: Adding platform HAL10110
Improve genenral BlockDevice tests10106
Update manifest tool to version 1.4.8 and install it from pypi10105
test_configs: generic app config for boards with Wi-Fi10102
Remove fuzzywuzzy dependency10100
Cellular: Support Cinterion EHS5-E cellular module10098
Cinterion Cellular: Setup connection profile with username and password10094
BLE: Fix ble gattserver autorization list registration10093
BLE:Fix cordio reset sequence10092
BLE:fix on_phy_update_complete function10084
Cellular: AT information response to return false on empty prefix10081
Cellular: call AT+CGEREP after sim is ready10074
Fixed issue with PWM not being freed when the object is destroyed10073
Removed PSoC6 SystemInit Workaround for ARM compiler10072
Adding variable length attributes to Maxim Feather10070
PSA more options in release tool10065
Correct post-build-hook detection logic10048
Fix for reallocation memory fail in TMPM46B10045
Uvision exporter fixes for Python 3, CPM updates, and Windows path issues10037
TCP/TLS Socket tests will skip if TCP is not supported10036
Refactor Crypto Service Proxy10030
TESTS: skip timing accuracy test on FastModels10029
Cellular: Remove compile dependency of UARTSerial10014
Update nanostack-interface error mapping10008
Fix MBED_RAM_START/MBED_RAM_SIZE symbol generation10005
cellular: remove last CELLULAR_DEVICE references10000
Adding support for SDP-K1.9998
Remove intervaltree from requirements.txt for mbed-os as it contradic9995
Fixing path comparisons in config tests on Windows9992
BLE - Use low power timing primitives9988
BLE: fix tick rate set to 10 ms9986
OdinWifiInterface is calling memcpy with a null pointer9985
GigaDevice targets can return uninitialized variable in CAN driver9980
Dead pointer usage in GenericSecurityManager9979
TEST_APPS socket_app leaks memory when cannot initialize packetSizes9972
cellular: BC95 memory leak fix9971
Correct thread status callback functionality9964
Add imports of basestring for python 39959
Refactor socket stats to reduce boiler plate9952
Fix PWM driver of RZ/A19948
BLE:Cordio:insert_descriptor check r/w properties9941
Add missing RSPIF component to the defaut BlockDevice handler9937
Cellular: removed manual registering state.9936
Fix lwip to compile if MBED_CONF_LWIP_DEBUG_ENABLED is defined9935
Increased timeout for lwip waiting netif_is_link_up9930
NUCLEO_H743ZI: Arduino A5 is mapped on ADC3_IN69925
SAML21J18A: #endif without #if in analogout_api.c9924
Update Wi-SUN network default name9921
BLE:Cordio:Fix insert characteristic not handle error9919
BLE - Report extended advertising in legacy handler9914
Remove #ifndef NO_GREENTEA from tests9905
Tests: check if recv returned too much data9904
Handle oversized packets in tcp and udp socket tests.9902
Remove assertion of MDMRST in case of SARA-R49900
DNS send returning WOULD_BLOCK forces delayed retry9896
wait_us without usticker9895
Fix for i2c_t object not being initialized to 0 causing timeout9893
ESP8266: astyle fixes9884
STM32F429 ARM MICRO startup file update9873
Corrected timeout for +UDNSRN command9872
Fix for NUCLEO_F207 UDPSOCKET_ECHOTEST_BURST_NONBLOCK fails.9837
Cellular: CGACT not supported in coming firmware in BG969814
Adding NUCLEO_WB55RG support9801
Correctly include EventQueue.h9637
Cellular: UBLOX_C030_N211 Cellular API’s9444
Usb msd testsUsing 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” command9800 Bare metal profile
Mbed OS may now be built without the RTOS by creating anmbed_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, usembed_file_handle(STDIN_FILENO)->enable_input(false)
.
9795 crypto: Update to Mbed Crypto 1.0.0d5 and then to 1.0.0d6
Previously, calls topsa_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 returningPSA_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 functionset_default_parameters
to apply NSAPI configuration options.CellularContext
is to be used instead ofCellularBase
for new extended cellular functionality, such as NonIP sockets and EPS CP optimization…Migration guidelines for application developers:
- Change
CELLULAR_DEVICE
macro toget_default_instance
- Change
OnboardCellularInterface
orEasyCellularConnection
toCellularContext
- 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 withsoft_power_on/off
andhard_power_on/off
- Move implementation from
CellularSIM
andCellularPower
toCellularInformation
andCellularDevice
- Implement
CellularDevice::init
andCellularDevice::shutdown
- Use
CellularNetwork::get_signal_quality
instead ofCellularNetwork::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 boards10193 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 isC:/MbedStudio/tools/ac6/bin
). Alternatively, you can set this same location with Mbed CLI with the commandmbed 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 theARMLMD_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 inmbedtls/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_M4G99910
Add support for LPC55S599908
Pr/cy mbed os 5.12.0Fixes and changes
9946
Fix include paths for the assembler for makefiles9932
Fix direct access to device key test for small erase/program ratio9920
Update Mbed TLS for 5.12 release to Mbed TLS development HEAD9918
Unify PSA code generators9917
Add attestation doxygen9916
Skip test on Cortex M33 devices9915
Update TF-M sources9913
Fix bug in crypto_acl test9906
Docs: fix doxygen not being generated for BLE classes9899
Regenerate mbed-spm files9898
Cellular: fix connect-disconnect sequence called many times9892
Update PSOC6 postbuild prints9891
Correct the device name for NUC472 / M453 - IAR 89888
Arm Toolchain update to Arm Compiler 6.11(ARMC6)9885
ESP8266: graceful disconnect on network state timeout9883
Free dynamic memory in Crypto Service proxy (PSA targets)9879
Lock sleep when USB is initialized9875
Fix multihoming tests9874
Add mbed_lib.json to usb folder9871
ESP8266: receive is able to handle device busy indication9867
PSOC6: Rebuild WICED libraries with IAR8 support9866
QSPI write alignment fix for nRF52x9864
BLE: Cordio host upgrade9862
Backward support PSA_ITS9861
STM32 InterruptIn protection9856
Crypto: Update Mbed Crypto to 1.0.0d79852
Docs: fix release notes link in PR template9851
Feat: add support for .obj files in memap9849
Update mbed-cloud-sdk to latest version 2.0.59845
Add spi_get_peripheral_name() to stm_spi9843
Fix Cordio gatts configuring write permission9842
Add missing license description to RZ/A1 driver9838
Nanostack release for Mbed OS 5.129836
TF-M: Fix issues found in SPM tests9835
Add define to skip greentea sync9834
Add missing copyright header to STM32 driver9833
Remove Arm Beetle target for Mbed OS 5.129831
Update mbed-cloud-sdk to latest version 2.0.49829
Fix SPM error codes9828
Update 802.15.4 RF drivers to the latest version9825
Remove unnecessary prints in FileSystemStore class9823
mbed-SPM updates9822
Return the new values for key type & size even if function fails9821
PSOC6: send HCI reset after patch RAM download9817
Apply artifact_name configuration parameter to exported projects9813
BLE: Cordio build time configuration through mbed_lib.json9812
Add wait_ns API9808
IAR 8 feature branch merge9806
Update mbed_stats.c to use __ARMCC_VERSION flag for compatibility with AC69804
Provide an option to disable writing developer certificate9802
Fix psa_system_reset() on PSA IPC platform9800
Bare-metal profile9799
Increase events.share-eventsize to 768B because of ESP8266 AT driver and asynchronous DNS9797
API to temporarily enable/disable FileHandles9796
New Wiced binaries9795
Crypto: Update to Mbed Crypto 1.0.0d5 and then to 1.0.0d69794
Refactor tcpsocket tests to use sigio and not to wait9792
NUCLEO_L073RZ Bootloader support9791
Support mbed_start_application for Cortex-M0+9790
BLE conf9786
Optimize tickless tick computation9785
Use us ticker for tickless on devs with wrapper9783
Ensure header CRC is written as unsigned int9781
PSOC6: correctly align hex files with split text sections9780
Crypto Service - keys access control TESTS9778
Add missing wifi parameters to test configs9772
Additions to TF-M source integration9768
Bring USB Feature branch into master9766
Update Toolchain Arm Micro scatter files9763
BLE: fixed initialisation order in GattServer9759
Multiple memory handling fixes9758
Allow hash or mac on large buffers with less memory use9755
Support in more types then just RSA_KEYPAIR9754
Fix SPM returning the wrong value9752
Add comment fix warning9751
Cellular: Fix ATHandler set/restore_at_timeout with mutex lock9746
Cellular: retire CellularBase class9745
Fix incorrect return value in psa_security_lifecycle_state (emul)9738
Tools: Reoder post-build hooks and bl merging9728
Cellular: Fix sigio to be released in ATHandler destructor9727
BLE API devirtualization9718
Greentea tests: user-configurable timeouts9714
Only GCC_ARM toolchain is supported, removing legacy code9710
Crypto: Remove PSA Crypto API from targets without entropy9708
Implement PSA protected storage & restructure PSA storage implementation9706
Cellular: fix onboard modems powering failure.9705
Cellular: Fix cellular stack and drivers for netsocket tests9702
Fix dependencies of platform partition9701
Refactor psa entropy inject test9698
Netsocket documentation cleanup9690
Pinmap design doc9684
enet_tasklet_disconnect() should generate event to tasklet.9681
Make a few trivial syntactic changes to better support cross-compilation9679
Default behavior of C030-R412M should be to use modem IP stack9678
FUTURE_SEQUANA_PSA: fixed deep sleep mode9677
Add MBEDTLS_ENTROPY_NV_SEED to NUCLEO_F411RE to fix the build9668
PSA Initial Attestation service9667
Linker files for LPC11U68 and LPC1549 updated9666
Use new delivery for FUTURE_SEQUANA_PSA9660
Cellular: clean sensitive information from trace9655
Cellular: Non-IP doxygen updates9653
TF-M sources integration to Mbed-OS9645
Change TESTS/netsocket/ for cellular testing9638
Crypto Service - keys access control9633
Improvement to artifact delivery method9630
Publish tests documentation for DNS, Emac, NetworkInterface and Wifi9628
Bare metal mbed_lib updates9617
SPE: Fix up atomic usage9616
nRF52 serial: Tighten/simplify atomics9605
Restore MBEDTLS_PSA_CRYPTO_C for PSA targets9600
Atomic extensions: 64-bit, bool, exchange9588
DISCO L475VG IOT01A: heap in SRAM2 region9581
SharedPtr: use atomic load9575
Crypto IPC 64 bit key ids for ITS9571
Update to 2-region model for HEAP and Stack Memory9568
Merge feature cellular refactor9566
Fix warning in Crypto when using boot seed injection9561
Tools changes for bare metal9555
Wio BG96: Modified sequence of module startup9554
Wio 3G: Modified sequence of module startup.9537
BLE: Add MTU events9530
Use atomics for double-checked locks (SingletonPtr + __cxa_guard)9529
RollUp PR Crypto with ITS9528
Second barrier for core_util_atomic_flag_clear9520
ESP8266: reduces SIGIO signaled to the upper layers9503
ESP8266: OOB handling done based on arrival of SIGIOs9493
Initialize platform in trng test9474
Fix newlines at end of files9473
ESP8266: treats reset-ready-message as OOB9469
SPI upgrade - per-peripheral mutex and GPIO-based SSEL9456
ESP8266: calls MBED_ERROR if modem’s watchdog reset gets triggered9449
Pinmap extensions9438
Use dedicated PinMap for each QSPI data line9437
FPU_USED to be set based on HW FPU support + Squash commits9424
Allows multiple network status listeners9414
Clarify asynchronous Networkinterface::connect() and disconnect() API9410
STM32F756 and STM32L486 alignment with STM32F746 and STM32L4769405
Travis: Fix doxy-spellcheck job9401
Tools: adds and implements a –custom-targets command line switch9398
Revert “Warn with ARMC6 and not v8m”9392
Documentation of TLSSocket behavior on AUTH_FAILURE9387
Multihoming initial release9386
SD default configuration for ST boards is already defined in TARGET_STM9378
Add get_connection_status() override in CellularContext9352
mbed_boot_arm_std.c: remove redundant compiler check9350
GD32_F450ZI: Support boot stack size configuration option9317
Tools: support cases where bootloader is in chunks9305
Minor Doxygen fixes for all file system classes9277
Sleep: error flags fix9248
InternetSocket: use atomics, not volatile9247
Add atomic loads and stores and barriers9245
LoRAWAN: volatile bool -> atomic_flag9231
Critical sections: remove unnecessary volatile9224
Add platform TT_M4G99219
LoRaWAN: Retiring LoRaWANBase class9188
Add more information to error url to enhance error analytics9184
Adds an NFC System Test suite9096
BLE: Enforce advertising data payload limits9092
Interrupt stack size unification + test9067
Move socket-stats-enable config to socket-stats-enabled8972
Merge feature-posix branch (FileHandle::truncate)8961
ThisThread get_name()8887
Adding debugger awarness with Keil MDK8757
Update Cmsis-pack-manager to 0.2.38749
Cellular: AT handler API8739
L3IP Interface Implementation8497
Add get/settimeofday retargets7799
Removing feature names from the “allowed feature” config list.10077
Create green-tea init for attestation test10046
PSA: release.py bugfix - send the correct parameter to _get_target_info()10042
BLE: fix conflicting include by qualifying cordio pal includes10041
Fix include in psa compliance tests to mbedtls config file10038
PSA: release.py updates to fixes situation where the script would get stuck10033
Port spi_get_peripheral_name fix to some Freescale boards10031
Add new mbed-os-example-attestation example10027
TF-M patch: Handle extended stack frame in tfm_svcall_psa_call10026
Add needed crypto macros to secure side10025
PSA: PSoC 6 Correct TRNG behaviour10023
Fix crypto compliance tests10012
Generate BLE Static Random Address on U-blox Odin-W2 platform10011
Removed cymetadata section from FUTURE_SEQUANA targets10010
Update PSA tools10002
Disable PSA in baremetal profiles10001
PSA: release.py - add build profile9997
Platform reset API rename9996
PSA: Fix error codes masking in psa_attestation_inject_key()9990
Sync PSA compliance test to latest version9989
Test for and Recompute sector information for all targets9982
Nanostack update for Mbed OS 5.129978
PSA: Fix psa/release.py tool9977
NUCLEO_L073RZ: IAR linker script issue9976
PSA: Remove unused type which was conflicting wiith errno.h9973
TF-M config: Add max_ns_thread_count parameter9963
PSA tools docs9957
Fix issues found in LPC55S69 integration9956
Add attestation doxygen9953
PSA: automatic mocking of PSA targets in test builds9940
Reduce flash page size from 512 to 32 bytes in PSOC6 based boards9939
Fix for secure partition9931
Reduce number of threads in block device test9928
Secure binaries release script9911
Add TF-M flags to doxygen9910
Add support for LPC55S599908
Pr/cy mbed os 5.12.09907
BLE: Fix cordio configuration9894
PSA tools: Find secure image at post-build9312
PSA compliance tests suite10113
Use secure/non-secure rom for bl modes10108
Fix functionality for FlashIAPBD & SlicingBD10101
LPC55S69_S: reduce ITS size to 32KB10089
Make the presence of cmsis-pack-manager package optional10088
Temporary disable Crypto HW accelerator on UBLOX_EVK_ODIN_W210086
Add bootloader support for the LPC55S69 board10068
LPC55S69: Add IAR and uvision exporter support10055
Add bootloader support for Cypress PSA boards10047
Reduce 32KB from LPC55S69_S binary size10044
Correct check for the ARM toolchain binary in the PATH.10034
PSA: PSoc 6 configurable secure memory size9994
Correct FPU settings traceback found by IAR10199
Fix the removal of Mbed-added core flags in uvision exporter10193
Fallback to ARMC5 when ARMC6 is not configured10188
Configure sector information intargets.json
10187
Fall back to configuration information when CPM reports no memories10186
Remove cypress boards from CMSIS pack manager10173
Collect excluded libraries into ignored_dirs10172
Cellular: Fix plmn trace for IAR10164
TLS: Update Mbed TLS to 2.17.010157
Deduplicate IAR MBED_ROM__xxxx defines10152
Crypto: Update Mbed Crypto to 1.0.010114
Allow the use of Mbed Studio’s version of ARMC69965
Fix undefined tr_debug for QUECTEL_BG96 cellular featureUsing 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 target9777
Adding STM32_L475 as a new MTB targetFixes and Changes
9798
STM32 LPTICKER (LPTIM): correct init execution after bootloader9782
Adding RHOMBIO_L476DMW1K as a new Board target9777
Adding STM32_L475 as a new MTB target9776
adv builder helper now returns an object9775
PSOC6: fix port_write API9774
license: use .md extension9767
Remove ITM from NRF52_DK and DELTA_DFBM_NQ620 targets9765
Add config header to assembly compilation9762
PSOC6: update the psoc6pdl and HAL to the latest version9756
PSOC6: enable export to CMake9753
Update Nanostack_HAL licenses and copyright year9748
BLE:Cordio: ATTS setting for write cback should use bitwise or9742
tools: export: MCUXpresso: fix case inconsistencies in .templ file names9741
ESP8266: connect() returns OK in non-blocking calls9740
Remove pyocd requirement and update icetea.9736
tools/test/cmsis: add license header9730
Greentea: Remove TLSSocket_simultaneous test9724
tools/utils: ensure default build profiles are processed first9722
Add flash sum check9715
Add .inc as a header file type.9713
Add release notes section to PR template9709
Reverting to original doxy configuration9696
features: nanostack: fix warning in thread_extension.h9694
nanostack: icmpv6: fix build warning9693
platform: fix build warning in mbed_error9692
target: UBLOX: Fix build warning in UBLOX_AT_CellularNetwork.cpp9691
btle: fix build warning about unused clockConfiguration9686
Greentea tests: set correct port to test against google.com9685
Fix sleep tracing not finding matching driver during unlock.9680
FUTURE_SEQUANA: Fixed Arduino signal mappings9673
Fix Py3.7 mdot target build9670
Add units to timeout argument in EventFlags9658
REALTEK_RTL8195AM binary timestamp9657
Revert “MIMXRT1050_EVK: Add IAR support in the exporter”9656
M2351: Fix crypto AC management9654
Update mbed-coap to version 4.7.49652
Fix minor bugs in secure targets file filtering9651
FUTURE_SEQUANA_M0_PSA - fix CM4 starting address9650
Multi thread Block Device Tests Fix - Ensure unique block address9649
Fix IntelliSense in VSCode export9647
FUTURE_SEQUANA: SPI HAL fixes9639
ESP8266: connect() checks errors from ESP chip9636
Fix compiler warnings9635
Do not provide a default Pelion host address.9613
K64/ARM: Update to 2-region model for HEAP and Stack Memory9602
STM32 GPIO: use maximum speed9601
LoRaWAN: Proper size checks for link ADR cmds & correct include path in Unittests framework9587
targets: QUECTEL: Fix build warning9584
TLSSocket send/recv return WOULD_BLOCK error instead of NO_CONNECTION9582
Greentea Socket test improvements9570
tests-netsocket-udp: UDPSOCKET_ECHOTEST_NONBLOCK fixes9532
Mutex-protect mbedtls_hardware_poll9514
BG96 netsocket tests9502
readme: add list of licenses - not Apache 2.09501
Add WIFI support for RDA target UNO_91H9372
BLE - Nordic: Release crypto cell when not in use.9326
Doxygen correction9307
Configuration options for STM_EMAC buffer countsUsing 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 TMPM46B9625
Fix cortex-m33 armlink error9619
Correct the dsp flag from no_dsp to nodsp9615
FUTURE_SEQUANA: Remove special “tags” from M0 hex images9614
Fix cortex-m33-S gcc compilation error9606
Correct typo no_dsp - nodsp9596
Implement Linker command/response files in make export9595
Define USBTX and USBRX for targets without them9594
Remove SERIAL_FC on devices which don’t support it9593
Standardize Arduino form factor9589
Improve error message for exports for OS2-only targets9585
PSOC6: M0 core binary image for BLE controller updated to version 1.059583
STM32F2: Enable TRNG9580
Fix SharedPtr::reset9579
FHSS timer: Use singleton pointer9572
Use an ip4- and ip6-compliant site to test TLS certificate error reporting9562
LPC546XX, MIMXRT1050: Update to fix ARMC6 build failures9560
Reset internal vref buffer after an ADC conversion9557
[Wio BG96] Modified pin map9556
[Wio 3G] Modified pin map9553
STM32: Enable SERIAL_FC for all9552
STM32H7: Enable OS2 compilation9551
Modify general blockdevice tests to run all storage components9550
Prevent double attempt to connect mesh api9549
BLE: fix missing scan timeout for 4.2 controllers using new API9546
Mesh api fixes9534
STM32 Serial Flow Control9533
Cellular: Remove makefile and mbedignore refering to obsolete cellula9531
Remove COMPONENT_FLASHIAP tests9527
Remove yotta references within testing frameworks9526
Remove yotta and minar references in NCS365109522
Update all mbed test packages9521
Py3 fixes and Travis CI enablement9515
tests-netsocket-udp UDPSOCKET_SENDTO_INVALID allow unsupported empty UDP packet9509
PSOC6.py: generate hex files with 16 bytes per row9500
TCPSocket.cpp setting socket should terminate with semicolon9499
Remove unused yotta module metadata9498
Remove outdated text and fix spelling in README.md9497
Remove yotta from README.md9496
MIMXRT1050_EVK: Add IAR support in the exporter9487
Add sd-driver example9485
UBLOX_C030: Fix modem reset functionality9483
Fix for Issue #7308 (Deep_sleep_lock Ticker.h Issue)9482
ARCH_PRO: add missing SPI pin definitions9480
Refactor core optional parameters (FPU + DSP + Security extensions)9478
Refactor storage components9475
FlashIAP Block device: Assert if default constructor is used without setting config parameters9471
lwipstack: mem-size set to the to minimal working size with DTLS9466
Improve PSoC 6 post-build hooks, whitelist makefile export9445
NVStore: fix area calculation function9431
Update IAR Armv8M changes9430
LPC546XX, MIMXRT1050: Update to fix ARMC6 build failures9429
Fix TCPSOCKET_ENDPOINT_CLOSE: Cannot accept WOULD_BLOCK9394
STM32: PeripheralPins files update from lastest CubeMX tool version9393
BLE: Fix SafeEnum type safety9388
Fix for ARMc6 compiler errors9342
Add support for debug and program launch configurations9328
Doxygen fixes for IP networking area9283
Add TLSSocket greentea tests.9236
COMPONENT_SD tests update for small RAM targets9021
tools: check that part size is not exceeding region sizeUsing 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-R412MFixes and Changes
9548
FlashIAP driver: Add retries to erase and program operations.9547
mbed_die: Use wait_us not wait_ms9544
Halt to enforce reboot limit once only9532
Mutex-protect mbedtls_hardware_poll9492
Travis CI: Fix for license check job9488
Fix licenses in travis test and realtek lib9484
Start Component SD test by formatting SD Card9462
Corrected the targets value in json file as CI uses real board names9453
mbed-host-tests minimum requirement set9452
Crypto platform renaming9448
Fix links to https://os.mbed.com documentation9440
Put LittleFS emulated BD module under .mbedignore9439
Examples: enabled some examples build for FVP_MPS2_M3 target9433
Set DSP and floating point flags for ASM files9428
STM32H743ZI: iar removal as not supported in v7.x9427
BLE: fix possible truncation9422
PB_1 is not connected to D4 in R412M above9421
ESP8266: implements possibility to decide between non-blocking/blocking connect.9418
tools: build_api: remove redundant initialization and fix spelling9417
Netsocket DNS test: increase timeout value9416
RTOS: SysTimer: Fix test timing issues9415
Allow NSAPI_ERROR_UNSUPPORTED from Socket::setsockopt()9411
STM32L496xG: increase IAR heap size9408
SPIF - Fix command to unlock Global Block-Protection register9407
DirectAccess DeviceKey: add support for default storage type9406
Extended mount to check all metadata-pairs9404
DSP_PRESENT flag is needed for Armv8m devices having DSP enabled9403
Clarify addition to CONFIGURATION.md9399
BLE: fix missing null checks on Gap event handler9397
Fixing folder path for KVStore FILESYSTEM configuration.9389
Travis CI: Bind remaining python modules9385
Fixes typos in SMSC9220 Ethernet driver9380
UNO_91H: open hal lib source9377
test: general_block_device fix to always erase prior the first program9376
TCP/UDP greentea tests refactoring and cleanup9374
Add QSPIF as default storage for LPCXpresso546XX9368
PSOC6: Fixes for serial hal driver, asynchronous mode.9366
ESP8266: add an error check for data overflow from modem side9365
Fix for asserion failing in BLE::callDispatcher with gcc debug profile.9363
Remove unnecessary error prints in FileSystemStore9361
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 libraries9357
NUCLEO_H743ZI : enable TICKLESS9356
ESP8266 - fixes disconnect to check the state from modem9354
STM32H7 : add CAN support9347
stm32: Improve the CRC function to support fully accumulate9339
Fix Out-Of-Band (OOB) data generation for BLE OOB pairing9337
unittest: remove cellular driver L3IP stub9335
thread_mle_message_handler: fix build warning9333
Minor Doxygen fixes for BufferedBlockDevice and iBeacon9331
ESP8266: prevent WOULD BLOCK from TX if UDP9318
fix bug for RDA UNO_91Hcalling us ticker functions without init.9316
Add FLASH support to TARGET_MAX32620C and brd targets9302
Add TRNG checkup in devicekey9297
uARM targets now build in correct ARM_MICRO directory9296
Remove printf completely and fix the optimization check9291
NRF5x: QSPI SFDP read, min read/write implementation9288
Gemalto Crinterion UDP test adjustments9286
travis: Add include_check job9280
Sleep manager implements all the API’s in platform file9258
FLASH test: skip test if test region overlaps code9257
FLASHIAP test: skip test if test region overlaps code9223
Update PSA binaries importer for FUTURE_SEQUANA_PSA8970
Add doxygen spellcheck job to Travis6622
Add nanostack support for KW41ZUsing 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 platform9203
Add GD32_E103VB as new target9232
Add GD32_F450ZI as new targetFixes and Changes
9391
Add pyocd depencency to resolve Travis CI issue9384
MBRBlockDevice: When partitioning, clear the rest of first erase unit9371
travis: set hypothesis to v3.889362
Fix the general block device for better support of low memory boards9355
Parameterise the repo used in the Mbed TLS importer script9346
Travis CI: Corrected astyle job behavior with non-master base branch PRs9341
Flush ESP8266 serial input buffers after HW reset9334
Doxygen fixes in block devices9332
Update and cleanup BLE.h doxygen9330
Doxygen update for LoRaRadio class9329
SDBlockDevice docs update9327
STM32: replace missing #ifdef DEVICE_xxx9324
Avoid building mbed_tz_context.c for TF-M targets9323
STM32: astyle check9321
STM32 : typo error in QSPI9319
tools/importer script changes9315
LPC546XX: Do not make MCU_LPC546XX target public9313
STM32L476VG: fix wrong pin map function on ADC channels9311
Edit README.md9310
SPIFBlockDevice docs update9309
ESP8266 - fix send buffer exhaustion handling9295
Add missing END to Armv8M IAR assembly files9293
Updated pyyaml due to possible vulnerability9290
ESP8266: Set HW reset time to 2ms9289
travis: add keys for ubuntu - workaround9284
ESP8266: Fixes AT-layer socket_open-functions9278
DeviceKey: [Security Fix] Generated ROT-key is still used when TRNG fails9274
UNO_91H: fix MPU compilation issue9271
Correcting the error-case trace from mesh-api interfaces9269
SDT64B: Add TARGET_SDT64B, a bootloader file on SDT64B9268
Calculate FlashIAPBlockDevice start address and size automatically for test only9267
Fix travis astyle usage of .astyleignore9264
reduce info traces to debug level to prevent logs overflow9260
Use mbed_error_printf instead of debug for ISR friendly prints9256
STM32L0 & STM32L1: FLASH is EEPROM9252
STM32L4 ADC : power optimisation for VBAT channel9251
LoRaWAN: Randomizing backoff for Join process9250
Fix Python 3 syntax in rtc host test9249
add bootloader support to the DISCO_F469NI9246
STM32L0 TEMPERATURE ADC CHANNEL minor update9244
Kvstore tests api change to run on K64F only9241
TDBStore: fix bug in sector blank check for variant sized sectors9239
Increases events.shared-stacksize to 2K9237
Refactoring and fixing some issues in KVStore configuration.9234
nanostack-mac-tester sync with v1.0.19233
FastModel: update platform header, removed unwanted smsc9220 device9229
hal-qspi_test: move frequency setting before flash init9227
[SDT64B] changed UART0 to UART2, added UART_5 on SDT64B9220
BLE: NRF52 returns used tx/rx phy on phy update callback9218
Change to mbedtls_platform_zeroize()9215
Direct access to device key9210
mbed.h includes removed9209
More static place for astyle9202
Realtek-RTL8195AM-Hide_Debugging_Messages9200
TDBStore: Perform garbage collection on failed writes9198
Fixing bug - overwrite of default configuration values for RBP start address and size fails9197
Nuvoton: Fix UART flow control CTS/RTS9195
Enable PSA APIs on Pelion boards9191
Nuvoton: Fix crypto compile error with Mbed OS 29187
Resolves build failures with IAR 8.x9186
Fix ticker_read_us() race condition.9183
Allow LwIP TCP retransmissions to be configured and tune those smaller.9182
Disable MPU support on NRF52x platforms9175
Greentea tests ignore bind returning UNSUPPORTED9173
Prevent ESP8266 stopping HW control on init9167
Modify IRQ handler processing when unusing RTOS at Cortex-A9163
Don’t use define checks on DEVICE_FOO macros (partner code)9154
ARMC6: Use float-abi=hard9152
Cellular: fix state machine to check network attach9135
Get type for BlockDevice9128
Fix SPM HAL test9114
Simplified astyle travis test to be easier to reason about9066
Equeue chaining bug fixes9058
BLE: suppress scan timeout if we disabled scanningUsing 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 socketContents
Ports for Upcoming Targets
8725
Add support for GD32F307VG8815
Add platform TT_M3HQ8831
[Seeed Arch MAX] Add Mbed OS 5 support8860
Add the port for the ACONNO ACN52832 module on MTB’s form factor9008
Add NUCLEO_L4R5ZI_P target9053
Rapid-IoT: Add support for the KW41Z side of the platformFixes and Changes
9180
Revert “STM32 RTC : skip rtc_write if possible”9174
MTB_ODIN_v2_fixes9171
Nuvoton: Fix NUC472 hard fault in SMCC tests9168
Fix to unit test losing process output due to timing issue9166
Ublox C030 ADC internal channels added9164
Disable printf in crash reporting for release builds9159
Drop MBED_EXTENTED_TESTS flagging from network tests.9158
Fix LTO build failures due to duplicate local types9157
PSOC6: Updated default M0 image to not modify UDB configuration when9155
PSOC6: Fixing merge issue for pull request #90099151
github: add reviewers to the PR template9150
Check correct ARMC6 predefine for FP codegen9148
Fix FLASHIAP_ROM_END macro for GCC_ARM & IAR toolchains9144
EventQueue: Old pointers of sibling were not cleared9143
Fix BLE long write execution failure9134
STM32: enable TICKLESS9131
Add versioning limits tointervaltree
module9130
Fix ESP8266 “Link Type” errors after reset9129
DNS tests: improve debug messages9127
WIFI test: improve debug messages9126
Fix multiple definitions of ‘__aeabi_atexit’9122
Update the CC310 IAR libraries9109
Rework fseek/ftell tests9107
Fixing execution of OS2 tests9105
Add some rounding to determine the pulse value for PWM for the STM target9102
Nuvoton: Support boot stack size configuration option9101
Cellular: Fix to use PPP stack in PPP mode9100
Align prototype & implementation of enet_tasklet_disconnect & friends9097
Update to add support for Cortex-M33FD9089
STM32 QSPI update9087
kvstore tests: reduce reset9085
U-blox C030 PinNames Updated9084
Realtek-rtl8195am-Network_Socket_Updates9081
Nuvoton: Fix crypto AC management9079
Add socket stat logging state change update9073
W7500x target ADC 6 and 7 not implemented9063
mbed_fault_handler: fix build warning9061
More MPU work9060
Fix duplicate ‘overrides’ keys in targets.json config file9057
Prefer QSPI Bus mode 1-4-4 as highest priority for QSPIFBlockDevice9055
travis: use https for fetching astyle package9054
Fix max_keys reset limitation9052
Cellular: Rewrite AT handler consume to tag9049
Fix test-netsocket-tcp greentea test build fails.9047
travis: add license9045
Fix wrong PIN config for RTL8195AM platform9043
Removed rabbitmq fix from travis.yml9037
BLE: Update toolchain.h with mbed_toolchain.h9035
STM32L4: correct RNG clock source9034
Change enet_tasklet declarations to match code9033
Fix Stream for IAR toolchain9009
[PSOC6]: Fix for static resource manager.9001
Missing socket greentea tests implementation8995
Add core option for Cortex-M33 with DSP enabled8993
Apply GitHub style to exporter matrix8990
Adjust FAT FS tests to low memory boards8980
memap.py: Cope with IAR 8 linker map8978
fixed wrong __StackTop calculation8975
Initialize the interface at the construction8965
Coverity fixes.8964
Correct behavior of PSA code generator8960
STM32: avoid STM32 family name check8957
Fix incorrect #ifdefs on DEVICE_FOO macros8956
Update Ticker wrapper to handle early interrupts8955
Bug fix for UART issue on LPC54608 - issue #73988951
Remove NVSTORE enabled from NUCLEO_F410RB8949
TARGET_WICED updated.8947
ONME-4007: Fix mbed_lib link from ESP8266 Readme.md8936
Reduce default MBEDTLS_MPI_MAX_SIZE8934
Setting K64F to use KVStore FileSystem configuration8933
Fixing Doxygen descriptions8916
STM32F429/STM32F439 alignment8911
Fix ESP8266 recv_udp timeout with flow control8910
Fix rare NRF52 serial TX lockup8900
Nuvoton: Refine UART init/deinit8899
Renesas : Add the setting of SD as components8888
Align comment block in sys stats struct8884
BLE: Fix iteration on connections in CordioGattServer.8883
LPC546XX: Fix build failure due to incorrect merge8882
Update mbed-coap to version 4.7.38879
Ble extended advertising doc fixes8872
MCUXpresso: Ensure the RTC OSC is running at bootup on Kinetis platforms8867
STM32L4: fix trng clock setting8866
Cellular: Refactored GEMALTO_CINTERION_Module to GEMALTO_CINTERION8861
Bugfix-tests-network-wifi drop the assumption about more than one SSID8855
Fix compilation warnings (apart from nanostack)8854
SMCC FOTA: bin name change8852
Cellular: update doxygen and add attach CellularDevice.8844
STM32 : Remove html release notes files8843
Fix C++11 build with Arm Compiler 68835
Moving some examples testing from K64F to K66F8832
nRF52840_DK: “qspi_api.c” check read/write WORD alignment, set clock frequency divider8828
Nuvoton: Support DAC HAL8827
TARGET_MCUXpresso_MCUS: fix lp ticker init function8822
LoRaWAN: Mitigating reception issues at lower data rates & FCnt increment after retry exhaustion8819
Improve the unit testing documentation8817
Correct network status callbacks with ethernet and nanostack8802
Fix long writes/reads stack overflowing8798
STM32 : Add default deep sleep latency of 3ms8797
Fix issues in Cryptocell 310 cc_internal discovered by On Target Testing8796
nanostack-mac-tester sync with v1.0.08795
cellular: registration status change fix8779
Migrate old memap file handling into toolchains8777
STM32 LPTICKER with RTC : better sleep time8771
STM32 LPTICKER with LPTIM optimisation8728
Fix issues in Cryptocell 310 shax_alt discovered by On Target Testing8690
drivers/hal/platform/rtos: add SPDX identifier8655
Disable write buffer in debug builds (M3/M4)8097
Add support for nrf52_dk bootloaderUsing 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 inmbedtls/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.json8897
Add TLS Sockets example to examples.json8896
Update Statistics examples in example test json8895
Add crash-reporting example to examples.json8876
Add support for Cordio to NRF52 Devices8871
MPU API (Reopened)8863
Adding KVStore Examples for Global API8859
Import Mbed TLS v2.15.0 with Mbed Crypto8851
Change error code from NSAPI_ERROR_PARAMETER to NSAPI_ERROR_NO_CONNEC8850
DISCO_F746NG: add bootloader support8849
Correct detect_code for TMPM4G98847
Cellular: Fix bc95 to accept only RAT_NB18840
Fix build of library archive with Arm Compiler 68839
S2-LP: Cleaned thread deprecation warnings8837
Update mbed-coap to version 4.7.28836
Clarify asynchronous NetworkInterface::connect() documentation8826
Revert “Merge pull request #8272 from NXPmicro/Ensure_RTC_OSC_Start”8824
NUCLEO_F030/F070: remove ADC_VBAT pin definition8823
DISCO_L072CZ: remove ADC_VBAT pin definition8821
Cellular: add radio access technology as configurable in json8820
travis: fix coding style for remaining 2 files8814
Cellular: unified return value comments on API folder.8804
PSA Crypto SPM8803
Compatibilize ArmC6 with ArmC5-built archives8794
Deprecate TCP/UDPSocket open-calling constructors8790
Cellular: Fix ATHandler URC processing8787
[Wio 3G] Adding IAR exporting definition8784
NRF52 serial fixes8782
Fix traceback when running mbed test8778
STM32 LPTICKER with LPTIM : reduce clock feature8772
Cellular: more gracefully disconnect.8767
Cellular: Update cellular debug prints8766
Fix cellular backward compatibility8764
ONME-3983 Fix the defects found in IPV4 testing against packet dropping8761
Add MBED_ALL_STATS_ENABLED to config system8756
Adding Murata WSM-BL241 as new target8751
Cellular: minor fix to CellularDevice and adding updating unit tests after refactoring8750
realtek-rtl8195am-wifi-headerfile-updates8744
PSA Secure partition manager and services8743
Add design document for network statistics.8740
Add block device test for small data sizes8738
Ble extended advertising8737
Add low power implementations for CM3DS8735
Compliance test errors fixed8734
Patch whitespace inconsistencies in platform lib file8730
Add a new PSA Internal Trusted Storage APIs8719
M2351 RAM / ROM defines updated8718
NFC Eeprom erase command fails8717
Format targets.json to put the items of large lists on their own line8711
Fix astyle errors (clears all remaining styling issues)8708
[Wio BG96] Adding platform HAL8704
Fix issues in Cryptocell 310 ccm_alt discovered by On Target Testing8703
Improve the efficiency of BufferedBlockDevice8702
Crash Reporting implementation8701
[Wio 3G] Added default I/F type and pin defs8689
Add ESP8266 driver v1.78687
TLSSocketWrapper: decouple error requirements8685
Clean up deprecated feature code8683
Feature qspi lpc546xx8680
Add PSA build components to build configuration for non-PSA targets8673
Add Mbed Configuration Option Range Limits8671
Feature: Add non-blocking serial break/unbreak functions8670
Remove protected member functions and protected attributes from rendering8668
Enable Fast Models emac drivers8667
KVStore & derived classes: design docs, implementation & configuration8662
KW41Z: Add Bootloader support8659
Implement DTLSSocket and fix non-blocking connections on TLSSocket8657
Icetea tests - update socket command client8651
Implement Socket::getpeername() API8647
Nanostack release for Mbed OS 5.118646
Add a Unity macro to assert on platform error code difference8643
Modify HW accelerator drivers to new error code8639
Add get_erase_value() support8621
Add missing include for TLSSocket8617
Typo fixes in Doxygen for Platform8613
Make sure that TLSSocketWrapper::close() is called before the transport is destroyed.8612
Add names to system thread8607
Fetch ram/rom start/size8602
Sync 802.15.4 RF drivers8601
Add format checking to printf-type APIs8600
Wi-SUN interface implementation.8592
Network Socket Statistics8591
features: fix coding style8590
Export: Remove DS-58589
Support erase value in Flash HAL drivers, FlashIAP and block devices8584
system_reset is MBED_NORETURN8579
Major refactoring: changing Network inheritance from CellularNetwork to new class CellularContext8573
Compile time config flag MBED_CONF_SD_CRC_ENABLED for CRC in SD8569
CellularConnectionFSM unchain queue when stopped8563
Add QSPIF block device to default system storage8561
Design document for Crash Reporting feature in MbedOS8560
Fix typos in Features/Netsocket8550
Add required namespace instead of relying on mbed.h8530
Docs: Mail docs fixed8488
Rewrite CThunk so it does not execute from ram8487
Update mbed_mem_tracing config option8478
Fhss timer dev8465
Flag certificate verification functions with MBEDTLS_X509_CRT_PARSE_C.8441
More mbed_error refinements8440
Cellular: Gemalto TCP Socket support8417
I2c doc update8401
At handler fixes8365
Fix astyle for tests folders8354
SingletonPtr: const and alignment8352
QSPI SFDP Flash Block Device8342
Icetea missing test doc8332
Refactoring fault handler implementation8331
Stream: add necessary flushes, removing unneeded IAR workaround8329
Platform: fix missing namespace for SharedPtr8328
Error path tightening: use MBED_NORETURN; add+use core_util_atomic_flag8313
Reduce cellular memory footprint8311
Implement TLSSocket8295
Cellular: Update Cinterion AT drivers8291
*LPC546XX: Finish MCU Refactoring8266
Realtek-rtl8195am: Add MCU_ target8255
Change behaviour of mbed_asert to use mbed_error instead of mbed_die8245
Nanostack libservice update8223
Improve RTOS behavior with deep sleep8190
MIMXRT1050EVK: Add ENET support8189
Wait API updated to remove deepsleep lock8180
Cellular: Quectel BG96 TCP socket support8176
CellularDevice_stub added8148
Cellular: Quectel BC95 TCP socket support8114
Registration parameters as struct8109
Add reset recovery for I2C bus8076
Error output improvements8050
Cellular: Fix Greentea tests for UBLOX_C0278039
Add framework for configuring boot stack size8019
Cellular: fixed crash when closing CellularNetwork via CellularDevice.8003
Leverage the simplification of the IPv6 parsing primitive8001
Add * operator to SingletonPtr7980
Clean up rtos::Thread deprecation warnings7979
Using SPI_ macros from PinNames in SPIF and SD config files.7969
Cellular: CellularDevice:get_default_instance() implemented7955
Add SPI_FREQ parameter to DATAFLASH block device configuration7948
Add enable/disable cb function in mem_trace7864
Add required header file and namespace element instead add all.7760
Give an option to remove ‘using namespace’7304
Add MTS dragonfly, MTS dragonfly l4718953
Update FEATURE_BLE README8952
Turn off MPU for PSOC 68946
STM32L4: before calling HAL_CRYP_DeInit initialize the Instance member8944
Travis fix: rabbitmq key update (travis msg broker)8932
Fix target handling in build.py8926
mbedtls: Update Mbed TLS to 2.15.18925
Fix PSA storage typo8922
MTB_ADV_WISE_1570: disable MPU code until target properly supported8920
MODULE_UBLOX_ODIN_W2: disable MPU code until target properly supported8908
Fix PSA internal storage configuration8904
Ble extended advertising fixes8873
PSA-SPM documentation follow-up9051
ESP8266 send returns WOULD_BLOCK error when busy9040
Add a platform config to disable the MPU9030
Reduce ROM impact of MPU code9025
Mbed os 5.11.0 oob: fix fault exception issue9020
Revert “Turn off MPU on targets failing OOB”9005
Mbed TLS: Fix ECC hardware double initialization9003
Revert “Merge pull request #8922 from juhoeskeli/wise_1570_mpu_disable”8998
Ble extended advertising fixes8996
Fix uninitialized handler pointer in FastModels ethernet driver8994
Turn off MPU on targets failing OOB8987
Fix a few SecureStore issues (following preliminary security review)8986
Fix a few bugs in TDBStore and KV config8982
Ensure macros and parameters with the same name are not repeated.8981
Cordio Nordic memory optimizations8959
[ESP8266] Adds support for controlling HW reset of the modem from the8935
Fix PSA crypto partition and tests8905
SPI and deep sleep fixes for FUTURE_SEQUANA target.8890
ESP8266 disconnect returns ERROR_NO_CONNECTION8889
Add PSA code generation check in travis8875
Add dependency checks to components8853
Reports NSAPI_STATUS_CONNECTING when trying to reconnect8841
Bugfix restrict send size; namespace fixes; ATCmdParser::read return value fix8754
Mbed Crypto Tests8745
Add new target future sequana PSA9072
Enable stats reporting with a flag in targets.json9036
Disable MPU on RT1050 due to memory mapUsing 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 TMPM3HQ7309
New target UNO_91H from RDA Microelectronics.Fixes and Changes
8524
Add more generic BlockDevice tests.8605
Make examples commands return a failure8606
Fix off-by-one-error in BusIn/Out8604
Increase EMAC test timeout to 1400 seconds8603
Doxy fix on netsocket docs8623
Fix typos in RTOS doxygen.8622
Fix typos in Events doxygen8435
Kernel.h doxygen update8449
TOOLS : Add missing M33 and M33F in python scripts8587
Remove extra _deselect to prevent possible hard fault8640
Fix compile warning about initializing and variable order8642
nanostack: fix memory leak8641
Fix licensing8653
mbed_lib.json updated for other all C030 targets and code corrected t8645
Detect xinetd service pattern and generate correct pattern (ONME-3733)7849
Low power timer needs to be reset when setting time8444
Add EMAC driver for CM3DS8551
Increase background stack size to fix overflows8528
MCUXpresso: Update LPC Flash driver program page function8648
Fixed bugs in Fast Model MPS2 GCC startup scripts8654
InternetSocket: Fixed missing unlock before return8660
Online: Include project root path8677
Sync mbed-client-cli files with v0.4.08684
Update peripheral pins8595
Put quotes around include path options8681
STM32F407VG: Add FLASH support8679
STM32 GPIO : code cleaning8692
fix a bug in the FVP platform where flash API page size was wrong8699
Revert flash_get_value for M2351 done in PR#85898696
Resources: Avoid assuming that deps have a sane name8697
Resources: Use path names for ignored dirs8712
ONME-3852 Check that test cases disconnect at the end8729
Adding arch option instead MCPU for no dsp and no fpu support8727
LoRaWANTimer UT fixedUsing 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 sequanaFixes and Changes
6293
Reduce .text footprint of the network stack8409
Fix doxygen comments and spelling errors8046
NRF52 serial: Fix UART console RX8339
Unit testing: update unit testing documentation for Mac OS8412
PwmOut.h: Documentation improvements only8413
Fix doxygen for Serial and RawSerial8462
Move inline code snippets to code blocks8464
EventQueue documentation fix.8303
Tools: Use logical paths in ignored_dirs8249
Tools: Restrict toolchains reported by mbed compile -S to official ones8250
Tools: Don’t traceback on missing linker script8348
Add K66F default sd storage8377
Fix for issue #83688482
[tests-mbedtls-multi] Fix typo in the printf (no functional change)8484
Component SD test: skip multiple thread test depending on RAM8486
LPC54608: Raise the core freq on LPC54608 targets8483
BLE: write size first when writing an eeprom message8350
Cellular: Fix for AT handler consume to tag8476
mbedgt-network-wifi WIFI CONNECT TC - check that SSID is cached8493
STM32 RTC : Prescaler macro issue8495
Adding file type for linker script arg in make script8489
Clean up UARTSerial.cpp includes.8369
Cellular: UBLOX_C030_R410M cellular target add7966
nrf52-ble: fix total links count8485
Feature qspi kinetis8430
Block device general tests8474
NRF52 : Fix UART RTS initialization8505
Continue Socket and WiFi tests even on test failure.8515
Merge duplicate keys in JSON.8503
mbed_rtc_time.h - documentation fix8506
Docs: fix I2CSlave documentation8504
Span doc8510
Doc: SPI slave doxygen cleanup8514
EventFlags docs update8512
Explain default port number, and construction8319
Checksum the vector table of the LPC546XX7864
Add required header file and namespace element instead add all.8244
storage: fix component coding style8346
storage: fix valid partion check with windows formatted sd card8526
Fix for unit test build on Windows machines8279
Fix LowPowerTickerWrapper operation when suspended8292
Fix hardware flow control on NRF52 series8259
Update the Mbed TLS README8509
Non copyable doc8521
MbedCRC docs update8516
Doc: spi documentation fixes8511
Update documentation for the ConditionVariable API8529
Doxygen: Move free standing HAL tests module inside their HAL module8534
Docs: InternetSocket doxygen fixes8539
Docs: UDPSocket doxygen cleanup8537
Doxygen: Hide friend declarations in dox.8536
PlatformMutex docs update8549
contributing: simplify it via a link to our docs8546
Add warning about deviating from the template format8452
ble: update ODIN drivers to v3.5.0 RC18554
NUCLEO_L4R5ZI: Fix alignment of execute region to 8byte boundary8562
build_api: remove unused import8556
BLE: fix using an optional feature before checking for support8499
Socket closing improvements and tests adjustments8559
STM32F407VG: Add TRNG support8461
api->API8572
Move #endif to fix PwmOut.h doxygen8371
Cellular: Add unsupported features for UBLOX targets8566
Wifi: ublox fix to keep the credentials stored8564
Drivers: fix typos in doxygen8580
Fix the incorrect comment for set_blocking()8593
Build and run latest released doxygen in Travis CI8598
ATCmdParser: Fix OOB handling performance-wise8585
Phy drivers: Added S2-LP driver8599
DISCO_F769NI: Add bootloader support8588
Fix Ice Tea test execution order to be sorted by names.8542
Update python module versions in requirements.txt8577
Fix Makefile export with Python 38538
Rework make.py CLI to avoid treating apps as tests8616
Updated and pinned version for requests8624
Fix missing doxygen pages8611
Unittest fixes8553
STM32F413ZH: Add bootloader support8541
Docs: netsocket group doxygen fixes8540
Update documentation for the Queue API8508
Update linker scripts for bootloader target L496GZUsing 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 TMPM4G98307
Add support for RapidIoT8454
Adding Laird BL654 as a new MTB targetFixes and Changes
7890
Circular buffer should use conditional statement instead of modulo7934
corrected a typo in AT_CellularPower::opt_power_save_mode7953
Fix is_valid_erase function to use get_erase_size with address7896
Fix pin names of MIMXRT1050 I2C pins7914
Remove references to “mBed”7957
nRF5x: pass ram linker start/length from config system7975
Use high resolution time for Timer::read().7998
MIMXRT1050_EVK: Add RTC support8048
NRF52: serial_api: Use polling for putc8049
Nuvoton: Fix mbed_hal-sleep test failed8134
STM32L1 ADC update for internal channels8006
SD - Add required header file and namespace element instead add all7813
STM32L4: Fix sleep implementation7861
Removing default flow control for MTB_LAIRD_BL6528057
Removed cellular PIN code print from debug log.8061
NRF52: Ensure that we configure hardware after flow control changes8072
Renesas : Improve Flash iap driver8149
Add usticker feature to TMPM0668167
Change update file format to binary for all targets8168
DISCO_L496AG : enable ADC8169
STM32: add missing IAR exporters8175
Fix the CMSIS macro ARM_MPU_RASR8179
Add missing SIM PIN configuration item8193
M2351: Add license file for default secure library/executable8235
Mbedgt netsocket tc fixes8239
Fix for pwmout & serial fuart in TMPM46B8241
Fix WIFI_CONNECT_PARAMS_CHANNEL_FAIL testcase.8268
Cellular: Fix greentea network set credentials test case8275
tools, NRF51-post-build: Use paths to hex files8276
tools: Make “file” key in notifications consistant8280
STM32: Fix I2C stop condition8315
Fix cellular unittests8325
Fix for pinmap & usticker free() in TMPM3H68330
Tools: Fix Python3 + firmware header traeback8323
Add blockdevice example back to CI8286
STM32 RTC : write RTC time while LPTICKER is enabled8263
STM32L4: clear error programming flags before erase & program operations8243
mcr20a use core_util_critical_section functions8225
Adjust stack & heap for IAR on STM32F412xG8210
platform timer: Call timer start in enable7958
nrf_ble: Expose configuration of max characteristics and descriptors8327
Guard Atmel RF driver build by DEVICE_I2C7582
Update sleep manager tests7877
Improve the config ajustment script of TLS for ENTROPY_NV_SEED7898
Travis: fix astyle report (-/+ files)8024
Fix alignment of execute region to 8byte boundary8177
tools/utils: Fix issue with loading json files as ascii on python3 linux8186
Freescale/NXP: Fix alignment of execute region to 8byte boundary8298
Reset channel settings back to default8305
Tools: Fix Microbit releases7937
Export, MCUXpresso: Avoid assigning self.libraries8316
unittests: Add tests for netsocket classes8122
LPC1768 us_ticker.c timer choice8261
Enabled the removal of a trailing slash8213
STM32F1 RTC : save values in register7902
Fix overflow in disk_get_sector_size()8183
Adding QOS in response to LinkADRReq and fixing class C bugs8219
STM32 EMAC : lock deep sleep8256
Fix warnings in block devices8258
Cellular: Fix compile warnings for CellularNetwork8270
Tools: Ensure vtor reserved bits are all 08273
Update mbed-coap to version 4.7.08363
Remove mbed-os-example-client8248
Tools, Resources: Convert to a set during win2unix8393
Revert “Merge pull request #8183 from hasnainvirk/QOS_impl”8390
Fixed colorama Python package8002
Storage: Add required header file and namespace element instead add all8274
Export, nb: Use same path for cpp as the rest of the tools8304
Remove GCC_CR8237
PR template: add “docs update”8234
Renesas : Modify LPTicker driver8334
mbed dm: Check for missing payload and give a better error message8226
Unit tests: improve unit testing documentation8208
Align github’s issue template with pull request’s look&feel.8338
poll: Un-doxygen internal comment8385
improve can documentation8391
improve mutex doc8389
Fix minor typo in Timeout8388
QSPI docs updates8395
Adding doxygen comments for mem trace enum8394
improve ticker doc8392
Interruptin documentation update8397
Updating stats doc comments8407
DeviceKey doxygen update8406
Timer documentation update8310
MCUXpresso: Add Flash support for KL43Z, KL82Z, KW41Z, K22F8230
Fix for issue #82148062
Signature to track memory allocations by wrapper functions8238
Add usticker feature to TMPM46B8271
Tools, memap: Silence warnings that we handled correctly8284
STM32: Only LSE clock should be enabled in STOP mode8370
Cellular: Error handling for socket create8383
DISCO_F413ZH : set default Wifi module SPI state to inactive8379
Renesas : Minor change of SPI driver8408
Added bootloader bin license and config for DISCO_L475VG_IOT01A8416
wich->which8414
Remove protected class from EventQueue Doxy8420
Doc changes and rephrasing8418
Remove protected members from doxy in Analog/Digital classes8299
Making cancel_sending() API robust8336
Fix hard-fault when socket created using accept() is closed8317
Add FlashIAP block device as default block device for WISE 15708434
Change Mbed TLS platform error code and value8429
M2351: Fix LED_GREEN naming error8374
Renesas : Improve ARMCC linker script8403
STM32: fix issue with serial_is_tx_ongoing function8427
STM32L4 : sleep issue8405
[LoRaWAN]: Adding QOS in response to LinkADRReq and fixing class C bugs8419
PortIn.h: Documentation improvements only8437
MCUXpresso: Fix for the TRNG HAL driver8446
Pin urllib3 pip module in requirements.txt8008
Add required header file and namespace element instead add all8302
Use wait_ms(int) instead of wait(float)8425
M487: Fix SW2/SW3 interchange error in NUMAKER_IOT_M4878359
Allow overriding build timestamp from env8442
Add missing define in drivers/SerialWireOutput.h8453
Fixed lorawan unittests valgrind issues8451
Added missing _mutex->unlock() to FileBase::lookup().8439
Correct mesh network connection status callback functionality.8349
A Reduced SPIF Block Device for Boot Loader8456
Remove extra e in deepsleep8455
underlyng->underlying8459
Minor mbed_assert doxy typos patch8458
locable->lockable8457
Infered->Inferred8460
funtion->function8288
tools: Raise NotSupported when target definition is incomplete8381
Fix status sequence and reporting for LWIP stack8424
Update doxygens to be in sync8400
This PR retrieves the TimerSync function to fix the lockup issue8421
PortOut.h: Documentation improvements only8469
mbedgt-network-wifi WIFI_CONNECT - check for empty passwd8272
MCUXpresso: Ensure the RTC OSC is running at bootup on Kinetis platforms8382
Mts dragonfly l471 qg8013
STM32: Fix alignment of execute region to 8byte boundary5285
Update devices to have minimum 2K RAM and heap, also added test8404
Update mbed-coap to version 4.7.1Using 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 platform8164
Support Nuvoton’s new target NUMAKER_IOT_M487Fixes and Changes
7758
Include user defined static lib files in the Linker object files paths7904
MIMXRT1050_EVK: Update SPI HAL driver6293
Reduce .text footprint of the network stack7939
Export, Embitz: Avoid assigningself.resources.linker_script
7992
Fix TCPSocket::accept()7787
STM32L4 : code cleanup in MSI SetSysClock7821
Add license files for MTS bootloaders7901
Compiler Warning fixes7960
Change mbedtls_platform_context parameter to NULL7982
LoRaWAN: Memory overrun correction8010
NXP: Update serial driver’s parity handling8052
FileBase: Fix unsetting of default when destroyed8067
Spelling fixes and general readability improvements for TEST_APPS documentation7856
Realtek: fix gpio is connected7981
BLE: fix missing updates sent callback in GattServer using Cordio stack7944
Cellular Unittests refactored to GoogleTest framework7700
STM32: Correct device_has_add flags for bluepill_f103c8 target, fixes #76547883
netsocket: Fix compiler warning8104
mbed dm
: Remove references to internal script from help8136
STM: Fix us_ticker timestamp after deep sleep7903
Clean up include paths.8029
Fix issues with LowPowerTickerWrapper8025
Align to CMSIS defines for Non-Secure7920
Resolve duplicate ADuCM3029 system return code7882
Add greentea tests for network interface status and connect/disconnect8054
Lora: Fix ADRAckReq8145
Add bootloader image for Nucleo F207ZG8153
Unit tests: automatic unit test suite naming8074
LoRaWAN: Refactoring compliance test code7921
Fix Wiznet: IAR heap memory problem8160
Update mbed-cloud-sdk in requirements.txt7935
LoRa: Stop processing MAC commands if command id is unknown7987
M2351: Update to NuMaker-PFM-M2351 V1.3 board7993
Fix EFM32 pwmout hal function pwmout_period8171
Skip the unstable SYNCHRONOUS_DNS_CACHE testcase8181
Py3 support7925
Qspi hal test refactoring/update8060
Clarify test configuration in Socket/Networking test document8096
Lora: Fix sticky MAC command retransmissions8112
specify mbed-cli version requirement8187
STM32: fix wrong LSE config in serial_baud function8030
Nuvoton: Fix Greentea test common_tickers failed8023
Hotfix for PR #7778 on Silicon Labs targets8182
Unit tests: fix cellular athandler unit tests and wait() declaration conflict8147
Fix authentication on a cellular network for Access Point Name (APN)8073
Add documentation about icetea testcases8106
Replace macros with config options8218
Unit tests: add UNITTESTS folder to exclude patterns in doxygen_options.json8036
platform: error: fix bogus usage of memset()7918
Add link to README.md7746
Handle NVStore tests in a low memory environment8212
Unit tests: update README.md7989
M2351: Fix STDIO_UART error8005
BLE: fix whitelist generation (set correct address type)8026
Fix for HW CRC calculations on Silicon Labs targets8165
Fix for issue #8155 (NRF52832: time stops after 35 minutes)8009
LPC1768: Enable RTC8037
STM32: Fix disabling of IRQs shared by multiple events8034
Changed the reported SNR from unsigned to signed.8131
STM32F3 correct analogin_read8229
Fix network and util ut7941
Nuvoton: Fix GPIO mode mapping8154
Unit tests: add code coverage filtering8138
Unit tests for TCPSocket, TCPServer, UDPSocket, NetworkStack, InternetSocket7057
Add TRNG API test8014
realtek rtl8195am lib updates7911
travis: add license check for gnu library license7696
skip the flashsim test if not enough memory cannot be allocated for it.8099
MIMXRT1050_EVK: Fix the PWM Hal driver8247
Update Manifest tool version8132
gt netsocket tcp - increases threads’ stack size8262
Align MBRBlockDevice writes to underlying BlockDevice write size8246
Add back examples updated for mbed-os-5.107932
ublox c030: Add PC2 pin to ADC pin map8085
STM32 RTC : start LSI clock (for targets without LSE)7978
Cellular: state machine and easycellular now return error fast if sim7876
Tools: Modified version mismatch msg to be warning instead of error8090
Cleanup SPI constructor and destructor8309
use forced_reset_timeout as delay after reset7917
Add overhead count in heap stats8318
BLE: fix use of invalid cccd index8121
Add thread safety info to FatFs/LittleFs8257
tests-mbed_hal-sleep: finish UART transmission before sleep test8119
STM32L496 : wrong ADC init8233
Lora unittests7916
Add LPC1769 template file for MCUXpresso IDE8103
STM32 L0 ADC internal channel fix8242
STM32 LPTICKER : Fix tickless and LPTICKER_DELAY_TICKS8269
BLE: replace malloc with cordio buffer allocation8142
Disable MBEDTLS_CONFIG_HW_SUPPORT on STM targets.8108
Rename device option STCLK_OFF_DURING_SLEEP7996
Add nanostack mac tester and testcases8252
Adjust heap size on stm32f207Using 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.07967
ESP8266: Fix compilation error when default interface is enabled7952
Prevent sector-unaligned erase7910
Cellular: Fix Greentea test for network attach7907
Update mbed-coap to version 4.6.27899
Bluetooth 5 Phy support7895
Lora: Remove duplicate LinkCheckReq MAC command7894
Cellular: CellularDevice unittests fix initialization7878
Corrected mbed-mesh-api thread/6lowpan tasklets interface disconnect/connect7875
Update CMSIS to 5.4.07873
realtek: fix #7829 - remove dhcps files7872
Add ThisThread namespace and deprecate static Thread methods7871
Update linker files for NUCLEO_F207ZG and enable bootloader functionality7870
Cellular: Support for GPRS dial-up7869
BLE: Cordio going open source7868
Disable MBEDTLS_HAVE_DATE_TIME as ARMCC does not support gmtime7860
Cellular: Allow cellular modules to override network registration mode7857
Cellular: Make AT_CellularStack socket array multi-thread safe7854
Nanostack patch release for Mbed OS 5.107851
littlefs: Fixed issue with cleanup in mount function on error7848
Message ID in CAN constructor needs to be unsigned7846
Tools: Use Distcc when it’s configured7844
Implement device management subcommand7840
WISE_1570 greentea tests7839
Lora: Change visibility of LoRaMac internal methods as private7828
Platform: Add C++ Span class.7825
Silicon Labs QSPI HAL implementation7822
Add initial NFC support to Mbed OS7819
Unit testing framework7818
Allow ThreadInterface::device_eui64_get() before connect()7817
standardise QSPI pin names7816
Lora: Refactor duty-cycle configuration and introduce config for JOIN request7815
Re-add Shared Pointer Class into platform features7814
Connectivity drivers7812
Update greentea tests to use default interface7806
LoRaWAN: Fixing Hard fault in CN470 PHY layer7805
Skip Greentea tests for Mbed OS code coverage on Fast Models7802
LoRaWAN: Custom FSB selection in US and Australian regions7795
Cellular: Add getters for device and serial to EasyCellularConnection7794
Update Mbed 5 boot sequence7793
Template specialization didnt work after addition of default constructor7792
Build tool fixes for Musca support7783
Add QSPI7781
Add thread safety to CRC class7780
Rename nanostack configuration (.cfg) files7778
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 devices7770
LoRa: Fix MAC initialization for connection with parameters7767
Lora: Fix TX_ERROR event if corrupted msg is received for CONFIRMED request7757
Revert “Move BlockDevice classes inside mbed namespace”7751
Realtek RTL8195A wifi interface to inherit EMAC interface7745
Icetea support7739
Update mbed-coap to version 4.6.17737
Nanostack release for Mbed OS 5.107735
Optimized CRC implementation - (32-bit ANSI polynomial)7728
PR template: Feature -> functionality change7727
CircularBuffer: volatile specifier removal7726
Update BLE error calls to use new error codes and mbed_error7714
Add BOOTLOADER feature7713
LittleFS: Update to version 1.67705
FlashIAP: Add a ROM end macro7692
netsocket: astyle fix7683
Renesas : Improve LWIP speed7677
Cellular: Gemalto Cinterion support for ELS61 and BGS27673
Fixing import paths of memap.py when excuted as a script7667
Cellular: Add CellularDevice::init_module API to be called at startup7663
Move BlockDevice classes inside mbed namespace7662
Add Error Decoding URL to error report7646
Tools: Fix incrimental compile dep tracking7644
Tools: Scan for “components”7623
Tools: Omit include path parents when they’re scan rules7619
UBLOX cellular api’s for UDP and TCP7608
Tools: Correctwin_to_unix
path handling7601
LoRaWAN: Reduced priority for automatic uplinks & higher data rate usage for connection establishment7599
Fix double low power ticker interrupt7592
Remove uVisor from mbed-os7590
Tools: Differential Memap7587
Allow legacy TCPServer::accept() to override inherited Socket::accept()7579
Update ODIN drivers to v3.0.0 RC17569
Tools: Add Uvision6 exporter7567
Tools: Generate update images with managed bl mode7564
Cellular: Make ATHandler::cmd_start() virtual7561
Design process and template for Mbed-OS7559
Export: Support Make + ArmC6 + v8m7558
Tools: Select compiler based on arch version7524
Fixes for tickless and LPTICKER_DELAY_TICKS7523
Add bootloader configuration parameters for MAX32625PICO7508
Ticker free() - requirements, pseudo code, tests, implementation7495
LoRaWAN: Reporting scheduling failures7459
LoRaWAN: FRMPayload size validity7430
Lora: Add support for runtime PHY selection7426
NFC APIs Design Specification7423
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 statictics7402
Replace mbed_mem_tracing_enabled macro with config option7399
Bug fix for receive windows7389
Update nsdynmemlib in frameworks/nanostack-libservice7364
Fix storage rtos types - remove including internal header file7336
Fix connected UDPSocket filtering7335
LoRaWAN: Refactoring LoRaRadio::receive(uint32_t) API7294
Add CPU stats for greentea tests7287
Remove FEATURE_LWIP7277
Tools: Persist config errors until validation occurs7243
Disable XTS cipher mode by default when importing Mbed TLS7221
Cordio: Add tests that validates a cordio port.7217
Cellular: Add AT+CCID and AT+CGSN7212
FlashIAP & NVStore tests: Skip test if overwriting code in flash7192
Create abstract Socket interface7183
Tools: Extract resources object and implement incremental scan7174
tools: crash_log_parser: make ELF and MAP parameters optional7163
Cordio driver hook7148
Tool, build_release: Return nonzero when builds fail7145
NRF52: add a separate .nvictable section and allow .noinit to be used7133
Override ROM/RAM start/size for TrustZone targets7099
Add reference counter for platform context7090
Add non-blocking write function for USBCDC7061
Tools: Include configuration in ASM6999
Extend feature which displays errors/warnings as Link6929
STM32 : script to generate PeripheralPins.c for new target addition6582
Implement zoomable html-flamegraph memap output8022
Update Mbed TLS version to 2.13.18020
Update mbed-coap to version 4.6.38016
[OOB 5.10] Fix typo8015
QSPI driver: API parameters fix8012
IOTCORE-389 - bring back legacy alignment for Arm C67995
Reverting PinNames.h after PR #7774 changes7991
fix example code in QSPI.h7990
DISCO_L475VG_IOT01A remove old QSPI pins7988
Unittesting: Update mutex stub7985
Unittesting: Update Mbed CLI subcommand in Readme7971
Fix memory reservation for Softdevice in NRF52_DK7964
NFC: fix reading from NFC EEPROM7950
Fix memory allocation on STM32L4 devices7924
Add special handling for “/default” filesystem7893
Lora: Improve description of callback methods7824
Use MbedCRC for LittleFS7803
Add Socket test plan7720
python scripts : table print with github policy8140
requiremnts: Bump IceTea8137
Icetea hw restriction8123
Unit tests: fix coverage exclude paths on Windows8100
Allow storage doxy to build8092
Fix quotes around gcovr install command for Windows8086
Fix SocketAddress unittests8079
BUGFIX: Remove account management API calls from DM8075
Syncronize mbed-ls minimum version with icetea requirements8066
Move unittest paths to hyphens8063
mbed dm
: Accept api key and host on the command line8031
Fix TCPServer::accept()8017
IAR: Fix for #7662, only massage the error decode URL for the IAR .xcl7945
Move SYNCHRONOUS_DNS_CACHE test to extended set7909
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 targets7534
enable MOTE_L152 for OS5Fixes and Changes
7772
Modified Jenkinsfile into one-liner format.7810
Eventqueue Templatewall Doxygen Rework7730
When stack stats enabled, prevent exceptions if memory allocations fail7652
NRF5x: Fix config of LFCLK source / settings.7761
ifndef some macros to allow overriding during compilation7880
Update Greentea EMAC tests7891
Remove unused cmsis includes.7788
Cellular: Fixed AT+COPN7879
Add tests for synchronous dns7904
MIMXRT1050_EVK: Update SPI HAL driver7779
Fix for nrf52 pwm issues7939
Export, Embitz: Avoid assigningself.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 configuration7738
Timeout tests : unstable result7750
Cellular: Fixed sms greentea tests init7752
tests-mbed_drivers-timer: change delay method7771
Update mesh_system_heap_error_handler to use new error handler7645
nrf_drv_twi: remove redundant nrf_drv_disable call in nrf_drv_twi_uninit7693
Fix for CM3DS GPIO api7716
Fix issue #5119, changed pwmout_api.7777
STM32F1 RTC : wrong Sunday value7719
Lora: Document all possible error codes for LoRaWANBase methods7740
Cellular: Handle AT response stop in case IP address is missing from7741
tests-mbed_hal-common_tickers: disable ticker free test cases.7769
Fix build_data functionality with python 37782
equeue: Fix overflow in rtos-less timeout code7600
Remove unnecessary low power ticker rescheduling7670
Check max possible keys in NVStore tests7797
Fix target_name variable in some use cases7786
Moved ASYNCHRONOUS_DNS_SIMULTANEOUS_REPEAT under mbed extended tests7706
Refactoring memory regions definitions for Fast Models MPS2 targets7681
BLE: store secure connections ltk in both local and peer entry7830
Fix uvisor ticker issue on K64F7212
FlashIAP & NVStore tests: Skip test if overwriting code in flash7770
LoRa: Fix MAC initialization for connection with parameters7768
Cellular: Document all possible error codes for cellular API.7775
STM32 wrong MBED_ASSERT use7791
Fix TMPM64B IAR linker file7798
Add bootloader support for target NUCLEO_F303RE7807
Compiler warning: unused variable in LoRaMac.h7823
MIMXRT1050_EVK: Update the I2C driver7826
Fix stack size for LwIP on EFM32GG117832
Nanostack: Fix return code for unsupported socket options7831
LoRaWAN: Restoring default RX2 data rate7790
STM32 LPTICKER : RTC wake up timer is reset before setting a new one7785
Lora: Fix join-response failure handling7762
Add combined hex target to CMake7843
MIMXRT1050: Fix I2C Byte transfer functions7744
RTOS threads test: Handle out of memory casesUsing 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-less7289
On STM32F439xI IAR linker file decreased stack size and increased heap7545
Fix for Thread::max_stack not returning right value when OS_STACK_WATERMARK is enabled7622
MPS2 platform: Enable interrupt on rx for UART7628
Optimize the configuration for RTX evr events7632
Remove debug print7641
LoRaWAN: Fixing incorrect NetID causing ABP Failures7653
Update mbed-coap version to 4.5.17565
Nuvoton: Fix NUC472 SD-Host HW IP reset definition7658
Add default interface for wiced WiFi.7655
Remove device emac check from emac greentea tests7642
Changing default SPI CS pin to SD card on MTB7620
Lora: Fix cancel_sending7606
STM32F1: update to CubeF1 V1.6.17552
Renesas: Add LPTICKER7465
Skip a few tests if not enough memory can be allocated for them7648
Add init reference count to all block devices7621
cellular: astyle fix7664
fix comment copy/paste error7661
Clear CONN_IN_PROGRESS flag after incomplete connect()7668
STM32F7: remove HAL_InitTick() declaration in us_ticker_data.h files7374
Cellular: fix greentea tests C027 and BG967675
Renesas : Improve Flash iap7676
Nuvoton: Organize file structure7660
Remove inclusion of mbed.h and mbed namespace from filesystem code7383
FlashIAP: Add timing test7687
BLE: set correct default privacy configuration for centrals7689
PR template: fix target update list7643
STM32: remove uart force_reset at init7703
Resolve us_ticker.c api discrepancy between EV_COG_AD4050LZ and EV_COG_AD3029LZ7678
Nanostack: fix error code7691
events: astyle fix7419
MIMXRT1050EVK: Fix Sleep support7531
Cellular: sms greentea tests7640
iar: remove nxp duplicate definitions7721
Fix owner restoration and discard across nvstore init7688
BLE: call secure connections versions of ltk functions7717
STM32: check for UART ongoing transfers before entering deepsleep7725
Update Lwip error calls to use new error codes and mbed_error call7731
Cellular: WISE_1570’s system clock back to HSE_XTAL7722
Fix Microlib compatibility for -t ARM7729
Rename text region in ARM linker file for Renesas & Realtek boardsUsing 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 EFM32GG117448
Unity: Add macros for test skipping.7396
Tools: Show Mbed-2-only targets in mbed compile -S7302
Support Nuvoton’s NUMAKER_PFM_M2351 target7468
Remove LoRaWAN license from top-level directory7533
Fix linker script for NRF52832/IAR7504
Feature itm fix7544
Remove extra ARMc6 instance in unique mapping7479
Silicon Labs: Add support for hardware CRC7520
LoRaWAN: Wrong return code for JoinRequest retry7548
Fix some targets fail to pass ticker overflow test7539
STM32F2/F4/F7 : LL API is now available for IRQ7491
EFM32: fix weak PeripheralPins configuration7556
Fix spelling in error message in fault handler7536
Add Support for Toshiba TMPM3H67480
Add MTS Dragonfly bootloader back after accidental removal from pr #71317510
STM32: Improve GPIO IRQ edge detection when waking from deepsleep7519
Wiznet: fix us_ticker & gpio bug7530
RTOS SYSTIMER test error in TICKLESS mode7553
STM32L496: fix RAM size in ARM scatter file7554
Enable HAL Flash API on Fast Models MPS2 targets7549
Revise heap and stack size for Ethernet of GR-PEACH7551
realtek rtl8195am remove DEVICE_EMAC7584
Minor enhancement to wait_us7578
Makes Greentea TCP test cases to timeout less in connection errors7603
Nuvoton: Replace __wrap__sbrk with overriding _sbrk7609
Make location meaningful in print_error_reportUsing 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 list7370
build_api.py : add comment about separate_names7359
Cellular: EasyCellularConnection::connect doesn’t have any check that “CellularConnectionFSM” object is created or not7326
STM32: add lpuart_clock_source config7369
Fix race condition in serial_api.c for NRF52 series7348
LoRaWAN: Correcting doxygen7239
netsocket: dns: make dns-cache-size:0 remove whole DNS cache code7029
Nuvoton: Adhere to reworked ticker spec to release with Mbed OS 5.97008
AStyle : drivers/hal/platform folders update7367
Tools: Detect Arm Compiler version using Component7331
Improve the process for Cortex-A9 in mbed_application7384
Fix memory leakage with MBR on exiting error path7403
LPC546XX: Fix UART mux setting in the LPCXpresso board7342
Add kernel ticker test7376
DISCO_L496AG: change LED1 and LED2 pins7377
Tools: Summarize stats when depth is 07386
Make clock source changeable over mbed_app.json for EFM32-Targets7390
DISCO STM32L4 : Add TWO_RAM_REGIONS macro7401
Fix interrupt initialization for NRF52 series7405
Fix target definition for NRF52 series7411
Fix wrong config binding7413
Modified Wiced drivers EMAC instance get7371
Improve efficiency and formatting of ITM output7420
MIMXRT1050_EVK: Fix the GPIO IRQ number assignements7421
MIMXRT1050_EVK: Move clock enable after check of pin7406
NANO130: Change PLL clock source to HIRC instead of HXT7429
MXRT1050: Ensure the pins are in input mode for analogin7412
apply FatFs 0.13b hotfix - fix readdir() never terminates when dir is full7352
STM32: Fix RTC test issue on targets using a 16-bit timer for us_ticker7437
Recognize “.cc” and “.hh” source file extensions7410
Tools: Move exporter alias handling to CLI7333
Cellular: More unit tests for ATHandler’s read routines7466
Tools: py3 compatible version checks7446
Disable LSE for MTB_USI_WM_BN_BM_227404
Do not print error reports in release builds7453
Fix SWI conflict in SoftDevice for NRF52 series7042
Flash API: Enable Flash api on CM3DS7474
Replace build profile changes with config7290
STM32: Refactor us_ticker files7365
STM32 RTC : bypass shadow registers7487
Allow STDIO pins to be NC in NRF52 series7107
Add option to make Nanostack use global event queue7486
Fix linker script for NRF52840/IAR7501
Tools: Make directories before gen file uses them7489
Cellular: HSI set to be source clock for WISE_15707471
tests-mbed_drivers-lp_timer: change delay method7318
Cellular: Remove max_packet_size7434
Separate version header file in Mbed OS7461
Raytac: target removal7445
LoRaWAN: Remedy for issue #72307505
Fix linker script for NRF52840/ARM7494
tests-mbed_hal-lp_ticker: change implementation of the delay before deep-sleep.7481
Tools: Fix py3 bug with mbed export -S7500
Tools: Correct cmse lib creating with make_gcc_arm exporter7503
Tools: Drop quotes from makefiles7475
Tools: py3 compatible mbed-os version lowercasing7436
Update stats to fetch Mbed OS version info7507
STM32 LPTICKER with LPTIM minor update7477
Tools: Skip target lookup in test builds.7498
STM32: enable HSI/LSE clocks for LPUARTUsing 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.47158
Add API to read Thread EUI-647197
Tools: Allow exporting of uARM-only targets to uvision7058
Fix two issues in ExhaustibleBlockDevice7209
Tolerate packet loss up to 30% in udp echo tests7231
Tools: Force small lib when compiling with uARM7073
NRF52_DK: SLEEP enable7208
Added long echo sequence test to EMAC tests7201
LPC54628: Update the ADC clock divider based on the input clock source7211
Nordic BLE: Accept connection parameter update7237
Enable COG boards instruction cache7234
Spelling error in fault handler7225
STM32: Add comments for HAL_InitTick function7229
Disabled STM ethernet driver hardware checksum calculation7249
Maxim: Rename files to fix warning7226
Make MTB_ADV_WISE_1570 respect MBED_APP_START & enable bootloader7207
Change DNS global class definitions to singletons7224
Fix Greentea test code with deepsleep7245
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 CPUs7191
LoRaWAN: Fine tuning timing for delays and receive windows7263
NRF51 Post-build: Allow Hex BL, SD, APP7261
IAR: Suppress C “bypasses initialization” warning7259
Provide default WiFi interfaces for Ublox and Realtek7216
Asynchronous DNS greentea tests7206
K64f non-blocking powerup7205
STM32: Fix data alignment issue in HASH function for F2, F7, L47264
Suppress shift warning for IAR compiler as well7241
STM32: Reduce HAL_deepsleep stack usage7266
Update arm_pack_manager index7272
Add binary drivers for MTB_MXCHIP_EMW31667175
Enable new HAL us_ticker API on fast model MPS2 platform7172
Unify RTC, lp ticker, and us ticker for NRF51 and NRF52 series7274
Travis: fix mongodb key expired error7288
Fix Greentea test code with wakeup from deepsleep7283
Update Greentea netsocket and wifi tests7280
Fix SPI initialization for NRF52 series7220
Fix mbed::InterruptIn.mode() in NRF5x targets7295
Compiling Cortex-A cores in uVision is not supported.6973
Support thread-safety with ARMC67291
adding USTICKER label for C0277275
Cellular: fixed defect where SIM interface was closed too early7262
BLE: Add setScanParams overload to the Gap API7105
MIMXRT1050: Update to EVK Rev B7284
Add binary drivers for MTB_USI_WM_BN_BM_22 and MTB_ADV_WISE_15307296
Add names to Idle/timer thread6925
Support Flash iAP and Bootloader for GR-PEACH and GR-LYCHEE7269
Cellular: add cellular network tests7214
Error handling configuration updates and Optimization for exception handling7210
Fix Nordic security cancellation7311
Modify RAM size definition of ARMCC for GR-LYCHEE7299
MBR: Fix issue with MBR init asserting on bad partition size7338
Download astyle from AWS instead of SourceForge7286
Add cellular information tests7324
Fix LED_RED mapping on NUCLEO_F429ZI7247
Tools: Check compiler version7320
Update mbed-coap to version 4.5.07323
Improve serial performance for NRF52 series7341
Cellular: improved observing of disconnect for callbacks.7330
Clean-up targets.json7351
STM32 files with MBED astyle rules7344
LoRaWAN: Fixing transport of fatal TX timeout event7353
build_api script : separate PeripheralPins.o7354
Fix error history related comments7356
Fix tool crashing when lines end with cr(not crlf)7361
STM32 : get serial RX/TX active state7355
Remove semicolon at the end of #define7313
NRF_52840: Fix us ticker counter sizeUsing 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 platformFixes and Changes
6968
Test build: Reduce include command length6928
Cellular: Fixed con-disc sequence can now be called multiple times.6947
EFM32PG12_STK3402 - Correct wrong Expansion-Header pin namings6965
Cellular: Unit tests fixes6970
Fixes to EFM32 port6984
EFM32 IRQ handling fix6991
EFM32: make mbed_rtx.h depend on families instead of targets7011
Fixed float-abi linker option for CCES exporter.7014
Add check for _interface7020
Add STM32L433RC to IAR exporter definitions7022
Fix array overflow in gpio configuration code for NRF5x7033
Cellular: Fix AT URC handler not to dismiss incoming chars7034
Fix redeclaration of type name “bool_t” for Renesas7016
Corrected asynchronous DNS functionality7054
gethostbyname must reject empty name7005
LoRa: Add greentea tests for LoRaRadio API7031
Nuvoton: Adhere to reworked RTC spec to release with Mbed OS 5.97039
FPGAIO: Add MISC IO initialization support7027
Fix possible bug with SysTimer6803
Wise 1510 uart config7007
AStyle: Fix astyle indentation7052
Cellular: BC95 socket creation to fail on missing socket id in the re6987
STM32 ADC update7075
BLE: Replace Serial with RawSerial in Cordio H4 Transport Driver7032
Update cmsis/rtx for Cortex-A7062
DISCO_F413ZH : map SPI3 to WIFI module6022
nrf5x: Enable asserts -> mbed_error6848
Check that no GPL licence inside code6515
Only schedule mbed_ticker interrupt if queue->head is changed7095
Fixing some coverity issues7081
Fix mbed_crc_ctor is missing in some MbedCRC constructor7143
STM32 : few targets does not support LPTICKER7136
error: fix undeclared memcpy7111
Python 3 makefile export issue7124
Tool: Use TerminalNotifier in singletest6860
Nordic BLE: Allow configuration of softdevice parameters6949
Support mbed_start_application for Cortex-M237120
Fixed DNS resolution in case all sendto operations fail7067
Add ISM43362 driver support for STM32 wifi DISCO boards7173
Make Nanostack C++ constructor initialise Nanostack7167
Add show full path option to armc6 linker7147
Upgrade uvisor to v0.31.17141
Kinetis EMAC: Make number of buffers configurable7121
Nanostack EMAC - avoid initialisation race6978
Support default tz_module in event loop thread for M23/M336938
LoRaWAN: Style and bug fixes7164
Fix NVStore README file (changed APIs)7160
Fixed ppp_lwip_disconnect hangs when connection failure.7159
Add targets to Greentea EMAC tests7150
Nordic: Fix nrf sections on ARMCC7106
STM32: Replace HAL_GetTick7103
Greentea test updated for NXP lpc17xx7097
cellular: random socket port number7088
STM32F76x: Add support of dual bank flash mode6948
STM32 ETH : remove TX RX locking interrupt perforation7084
Cellular: Enable AT debug also when mbed-trace is disabled7179
Fix USB on Kinetis devices7119
NSAPI: Use IPv6 conversion routines from frameworks7176
Fix data aligment problem at STM32F4 hash write7182
Cellular: Disable Greentea tracing to consume less memory7161
Correct PPPCellularInterface::get_gateway()7151
Fixes for RZ_A1H issue 65437166
BLE: fix pairing for misconfigured devices (deny pairing correctly)6935
Ticker test improvement6831
Add HAL CRC test and header file7131
New mdot bootloader7139
Fix greentea test failure on Renesas Cortex-A9 targets7117
Fix compile error with MBED_MEM_TRACING_ENABLED and ARMC67123
BLE: check flags to make sure the IRK has been stored before retrieving it7102
Adding cellular tests6962
Cellular: release resources in state machine.7194
Increased LWIP main worker thread stack size for debug builds7202
Corrected casting issue with an assert within the error_handling test7196
Tools: Remove second header when every bl config param is used7195
Cellular: Semaphore wasn’t released in easycellular release build7128
Fix flash_program_page API in LPC boards7036
tests-mbed_hal-sleep fixUsing 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 theCellularBase
abstract class. This means it may not work ifOnboardCellularInterface
is not aPPPCellularInterface
. - 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 glue7023
Add new examples to example list for CI.7019
Made lwip memory configuration more specific for NXP targets7015
Fix build for MBT_ODIN_W2 and MBED_CONNECT_ODIN when using WiFi7012
Enable DeviceKey class reference for Doxygen7009
Bring in improved HAL APIs to master7003
Add devicekey example to examples list7000
Add warning about FEATURE_UVISOR being deprecated6993
CPU Stats test - Increased wait time to allow device to sleep6983
Standardized Error Handling and Error Codes6981
Remove ns_event_loop_thread_start() from NDInterface and ThreadInterface connect()6960
LoRaWAN: Message flags correction6959
Remove unused ITM implementation from NRF51 series6932
BLE privacy, signing, persistent security database6927
Cellular: AT debugging improved6917
Travis: Quick name-fix for warnings reported by Astyle6910
LoRaWAN: Adding acquisition of metadata, backoff and a cancel_send() API6905
Lora: Remove obsolete FEATURE_COMMON_PAL flags6901
events: Introduce API to query how much time is left for delayed event6892
LoRaWAN: Wrong type of message check6886
Corrected iteritems py2/3 compatability in test_api.py6882
lwIP: Enable TCP out-of-order processing6878
Add low power timer fallback for platforms without RTC6876
Nanostack release for Mbed OS 5.96875
Lora: Fix battery_level callback6866
fatfs: Add erase disk to format6863
Update Mbed TLS to version 2.9.06862
Fastmodels support: add FVP_MPS2 targets to mbed os6857
CPU Statistics6847
Merge feature-emac branch into master6839
Lora: fix AU915 build6833
mbed test: add argument--ignore
to allow passing in mbedignore patterns6826
Reorganize SoftDevices for NRF52 series6823
tools: Remove long-deprecated build_everything.py6821
System stats - API addition6819
Remove example update scripting from tools6808
LoRa: State machine work6800
Lora: Fix LoRaMacCrypto asserts6798
Fix bug in MBR for NRF52 series6796
Fix us_ticker for NRF52 series6795
Thread stats API6794
Cryptocell 310 support6792
Cellular: Add dynamic alloc and destruction to easycellular6791
Add POSIX fcntl flag support6784
Add common define MBED_ALL_STATS_ENABLED to enable all statistics6781
tools: Refactor notification API6779
[MAX32625PICO] Add new platform6772
littlefs: Map LFS_ERR_CORRUPT to EILSEQ6771
Fix UART initialization for NRF526765
Cellular: Fix AT Handler compile warning6757
Implement BufferedBlockDevice6750
LoRaWAN: Memory corruption due to band mishandling6749
Add platform setup and teardown calls to mbedtls tests6748
nrf5x: Fix assert test on SERIAL_RESERVED_CHAR_MATCH6747
Support RTOS-less secure image build with Cortex-M23/M336746
Fix vector table relocation for NRF526744
Cellular: Changed ATHandler yield to wait6741
Lora: Split add_mac_command() into separate methods6721
Fix bug in Nordic SDK 14.2 I2C driver6720
Fix bug in Nordic SDK 14.2 SPI driver6717
Fix NRF52 SPI pin initialization6711
Cleanup TARGET_NRF5 and TARGET_NRF5x6708
Add Hardware CRC HAL API specification6702
Cellular: Fix to prefer IPv6 single stack with fallback to IPv46700
mbr: Added assertions for overlapping partitions6698
Make poll() use RTOS tick count6696
CM3DS Maintenance Pull Request: Cleaning6693
Make event queue use RTOS tick count6692
Lora: Remove singleton pattern6691
Cellular fixes6682
Fixed cellular unittests6677
Cellular: fixed null pointer bug in cellular fsm6665
Greentea netsocket more tests6663
Use SingletonPtr in Nanostack HAL6657
add ncs36510 fib and trim generation6654
Add missing carriage returns to fault handler6653
Stop lwIP using us_ticker6642
Device key implementation6632
cellular: Error messages6630
Support secure/non-secure flash IAP for Cortex-M23/M336629
Cellular: add plmn for CellularConnectionFSM6628
Lora: Make automatic uplink message configurable6627
Nanostack hal timer shortcut6626
Cellular: Separated context activation in CellularConnectionFSM.6595
Fix typo with NVStore6592
Updates tools to be runnable in Python 36590
AStyle addition to travis6588
[IOTCELL-741] Separating public data structures6587
LoRa: Internal include paths corrected6586
Lora: Introduce new receive API which returns port and flags6577
Get rid of FEATURE_COMMON_PAL and FEATURE_NANOSTACK6570
Cellular: add detach from the network6569
Lora: small fixes6566
LoRa: Stack cleanup6559
Implement FlashSimBlockDevice - flash simulated block device over RAM6547
Update Nordic NRF52 based targets to SDK 14.26536
Add handling for synchronized low power tickers6534
Update idle loop to reduce calls to suspend6530
Exclude files like.main.cpp
from builds6496
standard non-blocking NetworkInterface::connect6486
Thread class tz6483
CMSIS: Add TrustZone functions6480
NVStore: add the allocate_key API (instead of set_alloc_key)6441
Disable all deprecated exporters6440
Remove supertarget6433
Enabl-able Python 3 tools testing in Travis CI6427
Added SerialWireOutput to mbed namespace6418
Add an option to use LowPowerTimer for poll6411
Stack refactoring6408
Add overloaded get_erase_size API with address parameter to BlockDevice6402
Renaming Ublox library for mbed cellular framework6388
NVStore: key management enhancements6336
fatfs: Update error code mapping6309
Peek API to view data of buffer without popping6279
LoRa refactoring6273
Update cmsis/rtx to version 5.36270
Add parameter in tools settings to show error/warning as Link6239
Interrupt in pin mode6238
Remove windup behavior from break_dispatch7132
Tool: Use TerminalNotifier in Mbed 2 release7092
Additional fixes for running Python 3 in Windows7089
BLE fixes (SM whitelist creation, Nordic scatter file fix, missing TLS initialisation)7078
Windows pytest fixes7074
Remove redundant Cryptocell libraries7072
Edit warning about FEATURE_UVISOR being deprecated7070
set the tolerance to 5% if NO_SYSTICK is enabled7060
UBLOX_C027: init us_ticker in the target initialization7059
OS version not update in mbed_stats7053
Fix RTOS-less build failed with cmsis/RTE_Components.h7050
Fix for filename capture not working7035
tests-mbed_hal-common_tickers: Fix increment test case implementation6914
build: fix notifier typo and passing to builds API7144
Add configuration options to enable CMAC in mbedtls by default7135
Update Mbed TLS to version 2.10.0Testing
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 script6952
STM32 ETHERNET : Allow user defined Ethernet PHY init functions6951
STM32 SPI: fix NSS pin configuration6896
Export folder needs to not ignore .mbed files.6931
STM32 : PeripheralPins.c and PinNames.h files alignment6947
EFM32PG12_STK3402 - Correct wrong Expansion-Header pin namings6970
Fixes to EFM32 port6984
EFM32 IRQ handling fix7011
Fixed float-abi linker option for CCES exporter.7020
Add STM32L433RC to IAR exporter definitions7034
Fix redeclaration of type name “bool_t” for Renesas6803
Wise 1510 uart config7056
fix realtek_rtl8195am IPv6 build fails update6987
STM32 ADC update7075
BLE: Replace Serial with RawSerial in Cordio H4 Transport Driver7062
DISCO_F413ZH : map SPI3 to WIFI module7082
Update mbed-coap to version 4.4.4Using 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 build6793
tools: Pass app-config to get_config6768
Nano 100: Lower HEAP size for IAR6769
Move subtract basepath into the resources class6773
Enlarge timer thread stack size for Cortex-M23/M336728
Fix issue template - simplified version6610
Stm32 eth remove tx rx locking interrupt perforation6805
tools: Reorder test configuration priority6814
GenericGattClient: Fix discovery termination.6743
BLE: Conditional compilation of H4 driver6742
BLE: Update cordio porting guide6645
mbed_wait_api: add comments to warn the func will lock deep sleep6809
Mbed Stats: Assert if NULL pointer passed as arg6849
Add missing semicolon to NRF51 critical_section implementation6817
GenericSecurityManager: Fix crypto_toolbox_f4 signature.6845
Remove obsolete OS_IDLE_THREAD_STACK_SIZE from NRF526852
Fix for issue #5308 - RTC set/get time issue on NCS365106879
Build mbed-os-example-lora only for lora targets6864
FlashIAP: Fix problem of programming source buffer not aligned to 46838
export: Fix invalid config header path in Sw4STM326883
Update mbed-coap to version 4.4.36885
BL mode: Prevent jump address conflicts6832
STM32F3: Update with STM32CubeF3 V1.9.06865
fix greentea-client, require a character input between K-V pairs6919
tools: Add explicit target for NVStore example6940
NVStore - remove Thread.h include6846
Lora: Fix rx datarate6829
LoRaWAN: Fixed region 2(AU915) to compileUsing 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_AD4050LZ6686
Remove automatic I2C stop after each read6683
Add IAR export and nvstore page size fix for TMPM46B6669
make PR type box list “fancier” without making it a github tasklist6666
STM32L0: Update with CubeL0 V1.10.06611
Uninitialized variable warning in UARTSerial at -O36602
requirements: add future6540
Prevent compiling with unsupported compilers6718
Modifying echo test to be driven more from the device.6727
Update URL that points at a blank page.6723
STM32 RTC Init minor update6735
LPC546XX: Add check for GPIO IRQ6701
Update to EFR32 15.4 driver6671
Update doxygen options rules to not strip code comments6745
Clarify mesh configuration values.6734
LPC54XXX: Set the pin function to Digital mode6733
Fix compiler warnings for Maxim platforms6644
Fix build tool with ARMC6/ARMv8M6756
Re-enable flash clock test for NRF52 but with higher tolerance6787
KW41Z: Update SDK TPM driver6786
Moved stats test to platform folder6785
KL82Z: Fix clock selection for PWMOUT driver6780
resolve LWIP compiler warning6778
Add support for open drain leds6774
littlefs: Fix issue with trailing dots in file paths6762
Fix compile error with MBED_MEM_TRACING_ENABLED and ARMC66740
Lora: Fix max tx power check6729
Add bootloader support for NUCLEO_F411RE target6713
Drop include paths for ARM assemblerUsing 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 target6511
Add new target USI WM-BN-BM-226601
Add new target MTB_ADV_WISE_1530Fixes and Changes
6561
Stm32 deep sleep clock6481
Code::Blocks project file exporter6553
Correct armc6 detection logic for STM32L46509
Add an NV_SEED test to the config adjustment script6572
cellular: ATHandler send delay6505
remove MODULE_UBLOX_ODIN_W2 from targets.json6544
add ADC_AN0-2 mapped on PA_0-26550
Remove MPS2 M16564
Travis: Fix rate-limit issue with Github requests6567
DISCO_F769NI: set clock_source to USE_PLL_HSE_EXTC6169
CM3DS Maintenance Pull Request: TRNG support (3/4)6619
PR template: fix tick definition6600
[IOTCELL] Setting up channels for AU9156618
Update mbed-coap to version 4.4.26634
Add iar export support for STM32L151CC6625
rtl8195am - fix excessive compiler warnings6620
Cellular: fixed athandler unit tests.6613
Macro expansion results in a constant boolean expression6609
STM32 PCD negative numbers issue6608
Rework us_ticker and rtc_api/lp_ticker6606
Fix I2C master6605
Rework us_ticker and rtc_api/lp_ticker | Fix compiler warning for spi_api6599
STM32 compilation warning issues6598
LPC4088: Fix hardfault occuring after power-cycle6541
Add mbed-os 5 build support for LPC11C246466
Nuvoton: Fix issues with SPI6468
Fix deep sleep implementation6510
Adding missing @deprecated to function inline documentation6580
Cleanup get_config (mbed compile –config)6607
Improve SPI block write6621
Use pyelftools for Realtek post-build script6637
Add IAR export for STM32L496AG6647
Fix MCUXpresso LPC I2C driver6648
ADI: Add BUTTON pin names for EV_COG_AD4050LZ and EV_COG_AD3029LZ6603
Optional hardware flow control for STDOUT6651
rtl8195am - Fix more compiler warnings6221
LPC546XX: Add TRNG support6660
Enable flow control in Greentea6614
Macro expansion leads to a bare expression6652
Cellular: Updated doxygen for deprecated API’s.6604
littlefs: Fix some issues with lookahead trust6658
Allow library configs to override target configsUsing 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 TMPM46B6043
add support for the RAK811Fixes and Changes
6415
rtl8195am: fix LogUART Tx interrupt crash6450
Realtek: serial - line ending fix6428
Avoid incorrect config errors on export with many –source6424
Nuvoton: Support M487 v3.0 pin map6416
lwIP: fix some IPv6 errors, eg TCP keepalive6313
Add missing Doxygen descriptions for Nanostack6487
Minimize the size of uvision include paths6373
flash: add docs for user defined data6467
KL82Z: Update the clock selection method for LPUART module6488
Fix initial SP for new Silicon Labs targets on ARMCC6413
LPC176X: Fix flash program size6394
Nuvoton: Fix us_ticker/lp_ticker6475
Enable tickless mode on Silicon Labs targets6494
[BLE] Fixed inconsistent casing issue for SecurityDb6512
Move Mbed 5 support check so that it affects the exporters6518
Inrease thread stack size to 1024 bytes in NVStore test for NRF526533
Fix deep sleep locking for Timeout class6527
Test line-ending problems6528
Update mbed-coap to version 4.4.16531
Fix doxygen comments to reflect the deprecated functions6490
ADI: Fix EV_COG_AD3029LZ and EV_COG_AD4050LZ us_ticker_fire_interrupt() minimal time interval6442
Add test for MbedCRC.h6524
Fix IPv4 address parsing due to not-so-portable scanf modifier6557
LoRa: Fixed cflist decoding issue6497
STM32L1: Update ST HAL driver to CubeL1 V1.8.16552
Error on invalid mbed_lib JSONUsing 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 board6164
Adding Laird BL652 as new target6379
DISCO_L496AG: Add new platform6245
Update for VK_RZ_A1HFixes and Changes
6153
Correct exporter clean behavior6191
Simplify json-to-dict utility6189
LPC546XX: Update SDK driver to version 2.36246
C030 platform I2C initialisation fix6228
Nuvoton: Rework us_ticker/lp_ticker with one H/W timer6143
Correct mbed export with multiple –source params6146
Correct gcc m33 floating point handling6173
Modifies error text reported from RTX from ‘underflow’ to ‘overflow’6268
Unittests fixed6202
Fix max32625mbed6235
mcu_lpc546xx: move “release_versions” to children and fix clock6263
Clarify intention between comparison to zero and the shift operation6286
Small typo fixes in readme.md files6271
Allow build profiles to omit language entries6226
rtl8195am: fix ARM section error6257
Fix for Crash dump formatting issues and adding more info to crash dump6290
Cellular tests: fix power mgmt stub6287
MCUXpresso_MCUS: Apply K64F us_ticker fix across all MCU’s6315
EFM32: make gpio interrupts faster by offloading expected pin state check to user6314
Cellular: ATHandler write improvements.6311
mts_mdot_f411re: Fix for Multi-Tech mDot IAR linker script6310
MCUXpresso: Fix test failures seen with ci-test shield6303
[ATCmdParser]: Alignprocess_oob()
tovrecv()
‘s newline handling6300
Fixes to LoRa PHY6288
Fix macro definition of iodefine_typedef for RZ_A1H6274
events: Added note about immediate firing of periodic events6198
Flash support: Add flash support for LPC54114 & LPC546XX6149
Fix typos in the files5106
Timeout & LowPowerTimeout tests6092
mbed-mesh-api: add JSON help6292
rtl8195am - improve credentials handling6345
Cellular: Fixed sms unit tests.6329
Cellular: add callback API6361
Convert option list to unicode6359
NVStore: add comments in header file for Doxygen formatting sake.6346
Fix for #62526353
STM32 RTC init6354
Enable iar export option for MTB_ADV_WISE_15106114
Remove mbed 2 builds from Travis6326
rtl8195am : fix gpio toggle slow6264
Deprecated warnings for feature/netsocket/cellular6372
Fix doxygen for ITM HAL6367
ADI: Fix on chip flash minimal programmable unit size6216
Correct Realtek post-build script to work in the online compiler6192
Correct syntax for mbed export in Py36356
Add include search path when preprocessing assembly files for uvision and make_armc5 exports6340
Disables flash clock and cache test6291
Cellular: BC95 echo test fixes6370
STM32 LPTICKER : optimize RTC wake up timer init6363
dir seek fixed - dptr was not updated before checking6350
Cellular: update attach test6338
littlefs: Fix issue updating dir struct when extended dir chain6333
Corrected lwip adaptation TCP flagging6330
NUCLEO_L433RC_P: fix pins definitions6392
Nuvoton: Remove unnecessary UART INT in UART DMA transfer6344
armcc - remove fromelf output before regenerating one6168
CM3DS Maintenance Pull Request: Memory changes (2/4)6378
equeue: Added profiling reports to Travis6368
Sort out volatiles in the atomic functions6348
Fix PR template6399
STM32L4 ADC Internal Channel : correct sampling time6412
STM32L4 ADC correct internal channel management6377
Replace runtime strip_path function with compiler intrinsic equivalents6419
Correct get_config imports6437
Nuvoton: Fix NVSTORE test failed6434
Modified apt-get retry logic with Travis CI retry featureUsing 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 theCellularBase
abstract class. This means it may not work ifOnboardCellularInterface
is not aPPPCellularInterface
. - 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 RTC5311
BLE: Add generic GAP implementation5633
BLE: added function converting error codes into strings5578
CircularBuffer class modification and test5559
Fix for default test config file5748
Fix PR55785621
CriticalSectionLock class improvement5457
Network interface: Add status callback register5784
RTC test: fix __result variable5768
Added statvfs API to get storage statistics5313
Cordio: Pal Gap implementation5802
RTC time conversion test - reduce test execution time.5346
Add Critical Section HAL API specification5597
critical: fix set exclusive access if not yet defined5201
Test set for critical section5789
Add tests for critical section HAL API5926
bd: Add sync function to the block device API5925
bd: Add get_erase_value function to the block device API5022
Add JSON schema based validation to mbed config script5998
Restrict target_overrides usage5852
ScopedLock implementation5848
Python2+3: mbed compile, mbed test –compile, python unit tests5571
Complete mbed_retarget FileHandle rework6033
Update mbed-coap to version 4.2.06025
Mesh-api setters for eui64 and pskd5604
TESTS/NETSOCKET: Refinement ofnetsocket
tests5847
Unify fault handling and add script to show faults6053
Nanostack release for Mbed OS 5.85973
Update Mbed TLS HW acceleration partner code to new hashing API5666
Add exporter for Analog Devices’ CrossCore Embedded Studio6032
Status callbacks6096
Generate/Link secure object file6049
Nuvoton: Rework RTC6087
Integrating Mbed LoRaWAN Stack in Mbed-OS 5.85956
[feature-hal-itm] Instrumented Trace Macrocell HAL API for SWO debug output6076
Remove ticker interface initialization while Ticker creation.6141
Verifying datarate bug fix6163
Revert “Update Mbed TLS HW acceleration partner code to new hashing API”6154
Tools: Let unicode error messages through6160
Fix issue 61506140
FlashIAP driver modifications6120
fatfs: Update error code mapping6170
CM3DS Maintenance Pull Request: Driver updates (4/4)6186
Eventloop in main thread to master6185
nanostack-hal: add alternative critical section implementation6166
Make APN lookup the default behaviour for PPPCellularInterface6167
CM3DS Maintenance Pull Request: Bug fixes (1/4)5911
CRC class implementation5548
Tests for SysTimer (the idle loop timer for tickless mode)6240
Improve invalid configuration error messages5950
Reserve and Render header in managed BL mode6230
Add system_reset call6179
littlefs: Update to version 1.35900
Add NVStore (A.K.A SOTP) feature6188
BLE: Security Manager6210
Update Mbed TLS to version 2.7.16142
Add optional tracing to sleep manager lock/unlock6251
Fixed Thread Commissioning issue in CoAP service6082
Mbed OS cellular connectivity6341
Add lorawan and nvstore examples for testing6328
MIMXRT: define PullUp default value6327
Cellular doxygen updates6323
fatfs: Revert “Update error code mapping”6304
Add lorawan and nvstore examples for testing6301
Cellular tests: fixed cellular greentea tests by adding timeout6285
Improve json schema and schema errors6280
NVStore: Enclose header file with DOXYGEN_ONLY option as well6275
NRF52: Customize STDIO pins from config systemUsing 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 target5957
C030 R410M Target Added6102
Add support for STEVAL-3DP001V1 board6164
Adding Laird BL652 as new targetFixes and Changes
6116
Add TRNG for NRF528326197
Revert “Added pretty bar printing for compile output”6287
MCUXpresso_MCUS: Apply K64F us_ticker fix across all MCU’s6177
littlefs: Fix handling of root as target for create operations5046
TimerEvent tests6193
ODIN MTB LEDs Fix6172
Use SRAM2 32Kbytes on STM32L475 / L476 and L486 devices6217
STM32 RTC : update free function6189
LPC546XX: Update SDK driver to version 2.36229
Fix a bug using ELF as output extension6209
Platform: Improve mbed_sleep.h6214
Build issue for M33 core6227
Nuvoton: Add I2C & Serial Pin Name6225
Flash test: fix the time over a longer range6231
pull request: add required info5993
Work around Arm Compiler 6 stdvector perfomance cliff6246
C030 platform I2C initialisation fix6228
Nuvoton: Rework us_ticker/lp_ticker with one H/W timer6146
Correct gcc m33 floating point handling6173
Modifies error text reported from RTX from ‘underflow’ to ‘overflow’6202
Fix max32625mbed6235
mcu_lpc546xx: move “release_versions” to children and fix clock6263
Clarify intention between comparison to zero and the shift operation6271
Allow build profiles to omit language entries6226
rtl8195am: fix ARM section errorUsing 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-W2This 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 support6047
Fix NVIC Wrapper include for Renesas6042
DISCO_F303VC : STDIO pins correction and alignment with STM32 family6035
Fix serial pins and a typo for ODIN MTB6018
fix compiler warning5941
STM32L0/4 Enable use of LPUART in stop mode6058
Ble: fix size function in advertising_data_t and address_t.6051
add few files to gitignore list6070
remove magic calibration value for HSI in ST’s targets6074
fatfs: Remove extra MBR block6083
tools: build: fix handing of “–stats-depth”6063
STM32F7: Update ST HAL driver with CubeF7 v1.10.06009
fix for issue “serial example callback not working”6095
mbr: Add note about limitations6000
Prevent detect_targets.py tool script from crashing on known targets6068
Fix for issue #6054 - interrupts scheduled in the past.6099
gnuarmeclipse exporter uses mBed instead of proper casing6045
RTX changes pulled in from d20b8aa6029
RTX5: Pre-processor defines used for assembly6112
STM32F4: Update ST HAL driver with CubeF4 v1.19.06088
STM32F429ZI add SERIAL_ASYNCH6113
remove unused variable / resolve compiler warning6048
Nuvoton: Rework us_ticker and lp_ticker6110
equeue: Removed RTOS dependencies with RTOS not present6118
equeue: Add note about using global event queues in irq6135
tests-events-timing: print debug info only in case of failure6117
UBLOX C030: I2C avoid any RTOS waits6115
NRF5x: Fixerror_t
conflict with gcc std>=gnu++115915
Simplify and Improve error/warning parser for gcc_arm6121
Avoid blowing away .mbedignore files in exporters6123
Correct sector scraping in arm-pack-manager6126
Modified ‘apt-get update’ to loop until successful5812
M487: Support ECP H/W accelerator6041
STM32 STDIO pin redefinition6055
K64F lp ticker driver - calculation bug fix.6046
littlefs: Fix incorrect lookahead population before ack6093
NETSOCKET MBED_EXTENDED_TESTS json configuration6124
Make NRF52 flash work with SoftDevice6125
Add quotes around MBED_BOT parameter6139
LWIP PBUF_POOL_BUFSIZE increased to fit also IPv6 header6078
Pull request template update6145
Correct single file excludes for some exporters6156
retarget: Fix path behaviour without leading slash6147
LPC546XX: Add support for 220MHz core speed available on LPC546286162
sleep_manager_racecondition test fix for devices with low CPU clockUsing 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_1510Anybody 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 board5904
add support for STM32L443RC & WISE-15105905
add support for the murata’s module CMWX1ZZABZ-078 based on STM32L05996
Adding LAIRD_BL600 MTB5826
NXP: Add support for MIMXRT1050_EVK5837
Adding MTB ublox NINA-B1 as a new target5975
Adding MTB_MTS_XDOT as a new target6013
Add MTB_ADV_WISE_1570 targetFixes and Changes
5951
STM32 NUCLEO F413ZH and L433RC : STDIO configuration5945
Correct return value of nsapi_dns_query_multiple5933
Add OpenOCD 5x launch file to e2 studio and update naming5929
Add pretty bars for compile output5901
Netbeans Exporter Bugfix5947
STM32L4 : add missing ST HAL UART functions5818
Enforce sector alignmnent for managed bootloader builds5936
STM32 : set all PinMap structures as weak5982
Wise 1510: fix a silent conflict with PR #59475630
Fix #5079. Support of call to mbedtls_x_finish without calling mbedtls_x_update5962
STM32: Fix usart irq index5909
Let libraries, targets configure bootloader5990
Correct SW4STM32 supported check5964
VS Code exporter: do not overwrite existing (launch|settings|tasks).json5984
EFM32: make peripherals conditional5987
Pre-processor common macro addition5994
allow use of external memory as heap with TOOLCHAIN_GCC_ARM5972
STM32F7: Add bootloader support (new trial)6012
STM32 SPI ASYNC - Add FIFO flush before transfer5419
Add absolute millisecond tick count to RTOS classes5876
lpc546xx and ff_lpc546xx: create parent object MCU_LPC546XX6026
Update uvisor-tests.txt to disable EFM32 in Jenkins5895
Add FileHandle tests5797
ARMC5+6: Specify CPU for ARM scatter file preprocessor6007
Take OUTPUT_EXT into account in managed bl6004
STM32L476/486: Improve SRAM usage for IAR6001
Corrects intermittent CLion exporter issue with cmake build directory6015
Add missing flash device feature to the K82F board6017
Correct auto-sizing last region of bl5914
Add Transaction class unit test.5970
RZ_A1LU: Fix TRNG function6027
rename MURATA type ABZ & WISE 1510 to their expected name6030
M33: -march not required if -mcpu is set5971
Ticker tests fix6036
DISCO_L072CZ_LRWAN1: move target folder6031
M23: Fix CThunk error on Cortex-M23Using 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 EMW3166Fixes and Changes
5831
Increase clock tolerance in Flash HAL test5808
ESP8266 Test Config and fixes for tests tcp_echo/tcp_hello_world5829
Fix: Sector/Size overflow from uint32_t5824
DISCO_F407VG : alignment with other STM325787
STM32: Add support of Flash API for STM32F2 devices5760
Add notes about ISR safety to RTOS doxygen5749
STM32 LOWPOWERTIMER : introduce LPTIM feature5731
mesh-api documentation removal5623
Clarify TCPSocket::recv() and UDPSocket::recvfrom() documentation.5456
platform: make C++ allocation wrappers log the correct caller address5727
Add presentation format descriptor support for nRF5x5855
Allow overriding of DCDC settings per target5846
littlefs: Fix block addr overflow5854
Fix for Silicon Labs RTC5795
STM32 STDIO pins number are now configurable5791
STM32 CAN: fix wrong ID and MASK filter5862
STM32 LPT optimisation5867
BLE: Fix inclusion of BLE.h (case)5880
Nuvoton: Add gpio_is_connected5858
RTL8195AM - move region headers to 0xb000 and 0xc0005870
NSAPI: Add Nanostack multicast membership support5761
littlefs: Fix issue with immediate exhaustion and small unaligned storage5819
Add COMMON folder for tests5836
Thread commissioning fix5882
Add MTB MTS_Dragonfly as a new target.5877
Kinetis USB improvements and fixes5878
LPC USB stability fixes5800
Some enhancements for the USBHost feature and small bug fix4719
mbed Enabled certificate for the VBLUno51 board5532
Exporter for Netbeans GCC_ARM5889
Provide fix for issue #5835 - Tickers update should be atomic5866
RTX idle: sleep without locked deep sleep fix5864
CoAP v4.1.15821
STM32F7: Add bootloader support5896
STM32LX : HAL_RCC_OscConfig update in PLL configuration5898
Remove RTC as a supported peripheral for NCS365105894
STM32: fix serial 7bit data format5890
RZ_A1H: cmsis nvic include fix5844
ST-DISCO_L475VG_IOT01A: Improve SRAM use for IAR toolchain5903
STM32F407 : correct ARM scatter file5932
Revert “STM32F7: Add bootloader support”5937
Update CMSIS pack5938
MTB_XX : STDIO configuration5934
NUCLEO_F401RE : PeripheralPins file update5928
littlefs: Set specific hash for littlefs-fuse testing in Travis5920
Fix issue with MBED_11 test (mbed2)5918
NXP LPC4088: Add missing SPI SSEL pin to Pinmap5913
Add missing EFM32 HAL flash init/deinit function calls5912
CriticalSectionLock: fixing missing include5910
fix typos in lint.py5907
STM32F0: fix issue with usarts sharing the same irq vector5874
USB fixes and improvements5942
Remove tickless assert for tick count5476
add cmake exporter for CLion use5087
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 boardFixes and Changes
5776
STM32: Add support of Flash API for STM32F0 and STM32F1 devices5253
Add missing device_name for targets with bootloader5435
Tests for wifi emac interface5570
STM32 UART init update5595
fix nordic critical section5606
Enable tickless on nRF528405673
mem_trace tests refactoring5697
STM32: Add support of Flash API for STM32F3 devices5703
AD: Fix ADC driver5737
lp_timer test : add a minimum delta value4925
NUC472/M487: Refine code with mbed TLS crypto alternatives5651
ff_lpc546xx: add enet, change led1 and led3 pins5708
Add minimal debug info to release and develop profiles.5747
STM32 : Fix issue to exit deepsleep when RTC has not been initialized5775
Correct memap path handling on windows5782
littlefs: Fix positive seek bounds checking5794
Commit to fix the Online compiler issue for ARM mbed-os on REALTEK_RT5807
Simple typo fix in the README.md5792
STM32F0 : ST CUBE version update to V1.9.05739
BLE: Nordic pal client implementation5722
Fix bug allowing SPI::abort_transfer to incorrectly unlock deep sleep mode5721
Fix bug allowing I2C::abort_transfer to incorrectly unlock deep sleep modeUsing 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 Ethernet5745
K64F Ethernet: avoid using NULL thread during init5734
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 list5693
Enable IAR export for EV_COG_AD3029LZ and EV_COG_AD4050LZ5691
Nordic add app_start config system support for NRF52840 for bootloader5628
Reregistration GR-PEACH as mbed support board5681
Adding bootloader support to MK24F1 target5755
Fix for #5676 make.py generates duplicate file entries in link_files.txt5743
Greentea wifi test cases - disconnect done as teardown after each connect5614
platform: fix mem_trace trace level guard5617
STM32: USBHost clean-up5733
Access to serial device is allowed when DEVICE_SERIAL is defined5723
Remove destruction of WiFi interface in test runs5613
Added init for ODIN EVK LEDs to be off by default5770
Renesas: fix cmsis lib buildUsing 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 boardFixes and Changes
5627
ADI: Add ARMC6 compatible code5610
STM32 - CAN - Fix RTR position bit in TX mailbox register5605
[TESTS/NETWORK] Split Wi-Fi test for secure & unsecure tests5598
Remove unnecessary inclusion of an internal RTX header5581
Remove custom Silicon Labs sleep management5577
REALTEK_RTL8195AM Wifi driver - adds check of credentials validity5576
Ethernet tests update5567
STM32: Add USB Device on DISCO_F413ZH5489
Correct pack_* members to refer to PACK files5469
Unity framework : add float support in error print5459
STM32 Low Power Timer feature updates5678
Add caching of apt-get + pip to .travis.yml5667
STM32: Fix CAN35657
Correct typo? in e2studio exporter code5648
Add SingletonPtr test5635
Protect local static object construction in ARMCC5729
Travis: define matrix builds for mbed 2 jobs5687
Statically allocate ARMCC required mutex objects5715
Fixed call to deprecated get_details_txt5707
Add IAR exporter for STM32L475VG (mcu of DISCO_L475VG_IOT01A)5698
STM32 : correct compilation issue with USE_FULL_ASSERT macro5677
C030 Battery Charger Voltage Fix5670
Nanostack EFR32 flag fix5649
Fix greentea test mbed-os-tests-netsocket-connectivity5644
Readme updates for style and branding5587
Fix fatal parameter error when deleting/terminating Thread object5568
Greentea Wifi testcase fixes5470
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 port5113
STM: I2C: Configure pins in OpenDrainNoPull by default (no pullup)5200
Extend nRF51 AnalogIn voltage range to 3.6 V5210
STM32: Add ADC calibration for L4, F1, F3 devices5238
Include doxygen from test directories5028
Update ticker to map closely to hardware5325
Add fix for Timer test - provide missing get_info ticker interface5365
Remove redundant ISR test5385
SlicingBD: Replace second constructor with default parameter5369
Add API to set ticker IRQ handler5088
UARTSerial: Add flow control and format APIs5410
BLE: Deprecate GapEvent5158
RTOS: Add empty and full functions to Mail and Queue5393
Deprecate CallChain and InterruptManager5428
Shrink RTOS classes5426
BLE: Fix initialization of GattHVXCallbackParams in Nordic port3648
Add ConditionVariable to Mbed RTOS5328
equeue: Add config option to use different timer classes5295
BLE: Gap platform abstraction layer5058
CircularBuffer(): Get available transactions5471
Increase flash program granularity on Realtek RTL8195AM5342
Update CMSIS/RTX with Cortex-A support5508
Fix and add test for ConditionVariable5485
Platform: Allow copy of noncopyable objects5475
BLE: Update heart rate service definition5392
Improve BLE docs5296
BLE: Generic access service abstraction layer5196
Add IPv4 and IPv6 multicast implementation for UDPSocket5407
Python script to add CMSIS/RTX changes in mbed-os5299
BLE: Generic event filter5513
STM32: Initialize ADC peripheral for each AnalogIn object creation5528
Use retarget defines when possible5549
BLE gatt server doc update5561
Definition for stat was missing in header file5466
Make POSIX-like writes write everything when blocking5511
Nanostack OSS release for mbed-os-5.75583
Remove pointless null check in operator delete5601
Update ODIN drivers to v2.3 RC15596
Make LDREX/STREX CAS functions strong5593
BLE: Fix greater than or equal to comparison in GattCharacteristic5592
BLE: Fix GattServer::write on Nordic targets.5490
Upgrade ChanFs to R0.13a5300
BLE pal event queue5602
Nanostack release v7045538
Integrate littlefs into Mbed OS5675
Update Cortex-A build errors5685
Export: Fix link in gettingstarted template5688
Mesh fix for Mbed OS 5.7 OOB5704
Fixed LWIP k64f ethernet driver IPv6 multicast groups5701
BLE doxy fixesUsing 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 EFR32We’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_seek5512
DISCO_L072CZ_LRWAN1 can use LSE from LORA module5518
STM32F407VG: Fix RTC5323
malloc test refactoring5483
heap_and_stack test refactoring5516
lpc546xx: fix adc5521
STM32: Add USB Device on DISCO_F429ZI5525
Fixed: errno update failure with IAR8.x5535
NUCLEO_L432KC: Fixed async serial5539
Prevent traceback when memap fails to parse5553
Nuvoton: fix lpticker interrupt5454
Nuvoton: TRNG_Get support 32 bytes unalignment5360
threads test adjust to run on devices with small RAM5526
Fixed mutex assert in armcc fopen and related memory leak5616
Support bootloader for DISCO_F429ZI5611
Realtek RTL8195AM A3 fix5609
LPC546XX: Add ENET support5585
Fix issue with timer timebase on EFR325589
Nordic: Set handle of user description descriptors.5584
Upgrade to Silicon Labs HAL5580
DISCO_F746NG: add usp_speed configuration5579
Upgrade Silicon Labs radio driver to v2.1.15565
STM32: SPI 3 wires mode not supported in SPI slave5550
Fix bug in K64F trng_api.c5531
RTL8195AM - refactor bootloader and fota supportUsing 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-AD3029LZThere 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 support5344
add new target L-Tek FF-LPC546XX5305
New Target: Mbed Connect Cloud board5144
Add support for ADI EV-COG-AD4050LZ platform.5231
Add support for RedBear’s BLE Nano 25137
Add support for ADI EV-COG-AD3029LZ platformFixes and Changes
5291
Add RealTek WiFi test configuration5394
ONSEMI: Fix a few issues related to I2C5445
test: realtek net config default to none5463
STM32F412 IAR linker file issue5455
STM32 Flash 2MB GetSector fix5453
Increase flash size on Realtek RTL8195AM5436
STM32: Extend Ethernet RMII workaround5430
malloc test: change stack array to two dimensional array5428
Shrink RTOS classes5425
RtosTimer tests update5422
Add bootloader support for DISCO_L475VG_IOT01A5270
Fix for Nanostack threading on EFR32 devices5390
ncs36510: fire interrupt correct timer fix5372
Doxygen comments fixes5370
event queue test: fix out of memory for NUCLEO_F070RB5322
LPC1768: Fix ETHMEM_SECTION placement for ARM5319
Remove build warnings in LWIP5432
HEXIWEAR: define HEXIWEAR target to support bootloader.5464
Fix lockup issue for REALTEK_RTL8195AM5473
Reorganize defines for firmware updates on Realtek RTL8195AM5474
Limit size of equeue for sigio netsocket test5510
M487/NUC472/NANO130: fix TRUE/FALSE redefinition5505
STM32: HAL smartcard, fix memory corruption in Receive5499
Remove mbed-cloud-client-example-internal.5486
STM32: Add support of CAN35487
Fix bug for issue: initial pin value not retained5482
DISCO_L072CZ_LRWAN1: HSE clock configuration improvement5472
BLE: Update BatteryService documentation.5452
ONSEMI: Fix I2C issues5403
Provide fixes for Timer and LowPowerTimer tests.5261
Extends test set for Ticker class4825
Silicon Labs: Add cryptographic acceleration support5335
Fix for configurable network driver tests5547
Revert Shrink RTOS classesUsing 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 port4650
NUCLEO_L496ZG: Add new PlatformFixes and Changes
5354
Activate FLASH hal support on 2 STM32 boards5179
STM32: TRNG: remove call to deprecated HAL_RNG_GetRandomNumber5188
NUCLEO_F207ZG: Analogout improvement5260
RTL8195AM - Fix IAR ielftool zero-padding issue5317
Tools: Check for toolchain and core support for Arm Compilers5340
MCUXpresso: Fix issue of ticker interrupt incorrectly firing5347
MCUXpresso: Fix LPTimer issue when using multiple timeout objects5324
doxygen: Change FileSystemHandle group to platform5352
Fix us_ticker collision and race for RTL8195AM5327
STM32: Remove compilation warnings4936
Add MemoryPool test.5320
Fix ethernet API build warnings for LPC40885332
Improve domain handling and status checking of updated examples.5375
ChainingBlockDevice: fix changing blocks address5376
mail test: fix out of memory problem for NUCLEO_F070RB5377
semaphore test: fix out of memory problem for NUCLEO_F070RB5415
Remove include from assember in makefile exporter5359
Support TMPM066 in IAR export5379
race test: fix out of memory problem for NUCLEO_F070RB5391
Copy edit pull_request_template.md5395
Resolve doxygen warning in filesystems docs5047
Test set for LowPowerTicker class5373
fs: Correct errno when not finding a mounted filesystem5399
STM32F4/STM32L4: remove MSP template file5338
malloc test: fix out of memory problem for NUCLEO_F070RB5400
Beetle BLE: Fix variable length GATT attribute5405
Ensure Thread stack is 8 byte aligned5409
BLE: Update iBeacon documentation.5411
STM32: Ethernet: Workaround for STM32_F767 revA5413
Collect build artifacts, disable cleanupUsing 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 platformFixes and Changes
5038
Lpc1768 bootloader support5077
Added interface version information to mbed detect command.5084
Allow exporters for NUCLEO_L486RG5199
Add quotes to preprocessor path on export5212
Merging changes from ATParser towards parser unification5255
Prevent use of deleted ticker in Ticker test5019
Fix an incorrect comment in ticker API5157
NUC472/M453/M487/NANO130: Add updates for Nuvoton targets5161
Implement functional Wifi tests5192
Moved STDIO_UART defines for UBLOX_EVK_ODIN_W25232
RTL8195AM - Fix and cleanup mbed_rtx.h5229
Fix documentation of BLE GattCharacteristic5272
Fix echo test handshake and reduce uart load4898
Enable crypto HW acceleration for STM32F437xG platforms4971
Add test for Timer class.5086
Sleep: Disallow sleep for targets turning off the systick clock at sleep entry5147
Test: deepsleep() API replacement5187
nRFx: Use us ticker for I2C timeout5216
Avoid wait_ms() spin5074
Add Low Power Timer test.5223
Fix analogin scaling for EFM32 target5224
Fix branch updates and make Linux compatible5228
Add bootloaderd support to NUCLEO_F446RE target5247
Add profile argument to mbed-os example build tools5250
lwIP: Add memory configs to JSON5252
Enable MPL by default for 6LoWPAN-ND.5263
STM32: Fix analogout structure/variable wrong initialization5264
Error if OS tickrate is changed5269
STM32: Initialize RTC structures at init phase.5287
Updated u-blox ODIN-W2 binaries to 2.2 rc15288
STM32: Add alternate pins on NUCLEO 32pins boards5289
STM32: RTC: Call irq_handler whenever interrupt fires5292
Update HeapBlockDevice example5275
uVisor: Upgrade to v0.31.05337
Add additional note on the HeapBlockDevice constructor block parameter5315
Fix behaviour of empty .mbedignore5246
Remove debug print from memap IAR impl5243
Basic test refactoring4989
add flash iap and bootloader support to K66F4947
Rtostimer tests5042
RTL8195AM - Respect Toolchains paths in post bulid script.5081
Extends test set for EventFlags class5278
Move heap_and_stack tests to TESTS/mbed_bootstrap5326
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 update4994
missing includes for filesystem.cpp (build with VisualGDB fails)5166
Force preprocessing of asm for make_armc55165
Platform: Replace non throwing versions of new operator.5197
Fix LPC54114 vector table size4961
Check for mbed 5 support on export4979
STM32: USBDevice files clean-up4982
Update K66F to SDK 2.25016
Fix cellular APN_db.h lookup.5032
mts targets: fix debug() usage5095
Release deep sleep lock in destructor of Timer class5177
PWMOut: lock deesleep addition5027
cb: Fix uninitialized memory used for equality check5026
STM32: Lock / Unlock flash for each operation5171
STM32L432KC: increase RAM size from 48k to 64k5183
fs: Fix dir open during failure condition4990
Add flush to the BLE UART Service5045
Ticker class description update - small interval warning5050
RZ_A1H: Correct CAN Message ID and recetption rate in extended mode5062
InterruptIn: Use NULL callback by default5099
Move clock() function from mbed_rtc_time.cpp to mbed_retarget.cpp.5193
Omit libraries and tests from tools coverage numbers4795
Add configurable network driver tests5066
UARTSerial: Avoid readable() ambiguity5148
Enable deepsleep for LowPowerXXX objects5006
Extends test set for Ticker class5029
Adjust whitespace in Odin PinNames file to fit verbose LED pin mappings5033
Mapped lwip buffer error to nsapi no memory error5052
Support VK_RZ_A1H with ds5 & e2studio exporters5078
Enable access to kernel tick information in ISR5141
LPC54608: Swap LED pin connections to match naming on the board5152
Kinetis RTC HAL: Allow writing 0 to the seconds register5176
EFM32: fix fire interrupt (set flags)5182
tools/toolhains - Test for flag passing in constructor5089
STM32 : Disable HSE XTAL choice from the default clock source5098
Doxygen comment fix for Thread class5105
Cortex-M33: Add RTX5 context switcher files5130
STM32: Freeze master timer on stop/breakpoint5194
Ensure us_ticker is initialized before it is used5207
NRF5x: Don’t allocate GPIOTE in DigitalIn5208
STM32F7 : Fix RTC Wake Up Timer issue5162
Change LPC54608 to LPC546XX to include support for LPC54608/18/285242
Fix LowPowerTimer and nightly builds5249
Nanostack v6.2.25220
Fix deep sleep lock bugs5203
fs: Fix fstat retarget for regular files5237
examples: remove eddystone ble examples5240
Add retry to handle git clone failure5204
fs: Add missing retarget definitions for ARM/IARUsing 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_L476VGContents
Ports for Upcoming Targets
4973
Add new target: L-TEK FF1705Fixes and Changes
4980
Stm32 flash update5138
Fix redefinition of mbed TLS error codes5143
RTL8195AM - Fix us_ticker porting4932
Fix STM32 CAN reset to not lose context5061
Travis: Fix requirements install5018
Fix use of AES_ALT on STM32F439 for example-tls-client5080
mbedtls: Disable MD5, SHA1, SHA256 HW ACC for STM32F439xI5096
Remove direct use of us and lp ticker from tests4983
bd: Tweaked block device API to fit SD cards and FTLs better5000
flash: add note about program size4993
LPC1768 IAP Fix4684
Add thread terminate hook4968
Add bootloader support for NXP FRDM-KW24D4965
Add heap stats for IAR4779
Fixed sw4stm32 exporterUsing 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 ofInvalid line start
andUnknown opcode __FPU_PRESENT
. - Workaround: Remove the
mbed-os
directory, and recreate it from the upstreammbed-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 IAR4944
STM32: F1 GPIO: Enable AFIO clock4950
M487: Support USB device/host4951
UBLOX_EVK_ODIN_W2- add BUTTON1/2 definitions4954
Fix ISR powerdown in mbed_application.c4934
mbedtls: STM32F439xI: Don’t enable AES acceleration by default5001
Update mbed-coap to version 4.0.104933
test: fix stats depth variable scope4963
K66F,KW24D,K22F,K64F: Fix NVIC_NUM_VECTORS value4939
Fix crashes on boot on some Kinetis devices4929
STM32F4: Increase ADC sample time for VREF4945
Extends test set for Mail class4975
Stm32 spi 3 wires mode support4992
Fix BLE API docs4995
Add LED color remapping definitions to Odin target4996
Reduce K64F Ethernet driver to 1 thread4997
Correct LWIP_DEBUG definition5013
MTS targets: Don’t use any printf() calls when NDEBUG is defined4924
Adjust Stack size Allocation (IAR, LPC176x)4776
Remove use of internal RTX types4881
[STM32F401xE] Freeze master timer on stop/breakpoint4984
Unify mbed OS tools testing style with what’s used in mbed-ls, htrun, greentea4665
Enable sdram usage of REALTEK_RTL8195AM4958
Add bootloader support for DISCO_L476VG5055
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 STM32F439xIPorts for Upcoming Targets
4608
Support Nuvoton’s new target NUMAKER_PFM_M4874840
Add Support for TOSHIBA TMPM066 boardFixes and Changes
4801
STM32 CAN: Fix issue with speed function calculation4808
Make HAL & US tickers idle safe4812
Use DSPI SDK driver API’s in SPI HAL driver4832
NUC472/M453: Fix several startup and hal bugs4842
Add call to DAC_Enable as this is no longer done as part4849
Allow using of malloc() for reserving the Nanostack’s heap.4850
Add list of defines to vscode exporter4863
Optimize memory usage of wifi scan for REALTEK_RTW8195AM4869
HAL LPCs SPI: Fix mask bits for SPI clock rate4873
Fix Cortex-A cache file4878
STM32 : Separate internal ADC channels with new pinmap4392
Enhance memap, and configure depth level4895
Turn on doxygen for DEVICE_* features4817
Move RTX error handlers into RTX handler file4902
Using CMSIS/RTX Exclusive access macro4923
fix export static_files to zip4844
bd: Add ProfilingBlockDevice for measuring higher-level applications4896
target BLUEPILL_F103C8 compile fix4921
Update gcc-arm-embedded PPA in Travis4926
STM32L053x8: Refactor NUCLEO_L053R8 and DISCO_L053C8 targets4831
Remove excessive use of printf/scanf in mbed_fdopen/_open4922
bug fix: xdot clock config4935
STM32: fix F410RB vectors size4940
Update mbed-coap to version 4.0.94941
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 boards4765
Add support for the VBLUno52 boardFixes and Changes
4620
Extend tests for RTOS Thread class4640
STM32L1 Flash API and xDot bootloader support4664
STM32: Fix the CAN initializing to the wrong frequency4676
Correctly enable / disable InterruptIn Edges detection4682
Test: RTOS: Semaphore: Rework tests4687
STM: cleanup mbed_rtx.h file4708
Enable greentea testing on CM3DS_MPS2 target4733
Prevent double define in very old builds4718
Toolchain: Add a note about weak functions and header files4732
Correct DAC pin assignment4727
Update UART3 pins for UBLOX_C030 platform.4745
WIZnet W7500*: Remove support for RTC4751
Remove redundant ODIN-W2 target folder4662
BLE/HRM : Fix #46614740
STM32 : Clock source selection in json config file (PR2)4696
Max32630 UART: Fix IRQ dispatching and CTS/RTS line configuration4615
Add set_baud() method to UARTSerial().4706
Fix inconsistent mbed-trace dummy defines and original function declarations4721
REALTEK_RTL8195AM: FlashIAP read and address scope4717
STM32: Remove i2c_read() and i2c_write() redirects to HAL_I2C_IsDeviceReady()4726
Update ATCmdParser example code4731
Boot: Make ARMC library mutexes dynamic4734
Avoid data loss with serial interrupt used at high baudrates4754
Resolve TLS handshake failing issue for REALTEK_RTL8195AM4756
Fix #4613: remove duplicated startup files for MICRONFCBOARD4762
DISCO_L475VG_IOT : pin update4764
STM32F0 : remove unavailable pins4774
Add support for runtime test specification4775
Fix non-portable defines4778
Add AES HW encryption for NUCLEO_F756ZG in mbedtls4782
mbed-hal: Fixed flash test4793
STM32 I2C : correct async issue4794
NUCLEO_F767ZI : boot issue with GCC4714
Expose SystemCoreClock via cmsis.h to support new CMSIS/RTX4744
Allow user to set default transfer byte for block read4807
LPC MCUXpresso: fix write_fill argument for block write function4742
Deprecate unsupported exporters4729
RTOS: Mutex: Rework tests4715
Nanostack+mbed-client libservice update4738
ONME-3113: Fix GCC_ARM and ARM compiler warnings from mbed-mesh-api4755
Bluepill: hse config fix4790
Improve documentation for memory stat ops4800
Fix infinite calling loop4804
Copy static files onlyUsing 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 cellular4531
Update branching option to branch from another branch.4672
Cellular: not-supported error if MODEM_ON_BOARD not defined4468
Put quotes around include files4685
Rename runnig_thread to running_thread in rtx_mutex4163
STM32L486RG/mbedtls: add aes hw acceleration4659
Add the correct startup s file in TARGET_STM32F7674215
Add script to lint targets.json4711
added the missing verbose=verbose to printout the command line correctly at build_api.py4710
Correct a typo in the github issue template4636
Double escape defines in gnuarmeclipse export4635
_acquire() function added & removed duplication in format/freq calls4548
Resolve Warnings for mbed-os-examples4547
Sort the config parameters before printing them4546
Fix bad test print and move locks for printf into macro.4599
Update timing tests to be robust4720
FlashIAP: Add explicit read function to flash_api.h4525
Improve the startup code on the STM32F0704561
fatfs: Add full support for multiple fs volume prefixes4674
Fix LED4 for UBLOX_EVK_NINA_B14749
tools: fix toolchain extend inc paths4747
Remove unused header files includes for REALTEK_RTL8195AM4736
NRF52832: Extend idle thread stack size to 512 bytes.4707
STM32: serial: use proper macro to check interrupt4699
STM32L0 : internal ADC channels4694
DISCO_L475VG_IOT01A: typo corrections in PeripheralPins.c4693
Nordic: Fix multiple defined symbol.4691
STM32: F4: Increase ADC sampling time for VBAT4677
Increase default PPP stack size from 512 bytes to 768 bytes.4668
DISCO/NUCLEO_F429ZI: Enable all alternate functions and pins4667
Update and mute debug messages of REALTEK_TRL8195AM4666
Fix timing issues found in “Flash - clock and cache test”4652
fatfs: Fix unaligned access in disk_ioctl4592
[ONME-3089] - Adjust lowpan ND interface connect timeout4634
Fix the issue #4357: NRF52 doesn’t support simultaneous use of I2C and SPI.4725
Parse and use custom targets in exportersUsing 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 platform4629
Add support for VBLUno51 boardKnown 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 definitionsFixes and Changes
4578
Turn off “browse information” in Uvision template4616
Fix unresolved include of mbed_config.h in Eclipse4375
Stm32 spi : use LL API to improve performances4401
STM32 : Add USB used pins in PinNames.h files4520
Update link in CONTRIBUTING.md4103
Add extra_targets.json support to build tools4390
Nucleo-F070RB It doesn’t work when use internal clock4405
DISCO_L072CZ_LRWAN1: PC_13 definition missing in PinNames.h fix4426
Improve directory scanning performance4538
Avoid lock collision b/w SerialBase & UARTSerial4552
NUCLEO_F767ZI: Add missing IAR definitions4557
Enable I2C and Analogin drivers for CM3DS_MPS2 target4572
DISCO_L072CZ_LRWAN1: Add support of USB Device4157
NUCLEO_F439ZI/mbedtls: add SHA1 hw_acceleration4422
STM32F4 set HSE timeout value to 100ms4594
Introduce mbed::NonCopyable traits4598
Fix style issues in IAR exporter4604
cmain IAR: add mbed main4607
bd: Fix missing init in MBRBlockDevice4603
STM32 : mbed_overrides.c is common for all families4638
DISCO_L475VG_IOT01A: Fix startup files for cmsis54610
STM32 : targets.json file simplification4647
Remove hardcode UART pins definitions for nRF52832 SoC4646
RTX: Fixed RTXv5 mutex owner list handling.4625
Update STM32F7 cube from v1.6.0 to v1.7.04421
STM32 : Clock source selection in json config file4559
fatfs: Remove unused fat_filesystem_set_errno function4571
events: Adopt osEventFlags from RTX 54577
XDOT_L151CC: enable HSI after waking from stop mode so ADC functions4601
rtos: Fix MemoryPool and Queue destructor4632
STM32: fix us ticker set event timestamp double ISR possibility4641
Increase L0 ADC sample time4656
Correct comments in flash api for STM32 L0 targets4671
retarget: fix microlib for mbed 24529
Manage multiple instances of analog out4565
Add FlashIAP support for REALTEK_RTL8195AM4159
NUCLEO_F439ZI/mbedtls: add SHA256 hw_accelerationUsing 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
andDISCO_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
target4242:
DISCO_L475VG_IOT01A
: Add new targetFixes 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 scripts4563: 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
andUBLOX_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/40973991: 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/41754179: 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/41674048: 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/42844291: 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/43164319: 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/43854381: 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/45084511: 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
andsha1WithRSAEncryption
. 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 insubjectAltNames
return aBADCERT_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.
- Description: mbed TLS accepts X.509 certificates that use the following signature algorithms:
-
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
license4332: 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 defined4368: MTS_DRAGONFLY_F411RE/MTS_MDOT_F411RE: Add IAR to post_binary_hook toolchains
4455: Make
mbed-coap
fixesUsing 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 environment4187: [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 removeprogen
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
redefinition4224: Add
mbed new .
output to export4190: 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 scripts4107: 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 warning4168: Generate GNU ARM Eclipse
.mbedignore
file with jinja24170: Fix include paths for Windows builds
4173: Fix Traceback in CMSIS export
4142: [EFM32] Fixed
pwmout_all_inactive
being inversed3888: [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 template4172: 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:
- Initial CMSIS5 and CMSIS-RTOS2 upgrade
- Integration points for Hardware Acceleration of Symmetric and Asymmetric Encryption
- Introduction of native LoRaWAN APIs
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
- Description: The mbed-os-example-sockets program doesn’t work when building with IAR
- Workaround: None
- Reported Issue: https://github.com/ARMmbed/mbed-os/issues/3387
NUMAKER_ PFM_NUC472 does not work with uvision
- Description: Error says IPv4 or IPv6 must be enabled
- Workaround: None
- Reported Issue: https://github.com/ARMmbed/mbed-os/issues/3418
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 functionssl_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 supersedesFunctionPointer
(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.
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.
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:
- The mbed Enabled requirements documents, available on the site.
- The mbed Enabled application form.
Targets
Thanks to our partners’ hard work, including an onsite workshop, the mbed OS 5.1 release already supports the following targets:
- Seeed Arch Pro (ARCH_PRO)
- Silicon Labs Pearl Gecko (EFM32PG_STK3401)
- HEXIWEAR
- NXP K22F (K22F)
- NXP K64F (K64F)
- NXP KL25Z (KL25Z)
- NXP KL46Z (KL46Z)
- NXP LPC1768 (LPC1768)
- Embedded Artists LPC4088 (LPC4088)
- Embedded Artists LPC4088_DM (LPC4088)
- Maxim - (MAX32600MBED)
- Maxim – MAXWSNENV
- MultiTech Dragonfly F411RE (MTS_DRAGONFLY_F411RE)
- MultiTech mdot F411RE (MTS_MDOT_F411RE)
- Nordic nRF51-DK (NRF51_DK)
- Nordic nRF52-DK (NRF52_DK)
- Nuvoton NUC472 (NUMAKER_PFM_NUC472)
- Renesas GR-PEACH (RZ_A1H)
- ST B96B_F446VE (B96B-F446VE)
- ST Discovery F429ZI (DISCO_F429ZI)
- ST Discovery F469NI (DISCO_F469NI)
- ST Discovery F746NG (DISCO_F746NG)
- ST Discovery L476VG (DISCO_L476VG)
- ST Nucleo F070RB (NUCLEO_F070RB)
- ST Nucleo F072RB (NUCLEO_F072RB)
- ST Nucleo F091RC (NUCLEO_F091RC)
- ST Nucleo F103RB (NUCLEO_F103RB)
- ST Nucleo F303RE (NUCLEO_F303RE)
- ST Nucleo F401RE (NUCLEO_F401RE)
- ST Nucleo F410RB (NUCLEO_F410RB)
- ST Nucleo F411RE (NUCLEO_F411RE)
- ST Nucleo F429ZI (NUCLEO_F429ZI)
- ST Nucleo F446RE (NUCLEO_F446RE)
- ST Nucleo F746ZG (NUCLEO_F746ZG)
- ST Nucleo F767ZI (NUCLEO_F767ZI)
- ST Nucleo L073RZ (NUCLEO_L073RZ)
- ST Nucleo L152RE (NUCLEO_L152RE)
- ST Nucleo L432KC (NUCLEO_L432KC)
- ST Nucleo L476RG (NUCLEO_L476RG)
- U-blox C027 (UBLOX_C027)
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.