Categories
IoT Zephyr

Zephyr Weekly Update – Networking goodness

Happy Friday! Welcome back for another edition of the Zephyr Weekly Update… with two weeks worth of news this time around 🙂

In case you missed it, I highly recommend you catch up the recording of this week’s Zephyr Tech Talk. We discussed the new hardware model introduced for the upcoming Zephyr 3.7 release, the kind of use cases it allows to address, and what you need to do to migrate your existing board definitions. We had well over 200 people attending—a record!

And now, for some of the things that recently landed in the main Zephyr tree…

Use host networking stack in native simulator

The native simulator is getting a lot of love recently, and a noteworthy improvement is the fact that there is now a way to directly use the host’s networking stack, which means it’s now much easier to leverage networking in the simulator, without having to rely on TUN/TAP interfaces and error-prone configuration scripts.

Read more in the documentation of the native simulator. (PR #65116)

“Cooked mode” capture

On the topic of networking, it is now possible to perform so-called “cooked mode capture” of network traffic. In a nutshell, this means that it’s now possible to capture the packets that are being sent and received by the Zephyr networking stack without requiring a physical network interface to be present.

More details on how this works in the documentation, as well as the dedicated net-capture code sample. (PR #70926)

Boards & SoCs

  • Seeed Studio XIAO Expansion Board is a cheap yet very complete expansion shield for boards with the XIAO form factor. It includes an OLED display, a microSD card slot, an RTC, and plenty of Grove connectors. Thanks Charles for adding support for it in(PR #69999!
  • ST B-LCD40-DSI1 is a shield with a 4″ WVGA TFT LCD with MIPI DSI interface and a capacitive touchscreen. (PR #70350)
  • WeAct Studio MiniSTM32H743 Core board features a STM32H743VIT6 (Cortex-M7 @ 480 MHz), 2MB of Flash, and 2x 8MB of external Flash. (PR #69267)
  • M5Stack ATOM Lite is a tiny ESP32-PICO-D4 based devkit with an RGB LED, an infra-red LED, and a Grove connector. The really small form factor makes it one of my favorite targets for quick ESP32 tests. (PR #68190)
  • Several new drivers for some NXP peripherals:
    • ESAI (Enhanced Serial Audio Interface), used for serial communication with e.g. DSPs, S/PDIF transceivers, … (PR #68875)
    • ENET QOS (Ethernet QoS).(PR #70637)
    • hwinfo now available for RW SoCs. (PR #70456)

General drivers

  • STTS22H is an ultralow-power, high-accuracy, digital temperature sensor, with an operating range of -40 °C to +125 °C. (PR #68356)
  • Aosong DHT20 temperature and humidity sensor (sometimes found as Aosong AHT20, or Aosong AM2301B, don’t ask me why). (PR #67279)
  • Angst+Pfister oxygen sensors from the MDLx5 series. (ex. FCX-MLD25 & FCX-MLD95). (PR #68689)
  • onsemi MT9M114 is a 1/6″ 1.26 Megapixel CMOS digital image sensor and the Zephyr driver for it was significantly reworked to improve framerate and support more resolutions. (PR #70237)
  • Cellular modem drivers can now expose IMEI and ICCID info. (PR #69217)
  • New GNSS Driver for U-BLOX M10. (PR #68350)
  • New driver for Sitronix CF1133 touchscreen controller. (PR #68321)
  • New driver for Cirque Pinnacle 1CA027 trackpads. (PR #69438)
  • ST LIS2DUX12 accelerometer (ultralow-power 3-axis smart accelerometer, with anti-aliasing filter) is now supported. (PR #65259)
  • Existing MPU6050 has been reworked to now also support MPU6500. (PR #70130)

Miscellaneous

  • LVGL module has been updated to v8.4.0, and LVGL 9 support is imminent! (PR #70470)
  • A significant overhaul of the Virtual LAN (VLAN) implementation . (PR #70345)
  • CONFIG_NET_SOCKETS_POSIX_NAMES Kconfig option is being deprecated. You can read more about why in the migration guide entry that was created for this change. (PR #69950)
  • ram_report and rom_report West targets now show the address of the objects in the output reports. (PR #69542)
  • RTT Shell backend now detects the presence of a host, preventing deadlocks in situations where the shell would end up continually writing to RTT. (PR #68941)
  • Added support to configure BSSID in Wi-Fi connect command. (PR #70024)
  • mDNS responder used to make it mandatory to have all the records set at compile time. It is now possible to provide the records at runtime. (PR #60271)
  • POSIX:
    • Added support for clock_getres(). (PR #70525)
    • Added support for pthread_rwlockattr_setpshared(). (PR #70421)
    • Added support for pthread_attr_getinheritsched() and pthread_attr_setinheritsched(). (PR #68470)
    • Added support for pthread_setschedprio(). (PR #71001)
    • Added missing implementations for POSIX networking API calls. (PR #70635)

A big thank you to the 24 individuals who had their first pull request accepted in the past couple weeks, 💙 🙌: @mayankmahajan-nxp, @swkim101, @fpistm, @erian747, @zakport, @benni44, @clemdy, @ZhaoxiangJin, @zejiang0jason, @akscram, @RickBruyninckx, @kdunn926, @raffarost, @jatedev, @cliu5764, @glneo, @23131dw, @HesselM, @arikgreen, @ringlej, @bmulder-innoseis, @mdubielx, @ct-fk, and @javanlacerda.

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:

Categories
IoT Zephyr

Zephyr Weekly Update – Using CLion for Zephyr development

Welcome back for another weekly update about all things that happened in Zephyr land! Without further ado, let’s dive into the highlights of the past week.

Using CLion for Zephyr development

There is always a lot of questions from people new to Zephyr on what IDE they should be using (if any), and suggestions for setting it up for Zephyr development.

It is really nice to see that the folks over at JetBrains took some time to document the instructions for using CLion to develop and debug Zephyr application, and I really encourage you to give them a try!

UART over Bluetooth LE

You may remember the Zephyr Tech Talk episode from a few weeks back where Luis Ubieda presented the work he’s been doing around making it easier to use UART over Bluetooth LE.

With PR #69881, a new implementation of Nordic UART Service (NUS) is provided. It essentially exposes to characteristics for RX/TX, allowing to mimic a UART over BLE.

A dedicated nus-console snippet makes it really easy to user UART over BLE for the Zephyr console, by allowing to redirect serial console output to a UART over NUS Devicetree instance.

MPU Support on Xtensa

MMU support was added a little while back, and it’s great to see that MPU (Memory Protection Unit) is now supported on Xtensa architectures.

PR #67938.

Boards & SoCs

  • Nuvoton NuMaker M2L31KI evaluation board is a Cortex-M23 based development board running at 72MHz and targeting IoT applications. (PR #70357)
  • Pin mappings for ST Morpho connector of supported STM32 Nucleo G0 boards have been added with PR #69693.
  • Many new peripherals have been added to the NXP RW612 SoC port, from DMA to Flash driver, counters, I2C, …. (see e.g. PR #70192)

General drivers

There were several interesting improvements around Ethernet support:

  • You can now use Ethernet drivers in “raw” mode (i.e. without building the L2 layer / MAC support). See CONFIG_ETH_DRIVER_RAW_MODE. (PR #70030)
  • It is now possible to do Ethernet MAC address filtering. (PR #69385)

And also:

  • MAX31790 is a 6-Channel PWM Fan RPM Controller. The existing PWM controller driver has been extended to now be a “multi-function device” (MFD) driver that also allows to access the “sensor” side of this IC, i.e retrieve the fan speed and fan fault information for each channel.
  • The new-ish driver for the Pixart PMW3610DM (low-power laser mouse sensor) now exposes more configuration options, ex. to set the resolution, enable “smart mode”, etc.). (PR #70248)

Miscellaneous

  • Zephyr API overview documentation page now indicates the stability level of each API. There are still many instances where the information is missing but surfacing this information will make it easier to improve and clean it up over time. (PR #61994)
  • In order to help not flood logs with log messages that are repetitive, new LOG_WARN_ONCE() macro will write a WARNING level message to the log on the first execution only. (PR #70282)
  • Ahead of the upcoming Zephyr Tech Talk about the new hardware model, some great work was done to explain the terminology inherent to SoCs and boards in the context of Zephyr. (PR #69802)
  • Percepio module has been updated to use TraceRecorder v4.8.2 and DevAlert (DFM) v2.1.0. (PR #68490)
  • POSIX:
    • Added support for pthread_attr_getscope() and pthread_attr_setscope(). (PR#68450)
    • Added support for confstr(). (PR #70274)

A big thank you to the 10 individuals who had their first pull request accepted this week, 💙 🙌: @MarinaKalashina, @Arunmanialagarsamy, @vidarbe, @SamyFrancelet, @su47flying, @grb72t3yde, @ad8sweera, @jgenssler-GiN, @ldaj00, and @eriktamlin.

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:

Categories
IoT Zephyr

Zephyr Weekly Update – Bring’em new boards and SoCs!

Before diving into this week’s Zephyr updates, here’s your reminder to save the date for our next Zephyr Tech Talk, on April 3. The new hardware model introduced for Zephyr 3.7 is a huge improvement that will allow Zephyr to stay relevant for increasingly complex embedded hardware systems.

Join us to understand the rationale behind this massive overhaul of the legacy model, and bring all the questions you may have, in particular with regards to migrating existing board definitions that you might be maintaining for your own projects.

Boards & SoCs

Now that the new hardware model has been rolled out, there’s quite a few new boards and SoCs that were waiting for it that could finally get merged. See for yourself:

  • The NXP RW SoC series provides highly integrated wireless (Wi-Fi, BLE, and 802.15.4) MCUs, and PR #69943 introduced support for it in Zephyr. The board definition for RW612 has also been added. This chip is typically sold by module manufacturer such as u-blox, Murata, etc. as a standalone, ready-to-use, wireless module.
  • FRDM-MCXN947 is a compact and scalable development board for rapid prototyping of MCX N94 and N54 MCUs. It is now supported in Zephyr. (PR #69890)
  • Starfive VisionFive2 is a high-performance 64-bit RISC-V single board computer (SBC) with an integrated GPU. (PR #69814)
  • ST25DV-DISCOVERY is a demonstration kit to evaluate the features and capabilities of the ST25DV series. Eve Redero contributed support for this board and I highly encourage you to also read the detailed write-up about the whole process. (PR #70010)
  • Numaker M2L31 SoC series is based on an Arm Cortex-M23 core running at up to 72 MHz, 64 to 512 Kb of ReRAM, and 40 to 168 Kb of SRAM. Typical applications include motor control, PC peripherals, battery management systems, etc. (PR #69778)
  • Adafruit 5×5 NeoPixel Grid BFF is a small shield that can stack on top of QT Py or XIAO boards and features 25 NeoPixel LEDs. It is now supported both as a “classic” LED strip, but also as a display controller using the LED matrix driver introduced last week! (PR #67610)
  • Support for DPPIC (Distributed Programmable Peripheral Interconnect Controller) and IPCT ((Interprocessor Communication Transceiver) peripherals has been added for Nordic Semiconductor nRF54H20. (PR #69811)
  • The STM32 SDMMC driver now also supports eMMC. (PR #69836)
  • New generic driver for NXP MCUX FlexIO. (PR #53748)
  • Support for external NOR flash has been added to FANKE FK7B0M1-VBT6. (PR #68442)
  • I2C support has been enabled on STM32H5 boards. (PR #69094)

General drivers

  • HL7800 cellular modem now supports PPP and CMUX, with the Pinnacle 100 DVK and MG100 from Laird Connectivity (now Ezurio!) updated accordingly. (PR #70060)
  • Added support for minimum supported bitrates in CAN drivers. (PR #69533)
  • ESP32 Ethernet driver now supports setting the MAC address at runtime. (PR #69869)
  • Microchip XEC series KSCAN driver has been converted to use the input subsystem and common keyboard matrix library. (PR #65162)
  • STM32 HCI Bluetooth driver now supports raw mode. (PR #69623)
  • New ADC_DT_SPEC_*_BY_NAME() macros allow to get ADC io-channel information from devicetree by name. (PR #68247)

Miscellaneous

  • west flash and west debugserver commands can now be used with the native_sim board. (PR #68835)
  • The network logging (syslog) backend now supports TCP in addition to UDP. (PR #68307)
    • Since the DHCP protocol allows to provide the address of a syslog server as part of the lease (option 7), the new CONFIG_LOG_BACKEND_NET_USE_DHCPV4_OPTION option allows to automatically set the syslog server address when the Log Server option is set by the DHCP server. (PR #69328)
  • Telnet shell backend has been refactored to use the new Socket service library. (PR #69612)
  • Stereo support has been added to the Bluetooh LE audio broadcast sink sample. (PR #69341)
  • “Change Microphone Gain” procedure has been implemeted in the Bluetooth CAP commander. (PR #66748)
  • Bluetooth CAP shell module now properly supports broadcast commands. (PR #68550)
  • New sys_slist_find() method to find an item in a singly linked list without removing it. (PR #66621)
  • POSIX:
    • Added support for getmsg() and getpmsg() (PR #68516)
    • Added a “small” runtime implementation for sysconf() (PR #69882)

A big thank you to the 13 individuals who had their first pull request accepted this week, 💙 🙌: @ene-steven, @KyleKotowick, @poialex, @alpineisle, @krisnaresi, @kurtjd, @nordic-segl, @michalek-no, @GRobertZieba, @sasataku, @kica-z, @grahas, and @marwaiehm-st.

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: