Zephyr OS 1.13 was released on September 10th and comes packed with exciting new features, an expanded list of supported hardware and additional changes targeting long-term stability of APIs for the upcoming Long-Term Support (LTS) release.
One new addition in Zephyr 1.13 is support for tracing hooks and system-wide support for tracing and debugging frameworks and host tools. We demonstrate this support using SEGGER SystemView. Zephyr previously had a sample demonstrating SystemView, limited to the sample application. It also required the system event logger feature supporting only limited features and events it can trace. The new tracing backend enables third-party frameworks and traces of any event type in Zephyr. Work on this feature will continue with more hooks and backends added in future versions.
Similarly, we revamped the logging subsystem in Zephyr and introduced a new logging backend with many features, including:
- Deferred logging, reducing the time needed to log a message,
- Multiple backends supported (up to 9 backends),
- Compile time filtering on a module level,
- Independent runtime filtering for each backend,
- Additional runtime filtering on a module instance level,
- Time-stamping with user-provided function,
- Dedicated API for dumping data,
- Panic support, where the logger switches to blocking, in-place processing, and
- Design ready for a multi-domain/multi-processor system.
The new Logger API is highly configurable both at compile time and at runtime. The Logger is thread safe and minimizes the time needed to log the message. Time-consuming operations such as string formatting or access to the transport are not performed (by default) when the logger API is called. Instead, a message is created and added to a configurable dedicated pool of log messages.
The new logger plays nice with features planned for the next release, including a new shell and enhanced multi-core support building on top of features introduced in previous releases.
In Zephyr 1.13, we continued stabilizing APIs and finalized the Analog-to-Digital Converter (ADC) subsystem. We also made good progress on Real-Time Clock (RTC), counters, and I2C APIs.
On the networking side of things, we introduced:
- System call support for BSD socket APIs,
- TLS and DTLS security layer support to BSD sockets,
- IEEE 802.1AS-2011 generalized Precision Time Protocol (gPTP) for Ethernet networks,
- Link Layer Discovery Protocol (LLDP) TX support,
- Support for managing Qav credit-based shaper network scheduling algorithm,
- Generic TX time-stamping support, and
- Many other improvements, new features, and bug fixes.
We also heard feedback about documentation from our community and completely overhauled the documentation infrastructure. We provided a developer friendly theme that is familiar and easy to use and navigate. We’ll continue making improvements documenting existing and new Zephyr features.
A most sincere thank you to the more than 140 developers contributing to this release. Not only did you add a wealth of new features during the merge window, you also rallied together as a community during the stabilization period across time zones, companies, architectures, and even weekends, to find and fix bugs, making Zephyr 1.13 yet another great release!
To learn more about Zephyr Project please see our Getting Started Guide, join the developer mailing list or follow #zephyrproject on IRC.