Awesome-Embedded
A curated list of awesome embedded programming.
https://github.com/nhivp/Awesome-Embedded
Last synced: about 2 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
- Curated List of Self-Driving Cars and Autonomous Vehicles 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
Looking for more lists like this?
10
Tips & tricks
10
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