You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[](https://github.com/m3y54m/Embedded-Engineering-Roadmap/releases)
10
10
11
-
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.
11
+
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.
12
12
13
13
Embedded engineering demands a solid understanding of hardware functionality as well as software development and programming skills. If you really want to pursue this career you must be highly motivated and passionate about it. As the well-known saying goes, "Hardware is hard!". But don't panic and be patient for the challenges you may encounter along this exciting journey. By dedicating enough time and effort practicing and doing projects you will soon find yourself as a real embedded engineer! 😀
14
14
@@ -53,20 +53,20 @@ It's crucial to note that each company in the embedded industry may have unique
53
53
54
54
The roadmap provides a comprehensive guide to the essential topics for a typical "Embedded Systems Engineer" role. By delving into both software and hardware aspects, you can develop the necessary skills to thrive in this dynamic field. However, if you have a clear preference for software or hardware, you can tailor your learning path accordingly.
55
55
56
-
> [!NOTE]
56
+
> [!NOTE]
57
57
> **Remember that the importance of individual software and hardware skills can differ depending on the specific requirements of the company and the job role.**
58
-
59
-
60
-
> [!TIP]
58
+
> [!TIP]
61
59
> To differentiate between the types of learning resources and the quality of their content, specific symbols are used before each item.
62
60
>
63
61
> **Resource types:**
62
+
>
64
63
> - 📘 : Books
65
64
> - 🎞️ : Videos
66
65
> - 📝 : Write-ups, articles, and blog posts
67
66
> - 🔗 : Other links that do not fit into any of the above categories
68
67
>
69
68
> **Content quality symbols:**
69
+
>
70
70
> - 👶 : Easy-to-understand and beginner-friendly resources. Refer to them if you do not have prior knowledge in a topic.
71
71
> - 💎 : Well-known references that have truly invaluable and comprehensive content. Refer to them if you want to deepen your understanding of a topic.
72
72
@@ -246,7 +246,7 @@ Computer architecture is the backbone of embedded systems, governing the hardwar
246
246
-[📘👶💎 Computer Organization and Design: ARM Edition - David A. Patterson, John L. Hennessy](https://a.co/d/8YPUXG7)
247
247
-[📘👶💎 Digital Design and Computer Architecture: ARM Edition - Sarah Harris, David Harris](https://a.co/d/4otoVvI)
248
248
-[📘👶💎 Digital Design and Computer Architecture: RISC-V Edition - Sarah Harris, David Harris](https://a.co/d/61l7Jtb)
249
-
-[📘👶 The Elements of Computing Systems - Noam Nisan, Shimon Schocken](https://a.co/d/cX6jkLl)
249
+
-[📘👶 The Elements of Computing Systems - Noam Nisan, Shimon Schocken](https://a.co/d/cX6jkLl)
250
250
-[📘 Computer Organization and Embedded Systems - Carl Hamacher, Zvonko Vranesic, Safwat Zaky, Naraig Manjikian](https://a.co/d/2lt4Svf)
251
251
-[📘 Embedded Systems Architecture - Tammy Noergaard](https://www.oreilly.com/library/view/embedded-systems-architecture/9780123821966/)
252
252
-[📘 Embedded Systems Architecture - Daniele Lacamera](https://www.packtpub.com/product/embedded-systems-architecture-second-edition/9781803239545)
@@ -258,12 +258,12 @@ _________________
258
258
259
259
### ✳️ Using Test Equipment
260
260
261
-
Embedded systems often require specialized test equipment to verify their functionality and performance. This equipment includes multimeters, oscilloscopes, logic analyzers, function generators, power supplies, and other tools that allow engineers to measure signals, inject stimuli, and monitor the behavior of embedded systems.
261
+
Embedded systems often require specialized test equipment to verify their functionality and performance. This equipment includes multimeters, oscilloscopes, logic analyzers, function generators, power supplies, and other tools that allow engineers to measure signals, inject stimuli, and monitor the behavior of embedded systems.
262
262
263
263
#### 🔵 Multimeter
264
264
265
265
-[🎞️👶 Learn How to Use a Multimeter!](https://youtu.be/4lAyzRxsbDc)
266
-
-[📝👶 How to Use a Multimeter](https://learn.sparkfun.com/tutorials/how-to-use-a-multimeter/all)
266
+
-[📝👶 How to Use a Multimeter](https://learn.sparkfun.com/tutorials/how-to-use-a-multimeter/all)
267
267
268
268
#### 🔵 Logic / Protocol Analyzer
269
269
@@ -384,7 +384,7 @@ Mastering programming fundamentals and software development principles is essent
384
384
385
385
_________________
386
386
387
-
### ✳️ Programming Languages
387
+
### ✳️ Programming Languages
388
388
389
389
Low-level languages like C and assembly provide direct hardware access, enabling efficient code optimization for resource-constrained embedded systems. System-level languages like C++ and Rust offer a higher level of abstraction for complex embedded applications, while Python is often employed for testing embedded systems due to its simplicity.
390
390
@@ -397,9 +397,9 @@ Low-level languages like C and assembly provide direct hardware access, enabling
397
397
-[🎞️💎 Microchip University - C Programming Callbacks](https://mu.microchip.com/c-programming-callbacks)
398
398
-[🎞️👶 C Programming for Beginners | Full Course](https://www.youtube.com/watch?v=ssJY5MDLjlo)
399
399
-[🎞️ C Programming Tutorials (YouTube Playlist)](https://www.youtube.com/playlist?list=PLA1FTfKBAEX4hblYoH6mnq0zsie2w6Wif)
400
-
-[📘💎 The C Programming Language - Brian W. Kernighan, Dennis M. Ritchie](https://www.amazon.com/dp/0131103628?ref_=cm_sw_r_cp_ud_dp_KRZ8M1WTXWVG0HMSRBXA)
400
+
-[📘💎 The C Programming Language - Brian W. Kernighan, Dennis M. Ritchie](https://www.amazon.com/dp/0131103628?ref_=cm_sw_r_cp_ud_dp_KRZ8M1WTXWVG0HMSRBXA)
401
401
-[🔗👶 C by Example](https://www.cbyexample.com/)
402
-
-[📘 C How to Program - Paul Deitel, Harvey Deitel](https://deitel.com/c-how-to-program-9-e/)
402
+
-[📘 C How to Program - Paul Deitel, Harvey Deitel](https://deitel.com/c-how-to-program-9-e/)
403
403
-[📘 Effective C - An Introduction to Professional C Programming - Robert C. Seacord](https://nostarch.com/Effective_C)
404
404
-[📘 Modern C - Jens Gustedt](https://gustedt.gitlabpages.inria.fr/modern-c/)
405
405
-[🔗 Embedded C Coding Standard](https://barrgroup.com/embedded-systems/books/embedded-c-coding-standard)
@@ -469,7 +469,7 @@ Microcontrollers are integrated circuits (ICs) that combine a microprocessor, me
469
469
Some popular microcontroller families include AVR, PIC, STM32, MSP430, nRF, and ESP32. Choosing the right microcontroller involves assessing application requirements, processing power, memory needs, and input/output capabilities. Consider ease of use, cost, reliability, availability, and future expansion.
470
470
471
471
-[📝 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/)
472
-
-[📝 How to Choose the Right Microcontroller for Your Application](https://www.allaboutcircuits.com/technical-articles/how-to-choose-the-right-microcontroller-for-your-application/)
472
+
-[📝 How to Choose the Right Microcontroller for Your Application](https://www.allaboutcircuits.com/technical-articles/how-to-choose-the-right-microcontroller-for-your-application/)
473
473
-[📝 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/)
Embedded Linux is a specialized version of the Linux operating system tailored for embedded systems. It's designed to operate on devices with resource constraints, such as limited memory, processing power, and power consumption.
@@ -1045,7 +1043,6 @@ Embedded Linux is a specialized version of the Linux operating system tailored f
1045
1043
-[🔗 Android Open Source Project](https://source.android.com)
-[📘👶 Linux Kernel Development - Robert Love](https://www.oreilly.com/library/view/linux-kernel-development/9780768696974/)
@@ -1131,12 +1128,12 @@ JTAG and SWD (Serial Wire Debug) are two popular interface protocols used for de
1131
1128
1132
1129
#### 🔵 GDB
1133
1130
1134
-
GDB (GNU Debugger) is a powerful and versatile debugger for source-level and machine-level debugging. It supports a wide range of programming languages, including C, C++, Objective-C, Java, and Rust. GDB is a free and open-source software tool that is widely used by developers and researchers.
1131
+
GDB (GNU Debugger) is a powerful and versatile debugger for source-level and machine-level debugging. It supports a wide range of programming languages, including C, C++, Objective-C, Java, and Rust. GDB is a free and open-source software tool that is widely used by developers and researchers.
-[📝 How do breakpoints even work?](https://interrupt.memfault.com/blog/cortex-m-breakpoints)
1138
1135
-[🔗 GNU GDB Debugger Command Cheat Sheet](http://www.yolinux.com/TUTORIALS/GDB-Commands.html)
1139
-
-[🔗 gdbgui - A browser-based frontend to gdb (gnu debugger)](https://www.gdbgui.com/)
1136
+
-[🔗 gdbgui - A browser-based frontend to gdb (gnu debugger)](https://www.gdbgui.com/)
1140
1137
-[🎞️ everyone needs to stop using print debugging (do THIS instead)](https://www.youtube.com/watch?v=3T3ZDquDDVg)
1141
1138
-[🎞️ GDB is REALLY easy! Find Bugs in Your Code with Only A Few Commands](https://www.youtube.com/watch?v=Dq8l1_-QgAc)
1142
1139
-[📝 Introduction to ARM Semihosting](https://interrupt.memfault.com/blog/arm-semihosting)
@@ -1156,7 +1153,7 @@ Build systems automate the process of compiling and linking source code into exe
1156
1153
1157
1154
#### 🔵 Compilers / GCC
1158
1155
1159
-
GCC (the GNU Compiler Collection) is a free and open-source compiler system that can compile programs for many different programming languages, including C, C++, Objective-C, Fortran, Ada, and Go. GCC is a popular choice for embedded systems development due to its open source nature, maturity, stability, portability, performance, and large community. On the other hand proprietary compilers like Keil and IAR offer toolchain support, target-specific optimizations, and customer support, which may be preferred for specific projects.
1156
+
GCC (the GNU Compiler Collection) is a free and open-source compiler system that can compile programs for many different programming languages, including C, C++, Objective-C, Fortran, Ada, and Go. GCC is a popular choice for embedded systems development due to its open source nature, maturity, stability, portability, performance, and large community. On the other hand proprietary compilers like Keil and IAR offer toolchain support, target-specific optimizations, and customer support, which may be preferred for specific projects.
1160
1157
1161
1158
-[📝 GCC and Make - Compiling, Linking and Building C/C++ Applications](https://www3.ntu.edu.sg/home/ehchua/programming/cpp/gcc_make.html)
1162
1159
-[📝 The Best and Worst GCC Compiler Flags For Embedded](https://interrupt.memfault.com/blog/best-and-worst-gcc-clang-compiler-flags)
@@ -1184,14 +1181,15 @@ Bash scripting serves as a powerful tool in embedded systems development, enabli
1184
1181
1185
1182
#### 🔵 Docker
1186
1183
1187
-
Docker containers provide a consistent and isolated environment for building software applications. This can help to improve the reproducibility of builds and reduce the risk of errors. Docker also makes it easier to share build environments, which can save time and effort for developers.
1184
+
Docker containers provide a consistent and isolated environment for building software applications. This can help to improve the reproducibility of builds and reduce the risk of errors. Docker also makes it easier to share build environments, which can save time and effort for developers.
-[📝👶 Docker for Dummies](https://dev.to/stevenmcgown/docker-for-dummies-2bff)
1192
1189
-[🎞️ Introduction to Docker for the Embedded Developer](https://www.youtube.com/watch?v=Fz7ou-VBk-w)
1193
1190
-[🎞️ Intro to CI/CD Part 1: Getting Started with Docker | Digi-Key Electronics](https://youtu.be/1nxGcfIm-TU)
1194
1191
-[📝 A Modern C Development Environment](https://interrupt.memfault.com/blog/a-modern-c-dev-env)
1192
+
1195
1193
_________________
1196
1194
1197
1195
### ✳️ Software Development Life Cycle (SDLC) Models
@@ -1219,7 +1217,7 @@ _________________
1219
1217
1220
1218
### ✳️ Version Control Systems
1221
1219
1222
-
Version control systems are essential tools for managing changes to code and other digital assets. They track changes over time, allowing developers to revert to previous versions, collaborate effectively, and identify potential conflicts. Popular version control systems include Git, Mercurial, and Subversion.
1220
+
Version control systems are essential tools for managing changes to code and other digital assets. They track changes over time, allowing developers to revert to previous versions, collaborate effectively, and identify potential conflicts. Popular version control systems include Git, Mercurial, and Subversion.
1223
1221
1224
1222
#### 🔵 Git
1225
1223
@@ -1270,7 +1268,7 @@ Testing is an integral part of the embedded systems development process, ensurin
1270
1268
1271
1269
#### 🔵 CI/CD Pipelines
1272
1270
1273
-
Continuous Integration (CI) and Continuous Delivery (CD) are software development practices that automate the process of building, testing, and deploying software. CI/CD pipelines are designed to ensure that software changes are deployed quickly and reliably.
1271
+
Continuous Integration (CI) and Continuous Delivery (CD) are software development practices that automate the process of building, testing, and deploying software. CI/CD pipelines are designed to ensure that software changes are deployed quickly and reliably.
1274
1272
1275
1273
-[🎞️ Intro to CI/CD Part 1: Getting Started with Docker | Digi-Key Electronics](https://youtu.be/1nxGcfIm-TU)
1276
1274
-[🎞️ Intro to CI/CD Part 2: Getting Started with GitHub Actions | Digi-Key Electronics](https://youtu.be/8pyqbYDYkRs)
@@ -1433,7 +1431,7 @@ This work is licensed under a [Creative Commons Attribution-ShareAlike 4.0 Inter
1433
1431
1434
1432
**Attribution** — You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
1435
1433
1436
-
**ShareAlike** — If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original.
1434
+
**ShareAlike** — If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original.
0 commit comments