• Balancing Test Coverage vs. Overhead

    In a perfect world, all software and firmware are given precisely the time and budget it needs to be successful, code is uniformly well-written to industry best practices, and the code is complemented with a complete test suite instrumenting all aspects of the software.

    In practice, this rarely, if ever, happens! Development teams and organizations continually have to re-prioritize tasks to meet deadlines and avoid going over budget. In this article, we’ll cover how you can think about rapidly modifying and updating firmware, testing these changes, all the while allowing you to get the product out the door.

  • What we've been reading in February

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

  • Introduction to ARM Semihosting

    This post introduces semihosting and shows how to use it and integrate it into your own embedded projects.

  • What we've been reading in January

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

  • Proper Release Versioning Goes a Long Way

    In this article, we are going to talk through all the various pieces of metadata to be included in your firmware binaries, debug symbols, and build artifacts so that developers and machines can quickly and easily know exactly which build is which and how to fetch associated files for the debug, test, and release pipeline.

  • What we've been reading in December

    Happy New Year! Here’s to a wonderful 2021.

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

  • ARM Cortex-M33 Instruction Tracing Without a Debugger

    In this post we will explore how to perform instruction tracing without a debugger by using the ARM Cortex-M33 Micro Trace Buffer (MTB). We will walk through a few practical examples of how to configure the MTB with Dialog Semiconductor’s DA14695 MCU.

  • Defensive Programming - Friend or Foe?

    In this article, we’ll dive into what defensive and offensive programming are, where defensive programming falls short, how developers should think about using them within embedded systems, and how the techniques of offensive programming can surface bugs and help developers root cause them immediately at runtime.