The first two posts in this series covered:

This post digs deeper into the Requirements, Architecture, and Tooling that we’ll use to implement the firmware.


The basic requirements document is embedded here (generated using asciidoctor-pdf):


The basic architecture document is embedded here:


This section captures the list of tools used to get things done. It is important for projects to document this, perhaps even in abridged detail.

Tooling information can also be archived as a PDF to track tooling changes throughout the project lifetime. I won’t be doing it here, but archival is especially important during projects that demand proper lifecycle documentation, such as anything following a safety-critical development process.

Hardware Tools

Aside from the nRF51-DK, nRF52-DK, and nRF52840 Dongle development kits, the following tools are needed:

  • Soldering iron with fine tip (a $10 special from eBay or AliExpress will do just fine, this is mine)

    hardware tools soldering iron 1a
  • 0.1" / 2.54mm pin headers

    hardware tools headers 1b

    The super tall 0.1" pin headers are especially useful for signal tapping using the logic analyzer! All of that tasty metal to clamp onto.

    hardware tools headers 2a
  • 0.05" / 1.27mm Serial Wire Debug 10-pin header (like these)

  • Logic analyzer

    hardware tools logic analyzer 1a
  • A steady hand and relatively good vision


Software Tools

To get started, only two main pieces of software are needed:

  • GNU Arm Embedded Toolchain

    Arm provides prebuilt compiler toolchains that support all of the released Cortex-M microcontrollers.

    The open-source tools receive updates on a rolling basis, following the upstream GNU release cycle. Releases are generally quite up-to-date, including support for recent C++ language features.

  • SEGGER Embedded Studio

    SEGGER builds a solid integrated development environment that supports the GNU Compiler Collection tools, with code completion and the expected bells and whistles.

    tools ide 1

Next Steps

Once we have a handle on these three pieces of documentation, we can start to look into the firmware implementation.

Updated 2020-04-24 15:27:02 +0200, proudly made with Asciidoctor.