-
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! -
ARM Cortex-M RTOS Context Switching
In this article we will explore how context switching works on ARM Cortex-M MCUs. We will discuss how the hardware was designed to support this operation, features that impact the context switching implementation such as the Floating Point Unit (FPU), and common pitfalls seen when porting an RTOS to a platform. We will also walk through a practical example of analyzing the FreeRTOS context switcher,
xPortPendSVHandler
, utilizinggdb
to strengthen our understanding.