Skip to content

Commit 6b4b93f

Browse files
authored
Merge pull request #38 from ScottGibb/add-static-analysis
Added Markdownlint and static analysis
2 parents fb30c35 + 39baabe commit 6b4b93f

File tree

3 files changed

+43
-23
lines changed

3 files changed

+43
-23
lines changed
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
name: Markdownlint
2+
3+
on: [push, pull_request]
4+
5+
jobs:
6+
Markdown_Lint_Check:
7+
name: Markdown Lint Check
8+
runs-on: ubuntu-latest
9+
steps:
10+
- name: Install markdownlint-cli
11+
run: npm install -g markdownlint-cli
12+
- name: Checkout code
13+
uses: actions/checkout@v2
14+
- name: Run markdownlint
15+
run: |
16+
echo "Checking Markdown files"
17+
find . -type f -name "*.md" -print0 | xargs -0 markdownlint

.markdownlint.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"MD026": false,
3+
"default": true,
4+
"line-length": false
5+
}

README.md

Lines changed: 21 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
[![GitHub release (by tag)](https://img.shields.io/github/downloads/m3y54m/Embedded-Engineering-Roadmap/latest/total?style=plastic)](https://github.com/m3y54m/Embedded-Engineering-Roadmap/releases/latest)
99
[![GitHub all releases](https://img.shields.io/github/downloads/m3y54m/Embedded-Engineering-Roadmap/total?style=plastic&label=total%20downloads)](https://github.com/m3y54m/Embedded-Engineering-Roadmap/releases)
1010

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.
1212

1313
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! 😀
1414

@@ -53,20 +53,20 @@ It's crucial to note that each company in the embedded industry may have unique
5353

5454
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.
5555

56-
> [!NOTE]
56+
> [!NOTE]
5757
> **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]
6159
> To differentiate between the types of learning resources and the quality of their content, specific symbols are used before each item.
6260
>
6361
> **Resource types:**
62+
>
6463
> - 📘 : Books
6564
> - 🎞️ : Videos
6665
> - 📝 : Write-ups, articles, and blog posts
6766
> - 🔗 : Other links that do not fit into any of the above categories
6867
>
6968
> **Content quality symbols:**
69+
>
7070
> - 👶 : Easy-to-understand and beginner-friendly resources. Refer to them if you do not have prior knowledge in a topic.
7171
> - 💎 : Well-known references that have truly invaluable and comprehensive content. Refer to them if you want to deepen your understanding of a topic.
7272
@@ -246,7 +246,7 @@ Computer architecture is the backbone of embedded systems, governing the hardwar
246246
- [📘👶💎 Computer Organization and Design: ARM Edition - David A. Patterson, John L. Hennessy](https://a.co/d/8YPUXG7)
247247
- [📘👶💎 Digital Design and Computer Architecture: ARM Edition - Sarah Harris, David Harris](https://a.co/d/4otoVvI)
248248
- [📘👶💎 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)
250250
- [📘 Computer Organization and Embedded Systems - Carl Hamacher, Zvonko Vranesic, Safwat Zaky, Naraig Manjikian](https://a.co/d/2lt4Svf)
251251
- [📘 Embedded Systems Architecture - Tammy Noergaard](https://www.oreilly.com/library/view/embedded-systems-architecture/9780123821966/)
252252
- [📘 Embedded Systems Architecture - Daniele Lacamera](https://www.packtpub.com/product/embedded-systems-architecture-second-edition/9781803239545)
@@ -258,12 +258,12 @@ _________________
258258

259259
### ✳️ Using Test Equipment
260260

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.
262262

263263
#### 🔵 Multimeter
264264

265265
- [🎞️👶 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)
267267

268268
#### 🔵 Logic / Protocol Analyzer
269269

@@ -384,7 +384,7 @@ Mastering programming fundamentals and software development principles is essent
384384

385385
_________________
386386

387-
### ✳️ Programming Languages
387+
### ✳️ Programming Languages
388388

389389
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.
390390

@@ -397,9 +397,9 @@ Low-level languages like C and assembly provide direct hardware access, enabling
397397
- [🎞️💎 Microchip University - C Programming Callbacks](https://mu.microchip.com/c-programming-callbacks)
398398
- [🎞️👶 C Programming for Beginners | Full Course](https://www.youtube.com/watch?v=ssJY5MDLjlo)
399399
- [🎞️ 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)
401401
- [🔗👶 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/)
403403
- [📘 Effective C - An Introduction to Professional C Programming - Robert C. Seacord](https://nostarch.com/Effective_C)
404404
- [📘 Modern C - Jens Gustedt](https://gustedt.gitlabpages.inria.fr/modern-c/)
405405
- [🔗 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
469469
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.
470470

471471
- [📝 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/)
473473
- [📝 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/)
474474
- [📘👶 Make: AVR Programming - Elliot Williams](https://www.oreilly.com/library/view/make-avr-programming/9781449356484/)
475475
- [🎞️👶💎 NewbieHack - Microcontroller Tutorial - A Beginners Guide (AVR)](https://www.youtube.com/playlist?list=PLE72E4CFE73BD1DE1)
@@ -616,7 +616,6 @@ Embedded systems often communicate with other devices or external systems via in
616616

617617
- [🎞️ 1-Wire® Technology Overview](https://www.youtube.com/watch?v=CjH-OztKe00)
618618

619-
620619
#### 🔵 Digital Audio Protocols
621620

622621
##### 🔶 I2S
@@ -794,7 +793,7 @@ Embedded systems employ a combination of volatile (SRAM, DRAM, PSRAM) and non-vo
794793

795794
- [📝 NAND and eMMC: All You Need to Know About Flash Memory](https://www.makeuseof.com/tag/nand-emmc-need-know-flash-memory/)
796795

797-
##### 🔶 NOR / NAND
796+
##### 🔶 NOR / NAND
798797

799798
- [🎞️ QSPI in STM32 || Write and Read || N25Q](https://www.youtube.com/watch?v=xIfh_uYy-OU)
800799
- [🎞️ QSPI in STM32 || Boot from EXT Memory || XIP || N25Q](https://www.youtube.com/watch?v=gAyuF20ok8c)
@@ -1028,7 +1027,6 @@ Real-time operating systems (RTOS) are specialized operating systems designed to
10281027
- [🔗 Microsoft Azure RTOS documentation](https://learn.microsoft.com/en-us/azure/rtos/)
10291028
- [🔗 Azure RTOS ThreadX](https://github.com/azure-rtos/threadx)
10301029

1031-
10321030
#### 🔵 Embedded Linux
10331031

10341032
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
10451043
- [🔗 Android Open Source Project](https://source.android.com)
10461044
- [🔗 Android Automotive](https://source.android.com/docs/automotive)
10471045

1048-
10491046
##### 🔶 Linux Kernel
10501047

10511048
- [📘👶 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
11311128

11321129
#### 🔵 GDB
11331130

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.
11351132

11361133
- [📝 Advanced GDB Usage](https://interrupt.memfault.com/blog/advanced-gdb)
11371134
- [📝 How do breakpoints even work?](https://interrupt.memfault.com/blog/cortex-m-breakpoints)
11381135
- [🔗 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/)
11401137
- [🎞️ everyone needs to stop using print debugging (do THIS instead)](https://www.youtube.com/watch?v=3T3ZDquDDVg)
11411138
- [🎞️ GDB is REALLY easy! Find Bugs in Your Code with Only A Few Commands](https://www.youtube.com/watch?v=Dq8l1_-QgAc)
11421139
- [📝 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
11561153

11571154
#### 🔵 Compilers / GCC
11581155

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.
11601157

11611158
- [📝 GCC and Make - Compiling, Linking and Building C/C++ Applications](https://www3.ntu.edu.sg/home/ehchua/programming/cpp/gcc_make.html)
11621159
- [📝 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
11841181

11851182
#### 🔵 Docker
11861183

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.
11881185

11891186
- [🔗 Docker Docs](https://docs.docker.com/get-started/)
11901187
- [🔗 Docker Cheat Sheet](https://dockerlabs.collabnix.com/docker/cheatsheet/)
11911188
- [📝👶 Docker for Dummies](https://dev.to/stevenmcgown/docker-for-dummies-2bff)
11921189
- [🎞️ Introduction to Docker for the Embedded Developer](https://www.youtube.com/watch?v=Fz7ou-VBk-w)
11931190
- [🎞️ Intro to CI/CD Part 1: Getting Started with Docker | Digi-Key Electronics](https://youtu.be/1nxGcfIm-TU)
11941191
- [📝 A Modern C Development Environment](https://interrupt.memfault.com/blog/a-modern-c-dev-env)
1192+
11951193
_________________
11961194

11971195
### ✳️ Software Development Life Cycle (SDLC) Models
@@ -1219,7 +1217,7 @@ _________________
12191217

12201218
### ✳️ Version Control Systems
12211219

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.
12231221

12241222
#### 🔵 Git
12251223

@@ -1270,7 +1268,7 @@ Testing is an integral part of the embedded systems development process, ensurin
12701268

12711269
#### 🔵 CI/CD Pipelines
12721270

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.
12741272

12751273
- [🎞️ Intro to CI/CD Part 1: Getting Started with Docker | Digi-Key Electronics](https://youtu.be/1nxGcfIm-TU)
12761274
- [🎞️ 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
14331431

14341432
**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.
14351433

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.
14371435

14381436
## Acknowledgement
14391437

0 commit comments

Comments
 (0)