Embedded Systems Engineering Roadmap
This roadmap is designed to assist beginners aspiring to build a career as an Embedded Engineer / Developer. To provide comprehensive guidance, I have carefully selected the topics based on current open job requirements and organized them according to my personal experience.
Becoming an embedded engineer requires a broad understanding of both software and hardware. If you are starting on this journey, you must be highly motivated and passionate to pursue this path. The field of embedded systems demands a solid understanding of hardware functionality. But, as the well-known saying goes, "Hardware is hard!". So, patience and passion are the essential qualities that will help you overcome the various challenges encountered along this journey.
Roadmap
Learning Resources
⭐️ Featured Material
🎥 Courses and Youtube Channels
- Fastbit Embedded Brain Academy
- DigiKey YouTube Channel
- Ben Eater YouTube Channel
- Phil’s Lab YouTube Channel
🤡 Simulation
🕹️ Arduino
🏭 STM32
👨🏫 Educational Websites
- ControllersTech
- SparkFun Learn: Learn at SparkFun Electronics
- Random Nerd Tutorials | Learn ESP32, ESP8266, Arduino, and Raspberry Pi
⚒️ Projects
Note: It is not necessary to read or watch all of the following materials, but it is important to study enough to have at least a basic understanding of each topic. Of course, the more you study and practice, the deeper and wider your knowledge will become. This will ultimately improve your skills as an engineer.
Some the resources mentioned here will only be used as references. Refer to them only when you need them.
Electronics Fundamentals
Basic Math & Calculus
Electrical Circuits Basics
Electronic Components
- #1099 How I learned electronics
- Lessons in Electric Circuits
- Fundamentals of Electric Circuits - Charles K. Alexander, Matthew Sadiku
- Grob’s Basic Electronics - Mitchel E. Schultz
- Make: Electronics: Learning by Discovery - Charles Platt
- Encyclopedia of Electronic Components - Charles Platt
- The Art of Electronics - Paul Horowitz, Winfield Hill
Digital Circuits & Logic Design
Computer Architecture
- Build an 8-bit computer from scratch
- Computer Organization and Design: ARM Edition - David A. Patterson, John L. Hennessy
- Digital Design and Computer Architecture: ARM Edition - Sarah Harris, David Harris
- Digital Design - Morris Mano
- Embedded Systems Architecture - Tammy Noergaard
Using Test Equipment
Multimeter
Logic Analyzer
Oscilloscope
- What’s an OSCILLOSCOPE?
- How to Use an Oscilloscope
- How to use an oscilloscope / What is an oscilloscope / Oscilloscope tutorial
Prototyping Skills
PCB Design
- How To Learn PCB Design (My Thoughts, Journey, and Resources) - Phil's Lab #87
- KiCad 6 STM32 PCB Design Full Tutorial - Phil's Lab #65
- Intro to KiCad
- Altium Academy YouTube Channel
- Microcontroller-Based Hardware Design With Altium Designer
- Robert Feranec YouTube Channel
- PCB Design for EMI & SI - Phil's Lab #64
- PCB Design for Advanced Users
Soldering
- How To Solder - Electronics with Becky Stern | Digi-Key Electronics
- HOW TO SOLDER! (Beginner's Guide)
- Soldering Crash Course: Basic Techniques, Tips and Advice!
- How to Solder Through-Hole Components - Another Teaching Moment | DigiKey Electronics
- How to Solder QFN MLF Package by Hand (Using a Hot Air Rework Station) | Digi-Key Electronics
- From Solderless Breadboard to Soldered Circuit - Electronics with Becky Stern | Digi-Key Electronics
Using Breadboards
FPGA Design
- Introduction to FPGA
- FPGA Fundamentals
- FPGA Embedded Design, Part 1 - Verilog
- FPGA Embedded Design, Part 2 - Basic FPGA Training
- FPGA Embedded Design, Part 3 - EDA Tools
- FPGA Embedded Design, Part 4 - Microprocessor Design
Programming Fundamentals
Algorithms & Data Structures
- Grokking Algorithms - Aditya Y. Bhargava
- Introduction to Algorithms - Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein
- Data Structures in C
- Data Structures - Full Course Using C and C++
Design Patterns
- Embedded Systems State Machines & Data Structures
- Design Patterns for Embedded Systems in C - Bruce Powel Douglass
State Machines / UML
Memory Allocation
Programming Languages
C
- W3Schools C Tutorial
- The C Programming Language - Brian W. Kernighan, Dennis M. Ritchie
- C How to Program - Paul Deitel, Harvey Deitel
- Effective C - An Introduction to Professional C Programming - Robert C. Seacord
C++
- C++ Tutorial for Beginners - Full Course
- C++ YouTube Playlist by The Cherno
- C++ Concurrency in Action - Anthony Williams
Assembly
Python
- Real Python: Python Tutorials
- Python Crash Course - Eric Matthes
- MicroPython - Python for microcontrollers
- CircuitPython
Rust
Build System
GCC
Makefile
CMake
Bash Script
Docker
Version Control
Git
- Git Tutorial for Beginners: Learn Git in 1 Hour
- Git for Professionals Tutorial - Tools & Concepts for Mastering Version Control with Git
Microcontrollers
- Make: AVR Programming - Elliot Williams
- Mastering STM32 - Carmine Noviello
- Microcontroller Embedded C Programming: Absolute Beginners
- Embedded Systems STM32 Low-Layer APIs(LL) Driver Development
- Embedded Systems STM32 HAL APIs Driver Development
GPIO
ADC
DAC
Timers
PWM
Interrupts
Watchdog
DMA
Bootloader
Power Management
GUI Design
Functional Safety
Interfaces & Protocols
Common
Wireless
Industrial
High-Speed
Automotive
Network
Cellular
Memories
Sensors & Actuators
Operating Systems
Operating System Fundamentals
Embedded Linux
Linux Kernel
Linux Device Drivers
U-Boot
BuildRoot
Yocto
Qt
Real-Time OS
FreeRTOS
Zephyr
NuttX
RT-Thread
QNX
VxWorks
Digital Signal Processing
DSP Fundamentals & Filter Design
- FIR Filter Design and Software Implementation - Phil's Lab #17
- IIR Filters - Theory and Implementation (STM32) - Phil's Lab #32
- Digital Signal Processing (ECSE-4530) Lectures, Fall 2014
- Digital Signal Processing (DSP) From Ground Up in C
- Real-Time Digital Signal Processing: Fundamentals, Implementations and Applications - Sen M. Kuo, Bob H. Lee, Wenshun Tian
- Real-Time Digital Signal Processing from MATLAB to C with the TMS320C6x DSPs - Thad B. Welch, Cameron H.G. Wright, Michael G. Morrow
- Digital Signal Processing - John G. Proakis, Dimitris K. Manolakis
- Schaum's Outline of Signals and Systems - Hwei P. Hsu
Discrete Fourier Transform / FFT
- Discrete Fourier Transform - Simple Step by Step
- The Fast Fourier Transform (FFT): Most Ingenious Algorithm Ever?
- The FFT Algorithm - Simple Step by Step
Controls Systems / PID Control
- Understanding Control Systems
- PID Controller Explained
- Understanding PID Control
- PID Controller Implementation in Software - Phil's Lab #6
- Control Systems Engineering - Norman S. Nise
- Modern Control Systems - Richard C. Dorf, Robert H. Bishop
MATLAB / Simulink
- MATLAB Tutorials: Getting Started with MATLAB
- Getting Started with Simulink
- MATLAB/SIMULINK Bible|Go From Zero to Hero!
Debugging
JTAG / SWD
GDB
OpenOCD
Testing
Unit Testing
Integration Testing
SIL / HIL Testing
Embedded AI
AI/ML Basics
TensorFlow
- Getting Started with TensorFlow and Keras – Maker.io | Digi-Key Electronics
- Intro to TensorFlow Lite Part 1: Wake Word Feature Extraction – Maker.io | Digi-Key Electronics
- Intro to TensorFlow Lite Part 2: Speech Recognition Model Training – Maker.io | Digi-Key Electronics
tinyML
- Intro to TinyML Part 1: Training a Neural Network for Arduino in TensorFlow | Digi-Key Electronics
- Intro to TinyML Part 2: Deploying a TensorFlow Lite Model to Arduino | Digi-Key Electronics
Embedded Security
Cryptography
- Cryptography and Network Security: Principles and Practice - William Stallings
- Serious Cryptography: A Practical Introduction to Modern Encryption - Jean-Philippe Aumasson
- MOOC - Security Part2: Basics of cryptography
- MOOC - Security Part3 : STM32 security features
Secure Boot & Secure Firmware Update
- MOOC - Security Part4 : STM32 security in practice
- MOOC - Security Part5 : How to define your security needs
- MOOC - Security Part6: STM32 security ecosystem, from theory to practice
History
The idea of creating this roadmap came from vazeri / Embedded-Engineering-RoadMap-2018 which was well designed but had some flaws and not updated for years. I took that idea, changed the structure of the roadmap and tried to improve it. The initial results can be accessed in m3y54m / Embedded-Engineering-Roadmap-Archived which is now archived. Early versions of the roadmap were created using Balsamiq Wireframes which is not suitable for these types of diagrams. So I decided to use Microsoft Visio instead and redrew the whole diagram.
Copyright
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License which means that you are free to share or adapt this work under the following terms:
Attribution — You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
ShareAlike — If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original.
Acknowledgement
Special thanks to my friends in the community of Iranian Embedded Engineers in Twitter and r/embedded subreddit for their suggestions that helped in improving this roadmap.
Contribution
If you think that this map can be improved in anyway, please start an issue or pull request. I’ll be maintaining and updating this repository frequently.
The source file is created using Microsoft Visio in .vsdx format and included in this repository for your contributions. If you do not have Microsoft Visio or you want to use free software, you can use draw.io which can import and export .vsdx files.
