Compare commits

...
Author SHA1 Message Date
Meysam Parvizi 67e056564e Update README.md 2023-07-31 12:57:22 +03:30
Meysam Parvizi f691a05766 Minor changes 2023-07-31 12:53:39 +03:30
Meysam Parvizi 83e3d585f1 Update README.md 2023-07-31 12:52:50 +03:30
Meysam Parvizi abdea95830 Update README.md 2023-07-31 12:01:59 +03:30
Meysam Parvizi 78981869e5 Update README.md 2023-07-31 11:59:49 +03:30
Meysam Parvizi cea9490309 Minor change 2023-07-31 11:45:20 +03:30
Meysam Parvizi 40ec98eb6c Update README.md 2023-07-31 11:43:32 +03:30
Meysam Parvizi 206c129f9f Update README.md
Add Version Control
2023-07-31 11:30:32 +03:30
Meysam Parvizi 75eb9c5f39 Update README.md
Add Build System
2023-07-31 11:11:56 +03:30
Meysam Parvizi 1cfad9c59a Update README.md 2023-07-31 03:13:20 +03:30
Meysam Parvizi 6313c63883 Update Roadmap
Add 'Embedded AI' 
Add 'UML' 
Add 'VxWorks' 
Add 'Qt'
2023-07-31 02:48:38 +03:30
Meysam Parvizi cf21153c09 Update README.md 2023-07-31 01:47:04 +03:30
Meysam Parvizi f41e5d3738 Update README.md
Add Programming Languages
2023-07-31 01:25:19 +03:30
Meysam Parvizi a016955502 Update README.md
Add Algorithms & Data Structures
2023-07-30 23:31:09 +03:30
Meysam Parvizi bf22f434ef Update README.md 2023-07-30 22:33:49 +03:30
Meysam Parvizi 42d3f0e325 Update README.md 2023-07-30 21:54:17 +03:30
Meysam Parvizi 65da788e53 Add resources for EMI / SI in PCB design 2023-07-30 13:58:44 +03:30
Meysam Parvizi a7bd324f45 Update README.md 2023-07-30 13:10:07 +03:30
Meysam Parvizi 23c671da4e Update README.md 2023-07-30 13:07:45 +03:30
Meysam Parvizi b1dce8cb2b Add 'The Art of Electronics' 2023-07-30 13:06:58 +03:30
Meysam Parvizi a9a9fc5f02 Update README.md 2023-07-30 13:00:25 +03:30
Meysam 37b3fc63f4 Add 'Encyclopedia of Electronic Components' 2023-07-30 12:51:36 +03:30
Meysam 2095451d43 Add some resources for hardware basics 2023-07-30 12:48:34 +03:30
Meysam c38b928765 Add Ben Eater 8-bit breadboard (#6) 2023-07-30 11:11:48 +03:30
Meysam 9bb1700f2a Add some Learning Resources 2023-07-30 00:05:26 +03:30
Meysam b9d63a0a26 Update README.md 2023-07-29 22:44:53 +03:30
Meysam 1235564886 Add 'Organizational & Time Management Skills' 2023-07-29 22:44:13 +03:30
Meysam d2f0f8fb47 Update README.md 2023-07-29 22:05:05 +03:30
Meysam 96ba2bae7e Add Docker (#5)
Add CoAP & cellular networks (#4)
Add Secure Boot and OTA (#3)
Add Functional Safety
Add MATLAB / Simulink
2023-07-29 16:51:59 +03:30
Meysam 5e33251915 Add SOFT SKILLS (#2) 2023-07-29 14:04:20 +03:30
Meysam e947b65b2d Minor changes 2023-07-28 22:05:31 +03:30
Meysam 21b7ed7e54 Update README.md 2023-07-28 21:48:16 +03:30
Meysam eb50a7f92e More emphasize on DSP
Add eMMC memory
Add Rework
2023-07-28 21:42:13 +03:30
Meysam cae6215eb7 Update README.md 2023-07-28 15:11:06 +03:30
Meysam c734253b08 Update README.md 2023-07-28 14:37:05 +03:30
Meysam 5c0d7b2e90 Update README.md 2023-07-28 13:35:25 +03:30
Meysam 5d222a22b8 Update README.md 2023-07-27 20:44:44 +03:30
2 changed files with 227 additions and 6 deletions
Binary file not shown.
+227 -6
View File
@@ -1,16 +1,231 @@
# Embedded Systems Engineering Roadmap
This is a roadmap for those who want to build a career as an Embedded Developer or Embedded Engineer.
In order to assist beginners, steps have been taken to create a roadmap that is straightforward and easy to understand.
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.
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](https://office.com/visio).
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 comprehension of hardware functionality and, as the well-known saying goes, **"Hardware is hard."** Therefore, patience and passion are the essential qualities that will help you overcome the various challenges encountered along this journey.
## Roadmap
![Embedded Systems Engineering Roadmap](https://github.com/m3y54m/Embedded-Engineering-Roadmap/releases/download/Rev.L-2023-07-31/Embedded-Engineering-Roadmap.png)
## Learning Resources
### ⭐️ Featured Material
#### 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)
#### Simulation
- [Wokwi - Online ESP32, STM32, Arduino Simulator](https://wokwi.com/)
#### Arduino
- [Arduino Language Reference](https://www.arduino.cc/reference/en/)
#### Websites
- [SparkFun Learn: Learn at SparkFun Electronics](https://learn.sparkfun.com/)
- [Random Nerd Tutorials | Learn ESP32, ESP8266, Arduino, and Raspberry Pi](https://randomnerdtutorials.com/)
> **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
- [Khan Academy - Calculus 1](https://www.khanacademy.org/math/calculus-1)
- [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/)
#### Digital Circuits & Logic Design
#### 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
#### Multimeter
- [Learn How to Use a Multimeter!](https://youtu.be/4lAyzRxsbDc)
- [How to Use a Multimeter ](https://learn.sparkfun.com/tutorials/how-to-use-a-multimeter/all)
#### Logic Analyzer
- [Instrument Basics: Logic Analyzer](https://youtu.be/u1DYs2I-_lU)
#### Oscilloscope
- [What’s an OSCILLOSCOPE?](https://youtu.be/DgYGRtkd9Vs)
- [How to Use an Oscilloscope](https://youtu.be/u4zyptPLlJI)
- [How to use an oscilloscope / What is an oscilloscope / Oscilloscope tutorial](https://youtu.be/CzY2abWCVTY)
### Prototyping Skills
#### PCB Design
- [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_)
#### Soldering
- [How To Solder - Electronics with Becky Stern | Digi-Key Electronics](https://www.youtube.com/watch?v=sS4v2hIFp9I)
- [HOW TO SOLDER! (Beginner's Guide)](https://www.youtube.com/watch?v=3jAw41LRBxU)
- [Soldering Crash Course: Basic Techniques, Tips and Advice!](https://www.youtube.com/watch?v=6rmErwU5E-k)
- [How to Solder Through-Hole Components - Another Teaching Moment | DigiKey Electronics](https://www.youtube.com/watch?v=DJH7VLGJ4fs)
- [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/)
### Programming Fundamentals
#### Algorithms & Data Structures
- [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/)
- [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
- [Design Patterns for Embedded Systems in C - Bruce Powel Douglass](https://www.oreilly.com/library/view/design-patterns-for/9781856177078/)
#### State Machines / UML
- [Embedded System Design using UML State Machines](https://www.udemy.com/course/embedded-system-design-using-uml-state-machines/)
#### Memory Allocation
- [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)
### Programming Languages
#### C
- [Microcontroller Embedded C Programming: Absolute Beginners](https://www.udemy.com/course/microcontroller-embedded-c-programming/)
- [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/)
#### C++
- [C++ Tutorial for Beginners - Full Course](https://www.youtube.com/watch?v=vLnPwxZdW4Y)
- [C++ Concurrency in Action - Anthony Williams ](https://www.manning.com/books/c-plus-plus-concurrency-in-action)
#### Assembly
- [Assembly Language Programming with ARM – Full Tutorial for Beginners](https://www.youtube.com/watch?v=gfmRrPjnEw4)
#### Python
- [Real Python: Python Tutorials](https://realpython.com/)
- [Python Crash Course - Eric Matthes](https://a.co/d/hSMTJwE)
- [MicroPython - Python for microcontrollers](https://micropython.org/)
- [CircuitPython](https://circuitpython.org/)
#### Rust
- [The Embedded Rust Book](https://docs.rust-embedded.org/book/)
### Build System
#### GCC
#### Makefile
- [GCC and Make - Compiling, Linking and Building C/C++ Applications](https://www3.ntu.edu.sg/home/ehchua/programming/cpp/gcc_make.html)
#### CMake
- [How to CMake Good](https://youtube.com/playlist?list=PLK6MXr8gasrGmIiSuVQXpfFuE1uPT615s)
#### Bash Script
- [Bash scripting cheatsheet](https://devhints.io/bash)
- [Bash Scripting Tutorial for Beginners](https://www.youtube.com/watch?v=tK9Oc6AEnR4)
#### Docker
- [Introduction to Docker for the Embedded Developer](https://www.youtube.com/watch?v=Fz7ou-VBk-w)
### Version Control
#### Git
- [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)
### Microcontrollers
### Operating Systems
#### Operating System Fundamentals
- [Operating Systems: Three Easy Pieces - Remzi H Arpaci-Dusseau, Andrea C Arpaci-Dusseau](https://pages.cs.wisc.edu/~remzi/OSTEP/)
#### Embedded Linux
- [The Linux Programming Interface - Michael Kerrisk](https://man7.org/tlpi/)
#### Real-Time OS
### Digital Signal Processing
### Debugging
### Testing
### Unit Testing
- [Embedded C/C++ Unit Testing with Mocks](https://interrupt.memfault.com/blog/unit-test-mocking)
### Embedded AI
### Security & Cryptography
![Embedded Systems Engineering Roadmap](https://github.com/m3y54m/Embedded-Engineering-Roadmap/releases/download/Rev.E-2023-07-27/Embedded-Engineering-Roadmap.png)
## History
The idea of creating this roadmap came from a [roadmap](https://github.com/vazeri/Embedded-Engineering-RoadMap-2018) designed by [vazeri](https://github.com/vazeri) which was well designed but not updated for years.
I took that idea and changed the structure of the roadmap and tried to improve it. The initial results can be accessed in [m3y54m / Embedded-Engineering-Roadmap-Archived](https://github.com/m3y54m/Embedded-Engineering-Roadmap-Archived) which is now archived. Early versions of the roadmap were created using [Balsamiq Wireframes](https://balsamiq.com) which were not suitable for these types of diagrams. So I decided to use Microsoft Visio and redrew the whole diagram with it.
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.
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](https://github.com/m3y54m/Embedded-Engineering-Roadmap-Archived) which is now archived. Early versions of the roadmap were created using [Balsamiq Wireframes](https://balsamiq.com) which is not suitable for these types of diagrams. So I decided to use Microsoft Visio instead and redrew the whole diagram.
## Copyright
@@ -23,3 +238,9 @@ This work is licensed under a [Creative Commons Attribution-ShareAlike 4.0 Inter
## Acknowledgement
Special thanks to my friends in the community of Iranian Embedded Engineers in Twitter and [r/embedded](https://www.reddit.com/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](https://office.com/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](https://draw.io) which can import and export `.vsdx` files.