FoundriesFactory

microPlatform update 0.18

Summary

Zephyr microPlatform changes for 0.18

Zephyr from near the end of the v1.12 cycle, minor application updates for new Bluetooth APIs.

Linux microPlatform changes for 0.18

OSF Unified Linux Kernel updated to the 4.16.8 stable release.

Zephyr microPlatform

Summary

Zephyr from near the end of the v1.12 cycle, minor application updates for new Bluetooth APIs.

Highlights

Components

MCUboot

Features

Bugs

Zephyr

Features

New Watchdog API:

A driver using the new API was merged for the nRF SoC family's watchdog peripheral. This driver uses device tree.

Menuconfig is now in Python:

Users who were building the C tools in order to run menuconfig must use the new Python tools instead. Windows users need to install a new dependency via pip (by re-running "pip3 install -r scripts/requirements.txt") before using this program. Mac and Linux users do not require any additional dependencies.

Zephyr's use of Kconfig includes additional features not present in the language implemented by the C tools. Somewhat confusingly, documentation for these features was added to the board porting guide:

http://docs.zephyrproject.org/porting/board_porting.html#kconfig-extensions

This is a significant change, in that it now makes Zephyr development possible on Windows in the native cmd.exe or Powershell shells, without any additional Unix-specific toolchains or environments.

Storage API changes:

The Kconfig knob which enables the storage_partition flash partition (see http://docs.zephyrproject.org/devices/dts/flash_partitions.html) was renamed from CONFIG_FS_FLASH_MAP_STORAGE to CONFIG_FS_FLASH_STORAGE_PARTITION. This rename was done because use of the storage partition does not require the flash_map module.

The filesystem API's struct fs_mount_t can now store references to storage devices of arbitrary type in its storage_dev field; it was previously restricted to a struct device*, but is now a void*. This change was made to enable additional layers of indirection between this field and the backing device.

The disk_access.h API was modified to support simultaneous use of multiple disk interfaces. The old disk_access_ram.c and disk_access_flash.c have seen a corresponding refactor; their globally available functions are now hidden behind instances of the new struct disk_info and struct disk_operations structures introduced in this change. The external FAT file system library now supports multiple volumes.

The filesystem subsystem now supports multiple mounted instances of a filesystem. As a result of these changes, the fs/fs_interface.h API no longer assumes that either FAT or NFFS file systems are being used.

Bluetooth bt_storage removed in favor of settings API:

The Bluetooth shell and mesh and mesh_demo samples now have settings support, as demonstrations of using the API.

Bluetooth Mesh support for the settings API required some refactoring to expose previously hidden symbols to the storage API. There are some tradeoffs, particularly related to managing flash wear when storing the local sequence number and replay protection list; refer to the help for the new CONFIG_BT_MESH_SEQ_STORE_RATE and BT_MESH_RPL_STORE_TIMEOUT options for details.

Using this API requires a larger system workqueue stack size; the present recommended size when using this API is now 2 KB, double its default value.

One additional alternative to using the settings API is the new bt_set_id_addr() routine, which allows applications to set their identity addresses in a manner similar to the bt_settings API.

Arches:

x86 CPUs can now grant user space access to the heap when using the newlib C library.

Documentation:

http://docs.zephyrproject.org/contribute/doc-guidelines.html

Drivers and Device Tree:

The bindings for ST's SPI-based BTLE nodes now require irq-gpios and reset-gpios properties. The names of such devices are now only present in Kconfig if a new CONFIG_HAS_DTS_SPI_PINS selector is unset.

There are two new Kconfig symbols, CONFIG_HAS_DTS_GPIO and CONFIG_HAS_DTS_GPIO_DEVICE, which respectively allow declaring that the GPIO driver supports device tree, and that drivers which need GPIOs do as well. Currently, only the STM32 and MCUX GPIO drivers select CONFIG_HAS_DTS_GPIO.

DT-based GPIO support for the NXP i.MX7 M4 SoC was added.

The mcux DSPI driver now uses device tree; SPI bindings were added to the SoC files appropriately to enable this change. This driver also now supports KW40/41Z SoCs.

The LED driver subsystem now has system call handlers for user mode configurations.

The USB device controller driver for STM32 devices now supports all STM32 families, among a variety of other improvements to enable USB support on STM32 MCUs in a variety of families. Board support was also added for olimexino_stm32 and stm32f3_disco.

The pinmux subsystem no longer supports user mode access. This subsystem's drivers lack sufficient input validation to prevent a malicious userspace from accessing unauthorized memory through API calls. A proper fix will require developing a specification for the subsystem, and updating existing drivers to do appropriate input validation.

Altera HAL drivers can now be run on Zephyr. Such a driver for the Nios-II modular scatter-gather DMA (mSGDMA) peripheral was merged, from the Altera SDK v17. This was used to add a shim driver using Zephyr's dma.h API.

Networking:

The network interface core now supports net_if_ipv4_select_src_addr() and net_if_ipv4_get_ll() routines for accessing IPv4 source addresses.

Each struct net_pkt now uses one less byte of space, thanks to an optimization in the size of its _unused field.

Testing:

Various tests were converted to use the ztest API, along with other cleanups, renames, and Doxygen fixups added to the test suite.

Bugs

Build fix on sam_e70:
ARM MPU buffer validation fix:
Bluetooth Mesh sequence number fixes:

A Bluetooth Mesh bug affecting sequence number calculation in the Friend queue was fixed.

Drivers fixes:
Sensor DTS fixes on NXP boards:
User mode heap access fix when using newlib:
Traffic class fixes:
Websocket Coverity fixes:
http_client fixes for TLS:
smp_svr build fixed:
Network echo fixes:
DTS fixups:

hawkBit and MQTT sample application

Features

Bluetooth identity API change:

Bugs

LWM2M sample application

Features

Bluetooth identity API change:

Bugs

Linux microPlatform

Summary

OSF Unified Linux Kernel updated to the 4.16.8 stable release.

Highlights

Components

Meta OSF Layer

Features

Layer Update:

Bugs

Meta Freescale

Features

Layer Update:

Bugs

Meta Linaro

Features

Layer Update:

Bugs

Meta OpenEmbedded Layer

Features

Layer Update:

Bugs

Meta Qualcomm

Features

Layer Update:

Bugs

Meta RaspberryPi

Features

Layer Update:

Bugs

Meta Updater Layer

Features

Layer Update:

Bugs

Related posts

Keep up to date with Foundries.io