There’s no such thing as summer holidays for the Zephyr community, it would seem. It’s very nice to see ACPI support being introduced this week, and there’s also intereting work being done on making it easier and more flexible to run Zephyr applications natively on your development machine.
This week, I would also like to point out the Github issues that are explicitly labelled as “good first issues”. I am highlighting some of these in the article below, but generally speaking I would really encourage you to regularly check them out, as your first contribution to Zephyr might be lying there 🙂 Also, if you’re a maintainer, a kind reminder that there are probably many issues opened in your area of expertise that could be good ones for newcomers, so don’t forget to tag them as part of bug triaging!
ACPI Support
One of the biggest changes this week is the addition of initial support for the ACPI (Advanced Configuration and Power Interface) standard.
The ACPI standard has been around for over 25 years and provide a hardware abstraction layer to help with power management, auto configuration, and status monitoring of peripherals.
The new implementation is using the ACPICA open source project, and allows to discover and configure hardware components at run-time, perform power management (e.g. putting unused hardware components to sleep), and perform auto configuration tasks. You can check out the documentation of the new ACPI API here. (PR #56347)
Native simulator
Another significant change is the introduction of a new “virtual” board to be used for simulation purposes, the native simulator, a.k.a. native_sim
. (PR #59302)
You may be already familiar with the native_posix
which allows you to run Zephyr natively on e.g. your local Linux machine. It’s very complete, and allows to go as far as simulating a display, a real-time clock, etc. which is very handy in situation where you don’t need (or sometimes can’t) test against real hardware.
This new “native simulator” is meant to make it easier to run against a custom libC (where native_posix would typically use the host’s libC). It also makes it possible to simulate assymetric multiprocessing scenarios (several simulated MCUs, each running their own Zephyr instance).
SoCs
- Support has been added for STM32L451 SoC series from STMicroelectronics. (PR #59763)
- PR #58332 added support for the NXP MR-CANHUBK3 (see below), but also worth noting that it also brought support for the entire NXP S32K344 SoC family, a series of qualified MCUs based on the Arm Cortex-M7 and aimed at safety-critical automotive and industrial applications.
Boards & shields
- A new board from Seeed Studio has been added, the XIAO ESP32S3 (PR #59732). It is built around Espressif’s 240MHz Xtensa 32-bit LX7 dual-core processor, and supportsWiFi and BLE 5.0. And it’s super tiny!
I am really excited about this one since this board also has a “Sense” variant that comes with a 1600x1200px camera, a micro-SD card reader, and a digital microphone, for only a few dollars more. In fact, since the initial contribution did not include the XIAO ESP32S3 Sense variant, I would love for someone to contribute it! In fact, I just opened an issue to track this, and I would recommend you look into it as your first potential contribution to Zephyr 😉
![NXP MR-CANHUBK3](https://blog.benjamin-cabe.com/wp-content/uploads/2023/07/xMR-CANHUBK344-FRONT-300x169.webp.pagespeed.ic.rzJt5wvEJs.webp)
- The NXP MR-CANHUBK3 board is an evaluation board for mobile robotics applications (ex. autonomous mobile robots and automated guided vehicles for which support was added this week. (PR #58332)
- All the STM32 Nucleo-64 boards from STMicroelectronics feature a Morpho connector—think of it as an Arduino connector on steroids, as it has more pins and allows to access all the I/Os of the MCU.
PR #59754 adds the nexus node definitions for the 15 Nucleo-64 kits supported in Zephyr, making it easier to directly manipulate the Morpho pin headers (for exampleST_MORPHO_CN7_25
on the NUCLEO-L476RG would be equivalent to pin 14 on GPIO port C).
- The Arduino click shield from MIKROE can be stacked on any Arduino compatible board and exposes two mikroBUS sockets, that can be used to connect any of the hundreds (!) of Click boards available from MIKROE. It is now supported in Zephyr and exposes the two mikroBUS headers. (PR #60009)
Drivers
- New driver for Texas Instruments TLA2021, a cost-optimized, ultra-small, 12-Bit ADC typically used for system-monitoring applications (ex. battery voltage supervision, current sensing, …). (PR #57861)
- Flash SPI NOR driver now supports device power management. (PR #59647)
- New counter driver for Renesas SmartBond general purpose timers. (PR #56758)
Bluetooth
- Kconfig options for Bluetooth Mesh have been reorganized to be easier to manipulate. Among other things, options are now grouped according to the protocol layer (network, transport, etc.) they are related to. (PR #59909)
- A new optional module allows to collect statistics related to mesh frames. It can be helpful for measuring performance, packet loss, etc. The module can be turned on via
BT_MESH_STATISTIC
Kconfig option. It also comes with shell commands to help access the statistics interactively. (PR #59962) - A new shell module has been added for TMAP (Telephony and Media Audio Profile). (PR #58915)
Miscellaneous
- Our documentation website docs.zephyrproject.org provides seamless integration of Doxygen documentation in the general documentation pages. This used to be provided by the
breathe
Python library, but as of this week we’ve switched to usingdocleaf
, an improved and faster alternative to the former, made by its original author. One of the biggest improvement is around incremental builds, as rebuilding the documentation when only a few things have been changed is now much faster! Thanks Michael for this awesome first contribution to the project! - A lot of work is being done on the POSIX front to get to a point where the PSE52 profile is fully supported for the upcoming LTS v3 release. There are dozens of open issues flagged as “Good First Issues” that I encourage you to look at if you’d like to contribute to Zephyr but don’t know where to start. Plus, you will likely learn a few things about threads, semaphores, and more! 🙂
A big thank you to the 14 individuals who had their first pull request accepted this week, 💙 🙌: @najumon1980, @robertoxmed, @mku514k, @jaiiarora, @andy9a9, @Maxwelltoo, @michaeljones, @jasperjonker, @EricNRS, @bperseghetti, @Chenhongren, @faloj, @MrMarteng, and @ithinuel.
As always please feel free to jump in with your thoughts or questions in the comments below. See you next week!
If you enjoyed this article, don’t forget to subscribe to this blog to be notified of upcoming publications! And of course, you can also always find me on Twitter and Mastodon.
Catch up on all previous issues of the Zephyr Weekly Update: