The Interrupt community comprises engineers, hobbyists, and enthusiasts with a shared passion for hardware and firmware development. We come together to share best practices, problem-solve, collaborate on projects, advance the embedded community, and elevate device reliability engineering (DRE).
The Interrupt Community was created and is moderated today by the founders of Memfault.
Latest Blog Posts
-
What we've been reading in August (2025)
Here are the articles, videos, and tools that we’ve been excited about this August.
-
What we've been reading in July (2025)
Here are the articles, videos, and tools that we’ve been excited about this July.
-
Embedded Systems Roadmap: Bridging the Gap
In this article, I’ll share the story behind creating my embedded systems engineering roadmap, why it became necessary, the logic behind its structure, and how to use it effectively in your learning journey.
-
Smart Ring Development (Part 2) - Hardware Design
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.
-
What we've been reading in June (2025)
Here are the articles, videos, and tools that we’ve been excited about this June.
Top Blog Posts
-
A Modern C Development Environment
In this article we’ll go over how to set up a containerized development environment for C projects. We’ll touch on setting up a build system using CMake, a testing environment using Unity, and even how to use our containerized environment in our CI pipeline!
-
Cortex-M MCU Emulation with Renode
In this post, I walk through setting up the Renode emulator and running a firmware in it for STM32. Using that setup, we’ll debug our firmware, run it through integrated tests, and shorten the iteration cycle of development.
-
A Guide to Watchdog Timers for Embedded Systems
In this article we will discuss the last line of defense in embedded systems – watchdogs. We will walk through a step-by-step example of how to implement a watchdog subsystem, incorporating a “hardware” and “software” watchdog, and examine effective strategies for root causing the underlying problems leading to these hangs.
-
How to debug a HardFault on an ARM Cortex-M MCU
In this article, we explain how to debug faults on ARM Cortex-M based devices. In the process, we learn about fault registers, how to automate fault analysis, and figure out ways to recover from some faults without rebooting the MCU. We include practical examples, with a step by step walk-through on how to investigate them.
-
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. -
The Best and Worst GCC Compiler Flags For Embedded
In this article we will explore some of the best and worst compiler flags for GCC (and Clang). Our focus will be on flags used for embedded projects but the reasoning applies to other development environments as well. We will explore the impact each flag has by walking through practical C code examples.
-
Embedded C/C++ Unit Testing Basics
In this post, we go into detail on how to properly build abstractions to stub, fake, and mock out implementations of low level embedded software and provide a full real-world example of a unit test using the CppUTest 3.8 unit test framework.
-
A Practical guide to ARM Cortex-M Exception Handling
In this article we will dive into the details of how the ARM Cortex-M exception model supports the handling of asynchronous events. We will walk through different exception types supported, terminology (i.e. NVIC, ISR, Priority), the configuration registers used & common settings, advanced topics to be aware of regarding exceptions and a few examples written in C.
-
From Zero to main(): How to Write a Bootloader from Scratch
In this post, we will explain why you may want a bootloader, how to implement one, and cover a few advanced techniques you may use to make your bootloader more useful.
-
Get the most out of the linker map file
In this article, I want to highlight how simple linker map files are and how much they can teach you about the program you are working on.
About Memfault
Memfault is the first cloud-based observability platform for connected device debugging, monitoring, and updating, which brings the efficiencies and innovation of software development to hardware processes. Recognizing that any connected device team could benefit from what they were building, François Baldassari, Chris Coleman, and Tyler Hoffman founded Memfault in 2018 with the help of colleagues from Pebble. Explore Memfault