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
- 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
TM4C123
- 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
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
STM8
Raspberry
- 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
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
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
- Community: OpenEmbedded,
Assembly
RTOS
- 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.
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
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
Makefile
Peripheral
Memory Protection Unit
- Building Hardware Components for Memory Protection of Applications on a Tiny Processor
- KeyStone Architecture: Memory Protection Unit (MPU)
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
Tips & tricks
Awesome Cheat Sheets for Developer Utility, like Git, Vim , Tmux, SublimeText, Markdown, Shell.
FAQ_Embedded
Looking for more lists like this?
- 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