Categories
IoT Zephyr

Zephyr Weekly Update – Yes we CAN

As we’re entering a new month, I would like to start this week’s update with a quick look at some interesting metrics for the month of April, taken from the GitHub repository. And we are getting dangerously close to 500 boards supported upstream!

While I have your attention, I would also like to encourage you to take the Eclipse IoT Developer Survey and take some time to provide your input with regards to your embedded and IoT practices (which programming language or RTOS you use–hint, hint!–to hardware architectures, software supply chain management practices, etc).

And without further ado, let’s dive into this week’s noteworthy Zephyr contributions!

New boards, shields & SOCs

XMC4700 relax kit from Infineon.
  • XMC4700 relax kit board (#55435): Zephyr now supports the XMC4700 relax kit from Infineon. This evaluation board sports an XMC4700 micro-controller, based on an Arm Cortex-M4 @ 144MHz, with 2MB Flash and 352KB of RAM.
    This MCU is well-suited for applications that require motor control (ex: toys, power tools, industrial pumps, …) and for EV-charging scenarios.
  • ARC HS4xD support (#56683): Support for the ARC HS4x processor family has been added, including the board definition for the HS4xD development kit. Since some of you, just like me until a few weeks ago, might not be familiar with ARC processors, I recommend you have a look at the dedicated Wikipedia entry.
  • Many developer kits from ST Microelectronics feature a so-called Morpho connector. As opposed to the common “Arduino shield” type of connector, Morpho aims at exposing *all* the pins of the MCU, which can be really convenient to really make the most of the available peripherals.
    Thanks to Gerald and pull request #57468, ST Morpho connector nexus nodes are now supported and the pins mappings for Nucleo G431RB and Nucleo F302R8 boards have been contributed as examples.

Drivers

  • NXP’s S32 family of microcontrollers are dedicated to automotive and industrial applications. As such, they support CAN XL, a variant of CAN that supports data rates up to 20MBit/s.
    With PR #52450, support has been added for NXP S32 CANEXCEL, and the board definition of the X-S32Z27X-DC has been updated accordingly.
  • The ADS114S08 from Texas Instruments is a low-power/low-noise 16-bit ADC. And of course, you’ve guessed correctly: it’s now supported 🙂 (#54911).
  • You might remember the Nordic nPM1300 Power Management Integrated Circuit (PMIC) from previous weeks, and the associated nPM1300-EK evaluation kit. PR #56929 added a driver for the charging module. The code sample for the evaluation kit has been updated accordingly.

Shell improvements

The Zephyr shell is definitely one of my favorite features. Its extensibility and ease-of-use to quickly expose “helpers” that help monitoring and troubleshooting an application are super convenient, and it’s great to see it got some love this week.

The Zephyr shell has been enhanced to allow capturing and retrieving return values from executed commands, making it easier for developers to diagnose issues and understand the outcomes of shell commands. Just use the retval command to get the return code of the command that was executed last.

uart:~$ sensor info
device name: hts221@5f, vendor: STMicroelectronics, model: hts221, friendly name: (null)
device name: lis2mdl@1e, vendor: STMicroelectronics, model: lis2mdl, friendly name: (null)
device name: lps22hb-press@5c, vendor: STMicroelectronics, model: lps22hb-press, friendly name: (null)
device name: lsm6dsl@6a, vendor: STMicroelectronics, model: lsm6dsl, friendly name: (null)
uart:~$ helpp
helpp: command not found
uart:~$ retval
-8

Debugging and Testing updates

  • As of version 0.12.0, OpenOCD supports Espressif’s USB JTAG Programmer. Therefore, there’s no need for a custom OpenOCD anymore if you want to debug for ESP-32. Very cool! The instructions for all the supported ESP32 devkits have been updated accordingly (#56935).
  • When using the flash simulator, ex. when targeting QEMU or native posix, one can now use a memory region as the storage area. This allows the flash simulator to keep its contents over a device reboot (#57380). See an example here.
  • Twister now (#57121) includes an option to shuffle tests across subsets, providing a more efficient and randomized testing environmentZephyr Weekly Update – May 5, 2023. This can help detect unwanted dependencies in test execution order, as well as distributing better tests among subsets (i.e. make sure tests that run longer are distributed more evenly).

Miscellaneous

  • New flags for disabling Neighbor Discovery/Multicast Listener Discovery per network interface (#57377): New network interface flags have been added to disable Neighbor Discovery (ND) and Multicast Listener Discovery (MLD) per network interface. This allows interfaces that do not support ND/MLD (like OpenThread) to coexist with other IPv6 interfaces.

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: