Skip to content
Kasia Zalewska
Go back

Resources for learning embedded systems

This is my personal collection of (free) resources that I find useful, insightful, or simply interesting while learning embedded systems. Itโ€™s still small, but Iโ€™ll keep expanding it over time. ๐Ÿ˜„

๐Ÿ—‚๏ธ Legend: ๐Ÿ“ Short reads ยท ๐Ÿ“– Books ยท ๐Ÿงฉ Exercises ยท ๐Ÿ› ๏ธ Tools ยท ๐ŸŽฌ Videos

Table Of Contents

Open Table Of Contents

Programming

๐Ÿ“– Competitive Programmerโ€™s Handbook, Antti Laaksonen
๐Ÿงฉ Exercism My favorite platform for programming exercises across many languages, with free mentor reviews.
๐Ÿ“– ๐ŸŽฌ The Missing Semester of Your CS Education

Modern C++

๐Ÿ“– Modern C++ Programming, Federico Busato
๐Ÿ“ Modern CPP features: C++23/20/17/14/11
๐Ÿ“– C++ Core Guidelines, Bjarne Stroustrup, Herb Sutter
๐Ÿ“– Collection of slides from CppNow presentations

Rust

๐Ÿ“– Rust Book

Assembly and reverse engineering

๐Ÿ“ ARM Reverse Engineering Notes
๐Ÿ“– Compiling to Assembly from Scratch, Vladimir Keleshev (ARM)
๐Ÿ“ FFmpeg School of Assembly Language (x86)

Operating systems

๐Ÿ“– Operating Systems: Three Easy Pieces Best intro to operating systems
๐Ÿ“ A fork() in the road Why fork() is bad and what can be used instead
๐ŸŽฌ Introduction to Zephyr by Shawn Hymel

Compilers

๐Ÿ“ A Compiler Writing Journey
๐Ÿ“ Beginnerโ€™s Guide to Linkers

Embedded

๐ŸŽฌ Embedded System Project Series | Artful Bytes
๐Ÿ“ Donโ€™t use Arduino for professional work
๐Ÿ“ Bare metal programming guide

Computer Architecture

๐Ÿ“ Memory Management Reference
๐Ÿ“– What Every Programmer Should Know About Memory, Ulrich Drepper
๐ŸŽฌ Scott Meyers: Cpu Caches and Why You Care | code::dive conference 2014 | Youtube
๐ŸŽฌ The Engineering that Runs the Digital World | How CPUs Work
๐Ÿ“– Programming from the Ground Up | Jonathan Bartlett

Tools

๐Ÿ› ๏ธ cmake-init The must-have tool for initializing CMake based projects. Adds UT, CI/CD, linters etc.
๐Ÿ› ๏ธ Wokwi Online simulator for Arduino AVR, ESP32, STM32, Pi Pico.

Security

๐Ÿ“– Embedded Application Security Best Practices
๐Ÿ“ Compiler Options Hardening Guide for C and C++
๐Ÿ“ MITRE ATT&CKยฎ, knowledge base of attack techniques and mitigation Advanced and wide lists of used attacks techniques and way to prevent them.

Linux

๐ŸŽฌ Systemd Explained: How to Manage Linux Services Easily


Share this post on:

Previous Post
Running Zephyr RTOS on Arduino UNO R4 WiFi
Next Post
cmake-init: the best way to kick off a new C or C++ project