What we've been reading in May
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 or on the Interrupt Slack.
Articles & Learning
Visual Studio Code for C/C++ with ARM Cortex-M: Part 1 – Installation | MCU on Eclipse by Erich Styger
A series of posts on getting started with Visual Studio Code for Cortex-M development on Windows. A great resource if you’re looking to switch away from proprietary IDE’s and build systems.
Modern Microprocessors - A 90-Minute Guide! by Jason Robert Carey Patterson
A fun, technical, and visual overview of how microprocessors got to be as fast as they are today.
Things You Should Know in Order to Become an Embedded Developer by Barak Menachem
A good set of links and information to help answer one of the most popular questions on /r/embedded, “What do I need to know as an embedded engineer”?
Simulating Digital Circuits in Racket - A RISC-V Core in Racket by Guillaume Savaton
An Intro to Zig’s Integer Casting for C programmers | Lager by Evan Haas
Title says it all. Lager has consistently put out great content around the Zig & C programming languages. I recommend you check out the rest of the posts!
The tools and tech I use to run a one-woman hardware company by Stargirl (Thea) Flowers
Stargirl covers the tools she uses running her company, Winterbloom, which is a boutique open-source synthesizer company. I had never heard of µnit, the unit testing framework, or Marco Paland’s printf.
Another Valuable Practice from the Kitchen: Clean as You Go - Embedded Artistry by Phillip Johnston
Some great reminders here that cleaning up code doesn’t require a full refactor or rewrite. Improvements can be made piece by piece and the final result will be just as good if not better. Full rewrites and refactors almost always have new bugs!
Modern C for C++ Peeps by Andre Weissflog
For those of you who are C++ fans but are stuck with C because of project requirements, this post is for you. I enjoyed the bit about passing structs by value instead of by reference. We used this optimization a lot at Pebble when we were seeking to reduce our codesize and speed up our graphics rendering stack.
SWO with ARM Cortex-M33 | MCU on Eclipse by Erich Styger
Erich covers how we can use SWO to stream data from a device in realtime without much impact to performance. You can use SWO for profiling, logging, and general data collection.
Using GDB and defmt to debug embedded programs | Ferrous Systems
A great post about getting set up with the latest and greatest tools for Rust embedded development. It covers setting up VSCode, GDB, OpenOCD, Segger RTT, and defmt, a logging library built by the developers at Ferrous Systems.
How to look at the stack with gdb by Julia Evans
Julia covers a bunch of commands and useful tips when using GDB to view the stacktrace and memory within the stack for an x86_64 program.
Broadening compiler checks for buffer overflows in _FORTIFY_SOURCE | Red Hat Developer by Siddhesh Poyarekar
A new macro is being introduced into the GNU C library which allows for better checks against buffer overflows. It takes advantage of the new built-in function,
__builtin_object_sizeto help compute the object size of pointers.
Reverse Engineering an Unknown Microcontroller - Dmitry.GR by Dmitry Grinberg
A deep-dive by Dmitry on reverse engineering a microcontroller found in the eInk display manufactured by Samsung, all the way from identifying it, to getting
printfoutput, flashing it, reading temperature from the internal sensor, and more!
Send My: Arbitrary data transmission via Apple’s Find My network | Positive Security by Fabian Bräunlein
A fun and likely harmless hack which takes a Bluetooth-enabled ESP32 and mimics an AirTag to upload a small amount of data (3 bytes per second) to Apple’s “Find My” network.
Embedded learning log - Connecting a board and flashing an RTOS by Fausto Núñez Alberro
Fausto writes about his foray into the world of embedded systems by writing a few posts on the topic. He now works with us at Memfault! For those thinking about trying to test out Memfault for yourself, his post on Integrating the Memfault Firmware SDK might give you an idea of the work necessary to take it on.
Chiptunes on an ATtiny4 and the 3 Cent Micro by Tobias Girstmair
Presented at 35c3, Tobias covers how he was able to cram a PCB into an RCA jack and get it to play Chiptunes.
WiFiStation: A WiFi Interface for the Cidco MailStation by Joshua Stein
Joshua writes about how he was able to connect an ESP8266 module with WiFI and connect it to a Cidco MailStation from the late 90’s, early 2000’s. Of course, the effort was so that he could connect to BBSes with the device. I love it.
How the Apple AirTags were hacked - YouTube by @ghidraninja
A YouTube video (8m) explaining the how @ghidraninja was able to dump the firmware from an Apple AirTag.
- Making Wi-Fi serial console adapters with old portable routers | Sagacious Suricata Instead of caving and buying off-the-shelf wireless console adaptors, the author repurposes two routers that he had lying around, installs OpenWRT on them, and builds his own wireless adaptors!
Stratify Toolbox Campaign Preview | Stratify Labs
The team at Stratify Labs has some news to share about an upcoming update to the Stratify Toolbox. I’ve personally not used the toolbox or the platform, but I love the direction it is taking in terms of debuggability and modern tooling.
v8.0.0 is released | LVGL’s Blog
LVGL 8.0 has been released! Notable features include elastic scrolling and CSS-like layout engines.
How Pitfall Builds its World by Jack Evoniuk
Some of my favorite “embedded posts” are posts about game programming on old computers. This one doesn’t disappoint! Jack uncovers how an Atari 2600 game, Pitfall, works under the hood. If you like this post, you should definitely read the book Racing the Beam - The Atari Video Computer System by Nick Montfort and Ian Bogost.