Tracing Zephyr applications with SEGGER SystemView

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.

Zephyr Logging Survival Guide [Foundries.io]

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.

This guide comes in two parts: Part 1 and Part 2.

Enjoy!

Open-source community and project tracking

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.

Continue reading “Open-source community and project tracking”

First impressions with the reel Board

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…

reel Board is coming

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
reel board back (Credit: Phytec Messtechnik)
reel board front (Credit: Phytec Messtechnik)

 

more details: https://github.com/zephyrproject-rtos/zephyr/wiki/reel-Board

The feeling of bash, the new Zephyr Shell

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
  • Multiline commands
  • 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.
  • Commamands history,
  • Build-in commands,
  • Easy command edidtion with buttons: Tab/Backspace/Delete/Arrows/Home/End
  • Meta Keys
  • Wildcards support – so far only ‘*’ character
  • Kconfig configuration to optimize resources usage.