FoundriesFactory

microPlatform update 0.25

Summary

Zephyr microPlatform changes for 0.25

MCUboot 1.2.0 contains mostly fixes around the serial bootloader. The Zephyr tree from the v1.13 development cycle contains several significant improvements and new features.

Linux microPlatform changes for 0.25

Linux microPlatform meta-osf layer was renamed to meta-lmp. Core layer updates based on the latest OE/Yocto master changes.

Zephyr microPlatform

Summary

MCUboot 1.2.0 contains mostly fixes around the serial bootloader. The Zephyr tree from the v1.13 development cycle contains several significant improvements and new features.

Highlights

Components

MCUboot

Features

Updated simulator dependencies:

Bugs

Serial overflow:
imgtool corruption fix:
assemble.py regular expression fix:
Zephyr test Makefile fix:

Zephyr

Features

Initial socket-based TLS support:

TLS support was also added to the echo_client and echo_server samples.

The merger of this code is a significant change, as it unblocks rewrites or adaptations of Zephyr's network protocol support stacks (such as MQTT, HTTP, CoAP and LWM2M, etc.) to support TLS via a setsockopt() API.

Standard C Memory Allocation:
New "Logger" Subsystem:

http://docs.zephyrproject.org/subsystems/logging/logger.html

This is a significant departure, both in terms of supported features and complexity, from the longstanding SYS_LOG APIs in <logging/sys_log.h>.

It seems to be early days, as no upstream subsystems have been moved over to Logger from SYS_LOG. It's not clear if Logger will replace SYS_LOG in the long term.

Foundries.io is publishing a blog series discussing both Logger and SYS_LOG. The SYS_LOG post is available:

https://foundries.io/insights/2018/07/24/zephyr-logging-part-1/

and we'll be releasing part 2 on Logger pending the results of a pull request containing some minor bug fixes.

Zephyr SDK minimum version bumped to 0.9.3:
Networking promiscuous mode support:

Currently, support, testing, and samples are provided for Ethernet L2s. Users curious to try it out should see samples/net/promiscuous_mode.

Application shared memory:

http://docs.zephyrproject.org/kernel/usermode/usermode_sharedmem.html

Ethernet driver API break:
Network packet format change:
sys_clock_us_per_tick deprecated:
Arches:

ARC architecture support for nsim was added.

Initial support for a new caching infrastructure on ARM SoCs was added with support for memory caching on ARM MPUs. See issue 8784 for more details and current status:

https://github.com/zephyrproject-rtos/zephyr/issues/8784

On x86, Zephyr can now boot on systems with a 64-bit BIOS, and got SoC support for Apollo Lake. A new architecture-specific CONFIG_REALMODE option was added as well; this enables booting Zephyr from real mode on x86, which was previously only available in the Jailhouse target.

The "native POSIX" pseudo-architecture grew support for registering functions which run at exit via the NATIVE_EXIT_TASK macro available in <soc.h>

ARM SoCs gained new abilities to recover from otherwise-fatal MPU faults.

Bluetooth:
Boards:

The stm32f723e_disco board now has support for USB FS OTG and I2C, following the extension of driver support for those peripherals to STM32F7 MCUs.

The nrf52_pca10040 board has the UARTE peripheral enabled; the console now uses this instead of RTT.

FRDM-K64F now supports CONFIG_FS_FLASH_STORAGE_PARTITION.

The cc3220sf_launchxl board now automatically reconnects to the last known good WiFi AP at startup.

Build:

Vigilant removal of redundant default n properties from Kconfig files continues.

The build system's calls to objcopy now fill gaps with 0xff bytes. This reduces time spent programming flash on some targets, since this value is what erased flash pages are filled with. Flash programmers which are smart enough to skip setting runs of 0xff will thus see improvements.

Cryptography:

Users of the mbedTLS library will be familiar with its header-file system of configuration: when the library is compiled with the macro MBEDTLS_CONFIG_FILE defined, its sources include the file that macro expands to, which in turn enables, disables, or configures their features.

In the past, Zephyr has managed separate configuration files for different use cases. With this new addition, a single mbedTLS file can be maintained within tree, whose contents are controllable via Kconfig options defined in ext/lib/crypto/mbedtls/Kconfig.tls-generic. This bit of cleverness allows individual applications to set their TLS configuration within Kconfig fragment files.

Device Tree:

Bindings for STM32 OTG HS USB were added in dts/bindings/usb/st,stm32-otghs.yaml, along with SoC DTSI nodes for STM32F4 and STM32F7.

Documentation:

The Doxygen documentation for the ARM SoC specific _Fault() routine, which handles fatal errors, has been improved and clarified.

