Open-source software development and how open-source projects are run is often seen as incompatible with functional safety requirements and established processes and standards. Open-source has however been used and is used on a regular basis in applications with safety requirements however in most cases the open-source software is forked and developed behind closed doors to comply with safety standards and processes and using existing infrastructure and tools not common or not available in public and in open-source.
This talk will show how the Zephyr project is moving to a new development process and methodology that uses existing and public tools to address many of the requirements and foundations that would help with using Zephyr in applications depending on functional safety.
New addition to Zephyr is support for tracing hooks and system-wide support for frameworks and host tools using the tracing feature. Zephyr did have a sample demonstrating SystemView, however it was not available as a global feature and was limited to the sample application. It also required the system event logger feature which was limited in many ways.
The video below shows how to trace any application in Zephyr by just adding a configuration option to the application configuration file. Obviously it works only with boards that support SEGGER RTT and JLink, but should work over other interfaces, something we have not tested yet.
Using the same tracing hooks the plan is to support other tracing tools like Percepio Tracealyzer, Trace Compass and others.
An overview of Zephyr logging subsystem that was recently overhauled. Zephyr historically had a very basic and rudimentary logging sub-system that basically using printk to send output to the console (UART). The new system which has been implemented side by side with the old one to allow migration does introduce lots of features and backends beside basic console and does use a dedicated logger thread offloading logging overhead to when the system is idle.
Quite a few sites provide services for tracking open-source communities and projects, for example openhub.net and github.com. Such web services track online community platforms and aim to index the open-source software development community over time showing trends and other data that can be useful.
I was one of the lucky few who got two boards from the first production run for testing purposes and this board immediately became my favourite.
The board arrived pre-flashed with an application showing various sensor data as can be seen here:
Using the pull request (#9451) from the Zephyr project github tree which introduces the basic support and with the drivers and sample application pending submission I was able to flash various samples from the Zephyr tree and reproduce the “factory settings” easily and without any hassle.
The digital ink display was responsive enough for changes and is very promising for all kind of applications. The primary use is of course as a badge and there are a few idea how to use the Bluetooth mesh and Bluetooth in general to make this a “smart” badge.
The drivers for the display and the sample application are still out of the tree and maintained in a fork and will be submitted to Zephyr after the 1.13 release happening earlier next month.
More reports and experiments will follow, stay tuned…
The reel board is a evaluation board based on the Nordic Semiconductor nRF52840 SoC. The board was developed by PHYTEC Messtechnik GmbH in cooperation with Zephyr Project for the Zephyr Hackathon – “Get Connected”.
reel board is more than just another evaluation board. It is equipped with the Electrophoretic Display and environmental sensors. This not only makes it easy to try out Zephyr OS, but also the following use cases can be evaluated:
battery powered sensor node
low power, low cost HMI for remote control or environmental sensor monitoring
interactive badge for the meetings and conferences
product, name or price tag
just a temperature and humidity sensor on your table
more details: https://github.com/zephyrproject-rtos/zephyr/wiki/reel-Board
Recently a pull request was submitted to the Zephyr tree introducing a new shell subsystem replacing the original shell. The new shell, if we can call it a shell comes with lots of new features and opens the gates for lots of additions and improvements. This is after all intended for debugging and testing, but it can provide an interface to interactively interface with Zephyr internals.
From the original PR, here are the highlights:
Multi-instance – you can have independent shells on different transmission mediums
Integration with Log module – you can read logs on the shell screen, filter them dynamically (activate logs only for needed modules), suspend or resume
Smart completion with the Tab key. One can prompt and partially/fully complete commands or its subcommands.
Easy command edidtion with buttons: Tab/Backspace/Delete/Arrows/Home/End
Wildcards support – so far only ‘*’ character
Kconfig configuration to optimize resources usage.