What we've been reading in November & December (2022)
Here are the articles, videos, and tools that we’ve been excited about this November & December. It’s a long list…happy new year!
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
-
Memfault Panel - Building Firmware Teams in the Modern Era (Recording)
Phillip Johnston from Embedded Artistry, Kerry Scharfglass, Director of Device Software at Span, and I chatted about our experience working on and building out growing firmware organizations. If you are finding yourself leading a firmware or hardware team and trying to hire a number of engineers, listen in. -
Memfault Webinar on Feb. 2nd - How to Monitor, Debug, and Update Infineon Devices with Memfault’s IoT Reliability Platform
Danny Watson, the Director of Software Product Management, and I will be giving a webinar demonstrating Memfault with Infineon devices. Come join us! -
Goodbye to the C++ Implementation of Zig ⚡ Zig Programming Language
A very cool technique the Zig compiler uses when bootstrapping itself. - Noah -
Creating a pick and place control board with the RP2040 - Stargirl (Thea) Flowers
A very thorough write-up describing the author’s open source pick and place control board. Very cool project! - Noah -
How to make sure no Dynamic Memory is used - MCU on Eclipse
A post about how to ensure that your embedded projects don’t use a dynamic allocation via a heap. Sometimes you want a heap, other times you don’t. - Tyler -
Welcome to Lord of the io_uring — Lord of the io_uring documentation
This website + their intro to async programming under Linux is great - Fausto. -
When to hold ’em and when to fold ’em: Adding a hinge to a Game Boy that God never intended
An amazing and amazingly-documented Game Boy mod! - Noah -
Investigating why Steam started picking a random font
A great bug investigation. Hop along for the ride! -
Quirks of C
People love C. People hate C. At least we know it’s weird and fun in so many ways. -
C23 implications for C libraries
C23 information in a nice and digestible format. -
Channel Sounding – Bluetooth® Technology Website
From Mitch Johnson on the Interrupt Slack, a new Bluetooth LE standard extension for more accurate distance estimation vs. existing RSSI based approaches. Exciting work! -
Introduction to Embedded Systems Programming — learn.adacore.com
Teaching the basics of embedded programming in Ada. If you find yourself programming an embedded device in Ada, please reach out! I’m very curious to hear your story. -
What is zchunk?
An implementation of a delta-update system similar in appication to zsync and casync but with some interesting design choices that seem quite nice! - Noah -
Parsing Protobuf at 2+GB/s: How I Learned To Love Tail Calls in C
Interesting article about using tail-calls for performance. - Noah -
Everything I wish I knew when learning C - Tom M
A top post on Hackernews about some C tips the author wishes he knew earlier on in his career. Useful for us firmware engineers. -
Google Online Security Blog: Memory Safe Languages in Android 13
Interesting write-up from Google on the change in languages used with Android. - Eric -
Callbacks and Lambdas in Embedded C++ - Stratify Labs
The author goes over best practices using callbacks in C/C++. -
How the 8086 processor’s microcode engine works
Article about 8086 microcode. -
cpq/bare-metal-programming-guide: A bare metal programming guide (ARM microcontrollers)
A nicely thorough guide to programming an stm32, with a cool web server example at the end. - Noah -
LoRa: Field Testing Antennas - News - SparkFun Electronics
SparkFun wrote about how to test LoRa antennas. -
A Beginner’s Guide to Embedded Systems - Manasi Rajan
Great article for all embedded systems beginners.
Projects & Tools
-
vChavezB/puncover_html: Script to create a local html copy of the local puncover report. Intended for CI/CD purposes
A long time ago, an engineer at Pebble wrote puncover to help developers visualize code space usage for Pebble applications and the Pebble firmware itself. This project adds a little feature to it so that it can generate a bundle of static HTML, which can then be hosted anywhere! -
EAStdC/EABitTricks.h at master · electronicarts/EAStdC
A header file on the EA public GitHub repo with common and optimized bitfield operations for C++. -
radare2 online
Very nifty online radare2 console, for reversing / poking around binaries - Noah -
WasmEdge
A WASM runtime targeting edge application and IoT - François -
Arm CMSIS csolution - Visual Studio Marketplace
Didn’t realize Arm had published a few packages for VSCode. Looks like they’ll be slowly recommending people move from Keil to VSCode! -
Stargirl🌠 on Twitter: The schematic viewer
Some neat looking PCB tools from the always excellent Stargirl Flowers. - Noah -
wntrblm/Gingerbread: Web-based tool for creating artistic PCBs
“Gingerbread is a tool for converting vector artwork to KiCAD PCB files that live in your browser.” -
ciniml/WireGuard-ESP32-Arduino: WireGuard implementation for ESP32 Arduino
Title says it all. -
128Mb Ox64 SBC - PINE STORE
An interesting $8 Linux/RTOS RISC-V development board from the Pine team (in stock at the time of posting!) - Noah -
espressif/esp-wdf: Espressif WASM Development Framework.
Espressif released a WASM framework for their chips, allowing more languages to run on their platform. - François
News & Updates
-
GDB News - Release 13 branch cut
The GDB version 13 branch has been cut! It’s much, much faster at loading and processing symbol files. I can’t wait for the final release! -
Clang 15.0.0 Release Notes — Clang 15.0.0 documentation
Clang 15 added support for randomizing struct layout at compile time - Noah -
MicroPython officially becomes part of the Arduino ecosystem - Arduino Blog
Arduino has made support for MicroPython official! -
Virtual Hardware – Software Development Without Hardware – Arm®
Arm released some support for playing with their CPU’s virtually and in the cloud. Very cool! It’s primarily designed for server CPUs, but I hope to see this for microcontrollers soon. -Tyler -
Arduino Unveils the Opta, Its First Micro PLC for the Industrial Internet of Things - Hackster.io
Arduino continues to release professional products, this time a new device targeted at the PLC market. -
Z-Wave Alliance Announces Z-Wave Source Code Project is Complete, Now Open and Widely Available to Members - z-wavealliance
Z-Wave published their source code!
Random
-
Catherine on Twitter: Example of cc1 auto-fixing compilation errors
Clangcc1
has support for auto-fixing some classes of compilation errors by running with clang-Xclang -fixit
, as shown here 😮. - Noah -
Optimization Tools — Zephyr Project Documentation
We learned recently that Zephyr has a way to generate a RAM and a ROM report for a given firmware build. Awesome!