Embedded systems
Embedded Rust on Espressif & Mastering Embedded Linux are useful reads. TinyGo is nice. RTIC (Real-Time Interrupt-driven Concurrency) is fascinating.
Also looking into Embassy.
Interesting chips
Links
- Discovery - Discover the world of microcontrollers through Rust.
- Real Time For the Masses - Framework for ARM Cortex-M microcontrollers.
- The little filesystem - Little fail-safe filesystem designed for embedded systems. (Design)
- Arm Mbed OS - Open source embedded operating system designed specifically for the "things" in the Internet of Things.
- eLua - Lua for microcontrollers.
- Embedded devices Working Group - Issue tracker is used by the embedded WG to coordinate efforts towards making Rust a great choice for embedded development.
- Arm Mbed DAPLink - Open-source software project that enables programming and debugging application software running on Arm Cortex CPUs.
- Mbed TLS - Open source, portable, easy to use, readable and flexible SSL library.
- Modern Microprocessors a 90-Minute Guide - Brief, pulls-no-punches, fast-paced introduction to the main design aspects of modern processor microarchitecture. (HN)
- MicroPython - Python for Microcontrollers. (HN) (Awesome) (Web) (HN)
- CircuitPython - Programming Hardware in Python. (HN)
- What's your preferred embedded/application scripting language? (2019)
- Operating System development tutorials in Rust on the Raspberry Pi (HN)
- Embedded Rust Book - Introductory book about using the Rust Programming Language on "Bare Metal" embedded systems, such as Microcontrollers. (Code)
- Embedded Rust Discovery - Starting with Embedded Development Using Rust.
- mJS: Embedded JavaScript engine for C/C++ - Designed for microcontrollers with limited resources.
- Swift for Embedded Systems
- Cross - Utility for easy cross compilation of projects to bare metal.
- Entry level embedded software career guide (2019)
- printf - Tiny, fast, non-dependent and fully loaded printf implementation for embedded systems. Extensive test suite passing.
- Jitter - Help you accelerate your projects with laser-focused advice or custom designs made for you.
- Practical Guide to Watchdogs for Embedded Systems (2020)
- RouterSploit - Exploitation Framework for Embedded Devices.
- Ethernut Project - Open Source Hardware and Software Project for building tiny Embedded Ethernet Devices.
- OpenTitan - Open source silicon root of trust. (Web)
- bare-metal - Abstractions common to bare metal systems.
- Embench - Modern Embedded Benchmark Suite. (Code)
- Fresh look at embedded Rust development
- Talks at Meeting Embedded 2019
- probe-rs - Modern, embedded debugging toolkit, written in Rust. (Web)
- Awesome Bare Metal
- usbarmory.rs - Bare metal Rust support for USB armory MkII devices.
- cortex-a - Low level access to Cortex-A processors.
- Tinkerbell - Bare metal provisioning and workflow engine. (GitHub) (Web)
- CMSIS - Vendor-independent hardware abstraction layer for microcontrollers that are based on Arm® Cortex® processors.
- Rust on a Beaglebone Blue (2020)
- Embedded graphics - 2D graphics library that is focused on memory constrained embedded devices.
- LittlevGL - Open-source Embedded GUI Library in Rust.
- Embedded Rules of Thumb (2018) (HN)
- An Empirical Study on ARM Disassembly Tools (2020)
- Micro-RTSP - Small library which can be used to serve up RTSP streams from resource constrained MCUs. It lets you trivially make a \$10 open source RTSP video stream camera.
- esp32 - Peripheral access crate for the ESP32.
- What are some of the most asked embedded systems interview questions? (2020)
- Monolinux Jiffy - Monolinux distro for the Jiffy board. (HN)
- Fast Execute-Only Memory for Embedded Systems (2006)
- Trends in Embedded Systems (2020)
- Blech language - Embedded real-time programming.
- Rhai - Embedded scripting language for Rust. (Lobsters) (Book)
- Rust on the ESP32 - SVD's, PAC's and USB flashing (2020) (HN)
- Concurrency Patterns in Embedded Rust (2020)
- OpenCore bootloader - Open-sourced Apple UEFI drivers, enabling Hackintosh. (HN)
- MicroBlocks - Small, Fast, Human Friendly.
- probe-run, run embedded Rust apps like native apps (2020)
- Step-through debugging with no debugger on Cortex-M (2020)
- Target atsamd microcontrollers using Rust
- ClojureScript on ESP32? Why not! (2020)
- defmt - Efficient, deferred formatting for logging on embedded systems.
- Embedded Podcast/Blog - Site dedicated to the many aspects of engineering. We talk about the how, why, and what of engineering, usually devices.
- Tesla Buildroot - Simple, efficient and easy-to-use tool to generate embedded Linux systems through cross-compilation.
- coreboot - Aimed at replacing the proprietary BIOS (firmware) found in most computers. coreboot performs a little bit of hardware initialization and then executes additional boot logic, called a payload.
- lilos - Wee RTOS written to support the async style of programming in Rust.
- Brittle Kernel - Research microkernel, designed for embedded applications on ARM Cortex-M microcontrollers.
- Bare-metal programming the tinyAVR 0 microcontrollers (2020)
- AI at the edge - Curated list of resources for embedded AI.
- JLCPCB - PCB Prototype & PCB Fabrication Manufacturer.
- JLCKicadTools - Tool for using JLCPCB assembly service with KiCad.
- Low-Level Academy - Learn systems programming from the first principles. (Code) (HN) (Backend code)
- Espruino - JavaScript interpreter for microcontrollers. (HN)
- QP/C - Real-time embedded framework/RTOS for embedded systems based on active objects (actors) and hierarchical state machines. (Web)
- Quantum Leaps - Modern Embedded Software. (GitHub)
- So you want to build an embedded Linux system? (2020) (HN) (HN)
- How I Teach Embedded Systems (2019)
- eRPC (Embedded RPC) - Open source Remote Procedure Call (RPC) system for multichip embedded systems and heterogeneous multicore SoCs.
- Bela - Create beautiful interaction with sensors and sound. (Code) (bela-sys - Rust bindings for the Bela platform)
- Embedded Programming Without the IDE (2016) (HN)
- Free CANopen Stack for Embedded Systems (Web)
- Using Rust for a simple hardware project (2020)
- elfload - ELF loader for embedded systems.
- Introduction to Embedded Linux Security (2020)
- Handmade Seattle - Indie Systems Programming Conference. (Lobsters) (Day 1 video) (Media) (Twitter) (Videos)
- The Best and Worst Microcontroller SDKs (2020) (HN)
- SwiftIO - Swift framework for microcontrollers.
- MadMachine - Swift for microcontrollers. (GitHub)
- stm32f4xx-hal - Rust embedded-hal HAL for all MCUs in the STM32 F4 family.
- Cubesat Space Protocol - Small protocol stack written in C. CSP is designed to ease communication between distributed embedded systems in smaller networks, such as Cubesats.
- LPC55 HAL - Hardware Abstraction Layer (HAL) for NXP LPC55S6x (Cortex-M33) microcontrollers.
- Moddable SDK - JavaScript for Microcontrollers. (HN) (Web)
- F Prime - Component-driven framework that enables rapid development and deployment of spaceflight and other embedded software applications. (Web)
- Crust - SCP firmware for sunxi SoCs.
- emba - Analyzer for Linux-based firmware of embedded devices.
- FIRMADYNE - Automated and scalable system for performing emulation and dynamic analysis of Linux-based embedded firmware.
- OpenWrt - Linux operating system targeting embedded devices. (Code)
- Embedded Virtual Machine
- Foundations of Embedded Systems (HN)
- Knurling-rs - Get a handle on bare-metal Rust. (GitHub) (What's Knurling all about?)
- Creating Embedded Microcontrollers
- Introduction to ARM Semihosting (2021)
- Tutorial for secure OTA (over the air) firmware update on the ESP32 (2021)
- AArch64 Boards and Perception (2021)
- µGUI - Open Source GUI module for embedded systems.
- avr-hal - embedded-hal abstractions for AVR microcontrollers.
- LambdaChip - Write Scheme on Embedded System.
- cortex-m - Low level access to Cortex-M processors.
- CurrentSense-TinyML - Spying on Microcontrollers using Current Sensing and embedded TinyML models.
- ODAS - Open embeddeD Audition System.
- Testing an embedded application (2021)
- cortex-m-rt - Minimal startup / runtime for Cortex-M microcontrollers.
- Want to Learn Programming and Microcontrollers? (2021) (HN)
- Building Morsecipher (2021)
- Rune - Containerization technology for deploying TinyML applications to extremely constraint devices.
- A virtual machine for microcontrollers (2021) (HN)
- Embedded scripting languages
- Neotron - Embedded Rust Home Computer Platform.
- Ask HN: How to start learning embedded systems? (2021)
- Taking Months to Bits (2021) - Calendrical journey into low-level programming.
- EON Tuner: Edge Impulse's New AutoML Tool for Embedded Machine Learning (2021)
- Pinion - Generate interactive and nice-looking diagrams for your PCBs. (Docs)
- PcbDraw - Convert your KiCAD board into a nicely looking 2D drawing suitable for pinout diagrams.
- JlcParts - Better parametric search for components available for JLC PCB assembly. (Code)
- KiCad EDA - Schematic Capture & PCB Design Software.
- KiKit - Automation for KiCAD.
- The Rust standard library on Espressif chips (2021) (Lobsters)
- Rust on ESP32 "Hello, World" app - Demo binary crate for the ESP32[XX] and ESP-IDF, which connects to WiFi, drives a small HTTP server and draws on a LED screen.
- cortex-m-quickstart - Template for building applications for ARM Cortex-M microcontrollers.
- flip-link - Adds zero-cost stack overflow protection to your embedded programs.
- Programming PIC32 Microcontroller with Rust (2021) (HN)
- pyOCD - Open source Python library for programming and debugging Arm Cortex-M microcontrollers. (Web)
- CMSIS - Common Microcontroller Software Interface Standard. (Version 5)
- Rusty High-speed Probe - Open hardware probe for the Serial Wire Debug (SWD) and JTAG protocol.
- Rust on Espressif chips (2021) (HN)
- Why Embedded Software Development is Harder (2021)
- Async on Embedded: Present & Future (2021)
- stm32g0xx-hal - Peripheral access API for STM32G0 series microcontrollers.
- Kari - Embeddable programming language, written in and for Rust.
- LPC8xx HAL - Hardware Abstraction Layer (HAL) for NXP LPC800 series of microcontrollers, written in Rust.
- Snek - Python-inspired Language for Embedded Devices. (Code)
- stm32f1xx-hal - Rust embedded-hal HAL impl for the STM32F1 family based on japarics stm32f103xx-hal.
- Bryan Cantrill - The Coming Firmware Revolution (2021) (Slides) (Lobsters)
- Open Source Firmware Foundation (Twitter)
- acados - Fast and embedded solvers for nonlinear optimal control.
- Learning Rust For Embedded Systems (2021) (HN)
- esptool.py - Espressif SoC serial bootloader utility.
- hm3 - Minimalist statically typed 'glue language' that can be embedded in C/C++/Rust projects.
- Toit - Program your micro-controllers in a fast and robust high-level language. (Open Source Release) (HN)
- Hubris - Small open-source operating system for deeply-embedded computer systems. (Code) (HN) (Tweet)
- Humility - Debugger for Hubris.
- Hubris and Humility (2021)
- On Hubris and Humility: developing an OS for robustness in Rust (2021) (Article)
- Kaluma - Tiny and efficient JavaScript runtime for microcontrollers. (Web)
- STM32 Peripheral Access Crates - Embedded Rust device crates for STM32 microcontrollers.
- libopencm3 - Open-source firmware library for various ARM Cortex-M microcontrollers. (Docs) (Examples)
- Stabilizer Firmware - Firmware and software for the Sinara Stabilizer module with high speed, low latency ADC/DAC data processing and powerful DSP algorithms in between.
- Sesam - Embedded Extended Master Data Management.
- XOD - Visual programming language for microcontrollers. (Code)
- STLINK - Open source STM32 MCU programming toolset.
- Intro to Embedded RE: UART Discovery and Firmware Extraction via UBoot (2022)
- embedded-trainings-2020 - Beginner and advanced Embedded Rust workshops held by Ferrous Systems.
- knurling app template - Quickly set up a
probe-run
+defmt
+flip-link
embedded project. - Sound Open Firmware
- Bytecode interpreters for tiny computers (2007) (HN)
- Embedded Rust on Espressif Book (Code)
- Jacdac - Plug-and-Play for Microcontrollers. (Code)
- Rust on Espressif chips Q1 2022 (HN)
- FreeRTOS - Real-time operating system kernel for embedded devices that has been ported to 35 microcontroller platforms. (Rust wrapper)
- RTIC (Real-Time Interrupt-driven Concurrency) - Framework for ARM Cortex-M microcontrollers. (Docs) (Examples)
- modm - C++20 library generator for AVR and ARM Cortex-M devices. (Docs)
- Curated device data for all AVR and ARM Cortex-M devices
- Accurate Micro- and Nanosecond Delay in modm (2021)
- Where are the low level system engineers? (2022) (HN)
- Portable Image Format (PIF) - Basic, bitmap-like image format with the focus on ease of use (implementation) and small size for embedded applications.
- Mastering Embedded Linux series
- My Business Card Runs Linux (2019) (HN) (Code)
- Genimage - Tool to generate multiple file system and flash images from a tree.
- fiano - Go-based tools for modifying UEFI firmware.
- What frustrates you the most about developing embedded software? (2022)
- USD Projects and Resources
- Millfork - Middle-level programming language for 8-bit microprocessors. (Docs)
- Black Magic Probe - In application debugger for ARM Cortex microcontrollers.
- resym - Cross-platform tool that allows browsing and extracting C and C++ type declarations from PDB files.
- Umka - Statically typed embeddable scripting language. (HN)
- KVED - Simple key/value database implementation for microcontrollers.
- Microvium - Ultra-compact, embeddable scripting engine for microcontrollers for executing a useful subset of the JavaScript language, with a focus on small size and ease of use.
- Books or resources for learning Bluetooth (2022)
- PlatformIO - Professional collaborative platform for embedded development. (Code)
- LogicAnalyzer - Cheap 24 channel logic analyzer with 100Msps, 32k samples deep, edge triggers and pattern triggers.
- Lobaro-CoAP - Complete CoAP Implementation in C.
- Lobaro CoAP for Go
- FreeRTOS-rust - Rust crate for FreeRTOS.
- Go-CoAP - Implementation of CoAP Server & Client in Go.
- Lovem - Low overhead virtual embedded machine.
- Rust on Espressif chips (2022) (HN)
- Project Euler on a Microcontroller (2022) (HN)
- Debugging bare-metal STM32 from the seventh level of hell (2022) (HN)