Skip to content

mbed-os-6.0.0-beta-1

Pre-release
Pre-release
Compare
Choose a tag to compare
@adbridge adbridge released this 11 May 14:18
· 4916 commits to master since this release
1b2a68a

We 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

12941

Summary of changes

Chrono changes "optimised" Timeout::handler in a way that broke users who rescheduled the timeout during their attached callback.

Attempted optimisation is less necessary now that platform.callback-nontrivial is set to false by default - that setting reduces overhead of copying the Callback to almost nothing.

Fixes #12940.

Correct core RTOS sleep routine timing

12938

Summary of changes

Chrono conversions inadvertantly changed the core timed sleep routine used by the RTOS idle to use OsTimer::update_and_get_tick() instead of OsTimer::get_tick().

Correct this, and expand/clarify documentation and naming to try to prevent recurrence.

Another minor fix observed while inspecting code - OsClock can't just use milliseconds, it should match the period of OsTimer, which theoretically can be different.

Fixes #12920.

Remove unsupported targets

12935

Summary of changes

This is another of a series of PRs (others #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

12889

Summary of changes

Applications can reduce their ROM usage by replacing
"\r\n" by "\n".

Impact of changes

Breaks compatibility with applications built with Mbed 2.

Migration actions required

Update to the latest version of Mbed OS (possibly using the bare metal profile for ultra-constrained devices).

Bare metal profile: USB class device support

12873

Summary of changes

USBCDC_ECM class device uses RTOS thread APIs, so added MBED_CONF_RTOS_PRESENT conditional check to disable that class device in bare metal profile.

Impact of changes

With these changes, except USBCDC_ECM, all the below list of USB class devices can build and works in bare metal profile.

  • USBAudio
  • USBHID
  • USBKeyboard
  • USBMIDI
  • USBMouse
  • USBMouseKeyboard
  • USBMSD
  • USBSerial

Migration actions required

None.

Remove unsupported targets

12864

Summary of changes

This is the third of a series of PRs (others #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

12853

Summary of changes

  • Update scatter file for the ARM toolchain to use 2 region memory model.
    The scatter file changes affect the following boards:
  • LPC1768, ARCH_PRO, UBLOX_C027, XBED_LPC1768 (LPC1768.sct)
  • Remove the TOOLCHAIN_ARM_MICRO directory.
  • Remove release_version as not necessary and as the target can also run
    Mbed OS 6.
  • Remove uARM toolchain in the list of supported toolchains for the target.
  • Indicate that the target supports the small ARM toolchain C library.

Impact of changes

It is no longer possible to use the uARM toolchain to build binaries for the ARCH_PRO board.

Migration actions required

Set the "target.c_lib" configuration option to "small" to build binaries using Microlib with the ARM toolchain.

Allow Devicekey::generate_root_of_trust() to define key size.

12823

Summary of changes

Allow Devicekey::generate_root_of_trust() to define key size.

By default, generate 16 byte keys, to be compatible with bootloader.
But allow user to generate 32 byte keys as well.

This fixes #12821

Impact of changes

Default key, generated by Devicekey::generate_root_of_trust() is now 16 bytes,
instead of 32 bytes.

Migration actions required

If you want to generate 32 byte keys with Devicekey::generate_root_of_trust(),
you need to explicitly supply key size as a parameter.

Remove deprecated Platform header files

12811

Summary of changes

Remove the deprecated header files as part of the Mbed 6 cleanup.

Impact of changes

Breaking change: Applications that include the removed files will no longer successfully build.

Migration actions required

Include the header files recommended in each removed header file:

platform/critical.h -> platform/mbed_critical.h
platform/mbed_sleep.h -> platform/platform/mbed_power_mgmt.h
platform/rtc_time.h -> platform/mbed_rtc_time.h
platform/semihost_api.h -> platform/mbed_semihost_api.h
platform/sleep.h -> platform/mbed_power_mgmt.h
platform/toolchain.h -> platform/mbed_toolchain.h
platform/wait_api.h -> platform/mbed_wait_api.h

Remove unsupported targets

12810

Summary of changes

This is the second of a series of PRs (first #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

12792

Summary of changes

Removing targets: Seeed Arch Link, Seeed Arch-RO359B, Seeed Arch BLE, Seeed Tiny BLE, Seeed Arch GPRS V2,Seeed Xadow M0

LittleFSv2: Bring in v2.2

12783

Summary of changes

Introduces LittleFSv2.2 developed by @geky. Mbed OS adaption (LittleFSv1 -> LittleFSv2) is based on work done by @pilotak. The only thing the undersigned has done was to create this PR.

Impact of changes

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

12775

Summary of changes

This is the first of a series of PRs to remove targets that are not supported or retired as explained in recent blog post.

There are individual commits to remove targets from targets.json and files/folders for the corresponding targets.

Impact of changes

The following targets are being removed:

  • Thundersoft (all)
  • Realtek RTL8195A
  • Ublox ODIN and related (OKDO, MTB)
  • RDA (all)
  • Gigadevice GD32_E103VB
  • Atmel (all)
  • TI (all)
  • Etteplan Elmo
  • Wiznet (all)
  • Silica
  • Renesas VK_RZ_A1H
  • Rename MTB_MXCHIP_EMW3166 to WIO_EMW3166
  • VBLUNO51 and VBLUNO52

Migration actions required

  • The targets listed above continue to be available in the 5.15 branch.

Callback: Trivial default

12761

Summary of changes

Turn off callback.non-trivial by default to save ROM space.

Follow-up to #12036. Will need at least one example changed to turn the option back on.

Impact of changes

  • If application code uses Callback with a non-trivial functor, they will get a compilation error directing them to turn on platform.callback-nontrivial.

Migration actions required

  • Add "platform.callback-nontrivial": true to your mbed_app.json if a build error indicates that it is required - or change your code to only use trivial functors in Callback.

BLE: remove deprecated APIs from Gatt and SecurityManager

12742

Summary of changes

  • Remove deprecated APIs from Gatt
  • Remove deprecated APIs from SecurityManager

Impact of changes

Deprecated APIs from Gatt and SecurityManager do not exist anymore, applications that use them will not compile until updated with current APIs.

Migration actions required

Applications that compile without deprecation warnings on mbed-os-5.15 will continue to work. Otherwise, please fix any deprecated API usages, for example by referring to compilation warnings from mbed-os-5.15.

Add Semtech Lora radio drivers

12741

Summary of changes

Add Semtech Lora radio drivers for SX1272, SX1276 and SX126x radios.
Added as subtree from original repository: https://github.com/ARMmbed/mbed-semtech-lora-rf-drivers

Impact of changes

Enable using Lora with no additional repositories, all of them part of Mbed OS.

Migration actions required

None

Remove Mbed SPM

12738

Summary of changes

Remove FUTURE_SEQUANA and FUTURE_SEQUANA_M0 targets. These are not supported in Mbed 6.

After the removal of FUTURE_SEQUANA targets, there are no targets remaining that use Mbed SPM. Remove Mbed SPM as well, as it is unused.

Impact of changes

The following targets are being removed in Mbed 6:

  • FUTURE_SEQUANA
  • FUTURE_SEQUANA_M0

Migration actions required

Please use a version of Mbed OS 5 if you require support for FUTURE_SEQUANA or FUTURE_SEQUANA_M0

Remove PSA implementation for v8-M and dual CPU targets

12737

Summary of changes

With Mbed 6, TrustedFirmware-M (TF-M) is the source of Mbed's implementation of PSA. This means Mbed 6 doesn't need to contain any code or tooling to build the v8-M or dual CPU secure binaries.

This patch set removes tooling, code, and targets that would have been used to make PSA secure binaries for v8-M or dual CPU platforms.

Impact of changes

  • NXP LPC55S69 and Numaker M2351 support is temporarily dropped as compared to Mbed 5, as those targets are not supported in TF-M upstream.
  • Exporters for v8-M and dual CPU PSA targets are not supported, due to TF-M limitations.
  • It is no longer possible to use Mbed to build v8-M or dual CPU secure binaries.
  • The following targets are removed compared to Mbed 5:
  • ARM_MUSCA_A1_S
  • ARM_MUSCA_B1_S
  • LPC55S69_NS
  • LPC55S69_S
  • HANI_IOT
  • NU_PFM_M2351_NS
  • NU_PFM_M2351_S

Migration actions required

Use Mbed 5.15 if you require PSA targets with exporter support, or one of the removed targets. LPC55S69 and Numaker M2351 will be supported in Mbed 6 at a later date, after the targets are supported by TF-M.

rtos: Improve CMSIS-RTOSv2 app compatibility

12736

Summary of changes

Some non-Mbed-OS, pre-existing CMSIS-RTOSv2 applications depend on
CMSIS-RTOSv2 Automatic Dynamic Allocation, also known as Object-specific
memory pools. Mbed OS doesn't by default provide any memory to the
CMSIS-RTOSv2 Automatic Dynamic Allocation pool, as doing so would waste
memory if the feature is not used; even if the feature is used, as a
platform, Mbed OS can't know how many objects of which types will be
created by an application and therefore will either waste memory or not
provide enough memory in a hard to debug manner. Portable CMSIS-RTOSv2
applications depending on CMSIS-RTOSv2 Automatic Dynamic Allocation
should instead configure the memory pools themselves, as applications
know best their memory requirements.

Add Mbed configuration options which can be used by applications to
control the amounts of memory available to the CMSIS-RTOSv2 Automatic
Dynamic Allocation subsystem. This enables portable CMSIS-RTOSv2
applications, which can run on any CMSIS-RTOSv2 OS, to be able to run on
Mbed OS as well.

Signed-off-by: Devaraj Ranganna [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

12733

Summary of changes

This is a preparation for more upcoming changes. The latest master updates removed deprecated functionality and these targets do not compile anymore.

Impact of changes

Boards based on the ODIN module won't compile in Mbed OS 6.0.0.

Migration actions required

Staying with Mbed OS version up to 5.15.x.

BLE Gap deprecation cleanup/rework

12730

Summary of changes

  • Remove BLE LegacyGap class and implementations. Map ble::Gap to global Gap.
  • Add non-deprecated APIs (originally found in LegacyGap) to Gap and implementations into GenericGap.
  • Remove/replace legacy BLE event signalling (callback chains) in favour of EventHandler, where possible.
  • Remove BLEProtocol:: and replace AddressType_t with own_address_type_t/peer_address_type_t, AddressByte_t with address_t, etc.
  • Replace BLE::Address_t (for accessing address types + values in whitelists) with the new equivalent whitelist_t::entry_t.
  • Rename ConnectionParams_t -> PreferredConnectionParams_t and use it only for Generic Access Service.
  • Fix misspelt central_privay_configuration_t -> central_privacy_configuration_t
  • Remove legacy type definitions and replace internal usages with new types, e.g. address types, disconnection reason, etc.

Notes:

  • setDeviceName(), getDeviceName(), setAppearance(), getAppearance() from LegacyGap are removed, as device name and appearance can be set via AdvertisingDataBuilder and saved by the application. But there were previously no deprecation warnings for them.
  • get/setPreferredConnectionParams() are dropped from Gap - updated versions will be added to Gatt where they should belong to.

Impact of changes

Legacy BLE Gap APIs and related type definitions are no longer available.
Some APIs have been updated to take parameters of new type definitions of address types + values.

Migration actions required

  • Applications based on up-to-date BLE APIs should be able to make most BLE function calls as before.
  • However as mentioned above some deprecated types (e.g. address) were not warned previously - their usages need to be replaced with corresponding new types. The best clue is compilation errors which can be manually fixed. The PR to update mbed-os-example-ble is an example of how to do this: 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

12715

Summary of changes

  • Removed ethernet_api from targets\TARGET_RENESAS\TARGET_RZ_A1XX.
  • Modified features\netsocket\emac-drivers\TARGET_RZ_A1_EMAC not to use ethernet_api.

targets:MIMXRT1050: Add QSPI flash support

12711

Summary of changes

targets:MIMXRT1050:

  1. QSPI Flash boot support
  2. QSPI Flash FLASHIAP support
  3. Update link file for application and bootloader

Remove compatibility for Arm Compiler versions prior to 6.01.0050

12708

Summary of changes

Removed the pre-processor directive __ARMCC_VERSION >= 6010050 and the code added for versions before 6.01.0050.

Impact of changes

Breaking change: The binary generated from ARM Compiler 5 cannot be relied on as support has been dropped.

Migration actions required

Use Arm Compiler 6

Tests: Remove support for ARM Compiler 5

12706

Summary of changes

ARM Compiler 5 is no longer actively supported and was superseded in
Mbed OS by ARM Compiler 6.

Impact of changes

Breaking change: The binary generated from ARM Compiler 5 cannot be relied on as support has been dropped.

Migration actions required

Use Arm Compiler 6.

mbed-client-cli: Remove support for ARM Compiler 5

12705

Summary of changes

ARM Compiler 5 is no longer actively supported and was superseded in
Mbed OS by ARM Compiler 6.

Impact of changes

Breaking change: The binary generated from ARM Compiler 5 cannot be relied on as support has been dropped.

Migration actions required

Use Arm Compiler 6.

TFM: Remove ARM Compiler 5 considerations

12702

Summary of changes

ARM Compiler 5 is no longer actively supported and was superseded in
Mbed OS by ARM Compiler 6.

Impact of changes

Breaking change: The binary generated from ARM Compiler 5 cannot be relied on as support has been dropped.

Migration actions required

Use Arm Compiler 6.

Storage: Remove support for ARM Compiler 5

12699

Summary of changes

ARM Compiler 5 is no longer actively supported and was superseded in
Mbed OS by ARM Compiler 6.

Impact of changes

Breaking change: The binary generated from ARM Compiler 5 cannot be relied on as support has been dropped.

Migration actions required

Use Arm Compiler 6.

Drivers: Remove support for ARM Compiler 5

12698

Summary of changes

ARM Compiler 5 is no longer actively supported and was superseded in
Mbed OS by ARM Compiler 6.

Impact of changes

Breaking change: The binary generated from ARM Compiler 5 cannot be relied on as support has been dropped.

Migration actions required

Use Arm Compiler 6.

Remove netsocket icetea tests and TCPServer

12694

Summary of changes

Remove deprecated Netsocket Icetea tests and TCPServer class.

Impact of changes

  • Netsocket Icetea tests are removed
  • TCPServer class removed

Migration actions required

  • Use Netsocket Greentea tests (TESTS/netsocket)
  • TCPSocket can be used instead of TCPServer

Remove deprecated netsocket methods

12685

Summary of changes

Remove deprecated methods from netsocket

Impact of changes

Deprecated methods in netsocket (since Mbed OS 5.1) are removed.

Migration actions required

InternetSocket::attach -> Use Socket::sigio
TCPSocket(S *stack) -> Use default TCPSocket constructor and call open separately
UDPSocket(S *stack) -> Use default UDPSocket constructor and call open separately

SocketAddress rework

12683

Summary of changes

Original work: #12468 . This PR contains also the UT fix.

  • Add optimised constexpr default constructor. Default construction was previously by a heavyweight defaulted nsapi_addr_t parameter.
  • Remove deprecated resolving constructor.
  • Take nsapi_addr_t inputs by constant reference rather than value.
  • Inline the trivial getters and setters.
  • Use unique_ptr to manage the text buffer.
  • Make operator bool explicit.
  • Optimise some methods.
  • Update to C++11 style (default initialisers, nullptr etc)

Impact of changes

  • Constructor deprecated in Mbed OS 5.1 removed.
  • Code size reductions, particularly on default initialisation.
  • Implicit assignments to bool or int or others no longer possible - any existing code which does not compile is most likely an error. (if (sockaddr) is still fine - such "contextual conversions to bool" can use the explicit operator).

Migration actions required

  • Code attempting resolution by passing a hostname to SocketAddress's constructor must be modified to use NetworkInterface::gethostbyname or NetworkStack::gethostbyname.
  • Code failing due to the now-explicit bool operator should be reviewed to check intent.

Remove deprecated BLE:: APIs and unsupported services

12676

Summary of changes

  • Remove deprecated APIs from BLE namespace.
  • Remove DFUService, UARTService and beacon-related services (iBeacon, EddyStone) whose standards/stacks are externally maintained.

Impact of changes

  • Legacy APIs in BLE namespace are no longer available.
  • DFUService, UARTService and beacon-related services (iBeacon, EddyStone) are no longer available.

Migration actions required

  • Applications that use legacy APIs in BLE namespace need to be updated to use up-to-date APIs.
  • Applications based on removed services can copy the service definitions over from previous mbed-os releases (with deprecated API usages manually fixed), or provide their own implementations.

Remove Maxim and SoftDevice BLE stacks which do not support the latest APIs

12674

Summary of changes

  • Remove Nordic SoftDevice stack (used by nRF51* targets). Notes: nRF52* targets are unaffected as they use Cordio stack.
  • Remove the current Maxim BLE stack (until a newer version based on up-to-date Cordio stack becomes available).
  • Disable BLE features of affected targets from targets.json.

Note: Some references/macros for SoftDevice are still present in the Nordic SDK (targets/TARGET_NORDIC/*) and not cleanly separated with other components.

Impact of changes

  • BLE feature will be unavailable on nRF51* targets and temporarily unavailable on Maxim targets until the driver gets updated in the future.

Migration actions required

  • For nRF51* targets, use Mbed OS release 5.15 - future support for those targets are under review.
  • For nRF52* targets, ensure the default BLE configurations that enable Cordio stack is used.
  • For Maxim targets, use Mbed OS release 5.15 until the BLE driver gets updated.

Remove deprecated ARMC5 reference from mbed compile -S output

12672

Summary of changes

Removed deprecated ARMC5 reference from mbed compile -S command output.

Impact of changes

With these changes, mbed compile -S will not produce any ARMC5 reference.

Migration actions required

None.

Netsocket/lwIP Stack: Remove support for ARM Compiler 5

12671

Summary of changes

ARM Compiler 5 is no longer actively supported and was superseded in
Mbed OS by ARM Compiler 6.

Impact of changes

Breaking change: The binary generated from ARM Compiler 5 cannot be relied on as support has been dropped.

Migration actions required

Use Arm Compiler 6.

Remove ARMC5 reference from Mbed OS platform

12655

Summary of changes

Removed ARMC5 reference from Mbed OS platform.

Impact of changes

Breaking change: The ARMC5 references are removed from platform as they have been deprecated in a previous Mbed OS release.

Migration actions required

Use Arm Compiler 6

Removed all references to __CC_ARM

12654

Summary of changes

Removed ARMC5 reference from FEATURE_BLE.
ARM Compiler 5 is no longer supported in Mbed OS and is superseded by ARM Compiler 6

Impact of changes

Breaking change: The ARMC5 references are removed from platform as they have been deprecated in a previous Mbed OS release.

Migration actions required

Use Arm Compiler 6

Remove minimal-printf extension profile

12640

Summary of changes

Removed minimal-printf extension profile. Usage of minimal-printf library is enabled via the target.printf_lib configuration parameter as described in minimal-printf README, see https://github.com/ARMmbed/mbed-os/tree/master/platform/source/minimal-printf#usage for more details.

Impact of changes

Applications can no longer use the obsolete minimal-printf extension profile.

Migration actions required

Usage of minimal-printf library is enabled via the target.printf_lib configuration parameter, see https://github.com/ARMmbed/mbed-os/tree/master/platform/source/minimal-printf#usage for more details.

Remove the deprecated ethernet hal APIs

12639

Summary of changes

Removed ethernet hal deprecated APIs.

Impact of changes

Breaking change: The Ethernet hal APIs are removed as they have been deprecated in a previous Mbed OS release.

Migration actions required

  • EthInterface is now the preferred way to get an Ethernet object.
  • Alternatively, use NetworkInterface to get an instance of an appropriate network interface (WiFi or Ethernet).

Add "rtos-api" to bare metal

12629

Summary of changes

Added the bare metal form of the RTOS API since it doesn't add any overhead (except for a little extra compilation time) and has the benefit of minimising differences between RTOS and bare metal modes.

Impact of changes

RTOS APIs are available in bare metal mode.

Migration actions required

None

Remove Semaphore deprecated APIs

12609

Summary of changes

Removed Semaphore deprecated APIs.

Impact of changes

Breaking change: Semaphore wait and wait_until methods have been deprecated since Mbed OS 5.13 and are removed now.

Migration actions required

Use Semaphore acquire, try_acquire, try_acquire_for and try_acquire_until methods.

Netsocket: Introduce set_ip_address and get_dns_server APIs

12606

Summary of changes

set_ip_address API can be used to set a static IPv4 address or IPv6 link-local address to network stack. This is needed for example in cellular use cases where device gets multiple IP addresses from cellular context.

With get_dns_server DNS servers can be queried from NetworkInterface object

Fully enforce NonCopyable

12581

Summary of changes

Make NonCopyable fully operational so it gives compile errors in all build profiles.

This removes the deprecated copy operators which let code compile with a warning.

Impact of changes

Code that copies non-copyable classes will now not compile in any profile - previously a link error would have been generated in debug profile, but other profiles would have only generated a "deprecated" warning at compile time and a debug message at runtime.

Migration actions required

Modify code to not copy non-copyable objects. Any code doing so would have likely led to problems such as memory leaks.

Remove mbed wait deprecated APIs

12572

Summary of changes

Removed mbed wait deprecated APIs.

Impact of changes

Breaking change: wait and wait_ms APIs have been deprecated since Mbed OS 5.14 and they are removed now.

Migration actions required

If you wish to sleep, use ThisThread::sleep_for (C++) or thread_sleep_for (C). If you wish to wait (without sleeping), call wait_us. wait_us is safe to call from ISR context.

Replace with weak mbed_error_hook implementation (deprecate the hook function)

12569

Summary of changes

mbed_set_error_hook() can only be called inside the application. Therefore it is not possible in the application to catch errors before calling mbed_set_error_hook().
I thought it would be simpler to create a mbed_error_hook() function which is weak and the application can catch errors at any time.

Impact of changes

None

Migration actions required

Replace mbed_set_error_hook() with an application specific mbed_error_hook() implementation.

Add property API to InternetSocket

12522

Summary of changes

Add new API to network interface.

Property API allows application to ask network specific properties
from the InternetSocket . Queried information can be used to avoid
network congestion by adjusting transmission jitter and retry
timeouts.

C++ Chrono support

12425

Summary of changes

Add Chronos versions of time-related APIs to RTOS classes, Ticker-related classes and EventQueue.

Kernel::Clock, HighResClock, LowPowerClock and RealTimeClock act as the Chrono clocks. (C++ standard clocks system_clock, steady_clock and high_resolution_clock are not supported, due to difficulty in consistent retargetting across toolchains).

Deprecate old non-Chrono APIs.

Impact of changes

Existing timing code will generate deprecation warnings, but there should be no functional change.

A follow-up PR will clean-up warnings in rest of code base.

Migration actions required

Users should migrate to use Chrono-based APIs as directed by the deprecation messages

Remove the deprecated RawSerial, UARTSerial, Serial

12410

Summary of changes

  • Removed RawSerial, Serial, UARTSerial deprecated classes.
  • Removed SerialBase deprecated APIs.

Impact of changes

Breaking change: RawSerial, Serial, UARTSerial classes have been deprecated since Mbed OS 6.0.0 and they are all removed now.

Migration actions required

Use BufferedSerial and UnbufferedSerial for serial communication.

Add get_time function to ESP8266

12300

Summary of changes

Fixes #12192.

get_time() function allows access to (S)NTP functionalities of ESP8266 module.

I considered using std::chrono instead of ctime's std::tm, but then - to convert to chrono::time_point we'd have to go through std::tm anyway or write our own parser, which I just managed to avoid.

Side note: using std:: introduces some warnings due to -D_LIBCPP_EXTERN_TEMPLATE(...)= flag being used in all our compilation profiles. This flag seems obsolete and I hope I will get it removed soon.

I cannot really add any tests, as they are using WifiInterface::get_instance() to get the interface and there is no RTTI, that would allow casting to ESP8266Interface to call get_time(), but I tested the function locally and it works fine.

Impact of changes

None, other than user can check time with ESP8266Interface.

Migration actions required

None

Make cypress psoc64 TFM ready and also add TF-M initialization

12271

Summary of changes

Non-secure core IPC, Mailbox and Interface init for TFM_DUALCPU and TFM_V8M targets

These changes concentrate on getting mbed-os(Non-secure) working with TF-M(secure)
Changes reflect towards any Cypress based TFM_DUALCPU targets and TFM_V8M targets at the moment and making it more generic in the near future.

Key changes:

  • Init IPC, Mailbox and Non-secure Interface.
    These changes are for TFM_DUALCPU and TFM_V8M platforms.
    The initialization happens after mbed-os kernel is kicked off and
    when the thread is up and running.

We are initializing the following for TFM_DUALCPU platforms:

  • IPC Interrupts for syncing multi-core platforms.
  • NS Mailbox to receive messages.
  • NS interface.

We are only initializing a Non-secure interface for TFM_V8M platforms.

  • Cypress: CY8CKIT_064S2_4343W: Reserve timer channels used by TF-M.
  • Make CY8CKIT_064S2_4343W Cypress target TF-M compatible.

Impact of changes

This impacts CY8CKIT_064S2_4343W, TFM_V8M and TFM_DUALCPU targets.

Migration actions required

None

Callback extension and optimisation

12036

Summary of changes

Extend Callback, and optimise it.

Impact of changes

  • Optimise clearing by adding nullptr overload.
  • Optimise clearing by not clearing storage - increases code size of comparison, but that is extremely rare.
  • Reduce ROM used by trivial functors - share copy/destroy code.
  • Config option to force trivial functors - major ROM saving by eliminating the "operations" table.
  • Config option to eliminate comparison altogether - minor ROM saving by eliminating zero padding.
  • Conform more to std::function API.

Migration actions required

  • The added nullptr overload means Callback(NULL) or Callback(0) will no longer work; users must use Callback(nullptr) or Callback().

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.