/Embedded-Engineering-Roadmap

A roadmap for those who want to build a career as an Embedded Systems Engineer

Creative Commons Attribution Share Alike 4.0 InternationalCC-BY-SA-4.0

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

Embedded Systems Engineering Roadmap

Learning Resources

⭐️ Featured Material

🔎 Google

🎥 Courses and Youtube Channels

📚 Books

🤡 Simulation

🕹️ Arduino

If you do not have any background in programming embedded systems, Arduino boards and libraries are the best choice for you to start and learn the basics. Just keep in mind that most of the Arduino libraries are developed only for learning purposes and are not are not optimized to be used in industry. If you want to become a professional embedded developer, you should have the ability to utilize industry-compliant APIs and frameworks provided and qualified by microcontroller vendors such as STM32Cube for STM32 microcontrollers or ESP-IDF for Espressif microcontrollers.

🐜 PlatformIO

PlatformIO is a cross-platform, cross-architecture, multiple framework, professional tool for embedded systems engineers and for software developers who write applications for embedded products.

👨‍🏫 Educational Websites

⚒️ 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

Digital Circuits & Logic Design

Computer Architecture

Using Test Equipment

Multimeter

Logic Analyzer

Oscilloscope

Prototyping Skills

Using Breadboards

Hardware Design Basics

PCB Design

Soldering

FPGA Design

Programming Fundamentals

Algorithms & Data Structures

Design Patterns

State Machines / UML

Memory Allocation

Programming Languages

C

C++

Assembly

Python

Rust

Build System

GCC & Make

CMake

Bash Script

Docker

Version Control

Git

SVN (Subversion)

Microcontrollers

GPIO

ADC

DAC

Timers

PWM

Interrupts

Watchdog

DMA

Bootloader

Power Management

GUI Design

Functional Safety

Interfaces & Protocols

Common

UART
I2C
SPI

Wireless

Industrial

High-Speed

Automotive

Network

Cellular

Memories

NOR / NAND Flash

eMMC

EEPROM

SRAM / DRAM

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
Mbed OS
QNX
VxWorks

Digital Signal Processing

DSP Fundamentals & Filter Design

Discrete Fourier Transform / FFT

Controls Systems / PID Control

MATLAB / Simulink

Debugging

JTAG / SWD

GDB

OpenOCD

Testing

Unit Testing

Integration Testing

SIL / HIL Testing

Embedded AI

AI/ML Basics

TensorFlow

tinyML

Embedded Security

Cryptography

Secure Boot & Secure Firmware Update

SOFT SKILLS

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.