mbed-os-5.15.0
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-interval
they need to be removed or checked for validity.
Remove string-based API usage within mbed-os
See #11914 for deprecation information. This PR provides SocketAddress
-based APIs if they were missing after previous changes but does not remove the old APIs.
Summary of changes
New SocketAddress
based API added to ESP8266
module, anticipating future string-based API removal.
Impact of changes
None.
Migration actions required
None.
Updates to tools for Python 3 compatibility
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 parameter platform.stdio-minimal-console-only
has been added to select it.
Impact of changes
Smaller memory footprint for applications that only require basic console functionalities.
Migration actions required
None.
Deprecates NVStore
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 additional void *persistent_data
parameter to the slot validation callback, regardless of whether the persistent_data
will be used or not.
Old | New |
---|---|
psa_drv_se_validate_slot_number_t did not have a modifiable persistent_data parameter |
psa_drv_se_validate_slot_number_t now has a modifiable persistent_data parameter |
New declaration of psa_drv_se_validate_slot_number_t
:
typedef psa_status_t (*psa_drv_se_validate_slot_number_t)(
psa_drv_se_context_t *drv_context,
void *persistent_data,
const psa_key_attributes_t *attributes,
psa_key_creation_method_t method,
psa_key_slot_number_t key_slot);
Old declaration of psa_drv_se_validate_slot_number_t
:
typedef psa_status_t (*psa_drv_se_validate_slot_number_t)(
psa_drv_se_context_t *drv_context,
const psa_key_attributes_t *attributes,
psa_key_creation_method_t method,
psa_key_slot_number_t key_slot);
Check return of BlockDevice::init() in TDBStore.
TDBSTore::init()
is now allowed to return error codes from underlying BlockeDevice.
Previously, the API was limited to return only MBED_ERROR_READ_FAILED
or MBED_ERROR_WRITE_FAILED
, which might have hidden the actual error code from the device.
Now, the application will get the original return value passed from BlockDevice.
modified Wi-SUN tasklet to return success when calling connect twice
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
calls CellularDevice::clear()
to clean-up the modem on initial connect()
.
The previous functionality can be restored by defining the flag cellular.clear-on-connect: false
.
ESP8266 nonblocking connect/disconnect
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 before connect()
calls, where Mbed TLS based TLSSocket allows setting these before open()
call.
This PR also includes a reference implementation for BG96 cellular modem.
Add watchdog lower limit timeout test
watchdog_features_t
extended by two uint32_t
members: clock_typical_frequency
and clock_max_frequency
. These values can be used to determine the accuracy of an uncalibrated watchdog clock.
Introduce an Mbed config to enable XIP
Introduce XIP-enabled config to allow text/RO data to be loaded to QSPI flash where XIP (execute-in-place) is supported. This allows programs with larger text/RO data sections to run on a system with smaller on-chip flash.
This feature is disabled by default on all targets.
XIP can be enabled by adding target.xip-enable: true
in mbed_app.json
, then locating the text/RO data sections to QSPI flash region in the linker script. In the boot sequence, QSPI flash needs to be configured to XIP mode.
LwIP: Add ICMPv4 Socket support
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 into SerialBase
. The underlying serial peripheral is freed if both input and output are disabled to reduce current consumption. If either input or output is enabled again, the serial peripheral is reinitialized.
Tools: check for GCC 9, rather than 6
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: MicrochipTech/cryptoauthlib#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: #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 #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: #11428.
- Priority: Major.
ArmC5 builds may be broken
- Description: Some boards fail to build with Arm Compiler 5. Mbed OS uses Arm Compiler 6 by default for most of the builds. Arm Compiler 5 is deprecated and will be removed in Mbed OS 6.
- Workaround: Use ArmC 6, GCC or IAR.
- Reported issues: Various https://github.com/ARMmbed/mbed-os/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+%28ARMC5%2C+Mbed+OS+5.14%29
- Priority: Low.
Wi-SUN Hardfaults with IAR compiled image with Mbed OS 5.15.0
- Description: Mesh Wi-SUN FAN may HardFault in rare occasions with IAR8 compiled binaries during initial network connection.
- Workaround: Use other compilers.
- Reported Issue: IOTTHD-3898.
- Priority: Major.
Test report
OOB (out-of-box) testing
- Manual OOB testing has been carried out against 5.15.0 RC1/RC2/RC3.
- OOB testing is focused on the out-of-box experience with official Mbed OS examples.
Release automated CI testing
In addition to the regular pull request tests and nightly tests, we also ran branch tests for mbed-os 5.15.0-RC1/RC2/RC3.
CI pipeline tests
- Compilation tests: ARMC6 ALL PASSED
- Compilation tests: GCC_ARM ALL PASSED
- Compilation tests: IAR ALL PASSED
- Unittest ALL PASSED
- Greentea test SOME FAILS
- Example test ALL PASSED
- Exporter test ALL PASSED
- Cloud Client integration test ALL PASSED
- Memory usage test ALL PASSED
- Mbed 2 build test ALL PASSED
The Greentea test failures are:
- UBLOX_EVK_ODIN_W2 failed on network-wifi tests ---- Tracked by defect IOTPART-8659, waiting for Partner’s input for fixing.
- UBLOX_C030_U201 failed on netsocket tests ---- Tracked by defect ONME-4400, under investigation by Mbed teams.
- UBLOX_C030_U201 failed on LP_ticker tests ---- Tracked by defect IOTHAL-528, not a regression, under investigation by Mbed teams.
Test numbers:
- Greentea test number 1421 (-33 ).
- Unittest number 624 (+84 ).
Targets coverage:
In Mbed OS 5.15, compilation test targets scope has not changed. It remains the same for all Mbed OS enabled targets.
As of the Mbed OS 5.15.0 release, we run Greentea tests on 11 targets:
- NRF52840_DK.
- DISCO_L457VG_IOT01A.
- K64F.
- K66F.
- LPC55S69.
- NUCLEO_F303RE.
- NUCLEO_F411RE.
- NUCLEO_F429ZI.
- NUCLEO_F767ZI.
- UBLOX_C030_U201.
- UBLOX_EVK_ODIN_W2.
Compared to the Mbed OS 5.14.0 release, we have added testing for:
- NRF52840_DK.
And removed testing for :
- NUCLEO_F207ZG.
- NUCLEO_F746ZG.
- NUCLEO_F746NG.
Coverity
In this release, the number of Coverity issues has reduced from 77 to 49 ( -28).
Critical Coverity issues have reduced from 15 to 13 ( -2).
Code coverage
Test code coverage has been tracked, and the information is published on COVERALLS (https://coveralls.io/github/ARMmbed/mbed-os).
- Since the 5.14 release, we have had a code coverage base alignment leading to the inclusion of all the components of Mbed OS and a fixed code base.
- In the coverage base alignment, our code coverage dropped from 60% to 18%.
- Mbed TLS Mbed Crypto coverage data has been merged, and overall coverage has increased to 30%.
Memory monitoring
Mbed OS ROM size has increased by approximately 2.8K, mostly because of updating GCC6 to GCC9. (The std library increased by approximately 1.5K).
Other contributors to the ROM size increase include:
- nanostack-libservice +273.
- LWIPInterface.o +256.
- Netsocket +666.
- Storage - TDBStore +491.
Contents
Ports for upcoming targets
11886
Add target for CY8CPROTO-062S3-4343W
11846
Add support for Makerdiary nRF52840-MDK
Fixes and changes
11979
Bare metal Greentea tests compilation fixes
11978
LPC55S69_NS: Fix bare metal compilation error
11971
TDBStore: Unlock the master mutex even after garbage_collect()
11967
Fixed crashing nsapi_dns unittest
11966
Fix targets.json syntax errors
11963
STM32 USB: Add __HAL_RCC_PWR_CLK_ENABLE
11959
Minimal Console: Fix compilation error
11958
Add support for Wi-SUN RF channel configuration
11956
tests-mbed_hal-sleep_manager: Fix regression found on since PR #11721
11950
DISCO_H747I: Add support of MBED_TICKLESS
11949
Fix for ArmC5 compilation errors for some targets
11947
Minimal Console: Fix syntax errors
11944
Cypress: Minor fix for mbed astyle
11943
Split integration tests in fs/net
11941
Remove string-based API usage within mbed-os
11938
STM32: Update and align serial_clear implementations
11937
Cellular: Replace CellularSocket.rx_avail with pending_bytes
11936
DNS tests: Cancel asynchronous dns query if it times out
11935
Cellular: Mark to be deprecated in CellularDevice
11930
Add FlashIAP to NUCLEO_L4R5ZI
11928
Allow MBED_ASSERT to throw errors in unittests, so we can verify it
11926
Fixed Greentea FileHandle test for microlib
11925
Fixed Greentea minimal-printf test for microlib
11923
Cellular: Fix PPP to wait until connected event from (LWIP) PPP
11921
Updates to tools for Python 3 compatibility
11919
Cypress: FPGA: Improve SPI async calls
11918
IOTSTOR-978: Bug fixes to TDBStore and SecureStore
11915
TESTS: Fix TCP/TLS send_timeout test to nonblocking
11914
Deprecate string-based APIs in IPCore
11913
LPC55S69_NS default TDBStore size increased to 32kB
11911
Update mbed-coap to version 5.1.2
11908
I2C byte read/write transmission improvement
11901
Update MPN for CYW9P62S1_43012EVB_01 board
11899
Fixes to PR template
11895
TESTS: Allow ipv6_link_local_address() as unsupported
11892
Bring static pin map extension to master
11890
S2-LP: Sync with development repository
11889
Nanostack release for Mbed OS 5.15
11888
Pelion enable for UNO_91H
11887
Add target for CYW9P62S1_43438EVB_01
11886
Add target for CY8CPROTO-062S3-4343W
11885
Update to WHD 1.60 release
11884
Update Cypress targets
11882
DISCO_L475VG_IOT01A: Fix bare metal profile Greentea tests
11881
UBLOX_EVK_ODIN_W2: Fix bare metal build and Greentea tests
11877
Fix for sending IPv6 UDP packet over link local interface
11875
Bare metal: Fix Arm toolchain Greentea test compilation for NUCLEO_F411RE
11873
Make SMS configurable in Cellular stack
11870
STM32F7: linker scripts updates
11868
Cypress Target update to support Manufacturing Test
11867
Fix for Cypress GPIO driver (fix for issue #11835)
11865
IAR: Enable linker optimizations for develop/release profile
11851
Enable FAT ChaN lib configuration with mbed_lib.json
11846
Add support for Makerdiary nRF52840-MDK
11841
Wi-Fi: Reorder Greentea tests with minor fixes
11839
SerialBase.h|cpp [-Wreorder] compiler warning fix
11829
USB STM32: Don't wrap direct function calls in MBED_ASSERT
11827
DISCO STM32H747I ETHERNET support, but disabled
11825
Bare metal Greentea test for storage component
11824
Skip bare metal Greentea test for Network component
11821
Skip bare metal Greentea test for PSA component
11819
Add code to verify if external Wi-Fi module is still responsible
11811
STM32H7 FLASH API issue with M4 core
11808
Document Socket API functions return values
11796
mbed_retarget: Add a minimal console implementation to provide basic functionalities
11789
STM32H7: code and feature alignment for both NUCLEO and DISCO targets
11785
Deprecates NVStore
11783
Adding set baud rate routine
11773
Fix watchdog reset test
11755
Unittests for nsapi_dns
11735
Dns unittest preparation
11721
Bare metal Greentea support
11720
ATCmdParser: Merge scanf and recv functions
11713
Remove Tickless from STM32F4 targets
11711
STM32F7 update drivers version to CUBE V1.15.0
11701
Arm toolchain: heap setup micro-optimization
11687
Update to Mbed TLS 2.20.0d0 and Mbed Crypto 2.1.0d0
11682
Make FPGA tests to pass on CI targets (SPI, analogIn, PWM)
11675
STM32 USB update step 1
11654
Adjustment of netsocket tests to the lossy mesh network limitation.
11641
PmwOut: Add method to enable/disable PWM
11634
Serial design draft
11595
Check return of BlockDevice::init() in TDBStore.
11556
Modified Wi-SUN tasklet to return success when calling connect twice
11551
Coverity updates
11539
Enable DER coded certificate support to Wi-SUN mesh API
11535
DNS manual cleanup mechanism added
11514
ESP8266 unlocks deep sleep when disconnected
11480
Enable tickless mode in additional tested targets
11469
Cellular: Disable cellular.clear-on-connect by default
11463
Enable tickless mode in MAX32630FTHR
11460
ESP8266 Unified Mbed trace prints.
11459
Replaced in ESP8266::oob* recv() with scanf()
11444
QSPI : Define default pins at drivers level
11430
Member get_interface_name implemented in ESP8266Interface
11414
Cellular: Add API to clear CellularDevice
11409
ESP8266 nonblocking connect/disconnect
11357
Offloaded TLSSocket and BG96 support for it
11332
mbed_error.c: Better HW fault exceptions and stack dump
11203
Add watchdog lower limit timeout test
11032
Add test header files and defined behavior for APIs tested using FPGA-Test-Shield
11006
Introduce an Mbed config to enable XIP
10978
LwIP: Add ICMPv4 Socket support
10940
Deinitialize the pin definition
10924
Free serial resources if not needed anymore
10618
Tools: Check for GCC 9, rather than 6
12059
Config: Fix bootloader config errors - propagate errors
12058
Add static pin map support: SDBlockDevice, KVStore, system storage (reduce ROM used by Mbed Cloud Client example)
12047
NANO130: Fix OOM with packing algorithm at IAR linking
12039
Fix build errors for bare metal Greentea tests on NRF52840_DK
12033
static pin-map: patch for SerialBase class
12030
Updates the Cypress Wi-Fi Host Driver to 1.7.0
12006
FIX: Fix a bug introduced by static pin map
11991
TESTS: Fix integration tests
11983
Ublox Odin Driver OS 5 v3.7.1 rc3: Network-Wi-Fi Test Crash Fixes
11970
Avoid crashes during fault handler
12117
Storage features: fix static pin-map for ArmC5
12112
Notify on configuration exception rather than breaking build
Using this release
You can fetch this release from the mbed-os GitHub repository, using the tag "mbed-os-5.15.0".
If you need any help with this release, please visit our support page, which provides reference links and details of our support channels.