mirror of
https://github.com/m3y54m/Embedded-Engineering-Roadmap.git
synced 2026-10-04 21:07:58 +03:00
Compare commits
42
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ecf6afad3a | ||
|
|
c50c0579b1 | ||
|
|
c2dbf403e5 | ||
|
|
cf4c1f4384 | ||
|
|
4a1dfa5058 | ||
|
|
65ba823ff1 | ||
|
|
2e6c8bd366 | ||
|
|
c5bc921acf | ||
|
|
639a5f9087 | ||
|
|
2c7a23f7c0 | ||
|
|
087f30af52 | ||
|
|
1b9968e8cc | ||
|
|
7e9e42965b | ||
|
|
21d63623ff | ||
|
|
6bb25ba5c3 | ||
|
|
9ab7761c89 | ||
|
|
6f7e998db6 | ||
|
|
3227c98762 | ||
|
|
2d6523dd8f | ||
|
|
9b45029902 | ||
|
|
812195e7c5 | ||
|
|
7aa5ee7c9f | ||
|
|
efe86eb64e | ||
|
|
d9347c07cd | ||
|
|
2913f8d0c4 | ||
|
|
4f93d73ba7 | ||
|
|
fa48729090 | ||
|
|
a8ea3d037a | ||
|
|
c2337f54d4 | ||
|
|
4a52aab313 | ||
|
|
f5dee15b72 | ||
|
|
71cac1f090 | ||
|
|
aa1d88863c | ||
|
|
1f8ef79660 | ||
|
|
0bd7a541ec | ||
|
|
52a103d493 | ||
|
|
d4e11f4952 | ||
|
|
3b7fb11dbc | ||
|
|
70467be709 | ||
|
|
7c89a8d994 | ||
|
|
a974623490 | ||
|
|
02d3600506 |
Binary file not shown.
@@ -12,34 +12,57 @@ Becoming an embedded engineer requires a broad understanding of both software an
|
||||
|
||||
### ⭐️ Featured Material
|
||||
|
||||
#### Google
|
||||
#### 🔎 Google
|
||||
|
||||
- [Searching is Your Super Power!](https://www.google.com)
|
||||
|
||||
#### Courses and Youtube Channels
|
||||
#### 🎥 Courses and Youtube Channels
|
||||
|
||||
- [Fastbit Embedded Brain Academy](https://fastbitlab.com/)
|
||||
- [DigiKey YouTube Channel](https://www.youtube.com/@digikey)
|
||||
- [Ben Eater YouTube Channel](https://www.youtube.com/@BenEater)
|
||||
- [Phil’s Lab YouTube Channel](https://www.youtube.com/@PhilsLab)
|
||||
- [Quantum Leaps, LLC (YouTube Channel)](https://www.youtube.com/@StateMachineCOM)
|
||||
- [DigiKey (YouTube Channel](https://www.youtube.com/@digikey)
|
||||
- [element14 presents (YouTube Channel)](https://www.youtube.com/@element14presents)
|
||||
- [Ben Eater (YouTube Channel)](https://www.youtube.com/@BenEater)
|
||||
- [Phil’s Lab (YouTube Channel)](https://www.youtube.com/@PhilsLab)
|
||||
|
||||
#### Simulation
|
||||
#### 📚 Books
|
||||
|
||||
- [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)
|
||||
- [A Hands-On Guide to Designing Embedded Systems - Adam Taylor, Dan Binnun, Saket Srivastava](https://www.amazon.com/Hands-Guide-Designing-Embedded-Systems/dp/1630816833)
|
||||
|
||||
#### 🤡 Simulation
|
||||
|
||||
- [Wokwi - Online ESP32, STM32, Arduino Simulator](https://wokwi.com/)
|
||||
- [QEMU](https://www.qemu.org/)
|
||||
|
||||
#### Arduino
|
||||
#### 🕹️ Arduino
|
||||
|
||||
- [Arduino Language Reference](https://www.arduino.cc/reference/en/)
|
||||
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.
|
||||
|
||||
#### STM32
|
||||
- [Getting Started with Arduino](https://docs.arduino.cc/learn/starting-guide/getting-started-arduino)
|
||||
- [New Arduino Tutorials](https://youtube.com/playlist?list=PLGs0VKk2DiYw-L-RibttcvK-WBZm8WLEP)
|
||||
- [Arduino in a commercial product?](https://www.youtube.com/watch?v=c5LzsqeSCAc)
|
||||
- [Arduino Project to Product](https://www.youtube.com/playlist?list=PLEBQazB0HUyQd6Fsf5NQ75M9llbi1_j_8)
|
||||
|
||||
- [Getting Started with STM32 and Nucleo](https://youtube.com/playlist?list=PLEBQazB0HUyRYuzfi4clXsKUSgorErmBv)
|
||||
#### 🐜 PlatformIO
|
||||
|
||||
#### Educational Websites
|
||||
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 - A professional collaborative platform for embedded development](https://platformio.org/)
|
||||
|
||||
#### 👨🏫 Educational Websites
|
||||
|
||||
- [DeepBlueMbedded](https://deepbluembedded.com/)
|
||||
- [Microchip University](https://mu.microchip.com/)
|
||||
- [SparkFun Learn: Learn at SparkFun Electronics](https://learn.sparkfun.com/)
|
||||
- [Adafruit Learning System](https://learn.adafruit.com/)
|
||||
- [Random Nerd Tutorials | Learn ESP32, ESP8266, Arduino, and Raspberry Pi](https://randomnerdtutorials.com/)
|
||||
- [ControllersTech](https://controllerstech.com/)
|
||||
|
||||
#### ⚒️ Projects
|
||||
|
||||
- [STM32 Firmware](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/)
|
||||
|
||||
> **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.
|
||||
@@ -56,23 +79,26 @@ Becoming an embedded engineer requires a broad understanding of both software an
|
||||
- [Calculus - Robert T Smith, Roland Minton](https://www.mheducation.com/highered/product/calculus-smith-minton/M9780073383118.html)
|
||||
|
||||
#### Electrical Circuits Basics
|
||||
#### Electronic Components
|
||||
|
||||
- [#1099 How I learned electronics](https://youtu.be/Bgrubw6B_us)
|
||||
- [Lessons in Electric Circuits](https://www.allaboutcircuits.com/textbook/)
|
||||
- [Fundamentals of Electric Circuits - Charles K. Alexander, Matthew Sadiku](https://www.amazon.com/dp/1260226409?ref_=cm_sw_r_cp_ud_dp_Q11YHXNY2BK530RQZC4S)
|
||||
- [Grob’s Basic Electronics - Mitchel E. Schultz](https://a.co/d/g1g73HV)
|
||||
- [Make: Electronics: Learning by Discovery - Charles Platt](https://a.co/d/fbRoM1R)
|
||||
- [Encyclopedia of Electronic Components - Charles Platt](https://a.co/d/83cSiU7)
|
||||
- [The Art of Electronics - Paul Horowitz, Winfield Hill](https://artofelectronics.net/)
|
||||
|
||||
#### Electronic Components
|
||||
|
||||
- [Encyclopedia of Electronic Components - Charles Platt](https://a.co/d/83cSiU7)
|
||||
|
||||
#### Digital Circuits & Logic Design
|
||||
|
||||
- [Digital Design - Morris Mano](https://www.portcity.edu.bd/files/636444791235373856_Digitallogicdesign.pdf)
|
||||
|
||||
#### Computer Architecture
|
||||
|
||||
- [Build an 8-bit computer from scratch](https://eater.net/8bit/)
|
||||
- [Computer Organization and Design: ARM Edition - David A. Patterson, John L. Hennessy](https://github.com/AbderrhmanAbdellatif/ComputerOrganization/blob/master/%5BThe%20Morgan%20Kaufmann%20Series%20in%20Computer%20Architecture%20and%20Design%5D%20David%20A.%20Patterson%2C%20John%20L.%20Hennessy%20-%20Computer%20Organization%20and%20Design_%20The%20Hardware%20Software%20Interface_%20ARM%20Edition%20(2016%2C%20Morgan%20Kaufmann).pdf)
|
||||
- [Digital Design and Computer Architecture: ARM Edition - Sarah Harris, David Harris](https://a.co/d/4otoVvI)
|
||||
- [Digital Design - Morris Mano](https://www.portcity.edu.bd/files/636444791235373856_Digitallogicdesign.pdf)
|
||||
- [Embedded Systems Architecture - Tammy Noergaard](https://www.oreilly.com/library/view/embedded-systems-architecture/9780123821966/)
|
||||
|
||||
### Using Test Equipment
|
||||
@@ -94,13 +120,25 @@ Becoming an embedded engineer requires a broad understanding of both software an
|
||||
|
||||
### Prototyping Skills
|
||||
|
||||
#### Using Breadboards
|
||||
|
||||
- [Everything You Need to Know about Breadboards](https://www.youtube.com/watch?v=mE33WpRWrXs)
|
||||
- [How to Use a Breadboard](https://youtu.be/6WReFkfrUIk)
|
||||
|
||||
#### Hardware Design Basics
|
||||
|
||||
- [Electronic Circuit Design - IFE - TU Graz](https://www.youtube.com/playlist?list=PLLpZ1DoEuR9tbV8r8bMSI94znm6pRB905)
|
||||
- [Hardware Design - Phil’s Lab](https://www.youtube.com/playlist?list=PLXSyc11qLa1YhVCZ5xWPuPsE5MkgEy5TF)
|
||||
- [Microcontroller-Based Hardware Design With Altium Designer](https://www.youtube.com/playlist?list=PL3aaAq2OJU5HcbClqrOhqBDozF7HmxV-s)
|
||||
|
||||
#### PCB Design
|
||||
|
||||
- [Create PCBs for Rapid Prototyping](https://www.youtube.com/playlist?list=PLEBQazB0HUyRVK1RpHIjyjuTxn5srz6XM)
|
||||
- [How to Make a Raspberry Pi Compute Module 4 Carrier Board](https://www.youtube.com/playlist?list=PLEBQazB0HUyRwjr761b-MLNEu8FA8WKSG)
|
||||
- [How To Learn PCB Design (My Thoughts, Journey, and Resources) - Phil's Lab #87](https://youtu.be/aODkA2mrimQ)
|
||||
- [KiCad 6 STM32 PCB Design Full Tutorial - Phil's Lab #65](https://youtu.be/aVUqaB0IMh4)
|
||||
- [Intro to KiCad](https://www.youtube.com/watch?v=vaCVh2SAZY4&list=PLEBQazB0HUyR24ckSZ5u05TZHV9khgA1O)
|
||||
- [Altium Academy YouTube Channel](https://www.youtube.com/@AltiumAcademy)
|
||||
- [Microcontroller-Based Hardware Design With Altium Designer](https://www.youtube.com/playlist?list=PL3aaAq2OJU5HcbClqrOhqBDozF7HmxV-s)
|
||||
- [Robert Feranec YouTube Channel](https://www.youtube.com/@RobertFeranec)
|
||||
- [PCB Design for EMI & SI - Phil's Lab #64](https://www.youtube.com/watch?v=VtzPL8wQ8-E)
|
||||
- [PCB Design for Advanced Users](https://youtube.com/playlist?list=PL3aaAq2OJU5EWfYT_Z93tc9pBF_Sidba_)
|
||||
@@ -114,19 +152,23 @@ Becoming an embedded engineer requires a broad understanding of both software an
|
||||
- [How to Solder QFN MLF Package by Hand (Using a Hot Air Rework Station) | Digi-Key Electronics](https://youtu.be/X3Rc1s6EpSI)
|
||||
- [From Solderless Breadboard to Soldered Circuit - Electronics with Becky Stern | Digi-Key Electronics](https://www.youtube.com/watch?v=F9Krq7seV1g)
|
||||
|
||||
#### Using Breadboards
|
||||
|
||||
- [Everything You Need to Know about Breadboards](https://www.youtube.com/watch?v=mE33WpRWrXs)
|
||||
- [How to Use a Breadboard](https://youtu.be/6WReFkfrUIk)
|
||||
|
||||
### FPGA Design
|
||||
|
||||
- [Introduction to FPGA](https://youtube.com/playlist?list=PLEBQazB0HUyT1WmMONxRZn9NmQ_9CIKhb)
|
||||
- [FPGA Fundamentals](https://nandland.com/fpga-101/)
|
||||
- [FPGA Embedded Design, Part 1 - Verilog](https://www.udemy.com/course/fpga-embedded-design-verilog/)
|
||||
- [FPGA Embedded Design, Part 2 - Basic FPGA Training](https://www.udemy.com/course/fpga-embedded-design-fpgas/)
|
||||
- [FPGA Embedded Design, Part 3 - EDA Tools](https://www.udemy.com/course/fpga-embedded-design-eda-tools/)
|
||||
- [FPGA Embedded Design, Part 4 - Microprocessor Design](https://www.udemy.com/course/fpga-embedded-design-cpu/)
|
||||
- [Udemy – FPGA Embedded Design, Part 1 - Verilog](https://www.udemy.com/course/fpga-embedded-design-verilog/)
|
||||
- [Udemy – FPGA Embedded Design, Part 2 - Basic FPGA Training](https://www.udemy.com/course/fpga-embedded-design-fpgas/)
|
||||
- [Udemy – FPGA Embedded Design, Part 3 - EDA Tools](https://www.udemy.com/course/fpga-embedded-design-eda-tools/)
|
||||
- [Udemy – FPGA Embedded Design, Part 4 - Microprocessor Design](https://www.udemy.com/course/fpga-embedded-design-cpu/)
|
||||
|
||||
### Software Development Life Cycle (SDLC) Models
|
||||
|
||||
- [What is the software development life cycle?](https://www.coderus.com/the-software-development-lifecycle/)
|
||||
- [Embedded Product Development Life Cycle: Four Main Steps](https://www.sam-solutions.com/blog/embedded-product-development-life-cycle/)
|
||||
- [Does agile work with embedded software?](https://www.embedded.com/does-agile-work-with-embedded-software/)
|
||||
- [Scrum for embedded software: Good – but for reasons other than what your manager thinks](https://www.elektrobit.com/trends/scrum-for-embedded-software/)
|
||||
- [What Is Scrum: A Guide to the Most Popular Agile Framework](https://www.scrumalliance.org/about-scrum)
|
||||
- [What Is the V-Model in Software Development?](https://builtin.com/software-engineering-perspectives/v-model)
|
||||
|
||||
### Programming Fundamentals
|
||||
|
||||
@@ -134,29 +176,33 @@ Becoming an embedded engineer requires a broad understanding of both software an
|
||||
|
||||
- [Grokking Algorithms - Aditya Y. Bhargava ](https://www.manning.com/books/grokking-algorithms)
|
||||
- [Introduction to Algorithms - Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein](http://mitpress.mit.edu/9780262367509/introduction-to-algorithms/)
|
||||
- [Udemy – Embedded Systems State Machines & Data Structures](https://www.udemy.com/course/embedded-systems-state-machines-data-structures-like-a-pro/)
|
||||
- [Data Structures in C](https://www.sanfoundry.com/c-programming-examples-data-structures/)
|
||||
- [Data Structures - Full Course Using C and C++](https://www.youtube.com/watch?v=B31LgI4Y4DQ)
|
||||
|
||||
#### Design Patterns
|
||||
|
||||
- [Embedded Systems State Machines & Data Structures](https://www.udemy.com/course/embedded-systems-state-machines-data-structures-like-a-pro/)
|
||||
- [Design Patterns for Embedded Systems in C - Bruce Powel Douglass](https://www.oreilly.com/library/view/design-patterns-for/9781856177078/)
|
||||
|
||||
#### State Machines / UML
|
||||
|
||||
- [State Machines](https://www.youtube.com/playlist?list=PLPW8O6W-1chxym7TgIPV9k5E8YJtSBToI)
|
||||
- [Event-Driven Programming](https://www.youtube.com/playlist?list=PLPW8O6W-1chx8Y7Oq2gOE0NUPXmQxu2Wr)
|
||||
- [Embedded System Design using UML State Machines](https://www.udemy.com/course/embedded-system-design-using-uml-state-machines/)
|
||||
|
||||
#### Memory Allocation
|
||||
#### Memory Management
|
||||
|
||||
- [Understanding the C runtime memory model](https://www.youtube.com/watch?v=3F3lp_F2YpQ)
|
||||
- [Dynamic Memory Allocation | C Programming Tutorial](https://www.youtube.com/watch?v=R0qIYWo8igs)
|
||||
- [What is Memory Leak in C/C++? How can we avoid?](https://aticleworld.com/what-is-memory-leak-in-c-c-how-can-we-avoid/)
|
||||
|
||||
### Programming Languages
|
||||
|
||||
#### C
|
||||
|
||||
- [W3Schools C Tutorial](https://www.w3schools.com/c/index.php)
|
||||
- [Microcontroller Embedded C Programming: Absolute Beginners](https://www.udemy.com/course/microcontroller-embedded-c-programming/)
|
||||
- [C Programming for Beginners | Full Course](https://www.youtube.com/watch?v=ssJY5MDLjlo)
|
||||
- [C Programming Tutorials](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)
|
||||
- [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)
|
||||
@@ -165,10 +211,10 @@ Becoming an embedded engineer requires a broad understanding of both software an
|
||||
|
||||
- [C++ Tutorial for Beginners - Full Course](https://www.youtube.com/watch?v=vLnPwxZdW4Y)
|
||||
- [C++ YouTube Playlist by The Cherno](https://youtube.com/playlist?list=PLlrATfBNZ98dudnM48yfGUldqGD0S4FFb)
|
||||
- [C++ Concurrency in Action - Anthony Williams ](https://www.manning.com/books/c-plus-plus-concurrency-in-action)
|
||||
|
||||
#### Assembly
|
||||
|
||||
- [Udemy – ARM GNU Assembly Programming From Ground Up](https://www.udemy.com/course/arm-gnu-assembly-programming-from-ground-uptm/)
|
||||
- [Assembly Language Programming with ARM – Full Tutorial for Beginners](https://www.youtube.com/watch?v=gfmRrPjnEw4)
|
||||
|
||||
#### Python
|
||||
@@ -181,11 +227,12 @@ Becoming an embedded engineer requires a broad understanding of both software an
|
||||
#### Rust
|
||||
|
||||
- [The Embedded Rust Book](https://docs.rust-embedded.org/book/)
|
||||
- [Community Rust support projects for STM32 microcontrollers](https://github.com/stm32-rs)
|
||||
- [Rust on ESP Community](https://github.com/esp-rs)
|
||||
|
||||
### Build System
|
||||
|
||||
#### GCC
|
||||
#### Makefile
|
||||
#### GCC & Make
|
||||
|
||||
- [GCC and Make - Compiling, Linking and Building C/C++ Applications](https://www3.ntu.edu.sg/home/ehchua/programming/cpp/gcc_make.html)
|
||||
|
||||
@@ -193,7 +240,7 @@ Becoming an embedded engineer requires a broad understanding of both software an
|
||||
|
||||
- [How to CMake Good](https://youtube.com/playlist?list=PLK6MXr8gasrGmIiSuVQXpfFuE1uPT615s)
|
||||
|
||||
#### Bash Script
|
||||
#### Bash Scripting
|
||||
|
||||
- [Bash scripting cheatsheet](https://devhints.io/bash)
|
||||
- [Bash Scripting Tutorial for Beginners](https://www.youtube.com/watch?v=tK9Oc6AEnR4)
|
||||
@@ -209,53 +256,149 @@ Becoming an embedded engineer requires a broad understanding of both software an
|
||||
- [Git Tutorial for Beginners: Learn Git in 1 Hour](https://www.youtube.com/watch?v=8JJ101D3knE)
|
||||
- [Git for Professionals Tutorial - Tools & Concepts for Mastering Version Control with Git](https://www.youtube.com/watch?v=Uszj_k0DGsg)
|
||||
|
||||
#### SVN (Subversion)
|
||||
|
||||
- [Apache® Subversion®](https://subversion.apache.org/)
|
||||
|
||||
### Microcontrollers
|
||||
|
||||
- [Mastering STM32](https://leanpub.com/mastering-stm32)
|
||||
- [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 and Nucleo](https://youtube.com/playlist?list=PLEBQazB0HUyRYuzfi4clXsKUSgorErmBv)
|
||||
- [Beginning STM32: Developing with FreeRTOS, libopencm3 and GCC - Warren Gay](https://link.springer.com/book/10.1007/978-1-4842-3624-6)
|
||||
- [Intro to Raspberry Pi Pico and RP2040](https://www.youtube.com/playlist?list=PLEBQazB0HUyQO6rJxKr2umPCgmfAU-cqR)
|
||||
- [Udemy – Microcontroller Embedded C Programming: Absolute Beginners](https://www.udemy.com/course/microcontroller-embedded-c-programming/)
|
||||
- [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/)
|
||||
|
||||
#### GPIO
|
||||
|
||||
- [Tutorial 5: Peripheral 1 - General purpose Input Output (GPIO) Configuration in STM32](https://youtu.be/tjDhmavBGf0)
|
||||
|
||||
#### ADC
|
||||
|
||||
- [How Do ADCs Work? - The Learning Circuit](https://www.youtube.com/watch?v=g4BvbAKNQ90)
|
||||
- [Tutorial 13: ADC in STM32F4](https://youtu.be/vIlG_i3GqeU)
|
||||
- [Tutorial 14: ADC by Polling](https://www.youtube.com/watch?v=uUi6JyUuEJA)
|
||||
|
||||
#### DAC
|
||||
|
||||
- [How Do DACs Work? - The Learning Circuit](https://www.youtube.com/watch?v=YAxrmoVtEtE)
|
||||
- [DAC in STM32 || Sine wave || HAL || CubeIDE](https://www.youtube.com/watch?v=6Z1L6ox63j0)
|
||||
|
||||
#### Timers
|
||||
|
||||
- [STM32 TIMERS](https://www.youtube.com/playlist?list=PLfIJKC1ud8gjLZBzjE3kKBMDEH_lUc428)
|
||||
|
||||
#### PWM
|
||||
|
||||
- [What is PWM?](https://www.youtube.com/watch?v=B_Ysdv1xRbA)
|
||||
- [STM32 Guide #3: PWM + Timers](https://www.youtube.com/watch?v=AjN58ceQaF4)
|
||||
|
||||
#### Interrupts
|
||||
|
||||
- [Polling/Interrupt/DMA differences explained easily](https://www.youtube.com/watch?v=LNPBr3WvuNg)
|
||||
- [Level Up Your Arduino Code: External Interrupts](https://www.youtube.com/watch?v=J61_PKyWjxU)
|
||||
- [Tutorial 10: Peripheral 2 - Nested Vector Interrupt controller (NVIC) in STM32](https://www.youtube.com/watch?v=qwebM-YaSU4)
|
||||
- [Tutorial 11: LAB - External Interrupt ( EXTI ) Interfacing in STM32 using STM32CUBEMX](https://www.youtube.com/watch?v=oJc0seuBbzI)
|
||||
- [Tutorial 12: Interrupt Priorities in STM32](https://www.youtube.com/watch?v=aXLJD4qJmtk)
|
||||
|
||||
#### Watchdog
|
||||
|
||||
- [The Watchdog Timer on Arduino](https://www.youtube.com/watch?v=AzZBgH67mgE)
|
||||
- [WATCHDOGS in STM32 || IWDG and WWDG || CubeIDE](https://www.youtube.com/watch?v=AelNsnpfbcM)
|
||||
|
||||
#### DMA
|
||||
|
||||
#### Power Management
|
||||
- [STM32 DMA PT 1](https://www.youtube.com/watch?v=yvLHtXJ_KSg)
|
||||
- [STM32 DMA PT 2](https://www.youtube.com/watch?v=Kb8dX18xYuo)
|
||||
- [Getting Started With STM32 & Nucleo Part 4: Working with ADC and DMA - Maker.io](https://www.youtube.com/watch?v=EsZLgqhqfO0)
|
||||
- [STM32 UART DMA and IDLE LINE || Receive unknown length DATA](https://www.youtube.com/watch?v=Bo6MC5A8uTE)
|
||||
|
||||
#### Bootloader
|
||||
|
||||
- [How to Create a Super Simple Bootloader](https://www.youtube.com/watch?v=OkUQ3iMmiYQ&list=PLnMKNibPkDnEb1sphpdFJ3bR9dNy7S6mO)
|
||||
- [STM32Fx Microcontroller Custom Bootloader Development](https://www.udemy.com/course/stm32f4-arm-cortex-mx-custom-bootloader-development/)
|
||||
- [Udemy – STM32Fx Microcontroller Custom Bootloader Development](https://www.udemy.com/course/stm32f4-arm-cortex-mx-custom-bootloader-development/)
|
||||
|
||||
#### Power Management
|
||||
|
||||
- [SLEEP Mode in STM32F103 || CubeIDE || Low Power Mode || Current Consumption](https://www.youtube.com/watch?v=2rKcsGkCG0s)
|
||||
- [STOP MODE in STM32 || CubeIDE || Low Power Mode](https://www.youtube.com/watch?v=UtQhc4XV8k4)
|
||||
|
||||
#### GUI Design
|
||||
|
||||
- [LVGL](https://lvgl.io/)
|
||||
- [TouchGFX](https://support.touchgfx.com/4.20/docs/introduction/welcome)
|
||||
|
||||
#### Functional Safety
|
||||
|
||||
- [Functional Safety According to ISO 26262 - Crash Course](https://www.udemy.com/course/iso-26262-crash-course/)
|
||||
- [Udemy – Functional Safety According to ISO 26262 - Crash Course](https://www.udemy.com/course/iso-26262-crash-course/)
|
||||
- [A Guide to MISRA C Coding Standards - MISRA C and MISRA C++](https://www.perforce.com/resources/qac/misra-c-cpp)
|
||||
|
||||
### Interfaces & Protocols
|
||||
|
||||
#### Common
|
||||
|
||||
- [PROTOCOLS: UART - I2C - SPI - Serial communications #001](https://www.youtube.com/watch?v=IyGwvGzrqp8)
|
||||
|
||||
##### UART
|
||||
|
||||
- [Understanding UART](https://www.youtube.com/watch?v=sTHckUyxwp8)
|
||||
- [how does UART work??? (explained clearly)](https://www.youtube.com/watch?v=V6m2skVlsQI)
|
||||
- [Basics of UART Communication | UART Frame Structure | RS 232 Basics | Part1](https://www.youtube.com/watch?v=JuvWbRhhpdI)
|
||||
- [Understanding UART Communication Programming | UART Peripherals | Part 2](https://www.youtube.com/watch?v=QmjKRwgddxw)
|
||||
|
||||
##### I2C
|
||||
|
||||
- [STM32 I2C SLAVE](https://www.youtube.com/playlist?list=PLfIJKC1ud8gj_P7Qb28aTr0t92uk_vwg0)
|
||||
|
||||
##### SPI
|
||||
|
||||
- [Getting Started with STM32 and Nucleo Part 5: How to Use SPI | Digi-Key Electronics](https://www.youtube.com/watch?v=eFKeNPJq50g)
|
||||
|
||||
#### Wireless
|
||||
|
||||
- [Bluetooth Low Energy Fundamentals - Nordic Semiconductor](https://academy.nordicsemi.com/courses/bluetooth-low-energy-fundamentals/)
|
||||
- [What is Thread? Low-power IoT Networking for Smart Home Devices | Digi-Key Electronics](https://youtu.be/5CauESYB9-A)
|
||||
- [What is Matter? Unifying IoT Devices for the Smart Home | Digi-Key Electronics](https://youtu.be/vJIEfih9bl0)
|
||||
|
||||
#### Industrial
|
||||
|
||||
#### High-Speed
|
||||
|
||||
#### Automotive
|
||||
|
||||
- [CAN Bus: Serial Communication - How It Works?](https://www.youtube.com/watch?v=JZSCzRT9TTo&t=21s)
|
||||
- [CAN Bus: A Beginners Guide Part 1](https://www.youtube.com/watch?v=YBrU_eZM110)
|
||||
- [CAN Bus: A Beginners Guide Part 2](https://www.youtube.com/watch?v=z5CVljiLhvc)
|
||||
- [CAN Bus, OBD2 & J1939 Explained](https://www.youtube.com/playlist?list=PLpV68vjf4Xo4vZ_SjJ6tTlomYm-k18vDZ)
|
||||
|
||||
#### Network
|
||||
|
||||
- [Hands-On Network Programming with C - Lewis Van Winkle](https://www.amazon.com/exec/obidos/ASIN/1789349869/aoeu-20)
|
||||
|
||||
#### Cellular
|
||||
|
||||
- [Cellular IoT Fundamentals - Nordic Semiconductor](https://academy.nordicsemi.com/courses/cellular-iot-fundamentals/)
|
||||
|
||||
### Memories
|
||||
|
||||
#### NOR / NAND Flash
|
||||
|
||||
#### eMMC
|
||||
|
||||
#### EEPROM
|
||||
|
||||
- [Using EEPROM with Arduino - Internal & External](https://www.youtube.com/watch?v=ShqvATqXA7g)
|
||||
|
||||
#### SRAM / DRAM
|
||||
|
||||
### Sensors & Actuators
|
||||
|
||||
- [Getting Started With STM32 and Nucleo Part 2: How to Use I2C to Read Temperature Sensor TMP102](https://www.youtube.com/watch?v=isOekyygpR8)
|
||||
- [GPS Module and STM32 || NEO 6M || Get coordinates, Date, Time, Speed, etc.](https://www.youtube.com/watch?v=tq_RoaPLahk)
|
||||
- [Interface MPU6050/GY-521 with STM32 || LCD 20x4 || CubeMx || HAL || SW4STM](https://www.youtube.com/watch?v=xxphp9wDnHA)
|
||||
- [DC Motor Speed Controller PWM With Potentiometer Using STM32](https://www.youtube.com/watch?v=8QpegVuV_AQ)
|
||||
|
||||
### Operating Systems
|
||||
|
||||
@@ -263,6 +406,10 @@ Becoming an embedded engineer requires a broad understanding of both software an
|
||||
|
||||
- [Operating Systems: Three Easy Pieces - Remzi H Arpaci-Dusseau, Andrea C Arpaci-Dusseau](https://pages.cs.wisc.edu/~remzi/OSTEP/)
|
||||
|
||||
#### Multitasking and Parallel Processing
|
||||
|
||||
- [C++ Concurrency in Action - Anthony Williams](https://www.manning.com/books/c-plus-plus-concurrency-in-action)
|
||||
|
||||
#### Embedded Linux
|
||||
|
||||
- [Introduction to Embedded Linux](https://youtube.com/playlist?list=PLEBQazB0HUyTpoJoZecRK6PpDG31Y7RPB)
|
||||
@@ -273,30 +420,61 @@ Becoming an embedded engineer requires a broad understanding of both software an
|
||||
|
||||
##### Linux Device Drivers
|
||||
|
||||
- [Linux Device Drivers - Jonathan Corbet, Alessandro Rubini, Greg Kroah-Hartman](https://lwn.net/Kernel/LDD3/)
|
||||
- [Mastering Linux Device Driver Development - John Madieu](https://www.packtpub.com/product/mastering-linux-device-driver-development/9781789342048)
|
||||
|
||||
##### U-Boot
|
||||
|
||||
- [The U-Boot Documentation](https://u-boot.readthedocs.io/en/latest/)
|
||||
|
||||
##### BuildRoot
|
||||
|
||||
- [Introduction to Embedded Linux Part 1 - Buildroot | Digi-Key Electronics](https://www.youtube.com/watch?v=9vsu67uMcko)
|
||||
|
||||
##### Yocto
|
||||
|
||||
- [Introduction to Embedded Linux Part 2 - Yocto Project | Digi-Key Electronics](https://www.youtube.com/watch?v=2-PwskQrZac&t=7s)
|
||||
- [Yocto Project Tutorial Series (Basic to Advance)](https://www.youtube.com/playlist?list=PLwqS94HTEwpQmgL1UsSwNk_2tQdzq3eVJ)
|
||||
- [Udemy – Embedded Linux using Yocto](https://www.udemy.com/course/embedded-linux-using-yocto/)
|
||||
|
||||
##### Qt
|
||||
|
||||
- [Qt Documentation](https://doc.qt.io/)
|
||||
- [Introduction to Qt / QML](https://www.youtube.com/playlist?list=PL6CJYn40gN6hUXoYdyn4DHUTXfcVDJcfB)
|
||||
- [Udemy – Multi-Threading and IPC with Qt 5 C++](https://www.udemy.com/course/multi-threading-and-ipc-with-qt-c-plus-plus/)
|
||||
|
||||
#### Real-Time OS
|
||||
|
||||
- [RTOS](https://www.youtube.com/playlist?list=PLPW8O6W-1chyrd_Msnn4LD6LBs2slJITs)
|
||||
- [Beyond the RTOS](https://www.youtube.com/playlist?list=PLPW8O6W-1chytjkg63-tM7MI0BvGxxPIP)
|
||||
|
||||
##### FreeRTOS
|
||||
|
||||
- [FreeRTOS - Market leading RTOS](https://www.freertos.org)
|
||||
- [Introduction to RTOS](https://www.youtube.com/playlist?list=PLEBQazB0HUyQ4hAPU1cJED6t3DU0h34bz)
|
||||
- [Mastering the FreeRTOS Real Time Kernel - a Hands On Tutorial Guide](https://www.freertos.org/Documentation/RTOS_book.html)
|
||||
- [Getting Started With STM32 and Nucleo Part 3: FreeRTOS - How To Run Multiple Threads w/ CMSIS-RTOS](https://www.youtube.com/watch?v=CdpgqpuPSyQ)
|
||||
- [Hands-On RTOS with Microcontrollers: Building real-time embedded systems using FreeRTOS, STM32 MCUs, and SEGGER debug tools - Brian Amos](https://a.co/d/11MSPlo)
|
||||
- [Beginning STM32: Developing with FreeRTOS, libopencm3 and GCC - Warren Gay](https://link.springer.com/book/10.1007/978-1-4842-3624-6)
|
||||
|
||||
##### Zephyr
|
||||
|
||||
- [Zephyr® Project](https://www.zephyrproject.org/)
|
||||
- [nRF Connect SDK](https://academy.nordicsemi.com/courses/nrf-connect-sdk-fundamentals/)
|
||||
- [ESP32 on Zephyr OS](https://www.youtube.com/playlist?list=PLEQVp_6G_y4iFfemAbFsKw6tsGABarTwp)
|
||||
|
||||
##### μC/OS / Micriμm OS
|
||||
|
||||
- [Micriμm OS](https://www.silabs.com/developers/micrium)
|
||||
- [µC/OS-III Documentation](https://micrium.atlassian.net/wiki/spaces/osiiidoc/overview)
|
||||
- [µC/OS-III Books](https://weston-embedded.com/micrium-books)
|
||||
- [µC/OS-II Documentation](https://micrium.atlassian.net/wiki/spaces/osiidoc/overview)
|
||||
- [Microc/Os-II: The Real-Time Kernel - Jean-J Labrosse](https://file.elecfans.com/web1/M00/7F/DD/pIYBAFwnEZGAcwiCAEGrbQfCqmc945.pdf)
|
||||
- [Cesium RTOS](https://weston-embedded.com/micrium/overview)
|
||||
|
||||
##### NuttX
|
||||
|
||||
- [NuttX - The Apache Software Foundation!](https://nuttx.apache.org/)
|
||||
- [NuttX - The Apache Software Foundation](https://nuttx.apache.org/)
|
||||
- [Getting Started to NuttX](https://www.youtube.com/playlist?list=PLd73yQk5Fd8JEsVD-lhwYRQKVu6glfDa8)
|
||||
|
||||
##### RT-Thread
|
||||
@@ -304,6 +482,10 @@ Becoming an embedded engineer requires a broad understanding of both software an
|
||||
- [RT-Thread | An Open Source Embedded Real-time Operating System](https://www.rt-thread.io/)
|
||||
- [RT-Thread Beginners Guide](https://youtube.com/playlist?list=PLXUV89C_M3G5KVw2IerI-pqApdSM_IaZo)
|
||||
|
||||
##### Mbed OS
|
||||
|
||||
- [Mbed OS](https://os.mbed.com/mbed-os/)
|
||||
|
||||
##### QNX
|
||||
|
||||
- [BlackBerry QNX: Embedded OS, Support, and Services](https://blackberry.qnx.com/en)
|
||||
@@ -319,7 +501,7 @@ Becoming an embedded engineer requires a broad understanding of both software an
|
||||
- [FIR Filter Design and Software Implementation - Phil's Lab #17](https://www.youtube.com/watch?v=uNNNj9AZisM)
|
||||
- [IIR Filters - Theory and Implementation (STM32) - Phil's Lab #32](https://www.youtube.com/watch?v=QRMe02kzVkA)
|
||||
- [Digital Signal Processing (ECSE-4530) Lectures, Fall 2014](https://youtube.com/playlist?list=PLuh62Q4Sv7BUSzx5Jr8Wrxxn-U10qG1et)
|
||||
- [Digital Signal Processing (DSP) From Ground Up in C](https://www.udemy.com/course/digital-signal-processing-dsp-from-ground-uptm-in-c/)
|
||||
- [Udemy – Digital Signal Processing (DSP) From Ground Up in C](https://www.udemy.com/course/digital-signal-processing-dsp-from-ground-uptm-in-c/)
|
||||
- [Real-Time Digital Signal Processing: Fundamentals, Implementations and Applications - Sen M. Kuo, Bob H. Lee, Wenshun Tian](https://www.wiley.com/en-us/Real+Time+Digital+Signal+Processing%3A+Fundamentals%2C+Implementations+and+Applications%2C+3rd+Edition-p-9781118414323)
|
||||
- [Real-Time Digital Signal Processing from MATLAB to C with the TMS320C6x DSPs - Thad B. Welch, Cameron H.G. Wright, Michael G. Morrow](https://www.routledge.com/Real-Time-Digital-Signal-Processing-from-MATLAB-to-C-with-the-TMS320C6x/Welch-Wright-Morrow/p/book/9780367736453)
|
||||
- [Digital Signal Processing - John G. Proakis, Dimitris K. Manolakis](https://a.co/d/75P5PiE)
|
||||
@@ -330,6 +512,7 @@ Becoming an embedded engineer requires a broad understanding of both software an
|
||||
- [Discrete Fourier Transform - Simple Step by Step](https://www.youtube.com/watch?v=mkGsMWi_j4Q)
|
||||
- [The Fast Fourier Transform (FFT): Most Ingenious Algorithm Ever?](https://youtu.be/h7apO7q16V0)
|
||||
- [The FFT Algorithm - Simple Step by Step](https://www.youtube.com/watch?v=htCj9exbGo0)
|
||||
- [STM32 Fast Fourier Transform (CMSIS DSP FFT) - Phil's Lab #111](https://youtu.be/d1KvgOwWvkM)
|
||||
|
||||
#### Controls Systems / PID Control
|
||||
|
||||
@@ -344,23 +527,33 @@ Becoming an embedded engineer requires a broad understanding of both software an
|
||||
|
||||
- [MATLAB Tutorials: Getting Started with MATLAB](https://youtube.com/playlist?list=PL7CAABC40B2825C8B)
|
||||
- [Getting Started with Simulink](https://youtube.com/playlist?list=PL484BA2AD3AE4C2D0)
|
||||
- [MATLAB/SIMULINK Bible|Go From Zero to Hero!](https://www.udemy.com/course/matlabsimulink-biblego-from-zero-to-hero/)
|
||||
- [Udemy – MATLAB/SIMULINK Bible|Go From Zero to Hero!](https://www.udemy.com/course/matlabsimulink-biblego-from-zero-to-hero/)
|
||||
|
||||
### Debugging
|
||||
|
||||
#### JTAG / SWD
|
||||
|
||||
- [Guide: Connecting your debugger](https://stm32-base.org/guides/connecting-your-debugger.html)
|
||||
- [STM32 + SWD + ST-Link + CubeIDE | Debugging on Custom Hardware Tutorial - Phil's Lab #4](https://www.youtube.com/watch?v=qMUzLU636s8)
|
||||
|
||||
#### GDB
|
||||
|
||||
- [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
|
||||
|
||||
- [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)
|
||||
|
||||
### Testing
|
||||
|
||||
- [Test Driven Development for Embedded C - James Grenning](https://www.amazon.com/Driven-Development-Embedded-Pragmatic-Programmers/dp/193435662X)
|
||||
- [Intro to CI/CD](https://youtu.be/1nxGcfIm-TU)
|
||||
|
||||
#### Unit Testing
|
||||
|
||||
- [Embedded C/C++ Unit Testing with Mocks](https://interrupt.memfault.com/blog/unit-test-mocking)
|
||||
- [Unit Testing Principles, Practices, and Patterns - Vladimir Khorikov](https://www.manning.com/books/unit-testing)
|
||||
|
||||
#### Integration Testing
|
||||
|
||||
@@ -370,11 +563,10 @@ Becoming an embedded engineer requires a broad understanding of both software an
|
||||
|
||||
### Embedded AI
|
||||
|
||||
- [Intro to Edge AI: Machine Learning + IoT – Maker.io Tutorial | Digi-Key Electronics](https://www.youtube.com/watch?v=Ejld8XZmvwE)
|
||||
|
||||
#### AI/ML Basics
|
||||
|
||||
- [Getting Started with Embedded AI | Edge AI](https://www.udemy.com/course/getting-started-with-embedded-ai-hands-on-experience/)
|
||||
- [Udemy – Getting Started with Embedded AI | Edge AI](https://www.udemy.com/course/getting-started-with-embedded-ai-hands-on-experience/)
|
||||
- [Intro to Edge AI: Machine Learning + IoT – Maker.io Tutorial | Digi-Key Electronics](https://www.youtube.com/watch?v=Ejld8XZmvwE)
|
||||
|
||||
#### TensorFlow
|
||||
|
||||
@@ -386,26 +578,33 @@ Becoming an embedded engineer requires a broad understanding of both software an
|
||||
|
||||
- [Intro to TinyML Part 1: Training a Neural Network for Arduino in TensorFlow | Digi-Key Electronics](https://www.youtube.com/watch?v=BzzqYNYOcWc)
|
||||
- [Intro to TinyML Part 2: Deploying a TensorFlow Lite Model to Arduino | Digi-Key Electronics](https://www.youtube.com/watch?v=dU01M61RW8s)
|
||||
- [TinyML: Getting Started with TensorFlow Lite for Microcontrollers | Digi-Key Electronics](https://youtu.be/gDFWCxrJruQ)
|
||||
- [TinyML: Getting Started with STM32 X-CUBE-AI | Digi-Key Electronics](https://youtu.be/crJcDqIUbP4)
|
||||
|
||||
### Security & Cryptography
|
||||
### Embedded Security
|
||||
|
||||
#### Cryptographic Algorithms
|
||||
|
||||
#### Hash Algorithms
|
||||
#### Cryptography
|
||||
|
||||
- [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)
|
||||
- [Serious Cryptography: A Practical Introduction to Modern Encryption - Jean-Philippe Aumasson](https://nostarch.com/seriouscrypto)
|
||||
- [MOOC - Security Part2: Basics of cryptography](https://youtube.com/playlist?list=PLnMKNibPkDnFSFh57UFTZLpy-7lZiwTHh)
|
||||
- [MOOC - Security Part3 : STM32 security features](https://youtube.com/playlist?list=PLnMKNibPkDnFzux3PHKUEi14ftDn9Cbm7)
|
||||
|
||||
#### Secure Boot
|
||||
|
||||
#### Secure Firmware Update
|
||||
#### Secure Boot & Secure Firmware Update
|
||||
|
||||
- [Blinky To Bootloader: Bare Metal Programming Series](https://www.youtube.com/playlist?list=PLP29wDx6QmW7HaCrRydOnxcy8QmW0SNdQ)
|
||||
- [MOOC - Security Part4 : STM32 security in practice](https://youtube.com/playlist?list=PLnMKNibPkDnF0wt-ZI74SflnsBV4yKzkO)
|
||||
- [MOOC - Security Part5 : How to define your security needs](https://youtube.com/playlist?list=PLnMKNibPkDnGqh5OmQWw98ztpf9TeczbC)
|
||||
- [MOOC - Security Part6: STM32 security ecosystem, from theory to practice](https://youtube.com/playlist?list=PLnMKNibPkDnGd7J7fV7tr-4xIBwkNfD--)
|
||||
|
||||
|
||||
### SOFT SKILLS
|
||||
|
||||
- [Soft Skills For Embedded Systems Software Developers](https://www.embeddedrelated.com/showarticle/1470.php)
|
||||
- [10 Skills Every Embedded Engineer Should Have](https://medium.com/@lanceharvieruntime/10-skills-every-embedded-engineer-should-have-dcb867095b91)
|
||||
|
||||
## 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