A curated list of awesome embedded resource.
Table of content
- Awesome-Embedded
- Tech blogs
- Embedded Interview Questions
- Interview Questions Archive by Company
- Coding Interview University - A complete computer science study plan to become a software engineer.
- 16 Essential Skills for Embedded Engineer
- How to be low-level programmer
- Programmer Competency Matrix
- Integer size in C on 32-bit and 64-bit system
- TeraTerm - TTL command reference
- TeraTerm Scripts
- Linker Command File Primer
- The C build process
- Building Bare-Metal ARM Systems with GNU
- ELF – Executable and Linkable Format
- Toolchains
- What is an application binary interface (ABI)?
- ARM Cortex M4 Blink Example (Linker Script)
- A Sample Linker Script
- Linking and Loading
- Embedded Software _ Getting started
- How to convert from an armlink scatter file to a GNU ld linker script
- Using the GNU Linker
- Everything You Never Wanted To Know About Linker Script
- Modern Embedded Systems Programming Course - Learn from the basics to modern embedded programming practice.
- McuOnEclipse - Everything about Eclipse, microcontrollers, software and tools.
- Simplest bare metal program for ARM (table of content)
- Bare metal programming guide - a detailed guide for beginners
- Real-Time C++ - companion bare-metal code to Real-Time C++ book.
- hypervisor - ARM64 Type-1 bare-metal hypervisor in no_std Rust, runs at EL2 on QEMU virt, boots Linux with FF-A v1.1 SPMC.
- MSP430-GCC
- CS4101: Introduction to Embedded Systems - The course is designed around labs, using TI MSP430 LaunchPad and Arduino Uno to discuss concepts such as basic I/O, timing and clocking, interrupt handling, serial communication, embedded operating systems, synchronization, etc.
- msp430-template - A template for MSP430 firmware.
- MSP430 reference
- EmbeddedSystems.Playground
- Macros in TivaWare
- Analog to Digital Conversion, Data Acquisition and Control
- Embedded Systems - Shape The World
- HowTo: Develop on the TI Tiva LaunchPad using Linux
- Linux command line build system to generate binaries for TM4C123 (ARM Cortex M4)
- The complete tutorial for Stellaris LaunchPad development with GNU/Linux (I)
- Getting Started with the TI Stellaris LaunchPad on Linux
- Embedded Systems with TM4C123 @Valvano
- Create FreeRTOS Demo Project using the GCC Compiler
- Serial bootloader on TM4C12x Microcontroller
- Tivaware bootloader
- Diagnosing Common Development Problems and Tips & Info for TM4C Devices
- FreeRTOS-GCC-tm4c123glx - A port of FreeRTOS to the Texas Instruments Tiva TM4C123GLX Launchpad.
- Stellaris_TM4C123G_GCC_Template - Texas Instruments template project for the TM4C123 series using GNU toolchain.
- tm4c-gcc - TM4C123 GCC project template.
- tivaapps - Example hello-world apps for Texas Instruments TI-RTOS for Tiva C using a Linux host
- Drivers and examples - Drivers for internal peripherals and external modules for Tiva C, examples of FreeRTOS features under development/FreeRTOS
- Real-Time Bluetooth Networks - UTAustinX - Learn the design fundamentals of a real-time operating system (RTOS) and how to build a Bluetooth network in this hands-on project-based course.
- STM32 bootloader
- Tests to program STM32 Nucleo in C with GCC ARM embedded toolchain and libopencm3
- A demo project of FreeRTOS running on a STM32F4 Discovery board.
- DFU Bootloader for STM32 chips
- Customizable Bootloader for STM32 microcontrollers.
- Lightweight USB device Stack for STM32 microcontrollers
- STM32 programming with Embedded GNU Compiler
- A tiny portable 3D graphics lib for micro controllers (Oled display)
- Getting started with the STM32F4-Discovery board using the EmBitz IDE
- libopencm3 and FreeRTOS projects using the STM32F103C8T6 MCU
- A template for building STM32F0 ARM projects with GCC
- Open source flash program for STM32 using the ST serial bootloader
- Standalone TCP/IP stack for STM32, bare metal or RTOS
- stm32-hid-bootloader - Driverless USB HID bootloader and flashing tool for STM32F10X devices
- stm32l1xx-template - A template for building firmware for the STM32L1xx.
- STM32F103C8 Examples
- stm32f103 - Bare metal programming on a generic STM32F103c8 board
- stm32_samples
- stm32f4de example code
- stm32f4xx with Rust at the HAL - A series of tutorials for building STM32F4xx applications with Rust.
- stm32-rf-scanner - STM32 and nRF24L01+ based 2.4GHz RF scanner
- stm32-dc-dc - STM32 based DC-DC converter
- rustlink - small set of Rust tools to program STM32 devices
- stm8-bare-min - Tiny peripheral library for STM8S
- stm8-bootloader - Serial bootloader for STM8S microcontrollers
- stm8-multi-tasker - STM8-Multi-Tasker - Preemptive/Cooperative Round Robin Scheduler for STM8
- Wolk STM8 stuff
- STM8S001J3_tiny_board - A tiny dev board for STM8S001J3 MCU designed in KiCad.
- An open source bootloader for the ESP8266
- An esp8266 rom creation tool
- Wi-FI ESP8266 learning journey
- Wi-FI ESP32 learning journey
- Sming - ESP8266/ESP32 IoT Framework
- Raspberry Pi Bare Metal & related link
- ChibiOS/RT on the Raspberry Pi
- Raspberry Pi ARM based bare metal examples
- Bare metal Raspberry Pi 3 tutorials
- Open Projects: Raspberry, Beaglebone BSP
- A Real-Time Operating System on the Raspberry Pi
- A port of FreeRTOS to the raspberry pi
- FreeRTOS Successfully Ported
- Exploring AArch64 assembler - Raspberry
- A bootloader for the Raspberry Pi using the ethernet device
- Bare Metal Raspberry Pi
- Bare Metal Programming in C
- Baking Pi – Operating Systems Development
- Search for 'Raspberry' topic on Github
- elinux: Raspberry Pi Programming or elinux: RPi Hub
- Stanford CS104e - An Experimental Course on Operating Systems
- Computer Systems
- Build a Debian-based ARM64 system for Raspberry Pi 3
- Learning operating system development using Linux kernel and Raspberry Pi
- A port of FreeRTOS to the raspberry pi 2B. With USB+Ethernet+TCP/IP.
- 64-bit Tiano Core UEFI for the Raspberry Pi 3
- CXCORE-RaspberryPi3-ubuntu-18.04-aarch64
- Sample source: Baremetal source code for Raspberry
- Sample source: NarcOS - A bare metal ultralight kernel for Raspberry Pi 3
- Sample source: FreeRTOS v9.0.0 port for Raspberry Pi 1
- Sample source: A bare-metal experiments with the RaspberryPi
- 「BareMetalで遊ぶ Raspberry Pi」のプログラムです。
- UEFI for RaspberryPi2 and RaspberryPi3 based on Linaro EDK2
- ARM-episodes & ARM exploitation for IoT
- ARM shellcode and exploit development - BSidesMunich 2018
- 64 bit Bare Metal Programming on RPI-3
- Raspberry Pi 3 Bare Metal
- Assembly code for Raspberry Pi
- A public Baremetal Raspberry Pi code
- Raspberry-Pi Bare Metal Tutorial
- uCOS-II on Raspberry Pi
- Porting uCOSII to the raspberry pi A+/B+/2B
- Bare-metal examples
- Bare-metal lab
- Exploring Raspberry Pi: Interfacing to the Real World with Embedded Linux {book}
- Exploring Raspberry Pi: Interfacing to the Real World with Embedded Linux {website}
- Writing a "bare metal" operating system for Raspberry Pi 4
- PiSpot-Show - A Raspberry Pi captive portal that creates a WiFi hotspot displaying a customizable web page to connected users using hostapd, dnsmasq, and nginx.
- BeagleBone Black I2C References
- Learning BeagleBone Python Programming
- Simple implementation of an OS for the BeagleBoard C4 with ARMv7 A8 processor.
- Various projects that utilize low level hardware instructions to interface with leds, speaker output and joystick input.
- Windows Embedded Compact BSP for TI's Beaglebone
- BBB-BareMetal- Works on the beaglebone black (bare metal)
- Running a Baremetal Beaglebone Black & Part 2
- Bare Metal on the BeagleBone (Black and Green) & link1 + Link2
- A tutorial on bare-metal [OS] development on the Texas Instruments BeagleBoard.
- bare metal c project for beaglebone, ti sitara am335x
- Bare Metal Applications on OSD335x using U-Boot
- bbb-asm-demo - Extremely tiny baremetal application for BeagleBone Black
- Beaglebone - Getting started with JTAG and CCS
- BeagleBoardJTAG
- beaglebone_samples
- FreeRTOS for BeagleBone Black
- Linux inside - A little bit about a linux kernel
- Writing device drivers in Linux
- YOLINUX Tutorials
- Linux driver programming
- Free training materials and conference presentations
- eBook: Linux Drivers or Slides: Linux Drivers
- c-periphery - A C library for peripheral I/O (GPIO, SPI, I2C, MMIO, Serial) in Linux.
- OpenEmbedded,
- Linux driver practices
- Linux Kernel Exploitation - A bunch of links related to Linux kernel exploitation
- Linux Kernel Module Cheat
- Start linux kernel module development!
- Minimal Linux Live - a tiny educational Linux distribution
- low-level programming university #linux-kernel-and-device-driver
- Yocto Project - Create custom Linux-based systems regardless of the hardware architecture.
- Buildroot - Simple, efficient and easy-to-use tool to generate embedded Linux systems through cross-compilation.
- List of open source real-time operating systems
- ROS
- FreeRTOS
- FreeRTOS - Explanation
- FreeRTOS API Reference Documentation
- How to Write a Small RTOS
- RTOS From Scratch
- mini-arm-os & qemu with a stm32 or here - Build a minimal multi-tasking OS kernel for ARM Cortex-M series from scratch
- Writing a simple operating system from scratch
- Free real-time operating system (RTOS) designed for deeply embedded applications
- MPSoC FreeRTOS Development
- Atomthreads: Open Source RTOS
- High performance motor control
- MINIX3: Open source RTOS
- 30 Days make OS --> YOS @Yannik
- Community: OSDEV.org, reddit/osdev
- Real-time System Group
- object-oriented C++ RTOS for microcontrollers
- RT-Thread is an open source IoT operating system from China.
- How to create an OS from scratch
- Sample Source: TetrOS is a small feature rich Tetris clone which is written in Assembly.
- Sample Source: RTOS for microcontrollers
- Sample Source: A Powerful embedded RTOS for ARM Cortex M microcontrollers
- Sample Source: An embedded operating system for ARM Cortex-M based microcontrollers
- Sample Source: rnk is a RTOS targeting ARM architecture.
- Sample Source: RTOS-From-Scratch
- Sample Source: Embeded OS for PIC32MX270F256B
- How I ended up writing a new real-time kernel
- Sample Source: TNeo - a well-formed and carefully tested preemptive real-time kernel for 16- and 32-bits MCUs
- yaos is an embedded operating system for Internet of Things(IoT) devices, specifically for a single-core processor without MMU virtualization.
- RT-Thread for Raspberry Pi 2B
- tock - A secure embedded operating system for Cortex-M based microcontrollers.
- AliOS-Things - AliOS Things released by Alibaba is an open-source implementation of operating system (OS) for Internet of Things (IoT).
- CoRTOS & CoRTOS Simple Cooperative RTOS - An open source minimalist RTOS.
- µOS++ Reference
- TNKernel - a compact and very fast real-time kernel for the embedded 32/16/8 bits microprocessors.
- Femto OS - a very concise portable real time - preemptive operating system (RTOS) for embedded microcontrollers with minimal ram and flash, say 2KB .. 16KB flash and 128 .. 1024 bytes ram.
- Real-Time Kernel '0' - A lean, highly deterministic, low-latency real-time kernel for ARMv6/7M.
- Sample Source: Trampoline is a static RTOS for small embedded systems. & labs
- Sample source: An integration an example AUTOSAR project which every part in AUTOSAR (OS, RTE, BSW, MCAL) are collected from different open source.
- automotive software(OSEK & AUTOSAR) - Because I am not powerful so I decided to develop tiny but smart part of automotive software based on open source, and create a general AUTOSAR & Automotive Software study environment.
- BlackFlag ECU - Automotive CAN bus security testing and analysis tool for ECU research, fuzzing, and reverse engineering of vehicle communication protocols.
- ucLinux: The Embedded Linux/Microcontroller project is a port of Linux to systems without a Memory Management Unit (MMU).
- Tizen
- Bootstrap yourself to write an OS from scratch. A book for self-learner.
- Kernel 101 – Let’s write a Kernel
- The little book about OS development
- TetrOS - Tetris that fits into the boot sector.
- Writing a Simple Operating System from Scratch
- JamesM's kernel development tutorials
- Bare Bones - a simple kernel for 32-bit x86 and boot it.
- Operating System Development Series
- 7 Steps to Writing a Simple Cooperative Scheduler
- A simple OS kernel for research, teaching, and fun
- Operating Systems C Term 2018
- GuruCE Blog
- Windows CE Base Team Blog
- DevWinCE blog
- Windows Embedded Compact BSP for Raspberry Pi
- Windows Embedded Board Support Package for BeagleBone
- Writing a boot loader in Assembly and C
- Writing a Bootloader Part 3
- A bootloader for ARM Cortex-M based microcontrollers
- OpenBLT - an open source and portable bootloader for microcontrollers.
- ARMv7M ELF loader
- Writing a Bootloader Part 1
- can-bootloader - The bootloader used to flash our CAN-connected boards
- Bootloaders 101
- Understand boot process: link1, link2, link3
- Keywords: hello world bootloader, writing a bootloader from scratch, how to write a bootloader in assembly, ...
- Building Hardware Components for Memory Protection of Applications on a Tiny Processor
- KeyStone Architecture: Memory Protection Unit (MPU)
- tinyusb - An open source USB stack for a variety of Embedded Systems.
- A practical approach to Kalman filter and how to implement it
- Embedded System programming: Diving into Syllabus for investigation.
- ELC 2018 Presentations
- ARM Edition: Sparky ARM Edition is a Sparky version created for a single board mini computer RaspberryPi.
- The gem5 Simulator is a well-known sophisticated simulator used for computer system research at both architecture and micro-architecture levels. Main page is here.
- LineageOS Android Distribution
- The NoCAN platform
- Realtime OS on Embedded Systems
- These projects were produced in the five weeks of ECE 4760 each year.
- Advanced fault backtrace library for ARM Cortex-M series MCU
- mcu-starter-projects - Simple starter projects for bare-metal MCU development.
- DirtyJTAG - JTAG adapter firmware for STM32F1
- Generic_MCU_Software_Infrastructure - Provide necessary software infrastructure, service, macros to support some high level abstract concept or paradigm, such as OOPC, FSM, delegate (event-driven) and etc.
- apollo - An open autonomous driving platform.
- A C++ template library for embedded applications
- Embedded rework of C++ STL -
basic_string,basic_ostreametc. leaned way down. Cross platform (including AVR). - RAMEN 🍜 - flow-based programming implemented in a simple single-header unopinionated library.
- Embedded Wizard - Sophisticated GUI for Your Embedded Platform
- lvgl - Graphics library to create an embedded GUI with easy-to-use graphical elements, beautiful visual effects and low memory footprint. It offers anti-aliasing, opacity, and animations using only one frame buffer.
- nnom - A higher-level Neural Network library for microcontrollers.
- nn4mp
- Embedded Learning Library (ELL) - Microsoft's library to deploy intelligent machine-learned models onto resource constrained platforms and small single-board computers.
- Qualcomm Neural Processing SDK for AI - Libraries to developers run NN models on Snapdragon mobile platforms taking advantage of the CPU, GPU and/or DSP.
- CMSIS NN - A collection of efficient neural network kernels developed to maximize the performance and minimize the memory footprint of neural networks on Cortex-M processor cores.
- ARM Compute Library - Set of optimized functions for image processing, computer vision, and machine learning.
- uTensor - AI inference library based on mbed (an RTOS for ARM chipsets) and TensorFlow.
- EmbededAI - A library that provides elements of AI to C++ applications.
- kann - A lightweight C library for artificial neural networks.
- m2cgen - A CLI tool which allows to transpile trained classic ML models into a native code of various programming languages with zero dependencies including C.
- nn2 - Tiny zero-dependency neural network inference engine in pure C with hand-written SIMD kernels (AVX-512 / AVX2 / NEON). Runs the FaceX face recognition stack on Apple Silicon, ARM SBCs and ESP32-P4. Apache 2.0.
- edge-agents (ForestHub) - Open-source (AGPL-3.0) 30 MB AI agent runtime for edge devices. Offline by default; GPIO/UART/MQTT as first-class nodes; local SLMs alongside cloud LLMs. Runs on Raspberry Pi 5, Jetson Orin Nano, STM32MP25, ctrlX CORE.
- Jumpstarter - Open source hardware-in-the-loop testing framework for automated testing on real and virtual embedded hardware with CI/CD integration.
- lm4tools
- mspdebug - Debugging tool for MSP430 MCUs
- pycs - Python Based ARM CoreSight Debug and Trace Tools
- NaiveSystems Analyze - Static Analysis Tool for Code Security and Compliance
- Serial Studio - Visualize, analyze and stream over the internet data generated by your MCU project
- Scrutiny Debugger - An open source debugging, visualization and testing tool for C/C++ embedded applications that works through instrumentation.
- MemBrowse - Memory footprint tracking for ELF binaries with CLI and CI integration to monitor flash/RAM usage across commits.
- aem-modbus-simulator - Open-source Python Modbus RTU/TCP slave simulator emulating an industrial DC voltage monitor (147 holding registers, 6 baudrates). Lets SCADA/PLC firmware engineers test Modbus integration in CI pipelines without physical hardware on the bench.
- memprobe.dev - ELF firmware analysis as a web app, CLI, and GitHub Action. Break down flash and RAM usage by section, file, library, and symbol, compare builds, track project history and memory growth over time, and set CI size budgets.
Awesome Cheat Sheets for Developer Utility, like Git, Vim , Tmux, SublimeText, Markdown, Shell.
- What a C programmer should know about memory
- What Every Programmer Should Know About Memory
- What Every C Programmer Should Know About Undefined Behavior part 2 part 3
- A Guide to Undefined Behavior in C and C++
- Software Engineering Takeaways
- Embedsys weekly newsletter
- awesome-c - A curated list of awesome C frameworks, libraries and software.
- A curated list of project-based tutorials in C
- Curated list of project-based tutorials
- Curated list of awesome lists
- A curated list of awesome Raspberry Pi tools, projects, images and resources
- Curated List of Self-Driving Cars and Autonomous Vehicles Resources
- awesome-embedded-systems
- awesome-cheat-sheets - Awesome Cheat Sheets for Developer Utility, like Git, Vim, Tmux, Sublime Text, Markdown, Shell.
- awesome-embedded-rust - Curated list of resources for Embedded and Low-level development in the Rust programming language.
- theEmbeddedNewTestament.github.io
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request