Benjamin Cabé

Zephyr Weekly Update – Zephyr 3.6.0 is a go, Hello 3.6.99!

Zephyr Weekly Update - March 1, 2024

Zephyr Weekly Update - March 1, 2024

Zephyr 3.6 was released a week ago and it is really amazing to see how well it was received. I am particularly happy to see that thousands of people have already watched the video highlighting some of the changes and additions available in this release, such as the added support for GNSS receivers, keyboard matrix driver, and more. Please check it out if you haven’t had a chance already!

I also encourage you to check out our special Zephyr Tech Talk episode earlier this week!

Zephyr 3.7, which will be the next Long-Term Support version of the project, is already starting to shape up, and below are some of the highlights from the first couple hundreds of commits already merged into the main branch.

Native UART TTY driver now supports interrupt-driven API

In an effort to make it increasingly easier to emulate Zephyr on host systems, the native UART TTY driver now supports an interrupt-driven API. In order to use the new driver for your zephyr,native-tty-uart UARTs, you may simply enable CONFIG_UART_INTERRUPT_DRIVEN in your project configuration.

I find it particularly interesting as this means that it’s now easier to e.g. simulate a GNSS receiver on your host system, by attaching your Zephyr app to a virtual UART into which you can inject your mock NMEA sentences. (PR #68857).

Boards & SoCs

As the project is in the process of transitioning to a new model for describing the SoCs and boards in the source tree, no work has been merged in the main branch this week.

The maintainers are holding off with adding new boards/SoCs and making changes in main until the working branch (collab-hwm) where the migration is happening is ready to be merged (which should be very soon).

General drivers

Image credit: ignorantofthings.com

This is a pretty clever way to add multiple buttons while only using a single ADC channel, and the driver allows to basically define the mapping of how each ADC values / voltage ranges correspond to each key, or key combination. (PR #68446)

/ {
        buttons {
                compatible = "adc-keys";
                io-channels = <&adc 2>;
                keyup-threshold-mv = <0>;
                key_0 {
                        press-thresholds-mv = <1650>,  /* KEY0 */
                                              <2536>;  /* KEY0 + KEY1 */
                        zephyr,code = <INPUT_KEY_0>;
                };
                key_1 {
                        press-thresholds-mv = <2300>,  /* KEY1 */
                                              <2536>;  /* KEY0 + KEY1 */
                        zephyr,code = <INPUT_KEY_1>;
                };
        };
};
https://blog.benjamin-cabe.com/wp-content/uploads/2024/03/PXL_20240301_182510548_2.mp4
Video courtesy of Fabio Baltieri

Miscellaneous


A big thank you to the 16 individuals who had their first pull request accepted this week, 💙 🙌: @JayHCloud, @bmihelcic, @thompsa, @jaz1-nordic, @vshymanskyy, @rntsoma, @sageve, @jerome-pouiller, @ngphibang, @celinakalus, @MaochenWang1, @allemanm, @Brianmm94, @rysiof, @jpanisbl, and @cmrdrbz.

As always, I very much welcome your thoughts and feedback in the comments below!

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:

Exit mobile version