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++

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 as a best way to initialize C and C++ projects