mbed-os-6.0.0-beta-1
Pre-releaseWe are pleased to announce the Mbed OS 6.0.0-beta-1 release is now available.
Summary
This is the last pre-release before we make the full 6.0.0 release. It contains the remainder of the breaking changes and any other significant updates.
Migration Guide
This section lists specific changes which are part of this release and may need special attention.
Correct Timeout rescheduling
Summary of changes
Chrono changes "optimised" Timeout::handler
in a way that broke users who rescheduled the timeout during their attached callback.
Attempted optimisation is less necessary now that platform.callback-nontrivial
is set to false by default - that setting reduces overhead of copying the Callback
to almost nothing.
Fixes #12940.
Correct core RTOS sleep routine timing
Summary of changes
Chrono conversions inadvertantly changed the core timed sleep routine used by the RTOS idle to use OsTimer::update_and_get_tick()
instead of OsTimer::get_tick()
.
Correct this, and expand/clarify documentation and naming to try to prevent recurrence.
Another minor fix observed while inspecting code - OsClock
can't just use milliseconds
, it should match the period of OsTimer
, which theoretically can be different.
Fixes #12920.
Remove unsupported targets
Summary of changes
This is another of a series of PRs (others #12775, #12810, #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 #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
- USBSerial
Migration actions required
None.
Remove unsupported targets
Summary of changes
This is the third of a series of PRs (others #12775, #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 #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.h
Remove unsupported targets
Summary of changes
This is the second of a series of PRs (first #12775) to remove targets that are not supported or retired as explained in recent blog post.
There are individual commits to remove targets from targets.json and files/folders for the corresponding targets.
Impact of changes
The following targets are being removed:
- MTBs (most)
- nRF51/52 (most)
- Ublox NINA B1
- LPC11u (most)
- Misc unsupported
Migration actions required
- The targets listed above continue to be available in the 5.15 branch.
Seeed: Removing unsupported Seeed targets for OS 6
Summary of changes
Removing targets: Seeed Arch Link, Seeed Arch-RO359B, Seeed Arch BLE, Seeed Tiny BLE, Seeed Arch GPRS V2,Seeed Xadow M0
LittleFSv2: Bring in v2.2
Summary of changes
Introduces LittleFSv2.2 developed by @geky. Mbed OS adaption (LittleFSv1 -> LittleFSv2) is based on work done by @pilotak. The only thing the undersigned has done was to create this PR.
Impact of changes
None
Migration actions required
Brings in LittleFSv2 which will coexist with LittleFSv1 already found from Mbed OS. If you already a v1 filesystem you might try converting it to v2, but this isn't guaranteed to succeed. You should preferably create a new v2 filesystem instead.
Remove unsupported targets
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-drivers
Impact of changes
Enable using Lora with no additional repositories, all of them part of Mbed OS.
Migration actions required
None
Remove Mbed SPM
Summary of changes
Remove FUTURE_SEQUANA
and FUTURE_SEQUANA_M0
targets. These are not supported in Mbed 6.
After the removal of FUTURE_SEQUANA targets, there are no targets remaining that use Mbed SPM. Remove Mbed SPM as well, as it is unused.
Impact of changes
The following targets are being removed in Mbed 6:
FUTURE_SEQUANA
FUTURE_SEQUANA_M0
Migration actions required
Please use a version of Mbed OS 5 if you require support for FUTURE_SEQUANA
or FUTURE_SEQUANA_M0
Remove PSA implementation for v8-M and dual CPU targets
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 [email protected]
Signed-off-by: Jaeden Amero [email protected]
Impact of changes
Applications written for CMSIS-RTOSv2 that use CMSIS-RTOSv2 Automatic Dynamic Allocation can now also run on Mbed OS, when the application specifies how much memory to use in their mbed_app.json
. CMSIS-RTOSv2 docs claim that Automatic Dynamic Allocation is "fully portable", and now that's at least more true than before where Mbed is concerned.
The TF-M regression tests are a concrete example of an application written making use of CMSIS-RTOSv2 Automatic Dynamic Allocation. We have an incredibly easier time running (and maintaining) those tests with Mbed OS, validating the TF-M integration with Mbed OS does not break TF-M functionality, when Mbed OS supports application-configured CMSIS-RTOSv2 Automatic Dynamic Allocation.
Migration actions required
None
odin targets: remove release version
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: ARMmbed/mbed-os-example-ble#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.
targets:MIMXRT1050: Add QSPI flash support
Summary of changes
targets:MIMXRT1050:
- QSPI Flash boot support
- QSPI Flash FLASHIAP support
- Update link file for application and bootloader
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
-> Use Socket::sigio
TCPSocket(S *stack)
-> Use default TCPSocket
constructor and call open
separately
UDPSocket(S *stack)
-> Use default UDPSocket
constructor and call open
separately
SocketAddress rework
Summary of changes
Original work: #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
output
Summary of changes
Removed deprecated ARMC5 reference from mbed compile -S
command output.
Impact of changes
With these changes, mbed compile -S
will not produce any ARMC5 reference.
Migration actions required
None.
Netsocket/lwIP Stack: Remove support for ARM Compiler 5
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 6
Impact of changes
Breaking change: The ARMC5 references are removed from platform as they have been deprecated in a previous Mbed OS release.
Migration actions required
Use Arm Compiler 6
Remove minimal-printf extension profile
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
and wait_until
methods have been deprecated since Mbed OS 5.13 and are removed now.
Migration actions required
Use Semaphore acquire
, try_acquire
, try_acquire_for
and try_acquire_until
methods.
Netsocket: Introduce set_ip_address and get_dns_server APIs
Summary of changes
set_ip_address
API can be used to set a static IPv4 address or IPv6 link-local address to network stack. This is needed for example in cellular use cases where device gets multiple IP addresses from cellular context.
With get_dns_server
DNS servers can be queried from NetworkInterface object
Fully enforce NonCopyable
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
and wait_ms
APIs have been deprecated since Mbed OS 5.14 and they are removed now.
Migration actions required
If you wish to sleep, use ThisThread::sleep_for
(C++) or thread_sleep_for
(C). If you wish to wait (without sleeping), call wait_us
. wait_us
is safe to call from ISR context.
Replace with weak mbed_error_hook implementation (deprecate the hook function)
Summary of changes
mbed_set_error_hook()
can only be called inside the application. Therefore it is not possible in the application to catch errors before calling mbed_set_error_hook()
.
I thought it would be simpler to create a mbed_error_hook()
function which is weak and the application can catch errors at any time.
Impact of changes
None
Migration actions required
Replace mbed_set_error_hook()
with an application specific mbed_error_hook()
implementation.
Add property API to InternetSocket
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
and RealTimeClock
act as the Chrono clocks. (C++ standard clocks system_clock
, steady_clock
and high_resolution_clock
are not supported, due to difficulty in consistent retargetting across toolchains).
Deprecate old non-Chrono APIs.
Impact of changes
Existing timing code will generate deprecation warnings, but there should be no functional change.
A follow-up PR will clean-up warnings in rest of code base.
Migration actions required
Users should migrate to use Chrono-based APIs as directed by the deprecation messages
Remove the deprecated RawSerial, UARTSerial, Serial
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 #12192.
get_time()
function allows access to (S)NTP functionalities of ESP8266 module.
I considered using std::chrono
instead of ctime's std::tm
, but then - to convert to chrono::time_point
we'd have to go through std::tm
anyway or write our own parser, which I just managed to avoid.
Side note: using std::
introduces some warnings due to -D_LIBCPP_EXTERN_TEMPLATE(...)=
flag being used in all our compilation profiles. This flag seems obsolete and I hope I will get it removed soon.
I cannot really add any tests, as they are using WifiInterface::get_instance()
to get the interface and there is no RTTI, that would allow casting to ESP8266Interface
to call get_time()
, but I tested the function locally and it works fine.
Impact of changes
None, other than user can check time with ESP8266Interface.
Migration actions required
None
Make cypress psoc64 TFM ready and also add TF-M initialization
Summary of changes
Non-secure core IPC, Mailbox and Interface init for TFM_DUALCPU and TFM_V8M targets
These changes concentrate on getting mbed-os(Non-secure) working with TF-M(secure)
Changes reflect towards any Cypress based TFM_DUALCPU targets and TFM_V8M targets at the moment and making it more generic in the near future.
Key changes:
- Init IPC, Mailbox and Non-secure Interface.
These changes are for TFM_DUALCPU and TFM_V8M platforms.
The initialization happens after mbed-os kernel is kicked off and
when the thread is up and running.
We are initializing the following for TFM_DUALCPU platforms:
- IPC Interrupts for syncing multi-core platforms.
- NS Mailbox to receive messages.
- NS interface.
We are only initializing a Non-secure interface for TFM_V8M platforms.
- Cypress: CY8CKIT_064S2_4343W: Reserve timer channels used by TF-M.
- Make CY8CKIT_064S2_4343W Cypress target TF-M compatible.
Impact of changes
This impacts CY8CKIT_064S2_4343W, TFM_V8M and TFM_DUALCPU targets.
Migration actions required
None
Callback extension and optimisation
Summary of changes
Extend Callback
, and optimise it.
Impact of changes
- Optimise clearing by adding
nullptr
overload. - Optimise clearing by not clearing storage - increases code size of comparison, but that is extremely rare.
- Reduce ROM used by trivial functors - share copy/destroy code.
- Config option to force trivial functors - major ROM saving by eliminating the "operations" table.
- Config option to eliminate comparison altogether - minor ROM saving by eliminating zero padding.
- Conform more to
std::function
API.
Migration actions required
- The added
nullptr
overload meansCallback(NULL)
orCallback(0)
will no longer work; users must useCallback(nullptr)
orCallback()
.
Known Issues
There are no new known issues with this release.
Contents
Ports for Upcoming Targets
12787
Cypress: Add CYESKIT-064B0S2-4343W
12603
Add target CYSBSYSKIT_01
12576
M487: Support custom board
Fixes and Changes
12941
Correct Timeout rescheduling
12938
Correct core RTOS sleep routine timing
12935
Remove unsupported targets
12924
STM32F4 bypass PLL configuration when already done by bootloader
12919
ExhaustibleBlockDevice: revert commit 10481f2
12913
usbcdc: provide doxygen only macro for doxy builder
12889
Convert newlines on all terminal (tty) devices by default
12876
802.15.4 STM S2LP driver update
12874
nRF: use Mbed-default boot-stack-size & fix stack_size_unification test
12873
Bare metal profile: USB class device support
12872
Add the Doxygen note to non-supported RTOS kernel APIs.
12866
Update mbed-coap to version v5.1.5
12864
Remove unsupported targets
12860
STM32F7 update drivers version to CUBE V1.16.0
12855
Bare metal: Enable signals greentea test
12853
ARCH_PRO: Remove uARM tooolchain support
12852
Update mbed-coap to version 5.1.4
12850
Fix intermittent sync fail in tests-filesystem-general_filesystem
12849
TEST: Update example test
12846
Revert "Remove MTB_STM_S2LP target"
12844
Add invalid data case to tdbstore ram init
12843
enable storage tests on baremetal
12841
Drops prebuild bootloaders not supported in Mbed OS 6
12840
Musca-B1: Grant Non-Secure access for MHU0 on EXP0
12839
Nuvoton: netsocket correction of judgment errors
12833
Override c_lib to small for all targets
12830
Cellular: Fix BG96 offloaded DNS query for new API
12828
Update CYSBSYSKIT_01
12827
enable common tickers & lp_tickers hal tests in baremetal mode
12825
Turn on ARM linker --inline
12823
Allow Devicekey::generate_root_of_trust() to define key size.
12819
Cypress: Fix unitialized memory in spi_master_write
12818
Add the Doxygen note to non-supported RTOS and Driver class.
12817
Cellular: Disable AT traces when mbed-trace is disabled
12816
Baremetal: Enable Semaphore greentea test
12815
Cellular: Fix build problem if cellular.debug-at is set as null
12811
Remove deprecated Platform header files
12810
Remove unsupported targets
12804
Cellular: Check if serial is supported
12802
Nuvoton: Add 'sectors' configuration option into targets.json
12799
TDBStore: Handle odd number of sectors in block
12797
Add custom board option to STM32 pins generation script
12792
Seeed: Removing unsupported Seeed targets for OS 6
12791
Fix for IPv6 Dual Stack support
12787
Cypress: Add CYESKIT-064B0S2-4343W
12786
Baremetal: Enable kernel_tick_count greentea test
12785
Cordio: Apply Packetcraft's fix for possible SweynTooth vulnerabilities
12783
LittleFSv2: Bring in v2.2
12779
Baremetal: Enable EventFlags greentea test
12778
Add I2C api to Musca-B1 target
12775
Remove unsupported targets
12769
Fix WIFI-GET-RSSI test case failure and remove extra label from CYW9P62S1_43438EVB_01 in target.json
12768
ESP8266 Drv support baud-rate switch
12765
Update MTS_MDOT_F411RE target and remove bootloader from tools
12763
Cellular: Fix ATHandler::read_string to handle delimiter inside string
12761
Callback: Trivial default
12758
Fix: Return the correct std I/O device handle for Microlib in retarget code
12757
Update Mbed OS with Mbed Crypto merged into Mbed TLS
12755
Update astyle filtering rules for Nanostack
12754
Nanostack release for Mbed OS 6
12752
PSoC 62/63: set correct mbed_ram_start and mbed_ram_size
12748
Fix build failure due to C lib selected
12746
Removed Toshiba targets (AdBun-M066, M3H6 & M3HQ).
12745
add config option for phy media interface
12744
Change files in TARGET_SDT64B
12743
mergify: Add 5.15 rule
12742
BLE: remove deprecated APIs from Gatt and SecurityManager
12741
Add Semtech Lora radio drivers
12739
FIX: update usb device tests for deprecated API
12738
Remove Mbed SPM
12737
Remove PSA implementation for v8-M and dual CPU targets
12736
rtos: Improve CMSIS-RTOSv2 app compatibility
12735
Make MUSCA B1 and MUSCA A1 TF-M ready
12734
NUCLEO_WB55RG : enable IAR export
12733
odin targets: remove release version
12731
Testing: Fix multihoming test compilation issues
12730
BLE Gap deprecation cleanup/rework
12729
Mbedtls fixes
12728
STM32 EMAC : increase thread-stacksize
12719
FPGA CI TEST SHIELD: add test config json file
12716
M487: Update BSP
12715
RZ_A1H remove usage of ethernet hal API
12712
Fix LTO issue with minimal-printf
12711
targets:MIMXRT1050: Add QSPI flash support
12708
Remove compatibility for Arm Compiler versions prior to 6.01.0050
12706
Tests: Remove support for ARM Compiler 5
12705
mbed-client-cli: Remove support for ARM Compiler 5
12704
LWIP: propagate the apimsg->err out of netconn_apimsg()
12702
TFM: Remove ARM Compiler 5 considerations
12701
Add custom BT Firmware image for CYW9P62S1_43012EVB_01
12699
Storage: Remove support for ARM Compiler 5
12698
Drivers: Remove support for ARM Compiler 5
12696
rtos: declare vector table type as in Technical Note 11578
12694
Remove netsocket icetea tests and TCPServer
12693
USBMSD security updates
12692
EFM32G11: Add RGB LEDs to PinNames.h
12691
Replace small with std C lib if not supported by a target's toolchain
12690
STM32: solve GCC Unspecified RTOS error
12686
STM32 EMAC : remove TIMEOUT issue when cable is not plugged yet
12685
Remove deprecated netsocket methods
12683
SocketAddress rework
12682
MBED TRACE default level is INFO
12681
SPIFBlockDevice doesn't play nice on shared SPI bus #11732.
12680
QSPI driver also acquires ownership upon initialization now.
12679
PSoC6: enable export to uVision and IAR
12677
STM32H7: enable QSPI
12676
Remove deprecated BLE:: APIs and unsupported services
12674
Remove Maxim and SoftDevice BLE stacks which do not support the latest APIs
12673
Mergify update
12672
Remove deprecated ARMC5 reference from mbed compile -S
output
12671
Netsocket/lwIP Stack: Remove support for ARM Compiler 5
12670
ESP8266: Fix typo: gateway to netmask
12668
tests-integration-fs-threaded: makes tests independent from each other
12667
Add check for return code in DeviceKey to avoid injecting invalid ROT
12666
Makefile: render compatible with some GNU make versions (revert #12646)
12663
Migrate NUCLEO_F303K8 to Mbed OS 5 baremetal
12662
Add workaround for STM32F4 hardfault in sleep mode
12661
Adjusted SecurityManager Doxygen ASCII art
12660
M2351: Support custom board
12659
Rebuild WICED libraries after Mbed update
12658
tests-integration;tests-filesystem: fix code causing compiler warnings and enable more tests
12655
Remove ARMC5 reference from Mbed OS platform
12654
Removed all references to __CC_ARM
12652
Add moduletests for FileSystemStore
12651
Cellular: Make Quectel EC2x modem start up timeout configurable
12649
Expose SerialBase IrqType member to UnbufferedSerial class
12648
Nanostack: Add config for Wi-SUN device type
12646
Makefile: fix for overlong command line
12645
Storage: Use internal flash for KVStore always if default config
12642
M263: Support custom board
12640
Remove minimal-printf extension profile
12639
Remove the deprecated ethernet hal APIs
12638
Enable storage tests to all targets
12637
Cordio: fix for issue #12625
12636
Extend unit tests for TDBStore
12633
Cellular: Add offload TLSSocket implementation inside feature flag
12632
Fix snprintf in minimal-printf library
12631
Update psutils to address security issue
12630
mbed test with dual core targets
12629
Add "rtos-api" to bare metal
12626
STM32F4 update drivers version to CUBE V1.25.0
12624
Cellular: Support EC2x power control pin support no connect
12617
Correct doxygen for Mail::get
12612
TEST: add RTOS macro to enable integration test
12610
Add UBLOX_onboard_modem_api for power up UBLOX_C027.
12609
Remove Semaphore deprecated APIs
12607
Use toolchain's struct stat if available
12606
Netsocket: Introduce set_ip_address and get_dns_server APIs
12603
Add target CYSBSYSKIT_01
12589
Cellular: Add deativation of context associated with profile
12581
Fully enforce NonCopyable
12576
M487: Support custom board
12572
Remove mbed wait deprecated APIs
12570
Improve nsapi_create_stack
12569
Replace with weak mbed_error_hook implementation (deprecate the hook function)
12547
EFM32: update emlib to 5.9.1
12528
SFDP: consolidation of SFDP parsing [5/5]
12522
Add property API to InternetSocket
12472
Add WPA3 support in mbed-os for green tea tests
12463
Clean up and optimise socket statistics
12456
COMPONENT_BlueNRG_MS creation : ST Bluetooth Low Energy module
12425
C++ Chrono support
12410
Remove the deprecated RawSerial, UARTSerial, Serial
12387
Add Objects Extensions Configuration Parameter to HAL
12300
Add get_time function to ESP8266
12271
Make cypress psoc64 TFM ready and also add TF-M initialization
12161
nRF52 I2CSlave Implementation
12036
Callback extension and optimisation
11726
Disable C++ static destructors in ARMC6 compiler
11629
Refactor TDB internal bounds computation
Using this release
You can fetch this release from the mbed-os GitHub repository, using the tag "mbed-os-6.0.0-beta-1".
If you need any help with this release please visit our support page, which provides reference links and details of our support channels.