Awesome-Embedded
A curated list of awesome embedded programming.
https://github.com/nhivp/Awesome-Embedded
Last synced: about 16 hours ago
JSON representation
-
Interview
- Embedded Interview Questions
- Interview Questions Archive by Company
- coding-interview-university - A complete computer science study plan to become a software engineer.
- Coding Interview University - A complete computer science study plan to become a software engineer.
-
Embedded Software Skill
-
Common
- Integer size in C on 32-bit and 64-bit system
- TeraTerm - TTL command reference
- Linker Command File Primer
- The C build process
- Building Bare-Metal ARM Systems with GNU
- Toolchains
- What is an application binary interface (ABI)?
- ARM Cortex M4 Blink Example (Linker Script)
- A Sample Linker Script
- Embedded Software _ Getting started
- Using the GNU Linker
- A Sample Linker Script
- ELF – Executable and Linkable Format
- Linking and Loading
- How to convert from an armlink scatter file to a GNU ld linker script
- TeraTerm Scripts
- Linker Command File Primer
- ARM Cortex M4 Blink Example (Linker Script)
- Everything You Never Wanted To Know About Linker Script
- Modern Embedded Systems Programming Course - Learn from the basics to modern embedded programming practice.
- TeraTerm Scripts
- Linker Command File Primer
-
MCU programming
-
Bare-metal programming (Don't need MCU)
- Simplest bare metal program for ARM - emulation/))
- Bare metal programming guide - a detailed guide for beginners
- Real-Time C++ - companion bare-metal code to Real-Time C++ book.
-
MSP430
- 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, interupt handling, serial communication, embedded operating systems, synchronization, etc.
- MSP430 reference
- 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, interupt handling, serial communication, embedded operating systems, synchronization, etc.
- msp430-template - A template for MSP430 firmware.
- MSP430-GCC
-
TM4C123
- 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
- The complete tutorial for Stellaris LaunchPad development with GNU/Linux (I)
- 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
- Drivers and examples - Drivers for internal peripherals and external modules for Tiva C, examples of FreeRTOS features under development/FreeRTOS
- Tivaware bootloader
- Tivaware bootloader
- Tivaware bootloader
- Tivaware bootloader
- Tivaware bootloader
- Tivaware bootloader
- Tivaware bootloader
- Tivaware bootloader
- Tivaware bootloader
- Tivaware bootloader
- Tivaware bootloader
- Tivaware bootloader
- Tivaware bootloader
- Tivaware bootloader
- Tivaware bootloader
- Tivaware bootloader
- Tivaware bootloader
- Tivaware bootloader
- Tivaware bootloader
- Tivaware bootloader
- Tivaware bootloader
- Tivaware bootloader
- Tivaware bootloader
- Tivaware bootloader
- Tivaware bootloader
- Tivaware bootloader
- Tivaware bootloader
- Tivaware bootloader
- Tivaware bootloader
- Tivaware bootloader
- Analog to Digital Conversion, Data Acquisition and Control
- Embedded Systems - Shape The World
- 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
- 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.
- Linux command line build system to generate binaries for TM4C123 (ARM Cortex M4)
- Tivaware bootloader
- tm4c-gcc - TM4C123 GCC project template.
- tivaapps - Example hello-world apps for Texas Instruments TI-RTOS for Tiva C using a Linux host
-
STM32
- STM32 bootloader
- Open source flash program for STM32 using the ST serial bootloader
- stm32f4xx with Rust at the HAL - A series of tutorials for building STM32F4xx applications with Rust.
- STM32 bootloader
- stm32l1xx-template - A template for building firmware for the STM32L1xx.
- 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 builting STM23F0 ARM projects with GCC
- stm32-hid-bootloader - Driverless USB HID bootloader and flashing tool for STM32F10X devices
- 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
-
STM32F7
-
General
- McuOnEclipse - Everything about Eclipse, microcontrollers, software and tools.
- McuOnEclipse - Everything about Eclipse, microcontrollers, software and tools.
-
MSP432
- 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.
-
STM8
- 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.
-
ESP8266
-
-
Raspberry
-
ESP8266
- Raspberry Pi Bare Metal
- ChibiOS/RT on the Raspberry Pi
- Open Projects: Raspberry, Beaglebone BSP
- A Real-Time Operating System on the Raspberry Pi
- FreeRTOS Sucessfully Ported
- Exploring AArch64 assembler - Raspberry
- Bare Metal Raspberry Pi
- Bare Metal Programming in C
- Search for 'Raspberry' topic on Github
- elinux: Raspberry Pi Programming
- Computer Systems
- 64 bit Bare Metal Programming on RPI-3
- Raspberry Pi 3 Bare Metal
- Exploring Raspberry Pi: Interfacing to the Real World with Embedded Linux {book}
- Exploring Raspberry Pi: Interfacing to the Real World with Embedded Linux {website}
- Baking Pi – Operating Systems Development
- FreeRTOS Sucessfully Ported
- Bare Metal Programming in C
- Stanford CS104e - An Experimental Course on Operating Systems
- CXCORE-RaspberryPi3-ubuntu-18.04-aarch64
- Sample source: NarcOS - A bare metal ultralight kernel for Raspberry Pi 3
- 「BareMetalで遊ぶ Raspberry Pi」のプログラムです。
- Raspberry Pi ARM based bare metal examples
- Bare metal Raspberry Pi 3 tutorials
- A Real-Time Operating System on the Raspberry Pi
- A port of FreeRTOS to the raspberry pi
- A bootloader for the Raspberry Pi using the ethernet device
- 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
- 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 - exploitation-iot-episode-1/)
- ARM shellcode and exploit development - BSidesMunich 2018
- Assembly code for Raspberry Pi
- 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 {website}
- Writing a "bare metal" operating system for Raspberry Pi 4
-
-
Beaglebone
-
ESP8266
- Learning BeagleBone Python Programming
- BeagleBone Black I2C References
- A tutorial on bare-metal [OS
- bare metal c project for beaglebone, ti sitara am335x
- Bare Metal Applications on OSD335x using U-Boot
- Beaglebone - Getting started with JTAG and CCS
- BeagleBoardJTAG
- Learning BeagleBone Python Programming
- Windows Embedded Compact BSP for TI's Beaglebone
- Running a Baremetal Beaglebone Black - a-baremetal-beaglebone-black-part-2/)
- Beaglebone - Getting started with JTAG and CCS
- 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.
- BBB-BareMetal - Works on the beaglebone black (bare metal)
- Bare Metal on the BeagleBone (Black and Green)
- bbb-asm-demo - Extremely tiny baremetal application for BeagleBone Black
- beaglebone_samples
- FreeRTOS for BeagleBone Black
-
-
Linux kernel and device driver development
-
ESP8266
- Writing device drivers in Linux
- YOLINUX Tutorials
- Linux driver programming
- Free training materials and conference presentations
- eBook: Linux Drivers
- OpenEmbedded
- Start linux kernel module development!
- 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.
- Linux driver programming
- OpenEmbedded
- Linux inside - A little bit about a linux kernel
- Writing device drivers in Linux
- YOLINUX Tutorials
- Linux driver programming
- c-periphery - A C library for peripheral I/O (GPIO, SPI, I2C, MMIO, Serial) in Linux.
- Linux driver practices
- Linux Kernel Exploitation - A bunch of links related to Linux kernel exploitation
- Linux Kernel Module Cheat
- Minimal Linux Live - a tiny educational Linux distribution
-
-
Assembly
-
RTOS
-
ESP8266
- List of open source real-time operating systems
- FreeRTOS
- FreeRTOS API Reference Documentation
- How to Write a Small RTOS
- RTOS From Scrach
- MPSoC FreeRTOS Development
- Atomthreads: Open Source RTOS
- MINIX3: Open source RTOS
- OSDEV.org
- Real-time System Group
- How I ended up writing a new real-time kernel
- CoRTOS - simple/) - An open source minimalist RTOS.
- 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.
- µOS++ Reference
- CoRTOS - simple/) - An open source minimalist RTOS.
- Writing a simple operating system from scratch
- MPSoC FreeRTOS Development
- RT-Thread for Raspberry Pi 2B
- FreeRTOS API Reference Documentation
- mini-arm-os & qemu with a stm32 - arm-os) - Build a minimal multi-tasking OS kernel for ARM Cortex-M series from scratch
- Free real-time operating system (RTOS) designed for deeply embedded applications
- 30 Days make OS - -> [YOS](https://github.com/yourtion/YOS) @[Yannik](https://yannik520.github.io/)
- 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
- Sample Source: TNeo - a well-formed and carefully tested preemptive real-time kernel for 16- and 32-bits MCUs
- 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).
- µ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.
-
-
OS
-
ESP8266
- ucLinux
- Tizen
- The little book about OS development
- 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
- Writing a Simple Operating System from Scratch
- Kernel 101 – Let’s write a Kernel
- Operating System Development Series
- Bootstrap yourself to write an OS from scratch. A book for self-learner.
- Operating System Development Series
- A simple OS kernel for research, teaching, and fun
- Operating Systems C Term 2018
-
-
WindowCE
-
Compiler
-
ESP8266
-
-
Bootloader
-
ESP8266
- Writing a boot loader in Assembly and C
- Writing a Bootloader Part 3
- Writing a Bootloader Part 1
- Bootloaders 101
- link1 - the-microcontroller-boot-process/), [link3](https://www.eevblog.com/forum/microcontrollers/copy-data-from-rom-to-ram-and-execute/)
- 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
-
-
Makefile
-
Peripheral
-
Memory Protection Unit
-
USB
- tinyusb - An open source USB stack for a variety of Embedded Systems.
-
-
Others
-
USB
- A practical approach to Kalman filter and how to implement it
- Embedded System programming
- ELC 2018 Presentations
- ARM Edition
- The gem5 Simulator - known sophisticated simulator used for computer system research at both architecture and micro-architecture levels. Main page is [here](http://gem5.org/Main_Page).
- LineageOS Android Distribution
- The NoCAN platform
- Realtime OS on Embedded Systems
- These projects were produced in the five weeks of ECE 4760 each year.
- A Development Environment for ARM TrustZone with GlobalPlatform Support
- A practical approach to Kalman filter and how to implement it
- Embedded System programming
- Realtime OS on Embedded Systems
- Advanced fault backtrace library for ARM Cortex-M series MCU
- mcu-starter-projects - Simple starter projects for bare-metal MCU development.
- Generic_MCU_Software_Infrastructure - Provide necessary software infrastructure, service, macros to support some high level abstruct 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_ostream` etc. leaned way down. Cross platform (including AVR).
- RAMEN 🍜 - flow-based programming implemented in a simple single-header unopinionated library.
-
-
Embedded GUI Development
-
USB
- 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.
-
-
Machine Learning & AI on MCU
-
USB
- 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.
- nn4mp
- nnom - A higher-level Neural Network library for microcontrollers.
- Embedded Learning Library (ELL) - Microsoft's library to deploy intelligent machine-learned models onto resource constrained platforms and small single-board computers.
- 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.
-
-
Tips & tricks
-
USB
- Awesome Cheat Sheets
- GNU GDB Debugger Command Cheat Sheet
- What Every Programmer Should Know About Memory
- A Guide to Undefined Behavior in C and C++
- Software Engineering Takeaways
- Embedsys weekly newsletter
- What Every C Programmer Should Know About Undefined Behavior - every-c-programmer-should-know_14.html) [part 3](http://blog.llvm.org/2011/05/what-every-c-programmer-should-know_21.html)
- Vim Config for Reading Linux Kernel Source Code
- GNU GDB Debugger Command Cheat Sheet
- What Every C Programmer Should Know About Undefined Behavior - every-c-programmer-should-know_14.html) [part 3](http://blog.llvm.org/2011/05/what-every-c-programmer-should-know_21.html)
-
-
FAQ_Embedded
-
Looking for more lists like this?
-
USB
- A curated list of project-based tutorials in C
- A curated list of awesome Raspberry Pi tools, projects, images and resources
- awesome-c - A curated list of awesome C frameworks, libraries and software.
- Curated list of project-based tutorials
- Curated list of awesome lists
- 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 languague.
- theEmbeddedNewTestament.github.io
-
-
BOOKs
-
Automotive
-
ESP8266
- 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.
- Sample Source: Trampoline is a static RTOS for small embedded systems. - nantes.fr/~bechenne/trampoline-labs/)
- Sample source: An integration an example AUTOSAR project which every part in AUTOSAR (OS, RTE, BSW, MCAL) are collected from different open source.
-
-
Utilities
-
USB
- 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.
-
Categories
MCU programming
106
Raspberry
49
RTOS
40
Common
22
Others
20
Linux kernel and device driver development
20
Beaglebone
18
OS
14
Bootloader
11
Tips & tricks
10
Looking for more lists like this?
9
Machine Learning & AI on MCU
9
WindowCE
6
Utilities
6
Embedded Software Skill
5
Interview
4
BOOKs
4
Peripheral
3
Automotive
3
Makefile
3
FAQ_Embedded
2
Assembly
2
Embedded GUI Development
2
Compiler
1
Sub Categories
Keywords
embedded
11
microcontroller
10
arm
8
operating-system
7
iot
7
linux-kernel
6
cortex-m
6
stm32
6
c
5
arduino
5
cpp
4
rust
4
linux
4
embedded-systems
4
risc-v
3
c-plus-plus
3
rtos
3
kernel
3
machine-learning
3
tutorial
3
awesome
3
awesome-list
3
esp32
2
cpp14
2
framework
2
mcu
2
os
2
algorithms
2
deep-learning
2
armv8
2
uefi
2
qemu
2
firmware
2
rpi
2
python
2
resources
2
cpp11
2
raspberry-pi-3
2
library
2
hal
2
stm32hal
2
real-time
2
raspberry-pi
2
hardware-abstraction-layer
2
javascript
2
stdlib
1
qt
1
projects
1
network
1
microkernel
1