What we've been reading in March (2020)
Here are the articles, videos, and tools that we’ve been excited about this past month.
We hope you enjoy these links, and we look forward to hearing what you’ve been reading in the comments.
Articles & Learning
Oxidize 1K YouTube Replay
The entire set of talks from the online Oxidize Embedded Rust conference that took place on March 20th, 2020.
Security Analysis of the Solo Firmware by Emanuele Cesena.
A nice summary of a security audit of the firmware for an open source FIDO2 security keys by SoloKeys. The post explains a Downgrade Attack.
Making it easier to make Things: WebAssembly and the Internet of Things by Jonathan Beri.
An awesome 30-minute talk about running Wasm3 on embedded devices such as an ESP32. It’s well worth the watch.
Rewriting m4vgalib in Rust by Cliff Biffle
A fantastic journey through rewriting an embedded graphics demo in Rust from C++ by a well-known programmer. It answers all the important questions like how to not use a standard library, memory consumption, and impact on binary size.
Unleashing Mayhem over Bluetooth Low Energy
A deep dive analysis into BLE vulnerabilities in popular BLE chipsets from Dialog, STMicro, and Cypress chips.
GCC extensions to the C language by Sergio Prado
A great overview of various GCC extensions for C. We’d also like to add one of our personal favorites to the list, GCC’s
__cleanup__attribute (example in JerryScript)
- Introduction to Trusted Execution Environment and ARM’s TrustZone by Sergio Prado
How to Port a Board for RIOT by Martine Lenders
RIOT being the RIOT RTOS. I felt this was post-worthy because one can never read too much about driver abstraction in large projects.
PlatformIO x Renode Demo - Zephyr Build and Debug on SiFive FE310
This demo has every technical buzzword that people are excited about. PlatformIO, Renode, Zephyr, RISC-V, SiFive…
Exception(al) Failure - Breaking the STM32F1 Read-Out Protection by Marc Schink & Johannes Obermaier.
A wonderfully technical and professional vulnerability write-up. Source-code is also available.
ARM GCC Inline Assembler Cookbook
Though this one isn’t new, we stumbled upon it recently. Great reference on using inline assembly.
Hacking Your ELF For Fun And Profit by Mitch Humpherys
Fascinating post about how to use custom ELF sections to build a plug-in system, with a description about how this applies to the Linux Kernel.
Static analysis in GCC 10 by David Malcolm
We love GCC and Clang, and we are always excited to see them have new features.
async/await on Embedded Rust by Ferrous Systems
Using async/await on an ARM Cortex-M, complete with an open-source example. Definitely worth the read.
- Mastering Embedded Linux Series by George Hilliard
Neat Open Source Projects
- PetteriAimonen/Baselibc - A minimal libc for devices in the 10-100kB memory range. Can easily be included in Apache MyNewt as well.
- moon-chilled/Defer - A one line library which allows statements to run a function at return time, “generally to do cleanup”.
- Google/Pigweed - A new project from an embedded team within Google.It sounds like much of this code is used across internal teams within Google, but it has been polished, packaged up, and open-sourced! We’re excited to see where this goes.
ARMmbed/minimal-printf/ - We had not seen this one yet! Readable
printfimplementation and with pretty low memory footprint!
- The SEGGER Compiler - Yet another proprietary compiler. Sigh.
- Introducing Amazon Common Software for Devices (Preview)
- An HP Enterprise SSD will brick after 40,000 hours