• 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.

  • Tracking Firmware Code Size

    In this post, I will show you how to set up a code size dashboard for your project. I’ll cover why should track code size, how to do it, and the steps to calculate code size deltas on every pull requests to keep it to a minimum.

  • A Shallow Dive into GNU Make

    This article explains general concepts and features of GNU Make and includes recommendations for getting the most out of a Make build! Consider it a brief guided tour through some of my favorite/most used Make concepts and features 🤗.

  • What we've been reading in February

    Here are the articles, videos, and tools we’ve been excited about this past month.

  • A Practical Guide to Watchdogs 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.

  • Improving Compilation Time of C/C++ Projects

    Build times don’t have to be long, even yours! However, many factors play a role. In this post, we’ll dive into which factors contribute to slower builds, compare and contrast options, and also go over some easy wins which you can immediately contribute to your project and share with your teammates. The techniques discussed apply to most C/C++ compilers and projects, and there are a couple extra tips for those using the GNU GCC compiler.

  • Beyond Firmware in the 2020s

    In the next decade the capabilities of software for embedded systems will catch up to those of hardware, 'firmware' will become increasingly difficult to distinguish from 'software', and a new discipline altogether will begin to take shape.

  • Rust for Low Power Digital Signal Processing

    In this post, I go over how Rust can be used to implement DSP algorithms for firmware today, and compare the process and performance to the equivalent code written with CMSIS-DSP.