A community and blog for embedded software makers| Interrupt
A community and blog for embedded software makers| Interrupt
A community and blog for embedded software makers| Interrupt
This series of articles discusses the development of a SOTA Open Smart Ring - a tiny wearable packed with electronics that fits on your (even the smallest) finger. We dive deep into what it means to develop such a product, its challenges, and ultimately, how to make it a manufacturable and usable piece. Continue reading…| Interrupt
A community and blog for embedded software makers| Interrupt
In this post, we’ll go over a method of coredump collection that does the stack unwinding on-device. This approach allows devices that may be sensitive to leaking PII (Personally Identifiable Information) that may be stored in memory on the stack or heap to safely collect coredumps in addition to greatly reducing the size needed to store them. Continue reading…| Interrupt
A community and blog for embedded software makers| Interrupt
A community and blog for embedded software makers| Interrupt
This article chronicles my unexpected 3-hour adventure using Claude to create Gophyr: a fully functional Gopher client for Zephyr, complete with a Zephyr shell command set. Continue reading…| Interrupt
A community and blog for embedded software makers| Interrupt
A community and blog for embedded software makers| Interrupt
The following guide serves as a prescriptive, step-by-step way of debugging errors that on their face appear to be intangible. Continue reading…| Interrupt
A community and blog for embedded software makers| Interrupt
A community and blog for embedded software makers| Interrupt
A community and blog for embedded software makers| Interrupt
A community and blog for embedded software makers| Interrupt
A community and blog for embedded software makers| Interrupt
A community and blog for embedded software makers| Interrupt
A community and blog for embedded software makers| Interrupt
A community and blog for embedded software makers| Interrupt
A community and blog for embedded software makers| Interrupt
A community and blog for embedded software makers| Interrupt
A community and blog for embedded software makers| Interrupt
This blog post provides a practical tutorial demonstrating a simple APM solution for low-power devices. The solution leverages Zephyr RTOS on an nRF52, and SmartMesh IP on an Analog LTC5800 which can accommodate an arbitrary number of wireless motes. The motes can send a set of performance metrics at certain heartbeat intervals via a framework provided by Memfault. The framework is scalable and allows the creation of a customized group of metrics. Continue reading…| Interrupt
After nearly seven years of Interrupt contributions, we’ve decided to take this conversation to the next level. Introducing Interrupt Live: a YouTube Live series where we sit down with Interrupters to hear more about their origin stories, engineering journeys, and the unique challenges that inspired their contributions. If you’ve ever wanted to hear directly from the engineers behind your favorite Interrupt posts, now’s your chance. Continue reading…| Interrupt
🎆 Happy New Year! 🎆 Here’s to making 2025 the best year yet. 2024 was an exciting year for Interrupt with 39 new articles, 6 new external contributors, and 576 new subscribers. Thanks for being a part of it! Here are the articles, videos, and tools that we’ve been excited about this December. Continue reading…| Interrupt
This guide provides instructions for setting up an environment for developing, debugging, and programming embedded systems firmware in the Windows Subsystem for Linux (WSL2). Continue reading…| Interrupt
In this article, we’ll walk you through our journey, the challenges we faced, and how this migration is shaping a better future for those who rely on our technology to improve their health and fitness. Continue reading…| Interrupt
Here are the articles, videos, and tools that we’ve been excited about this November. Continue reading…| Interrupt
While using a full-blown filesystem for storing your data in non-volatile memory is common practice, those filesystems are often too big, not to mention annoying to use, for the things I want to do. My solution? I’ve been hard at work creating the sequential-storage crate. In this blog post I’d like to go over what it is, why I created it and what it does. Continue reading…| Interrupt
Here are the articles, videos, and tools that we’ve been excited about this October. Continue reading…| Interrupt
In this very Memfault-centric post, I’ll be talking about how we shipped our SDK as an ESP-IDF component. This is a continuation of our efforts to make it easier to integrate Memfault into your projects, specifically targeting ESP32-based projects. Continue reading…| Interrupt
In this post, we will cover what we learned from the first Embedded World North America. Our team had the chance to meet with some IoT device makers and understand what is top of mind for them. Continue reading…| Interrupt
About 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? Continue reading…| Interrupt
Here are the articles, videos, and tools that we’ve been excited about this September. Continue reading…| Interrupt
Here are the articles, videos, and tools that we’ve been excited about this August. Continue reading…| Interrupt
In this article, we will learn how memory usage patterns can affect the real-time performance of an embedded application, drawing from a recent experience tracing an audio DSP application running on an embedded Linux platform. First, I will introduce the product in question and the real-time audio software I developed for it. Then, I’ll describe the issues I encountered with audio callbacks and the strategy I followed to determine the cause of the issues, ending with my solution and lessons...| Interrupt
The JTAG interface is an important tool for debugging and testing embedded systems, providing low-level access to the internal workings of microcontrollers and other integrated circuits. However, this powerful interface also presents significant security threats. In the sixth and final part of this Diving into JTAG article series, we will focus on security issues related to JTAG and the Debug Port. Continue reading…| Interrupt
Here are the articles, videos, and tools that we’ve been excited about this July. Continue reading…| Interrupt
In this article, we will explore how to use GitHub Actions to automate building STM32CubeIDE projects. Eclipse-based IDEs like STM32CubeIDE are often used for developing embedded systems but can be a little tricky to build in a headless environment. Continue reading…| Interrupt
Persisting to flash is a necessary evil for many embedded devices. Let’s take a look at some of the pitfalls and how they may be avoided. Continue reading…| Interrupt
Schematic reviews are a part of the hardware development cycle in many if not most, hardware development companies. Typically led by the electrical engineering team, it is easy to overlook design issues that will be important to the firmware team. This post tells of a few stories of design misses that I have made and puts some common lessons learned into a checklist for other firmware engineers. It is not meant to be an exhaustive list, but rather a starting point for a firmware engineer to b...| Interrupt
Here are the articles, videos, and tools that we’ve been excited about this June. Continue reading…| Interrupt
NVIDIA offers one of the most comprehensive SDKs for developers of AI-heavy products. It includes a development kit that can emulate other devices in the lineup (Jetson AGX Orin DK), a simpler development kit for “entry-level” products (Jetson Orin Nano DK), a ton of exciting software libraries, AI models and even more examples of how to use them. It’s truly outstanding and out of the box shows up as a Ubuntu workstation which will feel very familiar. However, it can be a bit daunting t...| Interrupt
In previous articles, we have considered the primary uses of JTAG, including debugging and testing boards in production. For firmware developers, the first - debugging - is the most common. In this article, I want to look at two uses of JTAG Boundary Scan, which are also common tasks for a firmware developer: board bring-up and reverse engineering. Continue reading…| Interrupt
Here are the articles, videos, and tools that we’ve been excited about this May. Continue reading…| Interrupt
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. Continue reading…| Interrupt
We cover the talks I was able to see in person, as well as some talks seen by my colleagues since they were posted. Obviously this is just our little biased selection, we have not been able to see everything, let us know in the comments what we missed! Continue reading…| Interrupt
Here are the articles, videos, and tools that we’ve been excited about this April. Continue reading…| Interrupt
In this post, I will share the technologies I saw at Embedded World 2024 that I was most impressed by. I was lucky to have plenty of time to walk from booth to booth, and had some fantastic conversations that I hope you will find interesting. Continue reading…| Interrupt
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. Continue reading…| Interrupt
Here are the articles, videos, and tools that we’ve been excited about this March. Continue reading…| Interrupt
In the previous article of this series, we briefly touched on how .bsd files written in Boundary Scan Description Language (BSDL) describe the structure of the boundary scan chain and the instruction set. In this article, we will examine this language’s syntax more closely before seeing how .bsd files are leveraged in JTAG testing in the next article. Continue reading…| Interrupt
In the third installment of this JTAG deep dive series, we will talk in-depth about JTAG Boundary-Scan, a method used to test interconnects on PCBs and internal IC sub-blocks. It is defined in the IEEE 1149.1 standard. I recommend reading Part 1 & Part 2 of the series to get a good background on debugging with JTAG before jumping into this one! Continue reading…| Interrupt
The ELF object file format is one of the most commonly used today. Most build systems provide an output to this format, and ELF is commonly used to output coredumps. The format varies in subtle ways for 32-bit and 64-bit targets though, which can present problems for tools supporting both. This post will highlight the main differences and is intended as a quick reference for these differences. Continue reading…| Interrupt
Here are the articles, videos, and tools that we’ve been excited about this February. Continue reading…| Interrupt
This post will cover why device connectivity is complex and what methods we have available to diagnose and solve connectivity problems, both in the office and remotely in production. The tool at the core of our strategy is metrics, but we’ll briefly survey other tools like logging and protocol analysis. We’ll look in-depth at the utility of metrics and wrap up with some practical metric examples to use in your device. Continue reading…| Interrupt
Here are the articles, videos, and tools that we’ve been excited about this January. Continue reading…| Interrupt
🎉 Happy New Year! 🎉 Here’s to making 2024 the best year yet. 2023 was an exciting year for Interrupt, with 36 new articles, 13 new external contributors, 12 community Meetups, and a partridge in a pear tree. Thanks for being a part of it. Here are the articles, videos, and tools that we’ve been excited about this December. Continue reading…| Interrupt
In this article, I discuss some of the problems I’ve encountered in producing and analyzing device logs over the years, on single digit number of devices up to hundreds of thousands, and concepts I’ve applied to manage that complexity. My background is in Android development, so some of the examples may skew towards much more powerful hardware than simple microcontrollers. Continue reading…| Interrupt
Here are the articles, videos, and tools that we’ve been excited about this November. Continue reading…| Interrupt
If you’ve ever wanted to plot data acquired on your embedded target, this article is for you. It explores common use cases for real-time data visualization using STMViewer. Say goodbye to manual, time-consuming, and error-prone data collection and display methods to speed up your debugging process. Continue reading…| Interrupt
Here are the articles, videos, and tools that we’ve been excited about this October. Continue reading…| Interrupt
At Memfault, our love affair with Rust began in late 2022. What drew us to Rust? Well, the typical allure of a modern programming language: an impressive type-system, memory safety without the constant jitters, efficient concurrency management, a thriving package ecosystem, and overwhelming support from our engineering team. To put it simply, we’re smitten. Our journey with Rust has been nothing short of transformative, enabling rapid progress and leading us to conquer challenges we previou...| Interrupt
PC applications that interact with MCUs are used by developers for a number of reasons, such as data visualization, monitoring during testing campaigns, and command and control via a GUI. In this article, we’ll explore mapping an MCU’s peripherals to your personal computer to simplify development of PC applications built for embedded systems. Continue reading…| Interrupt
Here are the articles, videos, and tools that we’ve been excited about this September. Continue reading…| Interrupt
The C printf function is a staple of embedded development. It’s a simple way to get logs or debug statements off the system and into a terminal on the host. This article explores the various ways to get printf on Cortex-M microcontrollers. Continue reading…| Interrupt
In this article, we’ll weigh the benefits of using the Cortex-M interrupt model as a scheduler and go over a simple implementation of this concept. Continue reading…| Interrupt
Here are the articles, videos, and tools that we’ve been excited about this August. Continue reading…| Interrupt
To ensure the reliability and stability of IoT applications, effective debugging and error monitoring are crucial. Memfault comes to the rescue with its comprehensive set of tools for remote debugging, crash reporting, and real-time error monitoring. Continue reading…| Interrupt
In this article we will explore the different facilities and tools available to debug Android based devices and produce robust systems that can handle a wide range of applications from smart fridges, to payment terminals, and of course mobile phones. Continue reading…| Interrupt
Here are the articles, videos, and tools that we’ve been excited about this July. Continue reading…| Interrupt
In this article, we explore the inner workings of Futures, cooperative scheduling, and Async Rust executors, highlighting their significance in optimizing resource utilization. Moreover, we introduce the Rust Embassy project, an innovative framework designed to unlock the power of asynchronous programming on microcontrollers. Continue reading…| Interrupt
Here are the articles, videos, and tools that we’ve been excited about this June. Continue reading…| Interrupt
A core belief of Memfault is that we can ship faster when we have good infrastructure in place. An essential piece of this infrastructure is tools to send firmware updates over the air. It enables the team to ship more often and spend more time building features. In this article, we look specifically at what is required to ship over-the-air firmware updates for Linux systems. Continue reading…| Interrupt
Separate “debug” and “release” builds are very common in embedded development. Typically the notion is improved debug capabilities (less aggressive compiler optimizations, more debugging information like logs) vs. highly optimized and hardened production release builds. I’m here to describe disadvantages to this practice, and why it might make sense to consolidate to a single build! Continue reading…| Interrupt
Here are the articles, videos, and tools that we’ve been excited about this November & December. It’s a long list…happy new year! Continue reading…| Interrupt
A community and blog for embedded software makers| Interrupt
A community and blog for embedded software makers| Interrupt
A community and blog for embedded software makers| Interrupt
A community and blog for embedded software makers| Interrupt
A community and blog for embedded software makers| Interrupt
A community and blog for embedded software makers| Interrupt
A community and blog for embedded software makers| Interrupt
A community and blog for embedded software makers| Interrupt
A community and blog for embedded software makers| Interrupt
A community and blog for embedded software makers| Interrupt
A community and blog for embedded software makers| Interrupt
A community and blog for embedded software makers| Interrupt
A community and blog for embedded software makers| Interrupt
A community and blog for embedded software makers| Interrupt
A community and blog for embedded software makers| Interrupt
A community and blog for embedded software makers| Interrupt
A community and blog for embedded software makers| Interrupt
A community and blog for embedded software makers| Interrupt
A community and blog for embedded software makers| Interrupt
A community and blog for embedded software makers| Interrupt
A community and blog for embedded software makers| Interrupt
A community and blog for embedded software makers| Interrupt
A community and blog for embedded software makers| Interrupt