Compare commits

...
29 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
2 changed files with 98 additions and 58 deletions
Binary file not shown.
+98 -58
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?
@@ -33,47 +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 importance of individual software and hardware skills can differ depending on the specific needs of the company or role.**
> [!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!
- [Google](https://www.google.com)
- [Bing](https://www.bing.com/)
- [DuckDuckGo](https://duckduckgo.com/)
#### ⚒️ Projects
### ⚒️ 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/)
#### 🎥 Courses and YouTube Contents
### ❓ 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/)
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)
@@ -81,31 +102,7 @@ Engaging in hands-on projects is the most effective approach to learning. Rather
- [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
- [Keil MDK & µVision](https://www.keil.com/)
- [IAR Embedded Workbench](https://www.iar.com)
- [STM32CubeIDE](https://www.st.com/en/development-tools/stm32cubeide.html)
- [Microchip Studio for AVR® and SAM Devices](https://www.microchip.com/en-us/tools-resources/develop/microchip-studio)
- [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
- [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 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/)
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
### 🕹️ 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.
@@ -116,7 +113,7 @@ Additionally, the [Arduino Core](https://github.com/arduino/ArduinoCore-API) tak
- [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
### 👨‍🏫 Educational Websites
- [DeepBlueMbedded](https://deepbluembedded.com/)
- [💎 Interrupt Blog by Memfault](https://interrupt.memfault.com/blog/)
@@ -127,30 +124,52 @@ Additionally, the [Arduino Core](https://github.com/arduino/ArduinoCore-API) tak
- [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/)
#### 🗺️ Other Helpful Roadmaps
### 🗺️ 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)
#### ❓ Ask Questions
### 🛠️ IDEs
- [Electrical Engineering Stack Exchange](https://electronics.stackexchange.com/)
- [Keil MDK & µVision](https://www.keil.com/)
- [IAR Embedded Workbench](https://www.iar.com)
- [STM32CubeIDE](https://www.st.com/en/development-tools/stm32cubeide.html)
- [Microchip Studio for AVR® and SAM Devices](https://www.microchip.com/en-us/tools-resources/develop/microchip-studio)
- [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
**⚠️ 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.
- [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)
Some of the resources mentioned here will just be used as references. Refer to them only when you need them.
### 🐜 PlatformIO
**Symbols Guide:**
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.
👶 indicates easy-to-understand and beginner-friendly resources. Refer to them if you do not have prior knowledge in a topic.
- [PlatformIO - A professional collaborative platform for embedded development](https://platformio.org/)
💎 indicates well-known references that have truly invaluable and comprehensive content. Refer to them if you want to deepen your understanding of a topic.
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.
## 📚 Learning Resources
> [!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.
> [!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
@@ -272,6 +291,7 @@ _________________
### 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)
@@ -330,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/)
_________________
@@ -345,6 +367,7 @@ _________________
- [💎 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)
- [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)
@@ -548,6 +571,13 @@ _________________
- [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)
_________________
@@ -739,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)
@@ -798,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)
@@ -840,6 +872,7 @@ _________________
- [👶 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/)
@@ -923,7 +956,8 @@ _________________
- [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)
- [💎 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)
@@ -1079,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
@@ -1091,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)
_________________
@@ -1170,8 +1209,9 @@ _________________
## 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