What we've been reading in October (2020)
Here are the articles, videos, and tools that we’ve been excited about this October.
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
So you want to build an embedded Linux system? by Jay Carlson
Another thorough post from Jay, the author of $1 MCU. This time, he goes into detail about Embedded Linux and then compares and contrasts a number of boards that support it.
Optimizing Power Consumption in Battery-Powered Devices by Silard Gal
A nice post about proactive measures you can take to ensure your MCU uses the appropriate (and least!) amount of power possible.
Fast integer scaling on Cortex-M0 by M0AGX
A blog post covering how to simple integer scaling using bit-shifts instead of division, particularly useful when the MCU doesn’t support integer division.
Potential improvements for Rust embedded abstractions by Lars @ Tweede Golf
A brain-dump from an embedded engineer about Rust’s embedded abstractions. A good read for those considering joining the embedded Rust train.
It Is Never a Compiler Bug Until It Is by Russel O’Conner
A writeup about a bug in GCC 9 & 10 about when
Bare Metal Programming on Raspberry Pi 3
A Github project that walks the reader through writing bare-metal firmware in C. It contains 21 parts and could keep me busy for a while.
ninja: a simple way to do builds by Julia Evans
A short but sweet post about the Ninja build system, which talks briefly about its simplicity and auto-generation concepts.
My Favorite ARM Instruction by Vladimir Keleshev
A well-written post about the ARM instruction
LDM, or load multiple, which is one of the instructions which make saving and popping registers in ARM so quick!
How to Get Fired Using Switch Statements & Statement Expressions by Robert Elder
A fun post about how pushing the limits and readability of switch statements in C.
Embedded Programming Without the IDE (2016) by Reece Stevens
Another helpful post for those trying to switch away from vendor IDE’s to Make + GCC builds.
My toothbrush streams gyroscope data by Johannes Mittendorfer
It turns out the new Sonicare toothbrushes stream out gyroscope data over BLE characteristics. Johannes writes about his experience reverse-engineering the protocol. The post even includes a Python library to decipher the data being sent by the toothbrush.
Compile and Flash Micropython Firmware on STM32F7 by Neil Panchal
A short note-to-self post documenting how to build and flash MicroPython on an STM32F7.
Definitely not Windows 95: What operating systems keep things running in space? by ArsTechnica
Ars does some digging on the software that runs on satellites and finds that RTOS’s are quite common!
Keil Studio Online
I didn’t see this when it was first announced, but it looks like Keil is going to the cloud! Based upon Eclipse Theia, which was based upon VSCode, it uses WebUSB to interact with local devices and promises multi-platform support.
Reddit - temporarily-bricked Ferrari due to no cell reception
A hilarious short story about a Ferrari which failed mid-update and was left “broken” in DFU mode unable to update due to lack of cell reception.
Neat Open Source Projects
lupyuen/remote-pinetime-bot by Lee Lup Yuen
In another installment in the PineTime series, Lee documents how he built a Telegram bot that remotely flashes his smartwatch.
A project whose goal is to provide a working base project for STM32 MCU’s. If you don’t use the project, at least look at their cheatsheets. They are amazing.
ploopy - Open Source mouse running QMK
An open-source mouse running the QMK firmware, which is soon delivering its pre-orders! You can follow along on /r/ploopy.
Kitspace is a place to share ready-to-order electronics designs. They also maintain the “1-click BOM” browser extension that helps quickly price out parts on Digikey from an Excel spreadsheet. Where has this been all my life?
Three open source Sonos projects: efficient embedded development in Rust
I’m happy to see Sonos keeping some of the open-source projects alive from Snips, the company they acquired a bit ago. The projects include an on-device test library, a neural network inference library, and a tool that helps bind C, C++, and Rust.
MicroMod by SparkFun
A modular hardware system built by SparkFun that allows one to switch out “processor boards” on “carrier boards”. I’m curious to see where this goes!
A Rust-based blackberry-style trackball firmware. It also mostly works on OSX! It seems to be more of a learning exercise.
A nice finite state machine generator for Windows and Linux that generates C code from diagrams. Not an open-source project, but felt I should include it.
Google and Facebook Select Zephyr RTOS for Next Generation Products
Although we don’t have much further information, it appears Google and Facebook are supporting the Zephyr project and will be using it in future products. I guess instead of buying an RTOS, Facebook and Google will just support the already existing one. I support this.
Introducing Twilio Microvisor IoT Platform
Twilio announced what I think is the coolest use-case of ARM’s TrustZone. It allows you to debug and flash chips remotely and securely if you are using Twilio’s software or boards. There’s more information to be uncovered about this.