We are entering the last few weeks of the Zephyr 3.6 release cycle, with the feature freeze scheduled for next Friday, February 2. If you have pull requests that are still pending, now might be a good time to make sure they get reviewed and approved to make it in time for 3.6!
Second round of updates to the Sensing API
PR #64478 has introduced another round of updates to the Sensing API. I haven’t had time to look into all the details so I encourage you to look at the changes directly in the PR.
As a reminder, there is now also a Sensors Working Group that meets every Monday to discuss all things sensors.
Boards & SoCs
- The SDP-K1 evaluation board from Analog Devices (ADI) is a system demonstration platform (SDP) designed to connect to various evaluation shields containing ADI components. (PR #67278)
- The STM32WB5MM-DK Discovery Kit is a dev kit for the STM32W5MMG module (dual core Cortex-M4/Cortex-M0+) that comes with an ultra-low-power BLE 5.2 / 802.15.4 radio module, an LCD display, 16MB of external Flash, and a couple of on-board sensors. (PR #67819)
- All ESP32 boards saw a significant decrease of their minimal heap size thanks to PR #67787.
SoC driver updates
- Clock initialization has been reworked across all Microchip/Atmel SAM SoCs. (PR #66499)
- Suspend-to-RAM support has been added for STM32. (PR #67534)
- New driver for NXP enhanced Direct Memory Access (eDMA). (PR #65671)
- Driver for Microchip/Atmel SAM flash controller has been redesigned to fully utilize the flash page layout and capabilities of each individual SoC. (PR #64215)
General drivers
- A new display driver is available for the Galaxy Core GC9A01A display controller, used to drive many round LCD displays these days (at least the ones from AliExpress ^^), like the ones used for smart watches and smart dials. (PR #67012)
- Bosch BMP581 is a barometric pressure sensor with high accuracy that can be used for e.g. fitness tracking use cases where detecting a change of altitude is required.
With an average current consumption of 1.3 µA @ 1 Hz, it definitely qualifies as a low-power sensor :). (PR #61535) - The driver for BD8LB600FS 8-channel low-side switch now supports daisy-chaining. (PR #65982)
- New Kconfig options (
CONFIG_POWER_DOMAIN_*_INIT_PRIORITY
) have been introduced to allow changing the initialization priority of power domains. (PR #67939) - A noteworthy breaking API change in the CAN drivers: it is no longer possible to perform run-time filtering of frames based on the Remote Transmission Request bit, and filtering is now instead configured via Kconfig. (PR #67127)
Input drivers
This week’s numerous updates to the input subsystem make for a perfect excuse to shamelessly plug the recent Zephyr Tech Talk with ZMK firmware creator Pete Johanson. Whether you are a mechanical keyboard aficionado or simply curious about hearing how Zephyr was put to good use to enable custom keyboard firmware creation, check it out!
- Optical encoders are now supported. (PR #66121)
- A new keymap driver allows to use a Devicetree node to provide the mapping between your keyboard matrix and the actual keys at each row/column intersection. (PR #67757)
kbd {
...
keymap {
compatible = "input-keymap";
keymap = <
MATRIX_KEY(0, 0, INPUT_KEY_1)
MATRIX_KEY(0, 1, INPUT_KEY_2)
MATRIX_KEY(0, 2, INPUT_KEY_3)
MATRIX_KEY(1, 0, INPUT_KEY_4)
MATRIX_KEY(1, 1, INPUT_KEY_5)
MATRIX_KEY(1, 2, INPUT_KEY_6)
MATRIX_KEY(2, 0, INPUT_KEY_7)
MATRIX_KEY(2, 1, INPUT_KEY_8)
MATRIX_KEY(2, 2, INPUT_KEY_9)
>;
row-size = <3>;
col-size = <3>;
};
};
- New helper functions have been added to convert Zephyr input codes into USB HID codes, see
input_to_hid_code()
,input_to_hid_modifier()
. (PR #67862)
Miscellaneous
- Starting with GCC 10, GCC ships with a static analyzer. It is now possible to use Zephyr’s static code analysis infrastructure to easily run GCC static analyzer for your application, simply pass the following parameter when running
west build
:-DZEPHYR_SCA_VARIANT=gcc
. (PR #64595) - It is now really easy to build an LLEXT (Linkable Loadable Extension) module thanks to a new
add_llext_target()
CMake function.
See the CMakeLists.txt file of the Hello World sample to see how to use it. (PR #67431) - New CMake helper function (
zephyr_blobs_verify()
) allows to verify that blobs fetched using west have a valid checksum. (PR #67593) - New APIs allow to check if an IPv6 address is link local or global, see
net_ipv6_is_sl_addr()
andnet_ipv6_is_global_addr()
. (PR #67838) - A bunch of modules were updated this week:
- Added support for Wi-Fi STA disconnection. (PR #68007)
- New POSIX APIs:
mq_notify()
A big thank you to the 8 individuals who had their first pull request accepted this week, : @renpytom, @javad123javad, @itmm, @tanmaykathpalia, @msalau, @73jn, @sandip-dalvi, and @adri1mart1.
As always, I very much welcome your thoughts and feedback in the comments below!