Tag: build-system

  • Practical Zephyr - Zephyr Basics (Part 1)

    If you’re working a full-time job and would still like to get started with Zephyr but don’t have the energy to set up your environment to dive deeper into the docs, this article series will guide you through the Zephyr basics. Of course, you’ll learn most if you follow along with programming, but all code, including snippets of generated code and build logs, are included in the articles of this series. Thus, even just reading this series should give you a good idea about how Zephyr works.

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

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

  • Pocket article: Debugging ccache misses

    This article provides a few tips and tricks for diagnosing ccache misses, to keep your C/C++ build nice and snappy!

  • Pocket article: How to implement and use `.noinit` RAM

    This pocket article will describe how a non-initialized region of memory works, how to implement it, and how it can be used in a typical embedded system.

  • Seamless firmware development with PlatformIO

    In this post, I’d like to introduce PlatformIO. I will go over what PlatformIO is, how you can use it for your project, and what it is good at. I also highlight a few shortcomings worth keeping in mind.

  • Separating Unique Parameters from Firmware Binaries

    In this post, we take a look at a method for separating unique parameters such as keys and IDs from firmware. This enables us to program these parameters separately from the firmware, making our setup much more scalable and suitable for use in production.

  • Reproducible Firmware Builds

    In this article we will discuss what a Reproducible Build is, walk through the process of updating a firmware project so the build is reproducible, and explore how we can leverage what we have learned for other aspects of development.