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

  • What we've been reading in May

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

  • Bazel Build System for Embedded Projects

    Selecting a build system is an essential decision when creating a project. Changing is always painful, especially in a mature repository. Therefore the choice should be made carefully. With this article, I will try to describe a few advantages of what Bazel can provide in the context of an embedded repository and show how to set up a build environment with a cross compiler from scratch.

  • Zephyr Deep Dive: Ring Buffers

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

  • C++17’s Useful Features for Embedded Systems

    In this article, I will be showing some features of C++17 that can also be helpful in the embedded world.

  • OTA for Embedded Linux Devices: A practical introduction

    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.

  • What we've been reading in April

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

  • Pocket article: Debug vs. Release Builds Considered Harmful

    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!