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.
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
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
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
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
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
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
“Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.” Enough Said!
Black Magic Probe
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.
Intro to Hardware Reversing: Finding a UART and getting a
An introductory tutorial on hardware reverse engineering, using a DLink camera as the test subject.
Neat Open Source Projects
A neat library to control individual ports on a wide range of USB hubs.
Open Vehicle Monitoring System
A collection of tools and libraries to interact with vehicles over CAN, OBD2, and more.
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
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.
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 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.