Skip to content

mbed-os-6.0.0-alpha-3

Pre-release
Pre-release
Compare
Choose a tag to compare
@adbridge adbridge released this 18 Mar 15:16
· 5669 commits to master since this release
532654e

We 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

12601

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

12598

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

12597

Summary of changes

Add cellular support for Altair ALT1250 NB-IoT modem. This driver only supports PPP mode.

Remove Mutex deprecated API

12596

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

12560

Summary of changes

Update the version of Mbed Crypto provided by Mbed OS to version 3.0.1.

Remove FileSystemLike deprecated APIs

12554

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

12553

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

12551

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

12550

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

12549

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

12534

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

12533

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.

12527

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

12525

Summary of changes

  • Removed the Ticker deprecated APIs
  • Updated the async greentea test to use attach with callback 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

12518

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

12501

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

12500

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

12489

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

12487

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

12477

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

12475

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.

12446

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.

12420

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

12233

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:

Screenshot 2020-01-09 at 18 49 11

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

11942

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

11856

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. Earlier GCC_ARMversions 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 a section(".section_name") attribute). In general, when a function is considered for inlining, the section 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 a section ".section_name" will not fit in region "region_name" type errors.

  • The common flags defined for the GCC_ARM toolchain are now appended to the ld flags during a mbed-cli build. Previously, the common flags were appended only to asm, c and cxx flags. Having the same flags for the compiler and the linker is required when using the link-time optimizer (which is the case for the lto build profile extension). Any options unrecognized by the linker should be moved from common to asm, c or cxx.

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.