Drivers:

An API was merged for Audio Codec devices. No drivers yet.

Support was added to the USB subsystem for Microsoft OS Descriptors, version 1:

https://docs.microsoft.com/en-us/windows-hardware/drivers/usbcon/microsoft-defined-usb-descriptors

Additionally, USB device firmware authors can now override the usb_update_sn_string_descriptor() function to populate serial number descriptors at runtime.

PWM and I2C master drivers were added for the Cortex-M4 cores present on NXP i.MX7 SoCs (the nxp_imx/mcimx7_m4 SOC variant).

The nRF serial driver saw a lot of love. It now supports Device Tree, power management, and both 31250 and 56000 baud rates. The last improvement may be particularly useful for any users implementing Zephyr- based dial-up modem support.

The SiLabs GPIO and UART drivers now have support for EFR32 MCUs.

Driver support was added for Analog Devices ADT7420 16-bit I2C temperature sensors.

On STM32 MCUs:
External:

Version 1.2.91 of the Atmel SAMD20 HALs were merged, in order to support the SAMD20 Xplained Pro board.

Kconfiglib was updated, bringing in support for the preprocessing language extensions described in the Linux file kconfig-macro-language.txt:

https://github.com/torvalds/linux/blob/master/Documentation/kbuild/kconfig-macro-language.txt

as well as adding additional warnings.

Kernel:

Support for read() and write() was added when using Newlib.

Libraries:

The JSON library grew a new helper macro with an apparently misleading name. The macro in question, JSON_OBJ_DESCR_ARRAY_ARRAY, appears to be used to declare descriptors for arrays of structs, rather than arrays of arrays.

POSIX compatibility was added for the pthread_once_t and pthread_key_t typedefs.

Networking:
Samples:

The boards/nrf52/mesh/ samples were updated to pass the Bluetooth Profile Tuning Suite, among several other improvements:

https://www.bluetooth.com/develop-with-bluetooth/qualification-listing/qualification-test-tools/profile-tuning-suite

The gptp networking sample has FRDM-K64F support, following the addition of PTP protocol support to that board's Ethernet driver.

Scripts:
Testing:

The saga continues on the large project of adding Doxygen-based metadata to Zephyr's test infrastructure to support more sophisticated CI, requirements traceability, etc.

A variety of tests were added or improved for multicore configurations and power management.

Bugs

Arches:

Exception return on ARC no longer ignores updates to the PC register.

Device Tree:

The NXP device tree binding YAML files saw some cleanups and build warning resolutions.

Documentation:
Drivers:

The nRF serial port driver's dependency on the Zephyr GPIO driver was replaced with calls into the nrfx GPIO HAL to avoid initialization order issues (UART is needed early for the console, but the GPIO driver isn't initialized until later in the boot).

The nRF timer driver saw a bug fix related to the combination of a tickless kernel, k_busy_wait(), and k_sleep().

Improved management support for nRF52, including a bug fix for wake from sleep, were merged.

External:
Kernel:

Use of the "errno" lvalue from userspace was fixed.

Use of the console from userspace with Zephyr's built- in libc was fixed.

Libraries:

Similarly, measures were introduced to ease compilation of various samples and libraries with the Newlib C library.

Networking:

The LWM2M implementation ignores TLV options it cannot handle, rather than halting option processing when it receives one.

A potential null dereference in IPv6 address parsing was fixed, as was a memory leak which occurs when a neighbor solicitation request fails.

A variety of cleanups and fixes were merged affecting IPv4 and ICMPv4 support.

Samples:

The Kconfig fragments used to build the echo_client and echo_server applications with TLS support on qemu_x86 were fixed, fixing the build in that configuration.

Testing:

hawkBit and MQTT sample application

Features

Bugs

LWM2M sample application

Features

Bugs

Linux microPlatform

Summary

Linux microPlatform meta-osf layer was renamed to meta-lmp. Core layer updates based on the latest OE/Yocto master changes.

Highlights

Components

OpenEmbedded-Core Layer

Features

Layer Update:

Bugs

qemu:
glibc:
libxml2:

Meta OpenEmbedded Layer

Features

Layer Update:

Bugs

Meta Intel

Features

Layer Update:

Bugs

Meta RaspberryPi

Features

Layer Update:

Bugs

Meta RISC-V

Features

Layer Update:

Bugs

Meta Freescale

Features

Layer Update:

Bugs

Meta Freescale 3rdparty

Features

Layer Update:

Bugs

Meta LMP Layer

Features

Layer Update:

Bugs

Related posts

Keep up to date with Foundries.io