Compare commits

...
84 Commits
Author SHA1 Message Date
Meysam Parvizi 6543b32216 Added AUTOSAR 2023-12-10 19:03:30 +03:30
Meysam Parvizi 15285e0be4 Update README.md 2023-12-10 18:53:43 +03:30
Meysam Parvizi 4ce9c26fb1 Update README.md 2023-12-09 22:16:51 +03:30
Meysam Parvizi 1bd6094cbe Update README.md 2023-12-09 11:02:43 +03:30
Meysam Parvizi 5ca196ca8c Update README.md 2023-12-08 21:28:51 +03:30
Meysam Parvizi 8ccca8e12b Update README.md 2023-12-07 20:11:36 +03:30
Meysam Parvizi 3cd1bcd62d Update README.md 2023-12-07 11:20:26 +03:30
Meysam Parvizi 25276210a1 Update README.md 2023-12-06 14:20:50 +03:30
Meysam Parvizi 00089ee209 Update README.md 2023-12-06 12:07:32 +03:30
Meysam Parvizi c3481aa490 Update README.md 2023-12-06 12:05:23 +03:30
Meysam Parvizi 3e905d0cf4 Update README.md 2023-12-06 11:51:07 +03:30
Meysam Parvizi 5c5174d573 Update README.md 2023-12-06 11:40:12 +03:30
Meysam Parvizi 07a45ef82e Update README.md 2023-12-06 11:16:16 +03:30
Meysam Parvizi d04ed29536 Update README.md 2023-12-06 01:08:14 +03:30
Meysam Parvizi 127a0d090e Update README.md 2023-12-06 00:26:56 +03:30
Meysam Parvizi 8284b9dced Update README.md 2023-12-05 23:58:54 +03:30
Meysam Parvizi 0f0ad015b1 Update README.md 2023-12-04 12:18:21 +03:30
Meysam Parvizi 91547a59d7 Update README.md 2023-12-04 12:12:50 +03:30
Meysam Parvizi 40acf885c9 Update README.md 2023-12-03 23:45:54 +03:30
Meysam Parvizi 800ea9fdf7 Update README.md 2023-12-03 22:28:41 +03:30
Meysam Parvizi 1f5e15bb92 Update README.md 2023-12-03 17:19:51 +03:30
Meysam Parvizi 2f7d00da83 Update README.md 2023-12-03 17:12:08 +03:30
Meysam Parvizi d3d989456f Update README.md 2023-12-02 10:42:54 +03:30
Meysam Parvizi 2c77977f38 Update README.md 2023-12-01 16:34:15 +03:30
Meysam Parvizi 62207b9762 Update README.md 2023-12-01 12:52:21 +03:30
Meysam Parvizi 092bcbf49c Update README.md 2023-12-01 12:42:32 +03:30
Meysam Parvizi 3ac8f30ea5 Update README.md 2023-12-01 12:33:34 +03:30
Meysam Parvizi d11e0d6098 Updated README.md and improved the order of contents 2023-12-01 12:15:03 +03:30
Meysam Parvizi e493fe33fe Update README.md 2023-12-01 11:44:53 +03:30
Meysam Parvizi 0de7e5b0ff Make fonts slightly larger 2023-12-01 11:28:24 +03:30
Meysam Parvizi 8fa54b081f Update README.md 2023-12-01 11:21:30 +03:30
Meysam Parvizi 6337d25195 Chages some titles and fonts 2023-11-30 19:28:02 +03:30
Meysam Parvizi 109142bbde Update README.md 2023-11-30 19:19:17 +03:30
Meysam Parvizi 3b5e739c9e Update README.md 2023-11-30 09:57:04 +03:30
Meysam Parvizi 970e80b134 Update README.md 2023-11-23 01:24:42 +03:30
Meysam Parvizi c9d150d5c7 Update README.md 2023-11-18 08:54:01 +03:30
Meysam Parvizi 391d17a873 Update README.md 2023-11-18 08:53:04 +03:30
Meysam Parvizi 791844b915 Update README.md 2023-11-13 12:53:29 +03:30
Meysam Parvizi 9eb05d193c Update README.md 2023-11-13 11:25:06 +03:30
Meysam Parvizi a9f1d70ebd Update README.md
Add PCM
2023-11-07 12:10:49 +03:30
Meysam Parvizi 7b44cf62ee Update README.md 2023-11-06 22:11:44 +03:30
Meysam Parvizi 91625afacd Update README.md 2023-11-06 22:07:58 +03:30
Meysam Parvizi 7154ce9b80 Update README.md 2023-11-06 18:30:54 +03:30
Meysam Parvizi 0c98d21c63 Update README.md 2023-10-30 19:33:22 +03:30
Meysam Parvizi ea904d1f7b Update README.md 2023-10-24 23:29:31 +03:30
Meysam Parvizi dad999d384 Update README.md 2023-10-22 00:28:10 +03:30
Meysam Parvizi 6b9429aace Update README.md 2023-10-16 13:20:42 +03:30
Meysam Parvizi ffe92d3faf Update README.md 2023-10-16 12:42:32 +03:30
Meysam Parvizi d4bb415e6c Update README.md 2023-10-16 12:29:16 +03:30
Meysam Parvizi 411ba4efc2 Update README.md 2023-10-15 17:22:00 +03:30
Meysam Parvizi 6daa7c32ed Update README.md 2023-10-15 15:42:55 +03:30
Meysam Parvizi aa8202438e Update README.md 2023-10-15 14:34:32 +03:30
Meysam Parvizi 4a208301db Update README.md 2023-10-14 21:47:52 +03:30
Meysam Parvizi e28fbb3258 Update README.md 2023-10-14 19:31:41 +03:30
Meysam Parvizi 5f2594d4fe Update README.md 2023-10-14 18:50:18 +03:30
Meysam Parvizi 26ec970d62 Update README.md 2023-10-13 15:46:39 +03:30
Meysam Parvizi 0b712030d8 Update README.md 2023-10-12 23:30:25 +03:30
Meysam Parvizi 1845ce150f Update README.md 2023-10-12 22:24:45 +03:30
Meysam Parvizi 8e5dac7e59 Update README.md 2023-10-12 10:49:48 +03:30
Meysam Parvizi ee17c54ac8 Update README.md 2023-10-12 09:40:38 +03:30
Meysam Parvizi 52dae1534d Update README.md 2023-10-11 21:49:33 +03:30
Meysam Parvizi cc9ad5d267 Update README.md 2023-10-11 19:09:52 +03:30
Meysam Parvizi c55ae0b2ed Update README.md 2023-10-11 19:00:08 +03:30
Meysam Parvizi d23c504eb4 Update README.md 2023-10-10 15:00:02 +03:30
Meysam Parvizi 106de1316e Update README.md 2023-10-10 14:56:31 +03:30
Meysam Parvizi b10a3e8ac8 Update README.md 2023-10-10 14:48:43 +03:30
Meysam Parvizi 236bc95b0a Update README.md 2023-10-10 14:47:27 +03:30
Meysam Parvizi d9cd7a23b5 Update README.md 2023-10-10 14:45:35 +03:30
Meysam Parvizi 8efa40a2e5 Update README.md 2023-10-10 11:35:43 +03:30
Meysam Parvizi c9d328df4a Update README.md 2023-10-10 10:41:21 +03:30
Meysam Parvizi 8f38139a77 Update README.md 2023-10-09 11:23:35 +03:30
Meysam Parvizi b6af1949e4 Update README.md 2023-10-05 19:52:19 +03:30
Meysam Parvizi 4661930a8d Update README.md 2023-10-04 15:24:27 +03:30
Meysam Parvizi b8f0a07be3 Update README.md 2023-10-03 11:00:01 +03:30
Meysam Parvizi 0becbff1e7 Update README.md (#9) 2023-10-02 22:44:07 +03:30
Meysam Parvizi 6766c7a35f Merge pull request #10 from danielinux/master
Updated README.md
Added Embedded Systems Architecture by Daniele Lacamera
2023-10-02 22:22:16 +03:30
Daniele Lacamera f92931cd7f Updated README.md 2023-10-02 20:39:30 +02:00
Meysam Parvizi 66f790152f Update README.md 2023-10-02 15:43:55 +03:30
Meysam Parvizi a3afd8be59 Update README.md 2023-10-02 05:06:19 +03:30
Meysam Parvizi 02d6f0e064 Update README.md 2023-10-01 18:35:43 +03:30
Meysam Parvizi eec80ce80c Update README.md 2023-09-30 18:02:25 +03:30
Meysam Parvizi 0c220e1eb8 Update README.md 2023-09-30 17:58:31 +03:30
Meysam Parvizi 182d258870 Update README.md 2023-09-30 17:52:17 +03:30
Meysam Parvizi 6808191db9 Update README.md 2023-09-30 16:25:10 +03:30
2 changed files with 277 additions and 134 deletions
Binary file not shown.
+277 -134
View File
@@ -1,8 +1,8 @@
# 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.
This roadmap is designed to help beginners aspiring to build a career as an **Embedded Engineer/Developer**, as well as assist current practitioners in expanding their skills.
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.
You should know that becoming an embedded engineer requires a broad understanding of both software and hardware. If you really want to pursue this career you must be highly motivated and passionate about it. As well as programming and software development skills, embedded systems demand a solid understanding of hardware functionality. However, as the well-known saying goes, "Hardware is hard!". So if you still know nothing about embedded systems, a hard yet exciting journey awaits you. But don't panic and be patient for the challenges you may encounter along this journey. By dedicating enough time and effort practicing and doing projects you will soon find yourself as a real embedded engineer! 😀
## What is an Embedded System?
@@ -17,6 +17,10 @@ used in an aircraft or rapid transit system.
> An embedded system is a **computerized system** that is **purpose built for its application**.
["Computer Organization and Embedded Systems" Book:](https://a.co/d/2lt4Svf)
> A **physical system** that employs **computer control** for a **specific purpose**, rather than for general-purpose computation, is referred to as an embedded system.
[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**.
@@ -29,35 +33,68 @@ used in an aircraft or rapid transit system.
>
> 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
## 🗺️ The Roadmap
The roadmap is divided into three main sections: **SOFTWARE**, **HARDWARE**, and **SOFT SKILLS**.
The hardware and software sections overlap in many embedded job roles. Different job titles, such as "Embedded Software Engineer / Developer," "Firmware Engineer / Developer," and "Embedded Linux Software Engineer / Developer," tend to focus more on software. On the other hand, job roles like "Embedded Hardware Engineer" and "Hardware Design Engineer" primarily focus on hardware. Additionally, there are positions like "Embedded Systems Engineer" that require a good understanding of both hardware and software. It's crucial to understand that each company in the embedded industry may have specific requirements for a job role, regardless of its title.
The hardware and software sections overlap in many embedded job roles. Different job titles, such as "Embedded Software Engineer/Developer," "Firmware Engineer/Developer," and "Embedded Linux Engineer/Developer," tend to focus more on software. On the other hand, job roles like "Embedded Hardware Engineer" and "Hardware Design Engineer" primarily focus on hardware. Additionally, there are positions like "Embedded Systems Engineer" that require a good understanding of both hardware and software. It's importnat to understand that each company in the embedded industry may have specific requirements for a job role, regardless of its title.
With this in mind, the roadmap is designed to cover topics necessary for an "Embedded Systems Engineer" role. If you are aiming for an embedded software position, you should focus more on software skills in the roadmap. Conversely, if you are interested in an embedded hardware job, you should prioritize hardware skills.
With this in mind, the roadmap is designed to cover topics necessary for a typical "Embedded Systems Engineer" role. If you are aiming for an embedded software position, you should focus more on software skills in the roadmap. Conversely, if you are interested in an embedded hardware job, you should prioritize hardware skills and put more time on learning electronics.
In the embedded industry, all job roles require some soft skills, which cannot be acquired solely through reading or watching videos. Soft skills are developed through communication with others and facing various work challenges. Improving soft skills is not a one-size-fits-all approach. It varies depending on your individual characteristics and involves being aware of your own strengths and weaknesses. Enhancing these skills takes time and effort.
Just like many other job roles, an embedded engineer requires some soft skills that cannot be acquired solely through reading or watching videos. Soft skills are developed through communication with people and facing various work challenges. Improving soft skills is not a one-size-fits-all approach. It will vary based on one's individual traits and requires self-awareness of your strengths and areas for growth. Enhancing these skills takes time and effort.
**Remember that the emphasis on software or hardware skills may vary depending on the specific requirements of the company or job position.**
> [!NOTE]
> **Remember that the importance of individual software and hardware skills can differ depending on the specific requirements of the company and the job role.**
![Embedded Systems Engineering Roadmap](https://github.com/m3y54m/Embedded-Engineering-Roadmap/releases/latest/download/Embedded-Engineering-Roadmap.png)
## Learning Resources
## 😕 Don't Know Where to Start!
### ⭐️ Featured Material
If you feel overwhelmed by the extensive list of topics in the roadmap, you're not alone. Before delving too deeply, let's ease into it with some simple starter projects. Learning embedded systems engineering takes time and effort. Don't get discouraged if you don't understand something right away. Keep practicing and you will eventually get there.
#### 🔎 Searching is Your Super Power!
### ⚒️ Projects
Engaging in hands-on projects is the most effective approach to learning. Rather than solely relying on theoretical knowledge from books or articles, undertaking projects allows for practical learning experiences. Even a seemingly basic project has the potential to teach you more than aimless reading. You can refer to books, articles, and courses when faced with difficulties in understanding the problems in a real-world project.
Don't try to build a complex project right away. Start with small, manageable projects to get your feet wet.
- [Random Nerd Tutorials | Learn ESP32, ESP8266, Arduino, and Raspberry Pi](https://randomnerdtutorials.com/)
- [51 STM32 Projects & Tutorials for Beginners and Up - Hackster.io](https://www.hackster.io/stm32/projects)
- [STM32 (STM32F103C8) Projects & Tutorials](https://circuitdigest.com/stm32-projects-and-tutorials)
- [ElectronicWings Projects](https://www.electronicwings.com/projects)
- [STM32 Firmware - Phil’s Lab (YouTube Playlist)](https://youtube.com/playlist?list=PLXSyc11qLa1a4Tqbz228dPZfMrs-KRpzA)
- [Raspberry Pi Based Embedded Project Ideas](https://www.rs-online.com/designspark/raspberry-pi-based-embedded-project-ideas)
- [Embedded Linux On ARM | Projects](https://www.emertxe.com/embedded-systems/embedded-linux-on-arm/elarm-projects/)
### ❓ Search and Ask Questions!
Use search engines to find the answers to your questions.
- [Google](https://www.google.com)
- [Bing](https://www.bing.com/)
- [DuckDuckGo](https://duckduckgo.com/)
#### 🎥 Courses and YouTube Contents
If you can't find what you're looking for using search engines, AI chatbots can also provide assistance. Keep in mind that AI may provide incorrect answers in some cases. It's best to confirm any answers with more reliable references.
- [Bing Chat](https://www.bing.com/chat)
- [Bard](https://bard.google.com)
- [ChatGPT](https://chat.openai.com)
- [Poe - Fast, Helpful AI Chat](https://poe.com)
If you have reservations about relying on AI advice alone, you can also ask real people your questions:
- [Electrical Engineering Stack Exchange](https://electronics.stackexchange.com/)
- [Reddit · r/embedded](https://www.reddit.com/r/embedded/)
### 🎥 Courses and YouTube Contents
You may have heard that YouTube is a university. And it's true - there is an immense amount of invaluable free content on embedded systems available on YouTube. You'll also find some excellent free courses through Coursera and EdX. Additionally, Udemy offers some high-quality paid course options.
- [DigiKey (YouTube Channel)](https://www.youtube.com/@digikey)
- [Coursera - Introduction to Embedded Systems Software and Development Environments](https://www.coursera.org/learn/introduction-embedded-systems)
- [Coursera - Embedded Software and Hardware Architecture](https://www.coursera.org/learn/embedded-software-hardware)
- [Fastbit Embedded Brain Academy](https://fastbitlab.com/)
- [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)
@@ -65,7 +102,38 @@ In the embedded industry, all job roles require some soft skills, which cannot b
- [edX - Embedded Systems - Shape The World: Microcontroller Input/Output](https://learning.edx.org/course/course-v1:UTAustinX+UT.6.10x+3T2022/home)
- [edX - Embedded Systems - Shape The World: Multi-Threaded Interfacing](https://www.edx.org/learn/computer-programming/the-university-of-texas-at-austin-embedded-systems-shape-the-world-multi-threaded-in)
#### 🛠️ IDEs
### 🕹️ 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](https://github.com/arduino/ArduinoCore-API) 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 should be able to effectively use industry-standard APIs and SDKs provided and approved by microcontroller vendors. For example, CMSIS for ARM Cortex, STM32Cube for STM32, ESP-IDF for Espressif microcontrollers, etc.
- [Getting Started with Arduino](https://docs.arduino.cc/learn/starting-guide/getting-started-arduino)
- [New Arduino Tutorials (YouTube Playlist)](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 (YouTube Playlist)](https://www.youtube.com/playlist?list=PLEBQazB0HUyQd6Fsf5NQ75M9llbi1_j_8)
### 👨‍🏫 Educational Websites
- [DeepBlueMbedded](https://deepbluembedded.com/)
- [💎 Interrupt Blog by Memfault](https://interrupt.memfault.com/blog/)
- [ElectronicWings - Hardware Developers Community](https://www.electronicwings.com/)
- [Microchip University](https://mu.microchip.com/)
- [Nordic Developer Academy](https://academy.nordicsemi.com/)
- [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)
- [ControllersTech](https://controllerstech.com/)
### 🗺️ Other Helpful Roadmaps
- [Embedded Artistry Beginners Roadmap](https://embeddedartistry.com/beginners/)
- [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)
- [FPGA / ASIC Engineering Roadmap](https://github.com/m3y54m/FPGA-ASIC-Roadmap)
### 🛠️ IDEs
- [Keil MDK & µVision](https://www.keil.com/)
- [IAR Embedded Workbench](https://www.iar.com)
@@ -74,14 +142,14 @@ In the embedded industry, all job roles require some soft skills, which cannot b
- [MPLAB® X IDE](https://www.microchip.com/en-us/tools-resources/develop/mplab-x-ide)
- [MCUXpresso IDE](https://www.nxp.com/design/software/development-software/mcuxpresso-software-and-tools-/mcuxpresso-integrated-development-environment-ide:MCUXpresso-IDE)
#### 👨‍💻 VS Code Extensions
### 👨‍💻 VS Code Extensions
- [Cortex-Debug](https://marketplace.visualstudio.com/items?itemName=marus25.cortex-debug)
- [STM32 VS Code Extension](https://marketplace.visualstudio.com/items?itemName=stmicroelectronics.stm32-vscode-extension)
- [Espressif IDF](https://marketplace.visualstudio.com/items?itemName=espressif.esp-idf-extension)
- [MCUXpresso for VS Code](https://marketplace.visualstudio.com/items?itemName=NXPSemiconductors.mcuxpresso)
##### PlatformIO
### 🐜 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.
@@ -89,52 +157,19 @@ PlatformIO is a cross-platform, cross-architecture, multiple framework, professi
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
## 📚 Learning Resources
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.
> [!WARNING]
> It is not necessary to read all the books, articles, or watch all the videos you see here. If you try to do so, you will finally get tired and disappointed. You cannot study all the available content here in a reasonable time because it may take years. It is important to study enough to have at least a basic understanding of the required topics. Of course, the more time you dedicate to studying and doing projects, the more profound your knowledge and expertise will become.
>
> Some of the resources mentioned here will just be used as references. Refer to them only when you need them.
Additionally, the [Arduino Core](https://github.com/arduino/ArduinoCore-API) 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.
- [Getting Started with Arduino](https://docs.arduino.cc/learn/starting-guide/getting-started-arduino)
- [New Arduino Tutorials (YouTube Playlist)](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 (YouTube Playlist)](https://www.youtube.com/playlist?list=PLEBQazB0HUyQd6Fsf5NQ75M9llbi1_j_8)
#### 👨‍🏫 Educational Websites
- [DeepBlueMbedded](https://deepbluembedded.com/)
- [Interrupt Blog by Memfault](https://interrupt.memfault.com/blog/)
- [Microchip University](https://mu.microchip.com/)
- [Nordic Developer Academy](https://academy.nordicsemi.com/)
- [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/)
#### ⚒️ Projects
- [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/)
#### 🗺️ 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 at least a basic understanding of the required topics. Of course, the more you study and practice, the more your knowledge will grow. This continuous learning process will gradually improve your skills and make you a better 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.
> [!TIP]
> **Symbols Guide:**
>
> 👶 indicates easy-to-understand and beginner-friendly resources. Refer to them if you do not have prior knowledge in a topic.
>
> 💎 indicates well-known references that have truly invaluable and comprehensive content. Refer to them if you want to deepen your understanding of a topic.
_________________
### Soft Skills
@@ -149,42 +184,48 @@ _________________
#### Basic Math & Calculus
- [Khan Academy - Calculus 1](https://www.khanacademy.org/math/calculus-1)
- [Calculus For Dummies - Mark Ryan](https://a.co/d/cyvZqE1)
- [👶 Calculus For Dummies - Mark Ryan](https://a.co/d/cyvZqE1)
- [💎 Thomas' Calculus](https://a.co/d/gFcCC37)
#### Principles of Electric Circuits
- [💎 Electronics Tutorials](https://www.electronics-tutorials.ws)
- [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)
- [Principles of Electric Circuits: Conventional Current Version - Thomas L Floyd, David M. Buchla](https://a.co/d/32T2t2X)
- [👶 Lessons in Electric Circuits (All About Circuits)](https://www.allaboutcircuits.com/textbook/)
- [👶 💎 Electronics Tutorials](https://www.electronics-tutorials.ws)
- [👶 💎 Fundamentals of Electric Circuits - Charles K. Alexander, Matthew Sadiku](https://www.amazon.com/dp/1260226409?ref_=cm_sw_r_cp_ud_dp_Q11YHXNY2BK530RQZC4S)
- [👶 💎 Principles of Electric Circuits: Conventional Current Version - Thomas L Floyd, David M. Buchla](https://a.co/d/32T2t2X)
- [💎 Basic Circuit Theory I (By Prof. Razavi) (YouTube Playlist)](https://www.youtube.com/playlist?list=PL9KyzjPFbwH37w22z-UHVEt37pdJHjZ7x)
#### Electronics Fundamentals
- [Electronic Basics - GreatScott! (YouTube Playlist)](https://youtube.com/playlist?list=PLAROrg3NQn7cyu01HpOv5BWo217XWBZu0)
- [Make: Electronics: Learning by Discovery - Charles Platt](https://a.co/d/fbRoM1R)
- [💎 Electronic Devices: Conventional Current Version - Thomas Floyd, David Buchla, Steven Wetterling](https://a.co/d/1dsS0vx)
- [Electronics Fundamentals: Circuits, Devices & Applications - Thomas L Floyd, David M. Buchla, Gary D. Snyder](https://a.co/d/4Ye5m8h)
- [Practical Electronics for Inventors - Paul Scherz, Simon Monk](https://a.co/d/1QfSN8j)
- [👶 Electronic Basics - GreatScott! (YouTube Playlist)](https://youtube.com/playlist?list=PLAROrg3NQn7cyu01HpOv5BWo217XWBZu0)
- [👶 Make: Electronics: Learning by Discovery - Charles Platt](https://a.co/d/fbRoM1R)
- [👶 💎 Electronic Devices: Conventional Current Version - Thomas Floyd, David Buchla, Steven Wetterling](https://a.co/d/1dsS0vx)
- [👶 💎 Electronics Fundamentals: Circuits, Devices & Applications - Thomas L Floyd, David M. Buchla, Gary D. Snyder](https://a.co/d/4Ye5m8h)
- [👶 Practical Electronics for Inventors - Paul Scherz, Simon Monk](https://a.co/d/1QfSN8j)
- [💎 The Art of Electronics - Paul Horowitz, Winfield Hill](https://artofelectronics.net/)
- [Here’s a Quick Way to Know about Major Electronic Components](https://www.elprocus.com/major-electronic-components/)
- [Encyclopedia of Electronic Components - Charles Platt](https://a.co/d/83cSiU7)
#### Digital Circuits & Logic Design
- [FPGA Fundamentals - Nandland](https://nandland.com/fpga-101/)
- [👶 Tiny Tapeout > Digital Design Guide](https://tinytapeout.com/digital_design/)
- [👶 FPGA Fundamentals - Nandland](https://nandland.com/fpga-101/)
- [💎 Digital Design - Morris Mano, Michael Ciletti](https://a.co/d/c3tBaoc)
- [Digital Fundamentals - Thomas L. Floyd](https://a.co/d/2lgJKNX)
- [👶 💎 Digital Design and Computer Architecture: ARM Edition - Sarah Harris, David Harris](https://a.co/d/4otoVvI)
- [👶 💎 Digital Design and Computer Architecture: RISC-V Edition - Sarah Harris, David Harris](https://a.co/d/61l7Jtb)
- [👶 Digital Fundamentals - Thomas L. Floyd](https://a.co/d/2lgJKNX)
#### Computer Architecture
- [💎 Computer Organization and Design: ARM Edition - David A. Patterson, John L. Hennessy](https://a.co/d/8YPUXG7)
- [💎 Digital Design and Computer Architecture: ARM Edition - Sarah Harris, David Harris](https://a.co/d/4otoVvI)
- [Digital Design and Computer Architecture: RISC-V Edition - Sarah Harris, David Harris](https://a.co/d/61l7Jtb)
- [👶 💎 Computer Organization and Design: ARM Edition - David A. Patterson, John L. Hennessy](https://a.co/d/8YPUXG7)
- [👶 💎 Digital Design and Computer Architecture: ARM Edition - Sarah Harris, David Harris](https://a.co/d/4otoVvI)
- [👶 💎 Digital Design and Computer Architecture: RISC-V Edition - Sarah Harris, David Harris](https://a.co/d/61l7Jtb)
- [Computer Organization and Embedded Systems - Carl Hamacher, Zvonko Vranesic, Safwat Zaky, Naraig Manjikian](https://a.co/d/2lt4Svf)
- [Embedded Systems Architecture - Tammy Noergaard](https://www.oreilly.com/library/view/embedded-systems-architecture/9780123821966/)
- [The Definitive Guide to ARM® Cortex®-M0 and Cortex-M0+ Processors - Joseph Yiu](https://www.oreilly.com/library/view/the-definitive-guide/9780128032787/)
- [The Definitive Guide to ARM® Cortex®-M3 and Cortex®-M4 Processors - Joseph Yiu](https://www.oreilly.com/library/view/the-definitive-guide/9780124080829/)
- [Build an 8-bit computer from scratch](https://eater.net/8bit/)
- [Embedded Systems Architecture - Daniele Lacamera](https://www.packtpub.com/product/embedded-systems-architecture-second-edition/9781803239545)
_________________
@@ -192,8 +233,8 @@ _________________
#### 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)
- [👶 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 / Protocol Analyzer
@@ -201,9 +242,9 @@ _________________
#### 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)
- [👶 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)
- [Understanding EMI Debugging with Oscilloscopes](https://www.youtube.com/watch?v=x1rn5YNLmVw)
_________________
@@ -212,35 +253,36 @@ _________________
#### Breadboarding
- [Everything You Need to Know about Breadboards](https://www.youtube.com/watch?v=mE33WpRWrXs)
- [How to Use a Breadboard](https://youtu.be/6WReFkfrUIk)
- [👶 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
- [👶 💎 Hardware Design - Phil’s Lab (YouTube Playlist)](https://www.youtube.com/playlist?list=PLXSyc11qLa1YhVCZ5xWPuPsE5MkgEy5TF)
- [Electronic Circuit Design - IFE - TU Graz (YouTube Playlist)](https://www.youtube.com/playlist?list=PLLpZ1DoEuR9tbV8r8bMSI94znm6pRB905)
- [Hardware Design - Phil’s Lab (YouTube Playlist)](https://www.youtube.com/playlist?list=PLXSyc11qLa1YhVCZ5xWPuPsE5MkgEy5TF)
- [Microcontroller-Based Hardware Design With Altium Designer (YouTube Playlist)](https://www.youtube.com/playlist?list=PL3aaAq2OJU5HcbClqrOhqBDozF7HmxV-s)
#### PCB Design
- [Altium Academy YouTube Channel](https://www.youtube.com/@AltiumAcademy)
- [Robert Feranec YouTube Channel](https://www.youtube.com/@RobertFeranec)
- [Altium Tutorials for Beginners - Robert Feranec (YouTube Playlist)](https://www.youtube.com/playlist?list=PLXvLToQzgzdduBaD4horowdWgcG5uGUW4)
- [Create PCBs for Rapid Prototyping - DigiKey (YouTube Playlist)](https://www.youtube.com/playlist?list=PLEBQazB0HUyRVK1RpHIjyjuTxn5srz6XM)
- [👶 Altium Tutorials for Beginners - Robert Feranec (YouTube Playlist)](https://www.youtube.com/playlist?list=PLXvLToQzgzdduBaD4horowdWgcG5uGUW4)
- [👶 Create PCBs for Rapid Prototyping - DigiKey (YouTube Playlist)](https://www.youtube.com/playlist?list=PLEBQazB0HUyRVK1RpHIjyjuTxn5srz6XM)
- [How to Make a Raspberry Pi Compute Module 4 Carrier Board - DigiKey (YouTube Playlist)](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 - DigiKey (YouTube Playlist)](https://www.youtube.com/watch?v=vaCVh2SAZY4&list=PLEBQazB0HUyR24ckSZ5u05TZHV9khgA1O)
- [👶 KiCad 6 STM32 PCB Design Full Tutorial - Phil's Lab #65](https://youtu.be/aVUqaB0IMh4)
- [👶 Intro to KiCad - DigiKey (YouTube Playlist)](https://www.youtube.com/watch?v=vaCVh2SAZY4&list=PLEBQazB0HUyR24ckSZ5u05TZHV9khgA1O)
- [PCB Design for EMI & SI - Phil's Lab #64](https://www.youtube.com/watch?v=VtzPL8wQ8-E)
- [PCB Design for Advanced Users (YouTube Playlist)](https://youtube.com/playlist?list=PL3aaAq2OJU5EWfYT_Z93tc9pBF_Sidba_)
- [9 Simple Tricks to Improve EMC / EMI on Your Boards - Practical examples (with Min Zhang)](https://www.youtube.com/watch?v=Lf51sx6sC0I)
- [Many EMC Tips to Help You Design Better PCB Boards (with Keith Armstrong)](https://www.youtube.com/watch?v=gHF5JyJF-N4)
- [LearnEMC - EMC Resources](https://learnemc.com/emc-resources)
#### 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 - 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)
@@ -249,10 +291,11 @@ _________________
### FPGA Design
- [FPGA / ASIC Engineering Roadmap](https://github.com/m3y54m/FPGA-ASIC-Roadmap)
- [What are FPGAs?](https://hackaday.io/project/27550-the-hobbyists-guide-to-fpgas/log/68114-what-are-fpgas)
- [FPGA vs. Microcontroller: How to choose the right one for your project](https://www.youtube.com/watch?v=jblpHUCPQYs)
- [Introduction to FPGA (YouTube Playlist)](https://youtube.com/playlist?list=PLEBQazB0HUyT1WmMONxRZn9NmQ_9CIKhb)
- [FPGA Fundamentals - Nandland](https://nandland.com/fpga-101/)
- [Tiny Tapeout: from idea to chip design in minutes!](https://tinytapeout.com/)
- [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/)
@@ -271,12 +314,12 @@ _________________
- [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)
- [Jira](https://confluence.atlassian.com/jira)
- [Jira - Issue & Project Tracking Software](https://confluence.atlassian.com/jira)
#### V-Model (V-cycle)
- [What Is the V-Model in Software Development?](https://builtin.com/software-engineering-perspectives/v-model)
- [What Is the V Model and How Can It Improve Your Development?](https://www.indeed.com/career-advice/career-development/v-model)
- [What is the V model for software development](https://x-engineer.org/v-model-software-development/)
- [V Model In Software Engineering: Ultimate Guideline](https://biplus.com.vn/v-model-in-software-engineering/)
_________________
@@ -284,7 +327,7 @@ _________________
#### Algorithms & Data Structures
- [💎 Grokking Algorithms - Aditya Y. Bhargava](https://www.manning.com/books/grokking-algorithms)
- [👶 💎 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/)
- [Collection of various algorithms in mathematics, machine learning, computer science, physics, etc implemented in C for educational purposes](https://github.com/TheAlgorithms/C)
- [Udemy – Embedded Systems State Machines & Data Structures](https://www.udemy.com/course/embedded-systems-state-machines-data-structures-like-a-pro/)
@@ -293,11 +336,13 @@ _________________
#### Design Patterns
- [Practical Design Patterns: Opaque Pointers and Objects in C](https://interrupt.memfault.com/blog/opaque-pointers)
- [💎 Design Patterns for Embedded Systems in C - Bruce Powel Douglass](https://www.oreilly.com/library/view/design-patterns-for/9781856177078/)
- [Making Embedded Systems: Design Patterns for Great Software - Elecia White](https://www.oreilly.com/library/view/making-embedded-systems/9781449308889/)
- [💎 Making Embedded Systems: Design Patterns for Great Software - Elecia White](https://www.oreilly.com/library/view/making-embedded-systems/9781449308889/)
#### State Machines / UML
- [Programming embedded systems the easy way – with state machines](https://www.embedded.com/programming-embedded-systems-the-easy-way-with-state-machines/)
- [State Machines (YouTube Playlist)](https://www.youtube.com/playlist?list=PLPW8O6W-1chxym7TgIPV9k5E8YJtSBToI)
- [Event-Driven Programming (YouTube Playlist)](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/)
@@ -305,7 +350,9 @@ _________________
#### Memory Management
- [Understanding the C runtime memory model](https://www.youtube.com/watch?v=3F3lp_F2YpQ)
- [Pointers and dynamic memory - stack vs heap](https://www.youtube.com/watch?v=_8-ht2AKyH4)
- [Dynamic Memory Allocation | C Programming Tutorial](https://www.youtube.com/watch?v=R0qIYWo8igs)
- [Dynamic memory allocation in C - malloc calloc realloc free](https://www.youtube.com/watch?v=xDVC3wKjS64&t=140s)
- [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/)
_________________
@@ -314,40 +361,65 @@ _________________
#### C
- [W3Schools C Tutorial](https://www.w3schools.com/c/index.php)
- [C Programming for Beginners | Full Course](https://www.youtube.com/watch?v=ssJY5MDLjlo)
- [👶 W3Schools C Tutorial](https://www.w3schools.com/c/index.php)
- [👶 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)
- [Embedded C Coding Standard](https://barrgroup.com/embedded-systems/books/embedded-c-coding-standard)
- [newlib C Library Documentation](https://sourceware.org/newlib/docs.html)
- [The GNU C Library (glibc)](https://www.gnu.org/software/libc/documentation.html)
- [From Zero to main(): Bare metal C](https://interrupt.memfault.com/blog/zero-to-main-1)
- [From Zero to main(): Bootstrapping libc with Newlib](https://interrupt.memfault.com/blog/boostrapping-libc-with-newlib)
#### C++
- [Modern C++ in Embedded Development: (Don't Fear) The ++](https://www.embeddedrelated.com/showarticle/1532.php)
- [C++ On Embedded Systems](https://blog.mbedded.ninja/programming/languages/c-plus-plus/cpp-on-embedded-systems/)
- [C++ Tutorial for Beginners - Full Course](https://www.youtube.com/watch?v=vLnPwxZdW4Y)
- [👶 C++ Tutorial for Beginners - Full Course](https://www.youtube.com/watch?v=vLnPwxZdW4Y)
- [C++ by The Cherno (YouTube Playlist)](https://youtube.com/playlist?list=PLlrATfBNZ98dudnM48yfGUldqGD0S4FFb)
- [Effective Modern C++ - Scott Meyers](https://www.oreilly.com/library/view/effective-modern-c/9781491908419/)
#### Assembly
- [👶 Introduction to ARM Assembly Basics](https://azeria-labs.com/writing-arm-assembly-part-1/)
- [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)
- [How to Use Inline Assembly Language in C Code](https://gcc.gnu.org/onlinedocs/gcc/extensions-to-the-c-language-family/how-to-use-inline-assembly-language-in-c-code.html)
#### Python
- [Real Python: Python Tutorials](https://realpython.com/)
- [Python Crash Course - Eric Matthes](https://a.co/d/hSMTJwE)
- [Python for embedded systems testing](https://www.elsys-design.com/en/python-embedded-systems-testing/)
- [👶 The Python Handbook – Learn Python for Beginners](https://www.freecodecamp.org/news/the-python-handbook/)
- [💎 Real Python: Python Tutorials](https://realpython.com/)
- [👶 💎 Python Crash Course - Eric Matthes](https://a.co/d/hSMTJwE)
##### Python for Microcontrollers
- [MicroPython - Python for microcontrollers](https://micropython.org/)
- [MicroPython 101 | Arduino Documentation](https://docs.arduino.cc/micropython-course/)
- [CircuitPython](https://circuitpython.org/)
- [The Pros and Cons of Designing Embedded Systems with MicroPython](https://www.designnews.com/electronics-test/pros-and-cons-designing-embedded-systems-micropython)
#### Rust
- [5 roadblocks to Rust adoption in embedded systems](https://www.embedded.com/5-roadblocks-to-rust-adoption-in-embedded-systems/)
- [The Embedded Rust Book](https://docs.rust-embedded.org/book/)
- [The Future of Programming: Rust (YouTube Playlist)](https://www.youtube.com/playlist?list=PLc7W4b0WHTAUAEAguiqpNa5H0QqXJIJI6)
- [Community Rust support projects for STM32 microcontrollers](https://github.com/stm32-rs)
- [Rust on ESP Community](https://github.com/esp-rs)
- [Rust on STM32: Getting started](https://jonathanklimt.de/electronics/programming/embedded-rust/rust-on-stm32-2/)
- [From Zero to main(): Bare metal Rust](https://interrupt.memfault.com/blog/zero-to-main-rust-1)
- [Writing an OS in Rust - Philipp Oppermann's blog](https://os.phil-opp.com/)
- [Kernel Driver with Rust in 2022](https://not-matthias.github.io/posts/kernel-driver-with-rust/)
#### Zig
- [Testing Zig for embedded development](https://www.kuon.ch/post/2022-06-22-zig-embed/)
- [Zig Embedded Group](https://github.com/ZigEmbeddedGroup)
- [MicroZig - Unified abstraction layer and HAL for several microcontrollers](https://github.com/ZigEmbeddedGroup/microzig)
- [Zig Bare Metal Programming on STM32F103 — Booting up](https://maldus512.medium.com/zig-bare-metal-programming-on-stm32f103-booting-up-b0ecdcf0de35)
_________________
@@ -356,9 +428,11 @@ _________________
#### GCC & Make
- [GCC and Make - Compiling, Linking and Building C/C++ Applications](https://www3.ntu.edu.sg/home/ehchua/programming/cpp/gcc_make.html)
- [A Shallow Dive into GNU Make](https://interrupt.memfault.com/blog/gnu-make-guidelines#a-shallow-dive-into-gnu-make)
- [The Best and Worst GCC Compiler Flags For Embedded](https://interrupt.memfault.com/blog/best-and-worst-gcc-clang-compiler-flags)
- [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)
- [From Zero to main(): Demystifying Firmware Linker Scripts](https://interrupt.memfault.com/blog/how-to-write-linker-scripts-for-firmware)
- [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
@@ -373,15 +447,18 @@ _________________
#### Docker
- [Docker Docs](https://docs.docker.com/get-started/)
- [Docker Cheat Sheet](https://dockerlabs.collabnix.com/docker/cheatsheet/)
- [👶 Docker for Dummies](https://dev.to/stevenmcgown/docker-for-dummies-2bff)
- [Introduction to Docker for the Embedded Developer](https://www.youtube.com/watch?v=Fz7ou-VBk-w)
- [Intro to CI/CD Part 1: Getting Started with Docker | Digi-Key Electronics](https://youtu.be/1nxGcfIm-TU)
- [A Modern C Development Environment](https://interrupt.memfault.com/blog/a-modern-c-dev-env)
_________________
### Version Control
#### Git
- [Git Tutorial for Beginners: Learn Git in 1 Hour](https://www.youtube.com/watch?v=8JJ101D3knE)
- [👶 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)
@@ -395,22 +472,23 @@ _________________
- [What Is a Microcontroller? The Defining Characteristics and Architecture of a Common Component](https://www.allaboutcircuits.com/technical-articles/what-is-a-microcontroller-introduction-component-characteristics-component/)
- [How to Choose the Right Microcontroller for Your Application ](https://www.allaboutcircuits.com/technical-articles/how-to-choose-the-right-microcontroller-for-your-application/)
- [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/)
- [👶 Make: AVR Programming - Elliot Williams](https://www.oreilly.com/library/view/make-avr-programming/9781449356484/)
- [👶 💎 NewbieHack - Microcontroller Tutorial - A Beginners Guide (AVR)](https://www.youtube.com/playlist?list=PLE72E4CFE73BD1DE1)
- [👶 Getting Started with STM32 and Nucleo (YouTube Playlist)](https://youtube.com/playlist?list=PLEBQazB0HUyRYuzfi4clXsKUSgorErmBv)
- [💎 Mastering STM32 - Carmine Noviello](https://leanpub.com/mastering-stm32-2nd)
- [👶 Intro to Raspberry Pi Pico and RP2040 (YouTube Playlist)](https://www.youtube.com/playlist?list=PLEBQazB0HUyQO6rJxKr2umPCgmfAU-cqR)
- [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)
- [Bare Metal Embedded Programming: Theory and Practice Using STM32 (YouTube Playlist)](https://www.youtube.com/playlist?list=PL4cGeWgaBTe155QQSQ72DksLIjBn5Jn2Z)
- [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 (YouTube Playlist)](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/)
- [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)
- [💎 Embedded Systems Design using the MSP430FR2355 LaunchPad - Brock J. LaMeres](https://link.springer.com/book/10.1007/978-3-030-40574-8)
- [💎 Building Embedded Systems: Programmable Hardware - Changyi Gu](https://link.springer.com/book/10.1007/978-1-4842-1919-5)
- [Awesome Embedded: A curated list of awesome embedded programming](https://github.com/nhivp/Awesome-Embedded)
#### GPIO
@@ -446,6 +524,7 @@ _________________
#### Watchdog
- [A Guide to Watchdog Timers for Embedded Systems](https://interrupt.memfault.com/blog/firmware-watchdog-best-practices)
- [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)
@@ -459,6 +538,7 @@ _________________
#### DMA
- [Introduction to Direct Memory Access (DMA)](https://www.youtube.com/watch?v=M16l_ymlfcs)
- [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)
@@ -491,12 +571,19 @@ _________________
- [A Guide to MISRA C Coding Standards - MISRA C and MISRA C++](https://www.perforce.com/resources/qac/misra-c-cpp)
- [A Firmware Development Standard by Jack Ganssle](http://www.ganssle.com/fsm.htm)
- [Safety-critical Embedded systems: How to prepare for software development](https://www.nagarro.com/en/blog/embedded-software-development-safety-critical-systems)
- [IEC 61508 - Functional safety of electrical/electronic/programmable electronic safety-related systems](https://webstore.iec.ch/publication/5515)
- [DO-178C - Software Considerations in Airborne Systems and Equipment Certification](https://en.wikipedia.org/wiki/DO-178C)
#### AUTOSAR Architecture
- [AUTOSAR Basics | AUTOSAR Tutorial | Architecture | Automotive](https://www.youtube.com/watch?v=7b5BY1IAfwY)
- [Introduction to AUTOSAR](https://www.youtube.com/watch?v=NfZI8wvgZPo)
_________________
### Simulation / Emulation Tools
- [Wokwi - Online ESP32, STM32, Arduino Simulator](https://wokwi.com/)
- [👶 Wokwi - Online ESP32, STM32, Arduino Simulator](https://wokwi.com/)
#### [QEMU](https://www.qemu.org/)
@@ -534,6 +621,7 @@ _________________
##### I2C
- [Understanding I2C](https://www.youtube.com/watch?v=CAvawEcxoPU)
- [I2C in a Nutshell](https://interrupt.memfault.com/blog/i2c-in-a-nutshell)
- [STM32 I2C SLAVE (YouTube Playlist)](https://www.youtube.com/playlist?list=PLfIJKC1ud8gj_P7Qb28aTr0t92uk_vwg0)
##### SPI
@@ -550,6 +638,7 @@ _________________
##### I3C
- [What is I3C®?](https://www.youtube.com/watch?v=g3TBNHec5Ec)
- [MIPI I3C & MIPI I3C Basic](https://www.mipi.org/specifications/i3c-sensor-specification)
- [I3C Protocol: Understanding and Debug](https://prodigytechno.com/mipi-i3c-protocol-debug/)
- [MIPI I3C Basic - The next generation sensor interface enabling low-power IoT applications](https://www.youtube.com/watch?v=xWKxZp_9RFQ)
@@ -559,11 +648,18 @@ _________________
- [1-Wire® Technology Overview](https://www.youtube.com/watch?v=CjH-OztKe00)
#### Audio Protocols
#### Digital Audio Protocols
##### I2S
- [Introduction to the I2S Interface](https://www.allaboutcircuits.com/technical-articles/introduction-to-the-i2s-interface/)
- [Building a Digital Music Player with I2S?! What is I2S! EB#45](https://www.youtube.com/watch?v=qNLvoSQCx60)
- [UM11732 - I2S bus specification](https://www.nxp.com/docs/en/user-manual/UM11732.pdf)
##### PCM
- [HUAWEI LGA Module - PCM Audio Design Guide](https://www.paoli.cz/out/media/HUAWEI%20LGA%20Module%20PCM%20Audio%20Design%20Guide-V100R001_04(1).pdf)
- [PCM Terminology and Concepts](https://larsimmisch.github.io/pyalsaaudio/terminology.html)
#### Image & Video Protocols
@@ -582,6 +678,8 @@ _________________
##### Bluetooth / BLE
- [Bluetooth Basics](https://learn.sparkfun.com/tutorials/bluetooth-basics/all)
- [Bluetooth Low Energy: A Primer](https://interrupt.memfault.com/blog/bluetooth-low-energy-a-primer)
- [A Practical Guide to BLE Throughput](https://interrupt.memfault.com/blog/ble-throughput-primer)
- [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)
@@ -594,9 +692,13 @@ _________________
- [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/)
##### LoRa
##### LoRa / LoRaWAN
- [The Arduino Guide to LoRa® and LoRaWAN®](https://docs.arduino.cc/learn/communication/lorawan-101)
- [💎 The Things Fundamentals on LoRaWAN!](https://www.thethingsnetwork.org/docs/lorawan/)
- [What are LoRa® and LoRaWAN®?](https://lora-developers.semtech.com/documentation/tech-papers-and-guides/lora-and-lorawan/)
- [#112 LoRa / LoRaWAN De-Mystified / Tutorial](https://www.youtube.com/watch?v=hMOwbNUpDQA)
- [ESP32 with LoRa using Arduino IDE – Getting Started](https://randomnerdtutorials.com/esp32-lora-rfm95-transceiver-arduino-ide/)
##### Zigbee
@@ -667,7 +769,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 Protocols
#### Network Protocols / Socket Programming
- [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)
@@ -675,6 +777,7 @@ _________________
- [UDP doesn't suck! It's the BEST L4 protocol for THESE types of applications...](https://www.youtube.com/watch?v=LaDRWycC7Iw)
- [Networking tutorial - Ben Eater (YouTube Playlist)](https://www.youtube.com/playlist?list=PLowKtXNTBypH19whXTVoG3oKSuOcw_XeW)
- [💎 Hands-On Network Programming with C - Lewis Van Winkle](https://www.amazon.com/exec/obidos/ASIN/1789349869/aoeu-20)
- [💎 Network Algorithmics - George Varghese, Jun Xu](https://www.oreilly.com/library/view/network-algorithmics-2nd/9780128099865/)
- [tcpdump & libpcap libraries](https://www.tcpdump.org/)
- [lwIP - A Lightweight TCP/IP stack](https://savannah.nongnu.org/projects/lwip/)
- [lwIP (ESP-IDF)](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/lwip.html)
@@ -692,7 +795,7 @@ _________________
_________________
### Memories
### Memory Technologies
- [Memory Options for Embedded Systems: How to Select the Right Memory Configuration](https://www.qt.io/embedded-development-talk/memory-options-for-embedded-systems-how-to-select-the-right-memory-configuration)
@@ -725,6 +828,8 @@ _________________
### Sensors & Actuators
- [💎 Coursera - Embedding Sensors and Motors Specialization](https://www.coursera.org/specializations/embedding-sensors-motors)
#### Sensors
- [Calibrating Sensors](https://learn.adafruit.com/calibrating-sensors)
@@ -752,21 +857,28 @@ _________________
#### Operating System Fundamentals
- [Putting the “You” in CPU](https://cpu.land/)
- [👶 Putting the “You” in CPU](https://cpu.land/)
- [👶 The little book about OS development](https://littleosbook.github.io/)
- [👶 Operating Systems: From 0 to 1](https://github.com/tuhdo/os01/blob/master/Operating_Systems_From_0_to_1.pdf)
- [💎 Operating Systems: Three Easy Pieces - Remzi H Arpaci-Dusseau, Andrea C Arpaci-Dusseau](https://pages.cs.wisc.edu/~remzi/OSTEP/)
- [Modern Operating Systems - Andrew S. Tanenbaum, Herbert Bos](https://www.pearson.com/en-us/subject-catalog/p/modern-operating-systems/P200000003295)
- [💎 Modern Operating Systems - Andrew S. Tanenbaum, Herbert Bos](https://www.pearson.com/en-us/subject-catalog/p/modern-operating-systems/P200000003295)
- [Writing an OS in Rust - Philipp Oppermann's blog](https://os.phil-opp.com/)
#### Embedded Linux
- [FreeRTOS vs Linux for Embedded Systems](https://www.bytesnap.com/news-blog/freertos-vs-linux-embedded-systems/)
- [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 Basics (LPIC 1)](https://linux1st.com/)
- [👶 Introduction to Embedded Linux (YouTube Playlist)](https://youtube.com/playlist?list=PLEBQazB0HUyTpoJoZecRK6PpDG31Y7RPB)
- [Mastering Embedded Linux Series - George Hilliard's blog](https://www.thirtythreeforty.net/series/mastering-embedded-linux/)
- [💎 Mastering Embedded Linux Programming - Chris Simmonds](https://www.packtpub.com/product/mastering-embedded-linux-programming-third-edition/9781789530384)
- [💎 Coursera - Advanced Embedded Linux Development Specialization](https://www.coursera.org/specializations/advanced-embedded-linux-development)
- [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
- [👶 Writing a Simple Linux Kernel Module](https://blog.sourcerer.io/writing-a-simple-linux-kernel-module-d9dc3762c234)
- [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)
@@ -775,7 +887,9 @@ _________________
##### Linux Device Drivers
- [💎 Linux Device Drivers - Jonathan Corbet, Alessandro Rubini, Greg Kroah-Hartman](https://lwn.net/Kernel/LDD3/)
- [The Linux Kernel Module Programming Guide](https://sysprog21.github.io/lkmpg/)
- [Mastering Linux Device Driver Development - John Madieu](https://www.packtpub.com/product/mastering-linux-device-driver-development/9781789342048)
- [Kernel Driver with Rust in 2022](https://not-matthias.github.io/posts/kernel-driver-with-rust/)
##### U-Boot
@@ -785,11 +899,14 @@ _________________
- [Buildroot Documentation](https://buildroot.org/docs.html)
- [Introduction to Embedded Linux Part 1 - Buildroot | Digi-Key Electronics](https://www.youtube.com/watch?v=9vsu67uMcko)
- [https://rickcarlino.com/2021/building-tiny-raspberry-pi-linux-images-with-buildroot.html](https://rickcarlino.com/2021/building-tiny-raspberry-pi-linux-images-with-buildroot.html)
##### Yocto
- [Yocto Project Quick Build](https://docs.yoctoproject.org/brief-yoctoprojectqs/index.html)
- [💎 Yocto Project Documentation](https://docs.yoctoproject.org/index.html)
- [Introduction to Embedded Linux Part 2 - Yocto Project | Digi-Key Electronics](https://www.youtube.com/watch?v=2-PwskQrZac&t=7s)
- [Build Linux Image for Raspberry Pi board using Yocto Project](https://tutorialadda.com/yocto/create-your-own-linux-image-for-the-raspberry-pi-board-using-yocto-project)
- [Yocto Project Tutorial Series (Basic to Advance) (YouTube Playlist)](https://www.youtube.com/playlist?list=PLwqS94HTEwpQmgL1UsSwNk_2tQdzq3eVJ)
- [Udemy – Embedded Linux using Yocto](https://www.udemy.com/course/embedded-linux-using-yocto/)
- [💎 Embedded Linux Systems with the Yocto Project - Rudolf J.Streif](https://www.oreilly.com/library/view/embedded-linux-systems/9780133443301/)
@@ -807,12 +924,13 @@ _________________
- [CUDA C++ Programming Guide](https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html)
- [C++ Concurrency in Action - Anthony Williams](https://www.manning.com/books/c-plus-plus-concurrency-in-action)
##### Inter Process Communication (IPC)
##### Inter-Process Communication (IPC)
- [Inter Process Communication (IPC)](https://www.scaler.com/topics/operating-system/inter-process-communication-in-os/)
- [What Is Inter-Process Communication In Linux?](https://www.scaler.com/topics/ipc-in-linux/)
- [Udemy – Linux Inter Process Communication (IPC) from Scratch in C](https://www.udemy.com/course/linuxipc/)
- [Udemy – Multi-Threading and IPC with Qt 5 C++](https://www.udemy.com/course/multi-threading-and-ipc-with-qt-c-plus-plus/)
- [D-Bus Tutorial](https://dbus.freedesktop.org/doc/dbus-tutorial.html)
##### Qt Framework
@@ -829,14 +947,17 @@ _________________
- [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)
- [RTOS Fundamentals](https://www.freertos.org/implementation/a00002.html)
- [A Simple Scheduler via an Interrupt-driven Actor Model](https://interrupt.memfault.com/blog/hardware-actor-scheduler)
- [ARM Cortex-M RTOS Context Switching](https://interrupt.memfault.com/blog/cortex-m-rtos-context-switching)
- [RTOS (YouTube Playlist)](https://www.youtube.com/playlist?list=PLPW8O6W-1chyrd_Msnn4LD6LBs2slJITs)
- [Beyond the RTOS (YouTube Playlist)](https://www.youtube.com/playlist?list=PLPW8O6W-1chytjkg63-tM7MI0BvGxxPIP)
##### FreeRTOS
- [FreeRTOS - Market leading RTOS](https://www.freertos.org)
- [Introduction to RTOS (YouTube Playlist)](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)
- [👶 Introduction to RTOS (YouTube Playlist)](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)
- [👶 FreeRTOS Simplified: A Beginner's Guide to Develop and Debug FreeRTOS Applications](https://mu.microchip.com/freertos-simplified)
- [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)
@@ -934,17 +1055,23 @@ _________________
### Debugging
- [Using Asserts in Embedded Systems](https://interrupt.memfault.com/blog/asserts-in-embedded-systems)
#### JTAG / SWD
- [A Deep Dive into ARM Cortex-M Debug Interfaces](https://interrupt.memfault.com/blog/a-deep-dive-into-arm-cortex-m-debug-interfaces)
- [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
- [Advanced GDB Usage](https://interrupt.memfault.com/blog/advanced-gdb)
- [How do breakpoints even work?](https://interrupt.memfault.com/blog/cortex-m-breakpoints)
- [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)
- [Introduction to ARM Semihosting](https://interrupt.memfault.com/blog/arm-semihosting)
#### OpenOCD
@@ -958,14 +1085,20 @@ _________________
- [Embedded Testing](https://artoftesting.com/embedded-testing)
- [What is Embedded Testing in Software Testing?](https://www.guru99.com/embedded-software-testing.html)
- [Verification vs Validation in Embedded Software](https://www.parasoft.com/blog/verification-vs-validation-in-embedded-software/)
- [Testing: Unit VS Integration VS Regression VS Acceptance](https://medium.com/@touseefmurtaza1993/testing-unit-vs-integration-vs-regression-vs-acceptance-a3e190cc54dd)
#### Test Driven Development (TDD)
- [💎 Test Driven Development for Embedded C - James Grenning](https://www.amazon.com/Driven-Development-Embedded-Pragmatic-Programmers/dp/193435662X)
- [Testing: Unit VS Integration VS Regression VS Acceptance](https://medium.com/@touseefmurtaza1993/testing-unit-vs-integration-vs-regression-vs-acceptance-a3e190cc54dd)
- [Firmware Testing with Renode and GitHub Actions](https://interrupt.memfault.com/blog/test-automation-renode)
- [Balancing Test Coverage vs. Overhead](https://interrupt.memfault.com/blog/testing-vs-overhead)
#### Unit Testing
- [Embedded C/C++ Unit Testing Basics](https://interrupt.memfault.com/blog/unit-testing-basics)
- [Embedded C/C++ Unit Testing with Mocks](https://interrupt.memfault.com/blog/unit-test-mocking)
- [Unit Testing for C (especially Embedded Software)](http://www.throwtheswitch.org/unity)
- [GoogleTest - Google Testing and Mocking Framework](https://github.com/google/googletest)
- [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
@@ -980,11 +1113,14 @@ _________________
- [Intro to CI/CD Part 1: Getting Started with Docker | Digi-Key Electronics](https://youtu.be/1nxGcfIm-TU)
- [Intro to CI/CD Part 2: Getting Started with GitHub Actions | Digi-Key Electronics](https://youtu.be/8pyqbYDYkRs)
- [How to Build a Continuous Integration and Delivery Process for Embedded Software](https://medium.com/jumperiot/how-to-build-a-continuous-integration-and-delivery-flow-for-embedded-software-b0b5bf220a2)
- [A guide to continuous delivery in embedded development](https://www.embedded.com/a-guide-to-continuous-delivery-in-embedded-development/)
- [Continuous Delivery for Embedded Systems • Mike Long • GOTO 2015](https://www.youtube.com/watch?v=DcFe6cEvnGQ)
- [Continuous Integration & Continuous Delivery for Embedded Systems (Whitepaper)](https://www.parasoft.com/white-paper/ci-cd-for-embedded-systems/)
- [What is DevOps in an Embedded Device Company?](https://www.linkedin.com/pulse/what-devops-embedded-device-company-john-macdonald/)
#### SIL / HIL Testing
- [Hardware-in-Loop and Software-in-Loop Testing](https://roboticsknowledgebase.com/wiki/system-design-development/In-Loop-Testing/)
- [Embedded CI/CD with HIL Testing (YouTube Playlist)](https://youtube.com/playlist?list=PL4cGeWgaBTe1uwiqIAc6fwPzPpvgPZI2J)
#### Industry Standards & Certifications
@@ -992,6 +1128,8 @@ _________________
- [Intro to Embedded Development: Styles and Standards](https://www.allaboutcircuits.com/technical-articles/embedded-programming-styles-and-standards/)
- [Safety Standards and Certifications for Embedded Systems Development](https://www.linkedin.com/pulse/safety-standards-certifications-embedded-systems-development/)
- [Microchip University - An Introduction To The ISA/IEC 62443 Standard](https://mu.microchip.com/an-introduction-to-the-isaiec-62443-standard)
- [ISO 26262-1:2018 - Road vehicles - Functional safety](https://www.iso.org/standard/68383.html)
- [Exploring EMC Basics & Standards](https://www.youtube.com/watch?v=duhBkhlH-WY)
_________________
@@ -1003,7 +1141,7 @@ _________________
#### AI & ML Basics
- [A beginner's guide to artificial intelligence and machine learning](https://developer.ibm.com/articles/cc-beginner-guide-machine-learning-ai-cognitive/)
- [Introduction to Machine Learning for Coders!](https://course18.fast.ai/ml)
- [👶 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 Lite
@@ -1014,8 +1152,8 @@ _________________
#### tinyML
- [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)
- [👶 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)
- [Coursera - Introduction to Embedded Machine Learning](https://www.coursera.org/learn/introduction-to-embedded-machine-learning)
- [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)
@@ -1030,6 +1168,12 @@ _________________
- [Embedded Systems Security and TrustZone](https://embeddedsecurity.io/)
#### Hardware Hacking
- [💎 Practical Hardware Pentesting - Jean-Georges Valle](https://a.co/d/dq4SeNH)
- [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)
#### Cryptography
- [Microchip University - Cryptography Primer](https://mu.microchip.com/cryptography-primer)
@@ -1049,6 +1193,8 @@ _________________
#### Secure Boot & Secure Firmware Update
- [Device Firmware Update Cookbook](https://interrupt.memfault.com/blog/device-firmware-update-cookbook)
- [Saving bandwidth with delta firmware updates](https://interrupt.memfault.com/blog/ota-delta-updates)
- [AVR231: AES Bootloader](https://www.microchip.com/en-us/application-notes/an2462)
- [Blinky To Bootloader: Bare Metal Programming Series (YouTube Playlist)](https://www.youtube.com/playlist?list=PLP29wDx6QmW7HaCrRydOnxcy8QmW0SNdQ)
- [MOOC - Security Part4 : STM32 security in practice (YouTube Playlist)](https://youtube.com/playlist?list=PLnMKNibPkDnF0wt-ZI74SflnsBV4yKzkO)
@@ -1057,18 +1203,15 @@ _________________
- [TPM (Trusted Platform Module) - Computerphile](https://www.youtube.com/watch?v=RW2zHvVO09g)
- [Securing Embedded Linux Systems with TPM 2.0 - Philip Tricca, Intel](https://www.youtube.com/watch?v=0qu9R7Tlw9o)
- [TPM: Basic applications to embedded devices](https://witekio.com/blog/tpm-basic-applications-to-embedded-devices/)
- [OTA for Embedded Linux Devices: A practical introduction](https://interrupt.memfault.com/blog/ota-for-embedded-linux-devices)
- [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.
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.
At first this was meant to be my personal reading list but as the list gradually became bigger and bigger, I wondered why not share it with others. So I did research on current job postings for embedded engineering roles, selecting the most frequent skills and including them on a roadmap. In order to make the roadmap more comprehensive I also added some basic skills and finally came up with what you see here.
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
@@ -1084,6 +1227,6 @@ Special thanks to my friends in the community of Iranian Embedded Engineers in T
## 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.
If you think that this roadmap can be improved in anyway or you know about 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](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.