mirror of
https://github.com/m3y54m/Embedded-Engineering-Roadmap.git
synced 2026-10-05 05:18:02 +03:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
af04df26b8 | ||
|
|
da1ca7233b | ||
|
|
7e84e77ba3 | ||
|
|
19ef9340e3 | ||
|
|
c4d20e4845 | ||
|
|
c069ace61d | ||
|
|
04429f60f4 | ||
|
|
e7eff402db | ||
|
|
c2ea2585c7 | ||
|
|
ffc094f1ce | ||
|
|
2c71dffe3e | ||
|
|
bbf7e9e1db | ||
|
|
b290eb068b | ||
|
|
a614ca5455 | ||
|
|
7897f021e2 | ||
|
|
fddf1a0b4a | ||
|
|
303cb479ab | ||
|
|
127be1e92d | ||
|
|
d3be928502 | ||
|
|
bc37c8f0ab | ||
|
|
c443bab698 | ||
|
|
99ad98a2ee |
Binary file not shown.
@@ -6,11 +6,28 @@ Becoming an embedded engineer requires a broad understanding of both software an
|
||||
|
||||
## What is an Embedded System?
|
||||
|
||||
[Making Embedded Systems](https://www.oreilly.com/library/view/making-embedded-systems/9781449308889/): An embedded system is a **computerized system** that is **purpose built for its application**.
|
||||
[ISO/IEC/IEEE 24765 Standard:](https://www.iso.org/obp/ui/en/#iso:std:iso-iec-ieee:24765:ed-2:v1:en)
|
||||
|
||||
[Analog Devices](https://www.analog.com/en/design-center/glossary/embedded-system.html): 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.
|
||||
> **computer system** that is **part of a larger system** and **performs some of the requirements of that system**. For example, a computer system
|
||||
used in an aircraft or rapid transit system.
|
||||
>
|
||||
> The hardware and software of an embedded system are usually minimized and optimized for specific functions. The embedded system includes at least one microcontroller, microprocessor or digital signal processor. The embedded system designed to optimize reliability, cost, size and power saving for applications.
|
||||
|
||||
[Embedded Systems Glossary](https://barrgroup.com/embedded-systems/glossary-e): 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.
|
||||
["Making Embedded Systems" Book:](https://www.oreilly.com/library/view/making-embedded-systems/9781449308889/)
|
||||
|
||||
> An embedded system is a **computerized system** that is **purpose built for its application**.
|
||||
|
||||
[Analog Devices Glossary:](https://www.analog.com/en/design-center/glossary/embedded-system.html)
|
||||
|
||||
> 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:](https://barrgroup.com/embedded-systems/glossary-e)
|
||||
|
||||
> 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
|
||||
|
||||
@@ -82,6 +99,7 @@ Additionally, the [Arduino Core](https://github.com/arduino/ArduinoCore-API) tak
|
||||
- [Electronics Tutorials](https://www.electronics-tutorials.ws)
|
||||
- [SparkFun Learn: Learn at SparkFun Electronics](https://learn.sparkfun.com/)
|
||||
- [Adafruit Learning System](https://learn.adafruit.com/)
|
||||
- [STM32 World](https://stm32world.com)
|
||||
- [Random Nerd Tutorials | Learn ESP32, ESP8266, Arduino, and Raspberry Pi](https://randomnerdtutorials.com/)
|
||||
- [ControllersTech](https://controllerstech.com/)
|
||||
|
||||
@@ -90,17 +108,15 @@ Additionally, the [Arduino Core](https://github.com/arduino/ArduinoCore-API) tak
|
||||
- [STM32 Firmware - Phil’s Lab (YouTube Playlist)](https://youtube.com/playlist?list=PLXSyc11qLa1a4Tqbz228dPZfMrs-KRpzA)
|
||||
- [Udemy – STM32 : Internet Of Things with 4G LTE Modem - Hardware](https://www.udemy.com/course/stm32-internet-of-things-with-4g-lte-modem-hardware/)
|
||||
|
||||
#### 😈 Hardware Hacking
|
||||
|
||||
- [Hardware Hacking Tutorial (YouTube Playlist)](https://www.youtube.com/playlist?list=PLoFdAHrZtKkhcd9k8ZcR4th8Q8PNOx7iU)
|
||||
- [The Hardware Hacking Handbook: Breaking Embedded Security with Hardware Attacks - Jasper van Woudenberg, Colin O'Flynn](https://a.co/d/gUIytFX)
|
||||
|
||||
|
||||
#### 🗺️ Other Helpful Roadmaps
|
||||
|
||||
- [Embedded Systems Skill Tree](https://github.com/sjpiper145/MakerSkillTree/tree/main/Embedded%20Systems%20Skill%20Tree)
|
||||
- [PCB Design Skill Tree](https://github.com/sjpiper145/MakerSkillTree/tree/main/PCB%20Design%20Skill%20Tree)
|
||||
|
||||
#### ❓ Ask Questions
|
||||
|
||||
- [Electrical Engineering Stack Exchange](https://electronics.stackexchange.com/)
|
||||
|
||||
_________________
|
||||
|
||||
**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.
|
||||
@@ -278,6 +294,8 @@ _________________
|
||||
- [C Programming for Beginners | Full Course](https://www.youtube.com/watch?v=ssJY5MDLjlo)
|
||||
- [C Programming Tutorials (YouTube Playlist)](https://www.youtube.com/playlist?list=PLA1FTfKBAEX4hblYoH6mnq0zsie2w6Wif)
|
||||
- [💎 The C Programming Language - Brian W. Kernighan, Dennis M. Ritchie ](https://www.amazon.com/dp/0131103628?ref_=cm_sw_r_cp_ud_dp_KRZ8M1WTXWVG0HMSRBXA)
|
||||
- [newlib C Library Documentation](https://sourceware.org/newlib/docs.html)
|
||||
- [The GNU C Library (glibc)](https://www.gnu.org/software/libc/documentation.html)
|
||||
- [C How to Program - Paul Deitel, Harvey Deitel ](https://deitel.com/c-how-to-program-9-e/)
|
||||
- [Effective C - An Introduction to Professional C Programming - Robert C. Seacord](https://nostarch.com/Effective_C)
|
||||
|
||||
@@ -314,6 +332,8 @@ _________________
|
||||
#### GCC & Make
|
||||
|
||||
- [GCC and Make - Compiling, Linking and Building C/C++ Applications](https://www3.ntu.edu.sg/home/ehchua/programming/cpp/gcc_make.html)
|
||||
- [Building STM32 projects from scratch with cross platform tools like Make, CMake and arm-gcc compiler toolchain (YouTube Playlist)](https://www.youtube.com/playlist?list=PLEg2mgYz66IOcHRvvUDf9O1ZCGy58M1Bt)
|
||||
- [Bare Metal - From zero to blink](https://www.linuxembedded.fr/2021/02/bare-metal-from-zero-to-blink)
|
||||
- [Computer Systems: A Programmer's Perspective - Randal E. Bryant, David R. O'Hallaron | ➡️ Chapter 7: Linking](http://csapp.cs.cmu.edu/3e/home.html)
|
||||
|
||||
#### CMake
|
||||
@@ -353,6 +373,7 @@ _________________
|
||||
- [How to Read a Microcontroller Datasheet: Introduction and First Steps](https://www.allaboutcircuits.com/technical-articles/how-to-read-a-microcontroller-datasheet-introduction-and-first-steps2/)
|
||||
- [💎 Make: AVR Programming - Elliot Williams](https://www.oreilly.com/library/view/make-avr-programming/9781449356484/)
|
||||
- [💎 Mastering STM32 - Carmine Noviello](https://leanpub.com/mastering-stm32-2nd)
|
||||
- [Getting started with STM32: STM32 step-by-step](https://wiki.st.com/stm32mcu/wiki/Category:Getting_started_with_STM32_:_STM32_step_by_step)
|
||||
- [Getting Started With AVR (YouTube Playlist)](https://www.youtube.com/playlist?list=PLtQdQmNK_0DRhBWYZ32BEILOykXLpJ8tP)
|
||||
- [Fundamentals of Microcontrollers - Arduino bare-metal breakdown (YouTube Playlist)](https://www.youtube.com/playlist?list=PLNyfXcjhOAwOF-7S-ZoW2wuQ6Y-4hfjMR)
|
||||
- [Getting Started with STM32 and Nucleo (YouTube Playlist)](https://youtube.com/playlist?list=PLEBQazB0HUyRYuzfi4clXsKUSgorErmBv)
|
||||
@@ -363,6 +384,7 @@ _________________
|
||||
- [Udemy – Embedded Systems STM32 Low-Layer APIs(LL) Driver Development](https://www.udemy.com/course/embedded-systems-stm32-low-level-ll-driver-development/)
|
||||
- [Udemy – Embedded Systems STM32 HAL APIs Driver Development](https://www.udemy.com/course/embedded-systems-stm32-hal-apis-driver-development/)
|
||||
- [Embedded System Design with ARM Cortex-M Microcontrollers: Applications with C, C++ and MicroPython - Cem Ünsalan, Hüseyin Deniz Gürhan, Mehmet Erkin Yücel](https://link.springer.com/book/10.1007/978-3-030-88439-0)
|
||||
- [Embedded Systems Design using the MSP430FR2355 LaunchPad - Brock J. LaMeres](https://link.springer.com/book/10.1007/978-3-030-40574-8)
|
||||
- [Awesome Embedded: A curated list of awesome embedded programming](https://github.com/nhivp/Awesome-Embedded)
|
||||
|
||||
#### GPIO
|
||||
@@ -470,7 +492,7 @@ _________________
|
||||
|
||||
### Interfaces, Protocols & Communication Technologies
|
||||
|
||||
#### Basic
|
||||
#### Basic Protocols
|
||||
|
||||
- [Understanding Serial Protocols](https://www.youtube.com/watch?v=LEz5UCN3aHA)
|
||||
- [PROTOCOLS: UART - I2C - SPI - Serial communications #001](https://www.youtube.com/watch?v=IyGwvGzrqp8)
|
||||
@@ -511,28 +533,37 @@ _________________
|
||||
- [1-Wire® Technology Overview](https://www.youtube.com/watch?v=CjH-OztKe00)
|
||||
|
||||
|
||||
#### Audio
|
||||
#### Audio Protocols
|
||||
|
||||
##### I2S
|
||||
|
||||
- [Building a Digital Music Player with I2S?! What is I2S! EB#45](https://www.youtube.com/watch?v=qNLvoSQCx60)
|
||||
|
||||
#### Image & Video
|
||||
#### Image & Video Protocols
|
||||
|
||||
##### CSI-2
|
||||
|
||||
- [MIPI Camera Serial Interface 2](https://www.mipi.org/specifications/csi-2)
|
||||
- [Tutorial: MIPI CSI-2](https://www.youtube.com/watch?v=8REu_h7bzHM)
|
||||
|
||||
#### Wireless
|
||||
##### HDMI
|
||||
|
||||
- [TI Precision Labs - Video Interface: What are HDMI & Dual-Mode DisplayPort?](https://www.youtube.com/watch?v=jCO7Up1rzJc)
|
||||
- [HDMI 2.1 & TMDS Crash Course - ENMU EET 457 - Presentation](https://www.youtube.com/watch?v=5acgSK0kWTE)
|
||||
|
||||
#### Wireless Protocols
|
||||
|
||||
##### Bluetooth / BLE
|
||||
|
||||
- [Bluetooth Basics](https://learn.sparkfun.com/tutorials/bluetooth-basics/all)
|
||||
- [SparkFun According to Pete #49 - How Bluetooth Works](https://www.youtube.com/watch?v=zJqGLWQGyvk)
|
||||
- [Bluetooth Low Energy Fundamentals - Nordic Semiconductor](https://academy.nordicsemi.com/courses/bluetooth-low-energy-fundamentals/)
|
||||
- [Bluetooth Overview - ESP-IDF Programming Guide](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/bluetooth.html)
|
||||
|
||||
##### Wi-Fi
|
||||
|
||||
- [802.11 How WiFi Works - Wireless Networks | Computer Networks Ep. 7.3 | Kurose & Ross](https://www.youtube.com/watch?v=vvhEnr52UOU)
|
||||
- [802.11 Frame Analysis](https://www.youtube.com/watch?v=ITAJb3v5VKQ)
|
||||
- [Wi-Fi Driver - ESP-IDF Programming Guide](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/wifi.html)
|
||||
- [ESP32 Set an Access Point (AP) using ESP-IDF](https://esp32tutorials.com/esp32-access-point-ap-esp-idf/)
|
||||
- [ESP32 ESP-IDF Connect with WiFi – Station Mode Example](https://esp32tutorials.com/esp32-esp-idf-connect-wifi-station-mode-example/)
|
||||
@@ -552,7 +583,7 @@ _________________
|
||||
|
||||
- [What is Matter? Unifying IoT Devices for the Smart Home | Digi-Key Electronics](https://youtu.be/vJIEfih9bl0)
|
||||
|
||||
#### Industrial
|
||||
#### Industrial Protocols
|
||||
|
||||
##### Modbus
|
||||
|
||||
@@ -572,7 +603,7 @@ _________________
|
||||
- [Simple ESP32 IoT Sensor Node Tutorial: WiFi Enabled MQTT Sensor Data Node](https://www.youtube.com/watch?v=x5A5S0hoyJ0)
|
||||
- [Cellular IoT Fundamentals - Nordic Semiconductor](https://academy.nordicsemi.com/courses/cellular-iot-fundamentals/)
|
||||
|
||||
#### High-Speed
|
||||
#### High-Speed Protocols
|
||||
|
||||
##### Ethernet
|
||||
|
||||
@@ -594,7 +625,7 @@ _________________
|
||||
- [PCIe QuickLearn (YouTube Playlist)](https://www.youtube.com/playlist?list=PL9B4edd-p2ajuP4dBHcnhtHKoZKkoR1R4)
|
||||
- [PCIe Protocol (YouTube Playlist)](https://www.youtube.com/playlist?list=PLZe4P0P_9Cosd0i2ha_QRdWlR1iZ0yVG4)
|
||||
|
||||
#### Automotive
|
||||
#### Automotive Protocols
|
||||
|
||||
##### CAN
|
||||
|
||||
@@ -606,7 +637,7 @@ _________________
|
||||
- [J1939 Explained - A Simple Intro [v2.0 | 2021]](https://www.youtube.com/watch?v=vlqxu9ojbHg)
|
||||
- [Unified Diagnostic Services (UDS) Explained - A Simple Intro [2022]](https://www.youtube.com/watch?v=CV_B8tJgI5E)
|
||||
|
||||
#### Network
|
||||
#### Network Protocols
|
||||
|
||||
- [Networking Fundamentals - Practical Networking (YouTube Playlist)](https://www.youtube.com/playlist?list=PLIFyRwBY_4bRLmKfP1KnZA6rZbRHtxmXi)
|
||||
- [TCP vs UDP - Explaining Facts and Debunking Myths - TCP Masterclass](https://www.youtube.com/watch?v=jE_FcgpQ7Co)
|
||||
@@ -618,7 +649,7 @@ _________________
|
||||
- [lwIP (ESP-IDF)](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/lwip.html)
|
||||
- [Developing applications on STM32Cube with LwIP TCP/IP stack](https://www.st.com/resource/en/user_manual/um1713-developing-applications-on-stm32cube-with-lwip-tcpip-stack-stmicroelectronics.pdf)
|
||||
|
||||
#### Cellular
|
||||
#### Cellular Communication
|
||||
|
||||
##### GSM / LTE
|
||||
|
||||
@@ -696,10 +727,11 @@ _________________
|
||||
- [Introduction to Embedded Linux (YouTube Playlist)](https://youtube.com/playlist?list=PLEBQazB0HUyTpoJoZecRK6PpDG31Y7RPB)
|
||||
- [Mastering Embedded Linux Programming - Chris Simmonds](https://www.packtpub.com/product/mastering-embedded-linux-programming-third-edition/9781789530384)
|
||||
- [Linux From Scratch - step-by-step instructions for building your own custom Linux system](https://www.linuxfromscratch.org/)
|
||||
- [Automotive Grade Linux (AGL)](https://docs.automotivelinux.org/)
|
||||
|
||||
##### Linux Kernel
|
||||
|
||||
- [The Linux Kernel](https://tldp.org/LDP/tlk/)
|
||||
- [The Linux Kernel - David A Rusling](https://tldp.org/LDP/tlk/)
|
||||
- [💎 The Linux Programming Interface - Michael Kerrisk](https://man7.org/tlpi/)
|
||||
- [How Linux Works - Brian Ward](https://nostarch.com/howlinuxworks3)
|
||||
- [Practical System Programming with C: Pragmatic Example Applications in Linux and Unix-Based Operating Systems - Sri Manikanta Palakollu](https://link.springer.com/book/10.1007/978-1-4842-6321-1)
|
||||
@@ -756,6 +788,7 @@ _________________
|
||||
##### RTOS Basics
|
||||
|
||||
- [Bare-metal and RTOS Based Embedded Systems](https://microcontrollerslab.com/difference-bare-metal-and-rtos-based-embedded-systems/)
|
||||
- [RTOS vs. Bare Metal: Navigating Performance, Complexity, and Efficiency](https://weston-embedded.com/support/media-articles/119-rtos-vs-bare-metal-navigating-performance-complexity-and-efficiency)
|
||||
- [The Pros and Cons of RTOS vs Bare Metal: Which Will You Choose?](https://medium.com/@lanceharvieruntime/the-pros-and-cons-of-rtos-vs-bare-metal-which-will-you-choose-756e33ba6df7)
|
||||
- [FreeRTOS vs Linux for Embedded Systems](https://www.bytesnap.com/news-blog/freertos-vs-linux-embedded-systems/)
|
||||
- [Real-Time Systems Concepts](https://micrium.atlassian.net/wiki/spaces/osiidoc/pages/163855/Real-Time+Systems+Concepts)
|
||||
@@ -819,6 +852,7 @@ _________________
|
||||
|
||||
- [Azure RTOS - Making embedded IoT development and connectivity easy](https://azure.microsoft.com/en-us/services/rtos/)
|
||||
- [Microsoft Azure RTOS documentation](https://learn.microsoft.com/en-us/azure/rtos/)
|
||||
- [Azure RTOS ThreadX](https://github.com/azure-rtos/threadx)
|
||||
|
||||
_________________
|
||||
|
||||
@@ -871,11 +905,14 @@ _________________
|
||||
|
||||
#### GDB
|
||||
|
||||
- [GNU GDB Debugger Command Cheat Sheet](http://www.yolinux.com/TUTORIALS/GDB-Commands.html)
|
||||
- [gdbgui - A browser-based frontend to gdb (gnu debugger) ](https://www.gdbgui.com/)
|
||||
- [everyone needs to stop using print debugging (do THIS instead)](https://www.youtube.com/watch?v=3T3ZDquDDVg)
|
||||
- [GDB is REALLY easy! Find Bugs in Your Code with Only A Few Commands](https://www.youtube.com/watch?v=Dq8l1_-QgAc)
|
||||
|
||||
#### OpenOCD
|
||||
|
||||
- [OpenOCD - GitHub repository](https://github.com/openocd-org/openocd)
|
||||
- [This Is 100% How You Should Be Debugging | How to Use OpenOCD to Debug Embedded Software with GDB](https://www.youtube.com/watch?v=_1u7IOnivnM)
|
||||
|
||||
_________________
|
||||
@@ -932,7 +969,7 @@ _________________
|
||||
- [Introduction to Machine Learning for Coders!](https://course18.fast.ai/ml)
|
||||
- [Machine Learning Crash Course with TensorFlow APIs - Google](https://developers.google.com/machine-learning/crash-course/)
|
||||
|
||||
#### TensorFlow
|
||||
#### TensorFlow Lite
|
||||
|
||||
- [Getting Started with TensorFlow and Keras – Maker.io | Digi-Key Electronics](https://www.youtube.com/watch?v=HCG3hFe1KYY)
|
||||
- [Intro to TensorFlow Lite Part 1: Wake Word Feature Extraction – Maker.io | Digi-Key Electronics](https://www.youtube.com/watch?v=0fn7pj7Dutc)
|
||||
@@ -954,6 +991,8 @@ _________________
|
||||
|
||||
### Embedded Security
|
||||
|
||||
- [Embedded Systems Security and TrustZone](https://embeddedsecurity.io/)
|
||||
|
||||
#### Cryptography
|
||||
|
||||
- [Microchip University - Cryptography Primer](https://mu.microchip.com/cryptography-primer)
|
||||
@@ -963,7 +1002,7 @@ _________________
|
||||
- [Public and Private Keys - Signatures & Key Exchanges - Cryptography - Practical TLS](https://youtu.be/_zyKvPvh808)
|
||||
- [Understanding AES Encryption Mechanics: BMPS](https://youtu.be/OnhtzFJW_4I)
|
||||
- [💎 Understanding Cryptography: A Textbook for Students and Practitioners - Christof Paar, Jan Pelzl](https://link.springer.com/book/10.1007/978-3-642-04101-3)
|
||||
- [Cryptography and Network Security: Principles and Practice - William Stallings](https://www.pearson.com/en-us/subject-catalog/p/cryptography-and-network-security-principles-and-practice/P200000003477/9780135764213)
|
||||
- [💎 Handbook of Applied Cryptography - Alfred J. Menezes, Paul C. van Oorschot, Scott A. Vanstone](https://cacr.uwaterloo.ca/hac/)
|
||||
- [Serious Cryptography: A Practical Introduction to Modern Encryption - Jean-Philippe Aumasson](https://nostarch.com/seriouscrypto)
|
||||
- [MOOC - Security Part2: Basics of cryptography (YouTube Playlist)](https://youtube.com/playlist?list=PLnMKNibPkDnFSFh57UFTZLpy-7lZiwTHh)
|
||||
- [MOOC - Security Part3 : STM32 security features (YouTube Playlist)](https://youtube.com/playlist?list=PLnMKNibPkDnFzux3PHKUEi14ftDn9Cbm7)
|
||||
@@ -984,6 +1023,11 @@ _________________
|
||||
- [Introduction to Embedded Linux Security - part 1](https://sergioprado.blog/introduction-embedded-linux-security-part-1/)
|
||||
- [Introduction to Embedded Linux Security - part 2](https://sergioprado.blog/introduction-embedded-linux-security-part-2/)
|
||||
|
||||
#### Hardware Hacking
|
||||
|
||||
- [Hardware Hacking Tutorial (YouTube Playlist)](https://www.youtube.com/playlist?list=PLoFdAHrZtKkhcd9k8ZcR4th8Q8PNOx7iU)
|
||||
- [💎 The Hardware Hacking Handbook: Breaking Embedded Security with Hardware Attacks - Jasper van Woudenberg, Colin O'Flynn](https://a.co/d/gUIytFX)
|
||||
|
||||
## History
|
||||
|
||||
The idea of creating this roadmap came from [vazeri / Embedded-Engineering-RoadMap-2018](https://github.com/vazeri/Embedded-Engineering-RoadMap-2018) which was well designed but had some flaws and not updated for years.
|
||||
|
||||
Reference in New Issue
Block a user