Categories
IoT Zephyr

Zephyr Weekly Update – Call me maybe 🤙

Today is the last day for new features to get merged into the main Zephyr repository, as the next few weeks will be dedicated to documenting, testing, and polishing the upcoming 3.4 release.

Before diving into this week’s noteworthy updates, and since I know many of you are actually building products based on Zephyr, I wanted to remind you about Zephyr’s Vulnerability Alert Registry.

If you are building a product on Zephyr—and I know many of you are!—you probably want to know ahead of time should a security vulnerability impact you and your customers, so that you can properly address it. I would really encourage you to review the criteria for participation and apply, it should take you literally 30 seconds of your time.

And now for this week’s update 🙂

Bluetooth Telephony and Media Audio Profile

Bluetooth is an incredibly active space, and there are just so many profiles one can chose from to build a standard-based wireless solution. And of course, Bluetooth is particularly popular for all things telephony, so it’s great to see that initial support for Bluetooth LE Telephony and Media Audio Profile (TMAP) was added this week (#56686).

The Telephony and Media Audio Profile (TMAP) establishes configuration settings of underlying audio-related specifications to allow manufacturers to deliver interoperable conversational, streaming, and broadcast audio user experiences in a wide variety of telephony and media products. This includes products such as headsets, TVs, smartphones, personal computers, headphones, earbuds, wireless speakers, and wireless microphones.

https://www.bluetooth.com/specifications/tmap-1-0/

Two samples have been added: tmap_central mimics a smartphone while tmap_peripheral reflects an earbud that would act as a Call Terminal, with audio being streamed from the “smartphone” upon connection.

Huge kudos to Silviu Petria from NXP, as this is their first contribution to Zephyr, and a pretty significant one!

MCUboot on ESP32

When using Zephyr on ESP32, one would have historically relied on the ESP-IDF bootloader as the second-stage bootloader. The typical application startup flow is actually very well described in the ESP-IDF documentation.

With the merge of pull request #54835, MCUboot bootloader can now be used instead, and developers can handle firmware signing, over-the-air updates, etc. in a familiar manner.

Read more in the documentation of each ESP32 supported board.

New memory barrier API

A new API has been introduced for data memory barriers. Data barriers are essentially a way to nicely tell your processor: : “Hey, I know you like to rearrange tasks for efficiency, but these particular memory operations need to happen in the exact order I’ve given them! 😘“. This is particularly useful in Symmetric Multi-Processing (SMP) scenarios, but can also be needed in multi-threaded applications or when hardware is accessed asynchronously.

The new barrier API enables a more consistent way to implement synchronization fences, regardless of the processor architecture. (#57439)

Twister adds GoogleTest support

GoogleTest (a.k.a gTest), is a unit testing library developed by Google. It is used for writing test cases in C++ and supporting test-driven development. It provides a rich set of assertions, automatic discovery of tests, and a human-readable test output format.

Thanks to Yuval’s contribution in PR #58046, Twister now supports using GoogleTest as a harness for your tests, bringing you an alternative to ztest, pytest, etc..

Boards, shields & SoCs

This been has been pretty busy on this front as a few boards were added. What’s more, I always find it nice when existing boards and SoCs get even fuller support for Zephyr (see Xtensa MMU work below).

  • The Kria KV260 AI Starter kit from Xilinx is a devkit for the Kria K26 SOMs that targets avanced edge computer vision scenarios. It includes a real-time processing unit (RPU) based on a dual-core Cortex-R5F, and #54916 introduces support for it. Head over to the dedicated documentation page for more info.
  • Initial support for Xtensa MMU version 3 has been added (#57908) and can be enabled through the XTENSA_MMU KConfig flag.
  • A CAN driver for Microchip SAMC21 has been added (#50408)
  • An update has been made to the Panasonic Grid-EYE shield, which is an evaluation shield for the AMG8833 8×8 pixel thermal camera. Read more here (#53244)
STM32L475 Pandora board
  • The STM32L475 Pandora board from Alientek is now supported thanks to @QinYUN575‘s first contribution to the project 🙂 (#55577)

New drivers

  • A nice addition to the SPI driver is that it now allows collecting statistics (number of bytes transmitted/received, # of transfer errors, …). This feature can be enabled using the SPI_STATS KConfig option. (#57767)
  • Fuel gauges:
    • Fuel gauge driver API now includes support for relative-state-of-charge and absolute-state-of-charge (existing drivers for MAX17048 and generic SBS have been updated to reflect the change). (#57824)
    • SBS fuel gauges expose informations such as chemistry, manufacturer name, device name, … through buffer registers. They can now be accessed through the newly introduced fuel_gauge_get_buffer_property API (#58014).
    • Shout out to Microsoft for the great contributions in this area!
  • The ADP5360 from Analog Devices is a one-stop shop battery management PMIC with ultra-low power fuel gauge, battery protection, buck regulator, and more. The initial version of the driver that got added this week adds support for the buck/buck boost part of this IC. (#58184)
TSC 3400 diagram
  • A new driver is available for the TSC3400 color sensor. An interesting feature of this sensor is that it actually includes 5 channels. Beyond red, green, and blue, you also get a “Clear” channel for measuring overall luminosity, and “Infrared” which can be used for measuring color temperature. (#58144)
  • I’ve had my eyes on recently merged pull request #48389 for a long time, as it adds support for the Microchip MCP9600 thermocouple amplifier. It supports most types of thermocouples, meaning that you can aim for as cold as -200℃ or as hot as 1,800℃! As I plan on building a Zephyr-based temperature monitor for my raku pottery kiln, I am really happy to see this driver merged in the official repo!
  • A new driver is available for ARC DesignWare Data Fusion Subsystem SPI (#56925)
  • ADC driver has been added for Renesas Smartbond. Both GPADC (10-bit resolution by default) and SDADC (14-bit) are supported. (#57164)
  • Added USB interface driver for the Renesas Smartbond DA1469x device family. (#56977)
  • An initial version of a driver for Infineon CAT1 watchdog has been added (#57910)

Miscellaneous

  • You can now enable or disable the shell prompt using the shell prompt [on|off] command. (#57736)

A big thank you to the 16 individuals who had their first pull request accepted this week 💙 🙌: Chad, Silviu, Nathan, Denis, Peter, Oscar, Niek, Rander, Chris, Michael, Nils, Matthias, Disha, Lukasz, TianShuang, and Bansidhar.

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 the editions of the Zephyr Weekly Update:

By Benjamin Cabé

Benjamin Cabé is a technology enthusiast with a passion for empowering developers to build innovative solutions. He has invented an award-winning open source and open hardware artificial nose that he likes to use as an educational platform for people interested in diving into the world of embedded development.
He is currently a Developer Advocate for the Zephyr Project at the Linux Foundation and lives near Toulouse, France, where he enjoys baking sourdough bread with the help of his artificial nose.

Leave a Reply

Your email address will not be published. Required fields are marked *