What we've been reading in May & June
I apologize readers of Interrupt! I haven’t published a roundup post in a while, but fear not! We’re back after a couple of very busy months, both professionally and personally.
Here are the articles, videos, and tools that we’ve been excited about this May & June
We hope you enjoy these links, and we look forward to hearing what you’ve been reading in the comments or on the Interrupt Slack.
I also have to mention that my team, the Developer Experience team at Memfault, is hiring a Firmware Engineer to assist with our SDK development and customer integrations. Come work with us! It’s a fantastic team and we’re helping embedded engineers and hardware companies all over the world build better firmware.
Articles & Learning
Crash reporting in Rust by Jake Shadle
The author goes into recent work to make crash reporting user-friendly. Even when Rust can eliminate crashes that C/C++ can not, crash reporting is still essential. I like the general overview and deep dive of Minidump provided by the article.
Bazel for ARM by Davide Asnaghi
Bazel is a really cool build system and has the firm idea that you should be able to spin up an environment from zero easily and quickly. This is quite hard on embedded given the variety of tools we need, but the author here goes into how he used Bazel to get reproducible builds and easier environment setup.
Size Optimization Tricks - Justine.lol by Justine Tunney
Justine is incredible - François
New Firmware Update System by Pavel Zhovner
FlipperZero documents their old and new firmware update process. It’s more complicated than most because they don’t have any extra RAM or flash ROM to work with. And a heads up for everyone, they recently opened pre-orders again!
How Uber Uses Zig - Motiejus Jakštys Public Record by Motiejus Jakštys
Uber uses Zig only to compile its C/C++ code for its ability to easily switch out the libc implementation and macOS cross-compilation. They do not use the Zig language.
Debugging with JTAG - Actuated Robots by wookie
Fantastic article that digs into what JTAG is, how it has developed over time, and what happens when you are debugging using JTAG.
ESA - Software upgrade for 19-year-old martian water-spotter
OTEOS Update (Over The Emptiness of Space) - François
Raspberry Pi Pico W: your $6 IoT platform - Raspberry Pi by Eben Upton
Raspberry Pi Pico W, with wireless via a CYW43439 (WiFi enabled today, with BT+BLE supported by the modem but not enabled yet) - Noah
Linux and Tiny C Compiler in the browser, part one by Jan Sommer
A nice tutorial about building Linux for a web-based virtual machine platform. - Noah
XMODEM in 2022 by Matt Keeter
Using XMODEM for file transfers should be pretty easy, but modern technology makes it difficult, such as the trouble with macOS and FTDI drivers. Who knew it could take so long to transfer a few kB! I didn’t until my previous job…
AirTag of the Clones: Shenanigans with Liberated Item Finders (Research PDF)
A research paper showing how an Apple AirTag can be cloned using a Raspberry Pi Pico. - Noah
Kitchen Activity Detection By Thermal Sensor Array Thingy - electromaker
Fun personal project on a Nordic nRF5340 using external sensors to detect kitchen activity, such as the dish washer running or a gas stove being on. Complete with everything you need from the schematics to the firmware code to the high level IoT code & libraries you would need to get this for yourself! My favorite part is the first-class Memfault integration to capture logs, metrics, and coredumps for debugging purposes.
IRQDebloat: Reducing Driver Attack Surface in Embedded Devices (Book)
Very interesting technique for eliminating unused or undesirable hardware features by automatically rewriting device firmware. - Noah
nRF5 to nRF Connect SDK migration via DFU over BLE | by Rokk Research | Medium by Rokk Research
Migrating from nRF5 to nRF-Connect SDK can be tricky and isn’t well documented. Mike - an Interrupt community member - wrote a great guide. If we learned anything from attending the Zephyr Dev Summit last month, it was that Nordic Semiconductor is investing heavily in Zephyr. Would definitely make sure I use their new stack whenever possible. - François
Taking the next step: Debugging with SEGGER Ozone and SystemView on Zephyr - Golioth by Chris Gammell
Title says it all.
ESP-IDF setup guide - elttam by Daniel Hodson
A nice getting started guide for the ESP32 and ESP-IDF complete with emulator setup.
Tools & Libraries
tezc/sc - Common libraries and data structures for C
Title says it all. Comment thread on Hacker News might have some good discussion.
wader/fq: jq for binary formats
Another very handy binary analysis utility:
eKermit Release - 2021/06/26
Wow, eKermit had a recent release!? I had to throw a shout out to Kermit here - it saved us all plenty of trouble when we used it at Fitbit on the smartwatches.
Veterans from ARM are building a seamless way to connect BLE devices to the Internet. Interesting approach - François
zephyrproject-rtos/rtos-benchmark: RTOS Benchmark
Because who doesn’t like a good project for generating RTOS performance benchmarks. In this repo you can face off FreeRTOS vs Zephyr using QEMU at your desk. I’m sure they would have included more but some RTOS’s are allowed to be benchmarked publicly (looking at you ThreadX / AzureRTOS). - Chris
Visual Studio Code extensions | IAR Systems
Wow, IAR released a VSCode extension? Might this be the end of us having to use their IDE? What’s maybe even more amazing is that I’m reading “IAR Build Tools now support Ubuntu, Redhat and Windows”, which means I may never have to boot up my Windows VM to use IAR again! Amazing!
MattPD/cpplinks: A categorized list of C++ resources.
Large collection of quality C++ links
fastest code - High throughput Fizz Buzz - Code Golf Stack Exchange
How fast can FizzBuzz go? I particularly liked the author’s comment “I already have a master’s thesis. This was harder” - Noah
Introducing ESP32-C5: Espressif’s first Dual-Band Wi-Fi 6 MCU | Espressif Systems
A dual band WiFi6 RISC-V ESP32 with Bluetooth LE. Wowza.
X1501 Pico SoM | Hackaday.io
A very impressive open source 16x16mm Linux SoM. - Noah