Awesome-Embedded
A curated list of awesome embedded resource.
Table of content
- Interview
- Embedded Software Skill
- Common
- Microcontroller
- Raspberry
- Bealgebone
- Assembly
- Linux Programming
- RTOS
- AUTOSAR
- OS
- Compiler
- Bootloader
- Makefile
- Others
- Utilities
- Tips & tricks
- FAQ - Embedded
Interview
On the way to be a full-stack embedded software engineer.
Embedded Software Skill
- Skills/Knowledge required to become a champion Embedded Software Developer.
- How to be low-level programmer
- Programmer Competency Matrix
Common
- 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
MCU programming
Bare-metal programming (Don't need MCU)
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-template - A template for MSP430 firmware.
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
- 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.
MSP432
STM32
- 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 builting STM23F0 ARM projects with GCC
- Open source flash program for STM32 using the ST serial bootloader
- stm32-hid-bootloader - Driverless USB HID bootloader and flashing tool for STM32F10X devices
- stm32l1xx-template - A template for building firmware for the STM32L1xx.
STM8
ESP8266
Raspberry
- 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 Sucessfully 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
Beaglebone
- 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
Linux Programming
- 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.
- Community: OpenEmbedded,
Assembly
RTOS
- List of open source real-time operating systems
- ROS
- FreeRTOS
- FreeRTOS - Explaination
- FreeRTOS API Reference Documentation
- How to Write a Small RTOS
- RTOS From Scrach
- 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).
AUTOSAR
- 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.
OS
- 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.
Compiler
Bootloader
- Writing a boot loader in Assembly and C
- Writing a Bootloader Part 3
- A bootloader for ARM Cortex-M based 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
- Building Hardware Components for Memory Protection of Applications on a Tiny Processor
- KeyStone Architecture: Memory Protection Unit (MPU)
USB
- tinyusb - A silly USB stack for Embedded System.
Others
- 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 abstruct concept or paradigm, such as OOPC, FSM, delegate (event-driven) and etc.
- apollo - An open autonomous driving platform.
Utilities
- lm4tools
- mspdebug - Debugging tool for MSP430 MCUs
- pycs - Python Based ARM CoreSight Debug and Trace Tools
Tips & tricks
Awesome Cheat Sheets for Developer Utility, like Git, Vim , Tmux, SublimeText, Markdown, Shell.
FAQ_Embedded
Looking for more lists like this?
- 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.