FoundriesFactory

microPlatform update 0.19

Summary

Zephyr microPlatform changes for 0.19

Zephyr hits 1.12 feature freeze; this will not be the LTS, but carries many important new features.

Linux microPlatform changes for 0.19

No changes have gone into the LMP since 0.18.

Zephyr microPlatform

Summary

Zephyr hits 1.12 feature freeze; this will not be the LTS, but carries many important new features.

Highlights

Components

MCUboot

Features

Bugs

Zephyr

Features

OpenAMP:

A usage sample is in samples/subsys/openamp:

http://docs.zephyrproject.org/samples/subsys/ipc/openamp/README.html

New Zephyr SDK:

http://docs.zephyrproject.org/getting_started/installation_linux.html

Non-volatile Storage (NVS):

For more details, refer to the NVS subsystem documentation:

http://docs.zephyrproject.org/subsystems/nvs/nvs.html

This would seem to pair well with the storage API changes discussed in the previous newsletter, which introduced greater abstraction over the storage backend.

k_call_stacks_analyze() deprecated:

http://docs.zephyrproject.org/api/kernel_api.html#_CPPv216k_thread_foreach18k_thread_user_cb_tPv

(Perhaps re-implementing or calling into a stack usage dumping routine for each thread.)

Userspace changes:

New API was merged for memory management from specified memory pools. The main functions are:

This is used to allow dynamic allocation of kernel objects from userspace.

Cleanup functions defined on a per-kernel-object-type basis can now be invoked when an object loses all permissions. This is used as a framework for automatic resource release for dynamically-allocated userspace objects.

New APIs were added for userspace allocation and freeing of kernel objects of various types:

Additional APIs for allowing userspace access to queues includes:

The k_poll Polling API is now also accessible from user mode:

http://docs.zephyrproject.org/kernel/other/polling.html

An optimization was merged which avoids executing user/supervisor boundary checks when invoking system calls from privileged code in translation units defined under arch/.

Access to the k_object_access_revoke() routine from userspace was itself revoked, closing a hole where one thread could inappropriately revoke another's access to a kernel object. Userspace threads may revoke access to their own objects with k_object_release().

TCP TIME_WAIT config changes:

http://docs.zephyrproject.org/reference/kconfig/CONFIG_NET_TCP_TIME_WAIT_DELAY.html

This replaces the previous CONFIG_NET_TCP_TIME_WAIT and CONFIG_NET_TCP_2MSL_TIME options. Applications using the old options will need updates.

Architectures:

There is a new CONFIG_PLATFORM_SPECIFIC_INIT available on Arm targets. When enabled, the user must provide a _PlatformInit routine, which will be called at Zephyr startup before anything else happens.

Support was added to enable a Zephyr image running on an NXP LPC-based SoC to boot a slave Cortex M0+ core. (Board support was added for the slave core as lpcxpresso54114_m0.)

Bluetooth:
Device Tree and Drivers:

Device tree bindings were added for real-time clocks (RTCs), as well as NXP Kinetis and QMSI based RTCs. SoC support was added for KW41Z and quark_se_c1000_ss.

Additional patches continuing the work migrating LED and buttons definitions to device tree were merged for mimxrt1050_evk and lpcxpresso54114. Device tree support for sensors on the argonkey board was also merged, along with em_starterkit device tree optimizations, and bindings for LSM6DSL sensors and Kinetis watchdogs.

A shim driver using the newly-stabilized watchdog API was added for NXP MCUx devices. SOC support is provided for K64 and KW2XD.

USBD (USB device) and USBFSOTG (USB full-speed On-the- Go) support was added for NXP Kinetis SoCs. USB support was also enabled for STMicro nucleo_f413zh.

WiFi support for the WINC1500 network controller was merged. This chip can be used to add networking via SPI. This is the first user of the new WiFi API which was merged during the v1.12 development cycle. Support can be enabled using CONFIG_WIFI_WINC1500. A driver was added for ILI9340 LCD displays.

External Libraries:

The Atmel WINC1500 WiFi driver was merged as part of enabling WiFI on that chip. This is a BSD-3-Clause licensed HAL.

Kernel:

https://github.com/zephyrproject-rtos/zephyr/commit/1acd8c2996c3a1ae0691247deff8c32519307f17

A new k_thread_foreach() API was merged, which allows iterating over threads:

http://docs.zephyrproject.org/api/kernel_api.html#_CPPv216k_thread_foreach18k_thread_user_cb_tPv

This requires CONFIG_THREAD_MONITOR to be enabled. Creation and termination of existing threads is blocked via irq_lock() while the routine is executing.

Libraries:

The POSIX compatibility layer has additional file system support APIs. Pulling in the POSIX headers defines macros which map POSIX names to Zephyr- specific file system APIs appropriately. This includes support for basic syscalls such as open(), read(), write(), close(), and friends, and also allows for directory operations such as rename(), stat(), and mkdir(). Refer to the headers in include/posix for more information.

There is also now support for the POSIX mutex APIs.

Miscellaneous:
Networking:

The 802.15.4 subsystem now supports source address filtering and performing energy detection scans when OpenThread is in use.

Samples:
Scripts:
Testing:

Bugs

Drivers:
ARM SoCs:
Bluetooth:
Documentation:
Networking:
Build system:

hawkBit and MQTT sample application

Features

Minor Kconfig updates:

Bugs

LWM2M sample application

Features

Minor Kconfig updates:
Optional values changes:

Bugs

Linux microPlatform

Summary

No changes have gone into the LMP since 0.18.

Highlights

Components

Related posts

Keep up to date with Foundries.io