What we've been reading in June (2020)
Here are the articles, videos, and tools that we’ve been excited about this June.
We hope you enjoy these links, and we look forward to hearing what you’ve been reading in the comments.
Articles & Learning
Embedded Systems Security and TrustZone by
Incredible resource published today on security best practices on an ARM Cortex-M, but starts from the basics with an intro into C programming, GNU tools, Cortex-M architecture, and bare-metal firmware tutorials. Really, really good. Bookmark this.
Fast Execute-Only Memory for Embedded Systems
by Zhuojia Shen and John Criswell.
A paper about preventing remote code disclosure attacks with a clever use of the ARM Cortex-M MPU and DWT to implement Execute-Only-Memory (XOM).
- nRF52 Debug Resurrection (APPROTECT Bypass) -
A complete compromise of the flash readout protection on nRF52 series microcontrollers using simple voltage glitching techniques.
Using ASCII waveforms to test hardware designs
by Andrew Ray
A seriously cool approach to using “snapshot” based testing to verify waveforms. This particular approach converts a hardware waveform from the device-under-test to an ASCII representation and then compares that to a previously recorded value.
Bare metal RISC-V programming in Go
by Michał Derkacz
Continuing on the quest for running Go on embedded devices, this post documents the effort of porting the project to the RISC-V architecture.
Using Callbacks with Interrupts
by Jacob Beningo
A simple post about how and why to implement drivers using callbacks and interrupts.
Making an Ultrasonic Anemometer
by Raj Bhatt
Fascinating rabbit-hole in making a wind speed and direction sensor. The two projects linked (one, two) are both individual engineers documenting the process of building their own anemometer.
Neat Open Source Projects
F´ (pronounced F-Prime) by NASA
A software framework from NASA to assist with the development of spaceflight devices.
- Espressif RainMaker - The team at Espressif came out with an OTA solution for their devices using a mobile-based provisioning technique. We’re excited to see more chip vendors provide value-added software alongside their silicon!
- ayoy/FontEdit - Simple font editor designed with embedded system displays in mind. Cross-platform GUI written in Qt.
- Embench - A Modern Embedded Benchmark Suite - An effort to come up with a standard benchmarking suite for embedded systems. Check out the results here.
- eerimoq/Monolinux-Jiffy - An embedded Linux based project which can boot in 0.37 seconds on an NXP i.MX6UL. Includes a design for a custom board as well. Another interesting bit is it uses a neat unit testing framework I had not seen called nala, which looks sleek.
- Snek - A Python-inspired Language for Embedded Devices - Language and complementary board which runs a Python-like programming language specifically designed for embedded devices. It even has hooks for inclusion into NuttX!
- Espirit ESP32-based Project - An open-source board design and software package which should be able to run ClojureScript on an ESP32 by using Emscripten.
- QMK Firmware - Open source firmware for keyboards that powers popular DIY keyboards such as the ErgoDox EZ and Clueboard.
Ripple20 - 19 Zero-Day Vulnerabilities in IoT Devices
by JSOF research lab
A collection of exploits targeting Treck’s TCP/IP software stack, which potentially opens up 100+ million of connected devices to vulnerabilities.
- Twilio Super SIM - A service from Twilio in public beta that provides a global SIM card which can connect to a vast number of cellular providers. Pricing is $2 per month + $0.10 / MB.
Rust - async/await works with
#[no_std]targets - Embedded Rust projects can now use async/await with
#[no_std]enabled, which should help with code space and code complexity.