-
WSL2 for Firmware Development
by JP HutchinsThis guide provides instructions for setting up an environment for developing, debugging, and programming embedded systems firmware in the Windows Subsystem for Linux (WSL2).
-
Comparing Firmware Development Environments — Linux, Windows, WSL2, and VMWare
by JP HutchinsAbout a year and a half ago, I decided to take a different approach to setting up a Zephyr environment for a new project at Intercreate. Instead of using my trusty VMWare Workstation Linux VM, I opted for WSL2. I was curious to find out: Would hardware pass-through for debugging work reliably? Would all of the tooling dependencies be supported? What about build system performance?
-
Practical Zephyr - West workspaces (Part 6)
In the previous articles, we used freestanding applications and relied on a global Zephyr installation. In this article, we’ll see how we can use West to resolve global dependencies by using workspace applications. We first explore West without even including Zephyr and then recreate the modified Blinky application from the previous article in a West workspace.
-
Practical Zephyr - Devicetree practice (Part 5)
In the previous articles, we covered Devicetree in great detail: We’ve seen how we can create our own nodes, we’ve seen the supported property types, we know what bindings are, and we’ve seen how to access the Devicetree using Zephyr’s
devicetree.h
API. In this fifth article of the Practical Zephyr series, we’ll look at how Devicetree is used in practice by dissecting the Blinky application. -
Practical Zephyr - Devicetree semantics (Part 4)
Having covered the Devicetree basics in the previous article, we now add semantics to our Devicetree using so-called bindings: For each supported type, we’ll create a corresponding binding and look at the generated output to understand how it can be used with Zephyr’s Devicetree API.
-
Practical Zephyr - Devicetree basics (Part 3)
In this third article of the “Practical Zephyr” series, we’ll see how we configure and use hardware. For this, Zephyr borrows another tool from the Linux kernel: Devicetree.
In contrast to Kconfig, the Devicetree syntax and its use are more intricate. Therefore, we’ll cover Devicetree in two articles. In this article, we’ll see what Devicetree is and how we can write our own Devicetree source files. In the next article, we’ll look at so-called Devicetree bindings, which add semantics to our Devicetree. Be prepared for a fair bit of theory, but as usual, we’ll use an example project to follow along.
-
Practical Zephyr - Kconfig (Part 2)
In this second article of the “Practical Zephyr” series, we’ll explore the kernel configuration system Kconfig by looking at the
printk
logging option in Zephyr. We won’t explore the logging service as such in detail but instead use it as an excuse to dive deep into Kconfig. Finally, we’ll create our own little application-specific Kconfig configuration. -
Practical Zephyr - Zephyr Basics (Part 1)
If you’re working a full-time job and would still like to get started with Zephyr but don’t have the energy to set up your environment to dive deeper into the docs, this article series will guide you through the Zephyr basics. Of course, you’ll learn most if you follow along with programming, but all code, including snippets of generated code and build logs, are included in the articles of this series. Thus, even just reading this series should give you a good idea about how Zephyr works.
-
Measuring Stack Usage the Hard Way
This article is intended to shed some light on strategies for measuring stack memory usage on a small embedded system.
-
Zephyr Deep Dive: Ring Buffers
by Eric JohnsonThis post covers Zephyr’s built-in ring buffer API, a component commonly used in producer-consumer scenarios. We will cover how ring buffers in Zephyr work, when to use them, and their strengths and weaknesses. This post will close with an example of augmenting ring buffers with waiting capabilities.
-
How to Build Drivers for Zephyr
by Jared WolffIn this post, I’ll go over some of the nuances related to creating drivers for your peripherals on Zephyr. We’ll talk about Device Tree organization,
Kconfig
, andCMakeLists.txt
files. By the end, you should have an idea on how to tackle your own Zephyr driver aspirations!