Skip to content

A roadmap for those who want to build a career as an Embedded Systems Engineer, along with a bunch of learning resources

License

Notifications You must be signed in to change notification settings

subh2020/Embedded-Engineering-Roadmap

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 

Repository files navigation

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, the topics have been carefully selected based on current job requirements and organized 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.

What is an Embedded System?

Making Embedded Systems: An embedded system is a computerized system that is purpose built for its application.

Analog Devices: An embedded system is a system in which the computer (generally a microcontroller or microprocessor) is included as an integral part of the system. Often, the computer is relatively invisible to the user, without obvious applications, files, or operating systems. Examples of products with invisible embedded systems are the controller that runs a microwave oven or the engine control system of a modern automobile.

Embedded Systems Glossary: A combination of computer hardware and software, and perhaps additional mechanical or other parts, designed to perform a dedicated function. In some cases, embedded systems are part of a larger system or product, as in the case of an antilock braking system in a car.

Roadmap

Embedded Systems Engineering Roadmap

Learning Resources

⭐️ Featured Material

🔎 Searching is Your Super Power!

🎥 Courses and YouTube Contents

🛠️ IDEs

👨‍💻 VS Code Extensions

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.

PlatformIO is not yet extensively adopted in industrial and large-scale projects, however, it is an excellent choice for individuals working on smaller projects. This is because it greatly reduces the need to install frameworks and setup build and debug tools, allowing you to concentrate on programming.

🕹️ Arduino

If you do not have any background in programming the 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 for learning purposes and are not optimized to be used in industry.

Additionally, the Arduino Core takes care of most of the low-level operations and manipulation of registers that you, as an embedded engineer, should be able to handle yourself. If you want to become a professional embedded developer, you must be able to effectively use industry-standard APIs and frameworks provided and approved by microcontroller vendors. For example, CMSIS for ARM Cortex, STM32Cube for STM32, ESP-IDF for Espressif microcontrollers, etc.

👨‍🏫 Educational Websites

⚒️ Projects

😈 Hardware Hacking

🗺️ Other Helpful Roadmaps


Note: It is not necessary to read or watch all of the following materials, but it is important to study enough to have a basic understanding of each topic. Of course, the more you study and practice, the greater your knowledge will become, ultimately enhancing your abilities as an engineer.

Some of the resources mentioned here will just be used as references. Refer to them only when you need them.

The 💎 symbol is to indicate well-known references that have really invaluable and comprehensive content. If you want to deepen your understanding of a topic, refer to the resources marked with a 💎 icon.


Soft Skills


Electronics Fundamentals

Basic Math & Calculus

Electrical Circuits Basics

Electronic Components

Digital Circuits & Logic Design

Computer Architecture


Using Test Equipment

Multimeter

Logic / Protocol Analyzer

Oscilloscope


Prototyping Skills

Breadboarding

Hardware Design Basics

PCB Design

Soldering


FPGA Design


Software Development Life Cycle (SDLC) Models


Programming Fundamentals

Algorithms & Data Structures

Design Patterns

State Machines / UML

Memory Management


Programming Languages

C

C++

Assembly

Python

Rust


Build Tools

GCC & Make

CMake

Bash Scripting

Docker


Version Control

Git

SVN (Subversion)


Microcontrollers

GPIO

ADC

DAC

Timers

PWM

Interrupts

Watchdog

Clock Management

DMA

Bootloader

Power Management

GUI Design

Functional Safety


Simulation / Emulation Tools


Interfaces, Protocols & Communication Technologies

‌Basic

UART
I2C
SPI
SDIO
I3C
1-Wire

Audio

I2S

Image & Video

CSI-2

Wireless

Bluetooth / BLE
Wi-Fi
Zigbee
Thread
Matter

Industrial

Modbus
RS485
CoAP & MQTT

High-Speed

Ethernet
USB
PCIe

Automotive

CAN

Network

Cellular

GSM / LTE
LTE-M & NB-IoT

Memories

NOR / NAND Flash

eMMC

EEPROM

SRAM / DRAM


Sensors & Actuators

Sensors

Actuators


Operating Systems

Operating System Fundamentals

Embedded Linux

Linux Kernel
Linux Device Drivers
U-Boot
Buildroot
Yocto
Multithreading & Parallel Processing
Inter Process Communication (IPC)
Qt Framework

Real-Time OS

RTOS Basics
FreeRTOS
Zephyr
μC/OS / Micriμm OS
NuttX
RT-Thread
Mbed OS
QNX
VxWorks
Azure RTOS (ThreadX)

Digital Signal Processing

DSP Fundamentals & Filter Design

Discrete Fourier Transform / FFT

Controls Systems / PID Control

MATLAB / Simulink


Debugging

JTAG / SWD

GDB

OpenOCD


Testing

CI/CD Flow

Unit Testing

Integration Testing

SiL / HiL Testing

Industry Standards & Certifications


Embedded AI

AI & ML Basics

TensorFlow

tinyML


Embedded Security

Cryptography

Secure Boot & Secure Firmware Update

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 roadmap can be improved in anyway or you know some good learning resources that can be added here, please start an issue or a 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.

About

A roadmap for those who want to build a career as an Embedded Systems Engineer, along with a bunch of learning resources

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published