Skip to main content
Blog

Zephyr Weekly Update – Rust coming to Zephyr?

By August 2, 2024August 9th, 2024No Comments

It has been way too long since I posted a Zephyr Weekly Update, so let’s try to get back to a more regular schedule, shall we? The past few weeks have been very busy for the Zephyr community as the new Long-Term Support version of the project, Zephyr 3.7 was just released.

It is a big milestone for the project and it brings a lot of new features and improvements which I’ve been covering in details in last week’s announcement blog post. I also had a lot of fun diving into some of the most significant changes and putting together this video that’s packed with in-depth demos of the new HTTP Server, Precision Time Protocol integration, and more.

As for this week’s news, just keep reading!

Rust coming to Zephyr?

The first few weeks after a major release are the perfect time for new significant features to be proposed, and this is exactly what is happening right now with the proposal to add Rust support to Zephyr.

RFC #65837 describes the bulk of the proposal and there’s now a number of pull requests with actual code and documentation that I highly encourage everyone to give a try.

#![no_std]

use zephyr::printkln;

extern crate zephyr;

#[no_mangle]
extern "C" fn rust_main() {
    printkln!("Hello world from Rust on {}",
              zephyr::kconfig::CONFIG_BOARD);
}

I am really excited to see all the work and discussions happening around the topic as this will be my excuse to finally learn Rust!

Interesting, and related: as of this week, probe-rs is a new supported runner which you can use to flash/debug a supported board. (PR #71627)

probe-rs is an embedded debugging and target interaction toolkit. It enables its user to program and debug microcontrollers via a debug probe.

Upcoming Zephyr Tech Talk

Join me on Wednesday, August 7 (3.oo pm CEST / 9.00 am EDT) for a new Zephyr Tech Talk live stream! Katarzyna Zalewska will be back on the show and we will be discussing some of the best practices for monitoring the health of IoT devices in realtime.

You may join us from YouTube or LinkedIn, whichever you prefer 🙂

Boards & SoCs

Not an exhaustive list, but some of the new boards and shields recently added are:

  • Added support for the Nucleo-H503RB board (PR #75590)
  • Added support for Mikroe BLE TINY Click shield. (PR #76246)
  • Added support for Adafruit Feather nrf52840 Sense. (PR #76135)

Drivers

  • New driver for ST LSM9DS1 9-DOF IMU. (PR #73141)
  • New RTC driver for Micro Crystal RV-8263-C8 . (PR #73385)
  • New driver for Infineon CAT1 QSPI flash controller. (PR #73976)
  • New True-RNG driver for Analog Device MAX32xxx SoC series. (PR #74943)

Miscellaneous

  • HTTP server now allows to serve static resources directly from the file system. The content type of the resource is auto-guessed based on the file extension, and .gz files are also automatically treated as compressed content and HTTP headers set accordingly. Neat! (PR #76106)
  • Emulated UART devices can now be added to a zephyr,uart-emul UART controller. (PR #75827)
  • New LwM2M shell command (obs) to dig into active observations. (PR #74293)

A big thank you to the 23 individuals who had their first pull request accepted since Zephyr 3.7 was released, 💙 🙌: @jacobw, @bas-archembedded, @dberlin, @alexstanoev-nordic, @maarten1C96, @SandraArrow, @Finwood, @juliaazziz, @LeoBRIANDSmile, @Finomnis, @anobli, @gschwaer, @WalkingTalkingPotato, @florolf, @thales-nascimento, @mrodgers-witekio, @VineetaNarkhede-eaton, @GaofengZhangNXP, @munir-zin, @olivier-le-sage, @00thirdeye00, @nordic-pikr, and @jsarha.