What we've been reading in May (2020)

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

We hope you enjoy these links, and we look forward to hearing what you’ve been reading in the comments.

Articles & Learning

  • The Lost Art of Structure Packing by Eric S. Raymond
    While struct packing may be a lost art to web developers, it is alive and well in embedded software engineering cycles. A great reference by ESR.
  • Nuttx International Workshop
    A lot of great content came out of the Nuttx international workshop last year. Whether you’re curious about running ROS on Nuttx, or want to learn more about networking support, there is something for everyone.
  • Journaled Flash Storage – Emulating EEPROM over Flash, ACID Transactions, and More. by “No Bugs” Hare
    A good overview of the differences between EEPROM and Flash, and how the latter can be adapted to replace the former.
  • IoT Security Report by Lennart Heim
    A sobering look at security risks inherent to the IoT, including an in-depth examination of the Mirai botnet.
  • Controlling my AC with my GameBoy by jglim
    A fun reverse engineering project which repurposes the GameBoy IR transceiver to control a home A/C unit.
  • Assert Rewriting - A GCC plugin by Jongy
    GCC plugins are very powerful. Here, Jongy writes a plugin to enhance the assert functionality in their C code. It’s a bit of a journey, but the end result is impressive.
  • Custom BLE Services with the nRF SDK
    Cached via Google, as the site is currently down. An in-depth guide on how to write your own BLE services with the nRF52 family of chips. This is a great resource as it assumes minimal prior knowledge and goes into the details.
  • Make LLVM Fast Again by Nikita Popov
    If compiler internals are of interest to you, you’re in for a treat. This article goes into details on how a 10% improvement in LLVM compilation times was achieved, with links to the underlying patches submitted to the project.o
  • Embedded Game Programming by Austin Morlan
    A seven-part (!!!) series of essays on developing games for an ESP32-based game platform (the Odroid Go). Austin goes into the details, from his build system setup, to the display drivers or the audio implementation. A great read!
  • The 10 Commandments for C Programmers by Henry Spencer
    “Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.” Enough Said!
  • Black Magic Probe Book
    Whether you are a BMP (an open source JTAG/SWD adapter) user or not, the BMP Book is a great reference on all things Cortex-M. We especially enjoyed the sections about ITM and DWT.

Videos

Neat Open Source Projects

  • uhubctl
    A neat library to control individual ports on a wide range of USB hubs.
  • Open Vehicle Monitoring System 3
    A collection of tools and libraries to interact with vehicles over CAN, OBD2, and more.
  • SiLabs uCos
    SiLabs open sourced uCos and all the related libraries earlier this year. There is some extraordinarily helpful software in there, including a filesystem, networking libraries, USB stack, and more. Best of all, the code is very clean and very well commented.
  • Golden Gate by Fitbit
    An ambitious, cross-platform framework for reliable and secure network communication over BLE. By the excellent team at Fitbit.
  • MyNewt & Rust for PineTime
    It’s no secret, we’re big fans of both Apache MyNewt and Rust here on the Interrupt Staff. This project combines both and runs them on the PineTime open source smartwatch.
  • ESP Apple HomeKit ADK
    A library to implement Apple Homekit on ESP32.

Tools

  • Orbuculum
    Orbuculum is a set of tools for decoding and presenting output flows from the Debug pins of a CORTEX-M CPU. Whether you are trying to do some profiling, or to decode ITM data, Orbuculum has you covered.
  • Sigrok
    Sigrok has become the reference for open source signal analysis software in the embedded space. With dozens of protocols supported, and a vast set of supported hardware devices, it should occupy a place of choice on every firmware engineer’s toolbelt.

News

François Baldassari has worked on the embedded software teams at Sun, Pebble, and Oculus. He is currently the CEO of Memfault.