mbed-os-6.0.0-alpha-3
Pre-releaseWe are pleased to announce the Mbed OS 6.0.0-alpha-3 release is now available.
Summary
In this pre-release of Mbed OS 6.0 we continue the theme of general cleanup. We also switched the default implementation of the printf family functions to the minimal-printf library. We will publish a blog post with more details on the subject in the coming days as it may have implications on your code. This release intentionally breaks compatibility both with Mbed OS 5 series and previous Mbed OS 6 previews. For details of the breaking changes please have a look at the release notes below.
Migration Guide
This section lists specific changes which are part of this release and may need special attention.
Remove RtosTimer deprecated class
Summary of changes
Removed RtosTimer deprecated class.
Impact of changes
Breaking change: RtosTimer has been deprecated since Mbed OS 5.2 and it is removed now.
Migration actions required
Use EverntQueue as it provides similar functionality with the additional features to handle deferring other events to multiple contexts.
Change Mutex lock and unlock APIs return value to void
Summary of changes
Modified Mutex lock() and unlock() APIs to returnvoid
as return status value deprecated.
Impact of changes
Breaking change: Mutex lock()
and unlock()
methods return status value have been deprecated since Mbed OS 5.9, so changed the return value to void
.
Migration actions required
Use Mutex void lock()
, void unlock()
methods.
Cellular: Add ALT1250 PPP cellular target
Summary of changes
Add cellular support for Altair ALT1250 NB-IoT modem. This driver only supports PPP mode.
Remove Mutex deprecated API
Summary of changes
Removed Mutex deprecated API.
Impact of changes
Breaking change: Mutex lock(uint32_t millisec)
method have been deprecated since Mbed OS 5.10 and its removed now.
Migration actions required
Use Mutex lock
, trylock
, trylock_for
methods.
crypto: Update to Mbed Crypto 3.0.1
Summary of changes
Update the version of Mbed Crypto provided by Mbed OS to version 3.0.1.
Remove FileSystemLike deprecated APIs
Summary of changes
Removed FileSystemLike deprecated APIs.
Impact of changes
Breaking change: FileSystemLike opendir
and open
methods have been deprecated since Mbed OS 5.5 and they are removed now.
Migration actions required
Use open(FileHandle **file, const char *filename, int flags)
and open(DirHandle **dir, const char *path)
methods.
Remove DirHandle deprecated APIs
Summary of changes
Removed DirHandle deprecated APIs.
Impact of changes
Breaking change: DirHandle closedir
, readdir
, rewinddir
, telldir
and seekdir
methods have been deprecated since Mbed OS 5.4 and they are removed now.
Migration actions required
Use DirHandle close
, read
, rewind
, tell
and seek
methods.
Remove mbed power management deprecated API
Summary of changes
Removed mbed power management deprecated API.
Impact of changes
Breaking change: deepsleep
API has been deprecated since Mbed OS 5.6 and it is removed now.
Migration actions required
Use sleep()
Remove mbed interface deprecated API
Summary of changes
Removed mbed interface deprecated API.
Impact of changes
Breaking change: mbed_error_vfprintf API has been deprecated since Mbed OS 5.11 and it is removed now.
Migration actions required
Use mbed_error_vprintf()
.
Remove FileHandle deprecated APIs
Summary of changes
Removed FileHandle deprecated APIs.
Impact of changes
Breaking change: FileHandle lseek
, fsync
, and flen
methods have been deprecated since Mbed OS 5.4 and they are removed now.
Migration actions required
Use FileHandle seek()
, sync()
, and size()
methods.
Remove the deprecated CallChain class and its APIs
Summary of changes
CallChain is never intended for public use and its no longer used in Mbed OS, therefore, it is removed.
Impact of changes
Breaking change: CallChain class and its methods have been deprecated since Mbed OS 5.6 and they are removed now.
Migration actions required
None
Remove CriticalSectionLock deprecated APIs
Summary of changes
Removed the CriticalSectionLock deprecated APIs.
Impact of changes
Breaking change: CriticalSectionLock lock
and unlock
methods have been deprecated since Mbed OS 5.8 and they are removed now.
Migration actions required
Use the static methods CriticalSectionLock::enable()
and CriticalSectionLock::disable()
.
Remove the deprecated ATCmdParser APIs.
Summary of changes
Removed ATCmdParser deprecated APIs.
Impact of changes
Breaking change: ATCmdParser setTimeout, setDelimiter, and dubugOn methods have been deprecated since Mbed OS 5.5.0 and they are removed now.
Migration actions required
Use set_timeout()
, set_delimiter()
, and debug_on()
Remove the deprecated Ticker APIs
Summary of changes
- Removed the Ticker deprecated APIs
- Updated the async greentea test to use
attach
withcallback
API
Impact of changes
Breaking change: Ticker attach and attach_us methods with cv-qualifiers have been deprecated since Mbed OS 5.1 and they are removed now.
Migration actions required
Use attach(callback(obj, method), t)
and attach_us(callback(obj, method), t)
Remove InterruptIn deprecated APIs
Summary of changes
Removed InterruptIn deprecated APIs.
Impact of changes
Breaking change: InterruptIn rise and fall methods with cv-qualifiers have been deprecated since Mbed OS 5.1 and they are removed now.
Migration actions required
Use rise(callback(obj, method))
and fall(callback(obj, method))
Remove the deprecated the InterruptManager APIs
Summary of changes
Removed InterruptManager class as it was deprecated since Mbed 5.6.
Impact of changes
All users of InterruptManager class will need to modify their application.
Migration actions required
The interrupt handlers need to be attached directly using specific drivers, for example, Application handler can use one of the Ticker/Timer/Timeout classes for clock-related interrupts.
Remove the deprecated ethernet APIs
Summary of changes
The Ethernet
is no longer supported, so removed header and cpp files and its dependency.
Impact of changes
Breaking change: The Ethernet object is removed as it has been deprecated in the previous feature releases.
Migration actions required
Use NetworkInterface instead, for more details have a look at our documentation here
C++11-ify virtualisation in lwIP classes
Summary of changes
Use override
and final
where appropriate, and eliminate unnecessary
virtual
.
Fix up get_ip_address
following string-based API removal (#11942).
Some other C++11 simplifications.
Marking as breaking change as it fixes up a previous breaking change.
Impact of changes
No new impact.
Migration actions required
No new migrations
C++11-ify virtualisation in netsocket
Summary of changes
Use override
and final
where appropriate, and eliminate unnecessary
virtual
.
Fixes some mismatches in string-based API removal (#11942)
Some other C++11 simplifications.
Reduces code size.
Marking as breaking change because it fixes up some work in a previous breaking change.
Impact of changes
No new implications.
Migration actions required
No new actions.
HAL: Add a get_capabilities() function to GPIO API
Summary of changes
Add the gpio_get_capabilities()
function to the GPIO HAL API to skip the unsupported input pull modes when testing with the FPGA-CI-test-shield.
Updated tests:
tests-mbed_hal_fpga_ci_test_shield-gpio
.
Impact of changes
Extend the GPIO HAL API with the gpio_get_capabilities()
function. Unsupported input pull modes are skipped during the greentea tests.
Migration actions required
A default, weak implementation is provided. Every target has to override this weak implementation to provide the correct gpio_capabilities_t
.
Proposal to remove SPIFReducedBlockDevice
Summary of changes
The blockdevice is not needed by the bootloader. Removes SPIFReducedBlockDevice fully.
Impact of changes
Applications relying to SPIFReducedBlockDevice are forced to switch to SPIFBlockDevice. This comes at a cost of ROM and RAM usage.
Migration actions required
Applications need to switch on SPIFBlockDevice
Add Eight-Bit-Addressing mode to I2CEEBlockDevice.
Summary of changes
When dealing with EEPROMs without a 16 bit adressing, the current
implementation does not work, as it writes a 16 bit address to the chip.
This may cause undefined behaviour.
This change adds a new constructor argument to enable this new eight-bit
mode. It defaults to false to not break existing code.
This constructor argument should actually never be necessary to manually
set, except when dealing with cheap devices.
An example for such a device is the Hua Hong NEC K24C02. Datasheet.
Impact of changes
Added a new optional argument at the end of all existing constructors.
Migration actions required
None, as the new constructor argument is optional and at the end.
The default value does not change functionality in existing code.
Remove the deprecated CAN APIs.
Summary of changes
Removed CAN deprecated APIs.
Impact of changes
With these changes, CAN attach
APIs with cv-qualifiers sources are removed and this is the breaking changes for the user
Migration actions required
Use attach(callback(obj, method), type)
Enable minimal-printf by default for all builds
Summary of changes
This PR enables minimal-printf library for all builds. That means that all calls to printf family (including snprintf) will be handled by the minimal-printf library. Main reason for the change are substantial ROM savings that can reach up to 20k. The below table shows result for simple RTOS blinky example in two variants (explicitly calling printf and without) for two boards and three profiles:
Impact of changes
Minimal-printf library supports most of the basic usecases:
* %d: signed integer [h, hh, (none), l, ll, z, j, t].
* %i: signed integer [h, hh, (none), l, ll, z, j, t].
* %u: unsigned integer [h, hh, (none), l, ll, z, j, t].
* %x: unsigned integer [h, hh, (none), l, ll, z, j, t], printed as hexadecimal number (e.g., ff).
* %X: unsigned integer [h, hh, (none), l, ll, z, j, t], printed as hexadecimal number (e.g., FF).
* %f: floating point (enabled by default).
* %F: floating point (enabled by default, treated as %f).
* %g: floating point (enabled by default, treated as %f).
* %G: floating point (enabled by default, treated as %f).
* %c: character.
* %s: string.
* %p: pointer (e.g. 0x00123456).
If your application requires more advanced functionality you'll have to revert to using standard library version.
Migration actions required
If your application requires advance features of printf family calls, you'll either simplify it or switch to the standard C library version. To do so modify your application configuration in mbed_app.json
file to override the parameter target.printf_lib
with the value std
as shown below:
"target_overrides": {
"*": {
"target.printf_lib": "std"
}
}
IPCore String-based API removal
Summary of changes
Impact of changes
Applications using the old APIs will not compile.
Migration actions required
Users are expected to use their SocketAddress
-based counterparts and explicitly call gethostbyname()
if DNS address resolution is needed.
GCC: Add a build profile extension with the link-time optimizer enabled
Summary of changes
Add a build profile extension with the link-time optimizer enabled for GCC_ARM toolchain.
Impact of changes
Migration actions required
-
The minimal required version of the
GCC_ARM
is now the GNU Arm Embedded Toolchain Version 9-2019-q4-major. EarlierGCC_ARM
versions can cause various issues when the-flto
flag is used, e.g. a platform specific error during the final link stage on Windows hosts with GCC8. -
The
noinline
attribute has to be used for every function that must be placed into a specific section (specified with asection(".section_name")
attribute). In general, when a function is considered for inlining, thesection
attribute is always ignored. However, with the link-time optimizer enabled, the chances for inlining are much higher because the inliner works across multiple translation units. As a result, the output sections' sizes change compared to a non-lto build. This may lead to asection ".section_name" will not fit in region "region_name"
type errors. -
The
common
flags defined for theGCC_ARM
toolchain are now appended to theld
flags during a mbed-cli build. Previously, thecommon
flags were appended only toasm
,c
andcxx
flags. Having the same flags for the compiler and the linker is required when using the link-time optimizer (which is the case for thelto
build profile extension). Any options unrecognized by the linker should be moved fromcommon
toasm
,c
orcxx
.
Known Issues
There are no new known issues with this release.
Contents
Ports for Upcoming Targets
12597
Cellular: Add ALT1250 PPP cellular target
12458
Add Musca B1 target
Fixes and Changes
12611
STM32F4 UART issue when parity enabled
12601
Remove RtosTimer deprecated class
12599
Greentea kvstorage tests Cypress targets fix.
12598
Change Mutex lock and unlock APIs return value to void
12597
Cellular: Add ALT1250 PPP cellular target
12596
Remove Mutex deprecated API
12595
Fixed typo 'timout'
12590
Importer script: remove apache-2.0.txt
12583
STM32F7: baremetal profile support
12580
Reverting #12312 as it breaking current WiFI connect()->Disconnect() sequence
12571
C++11-ify NonCopyable
12567
STM32 EMAC : increase thread size when mbed-trace is enabled
12560
crypto: Update to Mbed Crypto 3.0.1
12559
DISCO_L4R9I correct LED pins
12557
M487: Fix crash on WDT reset from power-down
12554
Remove FileSystemLike deprecated APIs
12553
Remove DirHandle deprecated APIs
12551
Remove mbed power management deprecated API
12550
Remove mbed interface deprecated API
12549
Remove FileHandle deprecated APIs
12548
tests-integration-net-single: fix build error
12545
threads: fix timeout (set to 25)
12543
TLSSocket: Remove deprecated connect
12540
fix for suppress 'unknown object name' messages from memap.py
12537
Minor optimization to improve readability of code
12536
Fixed typo 'thead' in thread_neighbor_class.h
12534
Remove the deprecated CallChain class and its APIs
12533
Remove CriticalSectionLock deprecated APIs
12531
Add check so that FlashIAP does not allocate memory on flash_init failure
12530
Remove reset reason from Future Sequana targets.
12529
travis: scancode ret value not cat fix
12527
Remove the deprecated ATCmdParser APIs.
12526
GCC: Fix the toolchain LTO workaround for Python 3
12525
Remove the deprecated Ticker APIs
12524
Bugfix: Concurrent SFDP header address init fixed
12521
Remove explicit include of mbedtls/config.h
12520
Fix initialization order for I2CEEBlockDevice
12519
tests-mbed_hal-sleep_manager: fix counter wraparound handling
12518
Remove InterruptIn deprecated APIs
12514
mergify: add "mergify skip" label
12511
allow reconfiguring a running watchdog
12509
EFM32: RTCC bugfix for #12374
12508
Fix minimal-printf stack overflow
12507
Cellular: release _semaphore only once
12506
Fix 2 string based IP address removal regressions
12505
travis: ignore grep return value for scancode
12502
Fixed macro error
12501
Remove the deprecated the InterruptManager APIs
12500
Remove the deprecated ethernet APIs
12499
Cellular: For ublox modem, read '@' char first then send data.
12498
TEST: update usb tests and guard them with macro
12496
EFM32: fix mbed_hal-pinmap test
12495
C++11-ify virtualisation in FileHandle + Serials
12492
Update psoc6cm0p asset to version 1.1.1.
12491
Fixed error of function 'mac_fcf_lenght'
12490
Fixed error of structure mlme_key_descriptor_t
12489
C++11-ify virtualisation in lwIP classes
12488
C++11-ify virtualisation in Nanostack classes
12487
C++11-ify virtualisation in netsocket
12484
TDBStore magic number if endian sensitive fix comment
12481
Nanostack release for Mbed OS 6
12480
Fix SPDX identifiers and licenses (excluding features and targets)
12478
M2351: Fix some minor issues
12477
HAL: Add a get_capabilities() function to GPIO API
12476
Fix build failure when target's cmsis doesn't exist
12475
Proposal to remove SPIFReducedBlockDevice
12473
Fix Freescale MCUXpresso AnalogOut
12467
Inline nsapi_create_stack(NetworkStack)
12466
MBED_STACK_STATS_ENABLED : Add stack_name information in greentea metrics
12464
STM32 EMAC : add configuration choice and connection check
12462
Fix static ram memory statistics for arm compiler
12460
Allow MISO/MOSI set to NC during SPI initialisation (fix for issue #12435)
12458
Add Musca B1 target
12454
Nuvoton: Optimize spi_master_write(...) in case of no SPI MISO pin
12453
STM32 TRACE_GROUP update
12451
STM32 : enable MBED trace for QSPI
12450
SFDP: consolidation of SFDP parsing [3/5]
12449
Add missing pins def for ARDUINO_NANO33BLE
12447
fix targets device_name with nrf51822 32K SoC
12446
Add Eight-Bit-Addressing mode to I2CEEBlockDevice.
12445
Fixed typo: 'lenght' in ip6string.h
12444
Fixed typo: 'lenght' in ns_crc.h
12443
Fixed typo: 'lenght' in coap_service_api.h
12442
Fixed typo: 'lenght' in minimal-printf
12441
CAN: fix length calculation (fixes #12311)
12440
Implement reset_reason api for cypress targets
12438
Fix CY8CPROTO_062_4343W baremetal build
12437
travis: add PR license check for missing/not-valid license files
12436
Remove GPIO pin-maps used for FPGA testing
12431
Nordic NRF52 GPIO API: Fix non-deterministic failure to configure interrupt handling
12427
Minor optimisation to mcr20a-rf-driver code
12426
SFDP: consolidation of SFDP parsing [2/5]
12421
Cypress Targets Reorganization
12420
Remove the deprecated CAN APIs.
12415
STM32H7 : add readme file for dual core use
12384
STM32WB : update BLE part with better support
12358
FIX: add cbor module in the requirement.txt
12319
Fix userallocatedevent imp
12318
SFDP: Move Sector Map Parameter Table parsing under SFDP module
12233
Enable minimal-printf by default for all builds
12206
Kvstore tests
11942
IPCore String-based API removal
11856
GCC: Add a build profile extension with the link-time optimizer enabled
Using this release
You can fetch this release from the mbed-os GitHub repository, using the tag "mbed-os-6.0.0-alpha-3".
If you need any help with this release please visit our support page, which provides reference links and details of our support channels.