Compare commits

...
228 Commits
Author SHA1 Message Date
Meysam Parvizi 997e6f7b09 Add Simulation / Emulation Tools
Rearrange items in`Operatin Sytems` section
Adopt Semantic Versioning
2023-09-11 14:25:43 +03:30
Meysam Parvizi 2539b6f484 Update README.md 2023-09-10 15:15:57 +03:30
Meysam Parvizi 4ba2d4a1e3 Update README.md 2023-09-10 11:43:25 +03:30
Meysam Parvizi 20b620c321 Update README.md 2023-09-10 01:04:31 +03:30
Meysam Parvizi 1c59b3c8f0 Update README.md
Add QEMU resources
2023-09-10 01:04:03 +03:30
Meysam Parvizi 05e9d836fe Update README.md 2023-09-09 14:43:01 +03:30
Meysam Parvizi f84f0320b1 Update README.md 2023-09-07 17:07:23 +03:30
Meysam Parvizi 73e3af2d57 Update README.md
Add SDIO
2023-09-06 15:16:29 +03:30
Meysam Parvizi c0434b7d60 Update README.md 2023-09-06 03:13:00 +03:30
Meysam Parvizi 18bd3a9abe Update README.md 2023-09-05 12:57:15 +03:30
Meysam Parvizi 8f8f31b9b4 Update README.md 2023-09-04 12:31:20 +03:30
Meysam Parvizi 0ace66511f Update README.md 2023-09-03 20:50:59 +03:30
Meysam Parvizi fb94514cf4 Update README.md 2023-09-03 15:39:08 +03:30
Meysam Parvizi 73e7edbe82 Update README.md
Add RTOS doc links
2023-09-03 15:27:37 +03:30
Meysam Parvizi 24039054bf Update README.md 2023-09-03 14:53:25 +03:30
Meysam Parvizi f25a3e7930 Update README.md 2023-09-02 14:54:43 +03:30
Meysam Parvizi 3e0f30c886 Update README.md 2023-08-31 15:33:00 +03:30
Meysam Parvizi ece884be57 Update README.md 2023-08-30 00:09:07 +03:30
Meysam Parvizi 7608392b2d Update README.md 2023-08-29 23:23:03 +03:30
Meysam Parvizi b97beec23e Update README.md 2023-08-29 21:47:28 +03:30
Meysam Parvizi 7b7698aede Add Clock Management 2023-08-29 18:42:28 +03:30
Meysam Parvizi 249d971baf Update README.md 2023-08-29 17:54:25 +03:30
Meysam Parvizi ccc80662ce Update README.md 2023-08-29 16:18:33 +03:30
Meysam Parvizi 728ee3137c Update README.md 2023-08-29 16:04:26 +03:30
Meysam Parvizi c09b48e5f9 Update README.md
Add resources for Testing
2023-08-29 11:39:03 +03:30
Meysam Parvizi cef2989c21 Minor changes 2023-08-29 10:35:28 +03:30
Meysam Parvizi ae60ba18d3 Update README.md 2023-08-29 10:10:06 +03:30
Meysam Parvizi 217af4bbbb Update README.md 2023-08-28 19:49:10 +03:30
Meysam Parvizi 51a62f7f70 Update README.md 2023-08-28 19:37:52 +03:30
Meysam Parvizi c33a104269 Update README.md
Add resources to Sensors & Actuators
2023-08-28 19:07:15 +03:30
Meysam Parvizi 0b656b23dd Update README.md
Add Azure RTOS
2023-08-27 23:19:27 +03:30
Meysam Parvizi bf4cd0a1aa Update README.md 2023-08-27 21:45:24 +03:30
Meysam Parvizi 2207d1145a Update README.md 2023-08-27 21:20:19 +03:30
Meysam Parvizi 9847c8b7b3 Update README.md
Add some resources for Embedded Linux
2023-08-27 19:07:43 +03:30
Meysam Parvizi 7b92c127e4 Update README.md
Add more defintions for embedded system
2023-08-27 18:40:55 +03:30
Meysam Parvizi d4ab19536c Update README.md 2023-08-27 13:10:15 +03:30
Meysam Parvizi 2d7b6f2a23 Update README.md 2023-08-27 13:01:00 +03:30
Meysam Parvizi 94468297c2 Update README.md 2023-08-27 12:19:54 +03:30
Meysam Parvizi c7a06d423f Update README.md 2023-08-27 11:28:17 +03:30
Meysam Parvizi c00391832c Update README.md 2023-08-27 10:51:22 +03:30
Meysam Parvizi eccff74869 Update README.md
Add `VSCode Extensions`
2023-08-27 10:38:16 +03:30
Meysam Parvizi e094f76eba Update README.md 2023-08-27 09:36:43 +03:30
Meysam Parvizi 4620038aaa Update README.md
Add `The Linux Kernel` online book
2023-08-27 09:27:52 +03:30
Meysam Parvizi 274413eab2 Update README.md 2023-08-27 00:17:51 +03:30
Meysam Parvizi 5e8ebd6a95 Update README.md
Add lwIP
2023-08-27 00:01:39 +03:30
Meysam Parvizi 27478f814d Update README.md 2023-08-25 19:12:36 +03:30
Meysam Parvizi b301601e4d Update README.md 2023-08-25 19:09:18 +03:30
Meysam Parvizi ab6f8f4530 Update README.md 2023-08-25 19:01:18 +03:30
Meysam Parvizi 3a84ada859 Update README.md 2023-08-25 18:48:02 +03:30
Meysam Parvizi 56af45a87f Update README.md 2023-08-25 18:44:20 +03:30
Meysam Parvizi 4b006348a9 Update README.md 2023-08-24 12:05:11 +03:30
Meysam Parvizi fb673ba8f6 Update README.md
Add IDEs
2023-08-24 12:01:28 +03:30
Meysam Parvizi bed4b9bce6 Update README.md 2023-08-24 11:35:12 +03:30
Meysam Parvizi b9a133446f Update README.md 2023-08-23 16:46:05 +03:30
Meysam Parvizi cb966fb251 Minor change 2023-08-23 16:43:42 +03:30
Meysam Parvizi 20c8f8cc29 Add CI/CD Flow
Make `OS fundamentals` as required
2023-08-23 16:36:08 +03:30
Meysam Parvizi a59bd2cb43 Update README.md 2023-08-23 15:50:25 +03:30
Meysam Parvizi b28b7727dc Update README.md 2023-08-20 01:05:39 +03:30
Meysam Parvizi 52e857b600 Update README.md 2023-08-19 09:21:14 +03:30
Meysam Parvizi 5abfa08d9c Update README.md 2023-08-18 16:57:33 +03:30
Meysam Parvizi 6834f00c8a Update README.md 2023-08-17 14:12:25 +03:30
Meysam Parvizi 12f2d5f0f0 Update README.md 2023-08-16 19:50:24 +03:30
Meysam Parvizi 2f3e688e8e Update README.md 2023-08-16 18:58:28 +03:30
Meysam Parvizi 3aa4cd5554 Update README.md 2023-08-16 14:27:17 +03:30
Meysam Parvizi 77546b3d26 Update README.md 2023-08-16 14:23:28 +03:30
Meysam Parvizi fae8ddcc4a Update README.md
Fix typos
2023-08-16 14:15:54 +03:30
Meysam Parvizi 4dc83b5e73 Update README.md 2023-08-15 19:52:40 +03:30
Meysam Parvizi 4c1be44151 Update README.md
Add Bare-Metal vs RTOS
2023-08-15 15:57:15 +03:30
Meysam Parvizi 92228a79a9 Update README.md 2023-08-15 14:59:42 +03:30
Meysam Parvizi 6dd86addb4 Update README.md
Add 'The Definitive Guide to ARM' books
2023-08-15 01:38:37 +03:30
Meysam Parvizi 69012842fc Update README.md 2023-08-14 22:53:17 +03:30
Meysam Parvizi 8a00f9f519 Update README.md 2023-08-14 22:14:31 +03:30
Meysam Parvizi d64d8fdfb4 Update README.md 2023-08-14 22:10:37 +03:30
Meysam Parvizi ca19b1bb7c Update README.md
Add resources for Embedded Linux Security
2023-08-14 16:24:11 +03:30
Meysam Parvizi 19f2f2b0cb Update README.md
Add some resources for C++
2023-08-13 19:06:31 +03:30
Meysam Parvizi 7ceee1f7c5 Update README.md 2023-08-13 04:27:03 +03:30
Meysam Parvizi 140697feb5 Update README.md
Add TinyML book
2023-08-13 03:18:14 +03:30
Meysam Parvizi 98c52b4c46 Update README.md 2023-08-13 02:07:07 +03:30
Meysam Parvizi f2c659ea95 Update README.md 2023-08-13 01:16:11 +03:30
Meysam Parvizi c3ec72d8c7 Update README.md
Add Coursera and edX courses
2023-08-13 01:15:26 +03:30
Meysam Parvizi 88243467d6 Minorest minor change 2023-08-12 17:21:40 +03:30
Meysam Parvizi f57a1baac6 Update README.md 2023-08-12 17:16:27 +03:30
Meysam Parvizi 6b210b76f6 Update README.md
Add GoogleTest
2023-08-12 17:09:33 +03:30
Meysam Parvizi 97885a21c3 Update README.md
Add some resources for CAN
2023-08-12 17:08:08 +03:30
Meysam Parvizi e962f25474 Update README.md
Add U8g2
2023-08-12 17:02:49 +03:30
Meysam Parvizi 97d0dfb407 Minor changes 2023-08-12 13:31:59 +03:30
Meysam Parvizi c16eb7945f Update README.md 2023-08-12 13:11:26 +03:30
Meysam Parvizi 5c9b3ca37b Update README.md 2023-08-12 12:13:35 +03:30
Meysam Parvizi bb125e66ff Update README.md
Add RS485 and RS232
2023-08-12 01:42:12 +03:30
Meysam Parvizi c975a2579c Update README.md 2023-08-12 01:36:55 +03:30
Meysam Parvizi 33d363bf0b Update README.md
Add resources for Cryptography
2023-08-12 01:26:52 +03:30
Meysam Parvizi b9570fdbf3 Update README.md
Add TPM
2023-08-11 15:29:27 +03:30
Meysam Parvizi fe25902b4a Update README.md
Add Networking Fundamentals
2023-08-11 15:12:52 +03:30
Meysam Parvizi bd04036cda Update README.md 2023-08-11 13:24:57 +03:30
Meysam Parvizi 79b6c2427c Update README.md 2023-08-11 12:55:44 +03:30
Meysam Parvizi 98137ec87c Update README.md 2023-08-11 12:40:07 +03:30
Meysam Parvizi ea4ed18fbf Update README.md
Add FreeRTOS vs Linux for Embedded Systems
2023-08-11 12:39:22 +03:30
Meysam Parvizi 83143802c9 Update README.md
Add horizontal rules
2023-08-11 12:34:32 +03:30
Meysam Parvizi 9e58c68f92 Update README.md
Add resources for Integration Testing
2023-08-11 12:23:58 +03:30
Meysam Parvizi 7f0d0bb032 Update README.md
Add resources for Cellular technologies
2023-08-11 12:17:27 +03:30
Meysam Parvizi 9ae858a12a Update README.md 2023-08-11 03:25:21 +03:30
Meysam Parvizi 9855357fd2 Update README.md 2023-08-10 23:33:41 +03:30
Meysam Parvizi 5a61f48526 Update README.md
Add `Interrupt Blog by Memfault`
2023-08-10 18:46:54 +03:30
Meysam Parvizi b29ae26ce8 Update README.md
Add `SDRAM in STM32 || MT48LC4`
2023-08-10 12:19:43 +03:30
Meysam Parvizi 60b95f9542 Update README.md
Add `PCB Design Skill Tree`
2023-08-10 12:18:09 +03:30
Meysam Parvizi 3f5a71258a Update README.md
Add `Embedded Systems Skill Tree`
2023-08-10 12:16:44 +03:30
Meysam Parvizi 205e637110 Update README.md
Add Practical System Programming with C
2023-08-10 02:47:23 +03:30
Meysam Parvizi 8af3b6dcbc Update README.md 2023-08-10 01:48:45 +03:30
Meysam Parvizi e20d634ffa Update README.md
Add SafeRTOS
2023-08-10 01:29:49 +03:30
Meysam Parvizi c89cf2a40f Update README.md 2023-08-10 01:23:45 +03:30
Meysam Parvizi bba97a7664 Update README.md
Add resources for protocols
2023-08-10 01:23:04 +03:30
Meysam Parvizi f77f545118 Update README.md
Add 'The Future of Programming: Rust'
2023-08-09 20:22:42 +03:30
Meysam Parvizi e1c3c01126 Update README.md
Add Hardware Hacking
2023-08-09 20:19:04 +03:30
Meysam Parvizi 0ba36a7505 Update README.md
Add definition of Embedded System
2023-08-09 19:40:04 +03:30
Meysam Parvizi 88fdfe6379 Update README.md 2023-08-09 17:12:31 +03:30
Meysam Parvizi 1147c50066 Update README.md 2023-08-09 17:07:35 +03:30
Meysam Parvizi 2348b365a8 Update README.md 2023-08-09 16:25:09 +03:30
Meysam Parvizi 3f456aea92 Update README.md
Add resources for Multitasking and Parallel Processing
2023-08-09 12:40:00 +03:30
Meysam Parvizi 52b9f41521 Update README.md 2023-08-09 11:05:30 +03:30
Meysam Parvizi edcd4a5342 Update README.md 2023-08-09 04:16:08 +03:30
Meysam Parvizi 2ea0b0aba7 Update README.md 2023-08-09 01:21:44 +03:30
Meysam Parvizi e121a8e160 Update README.md 2023-08-09 01:19:33 +03:30
Meysam Parvizi 0b4f7483d9 Minor changes 2023-08-08 22:33:36 +03:30
Meysam Parvizi ecf6afad3a Add some wireless protocols
Add μC/OS
2023-08-08 22:13:47 +03:30
Meysam Parvizi c50c0579b1 Update README.md 2023-08-08 21:02:40 +03:30
Meysam Parvizi c2dbf403e5 Update README.md
Add μC/OS / Micriμm OS
2023-08-08 20:49:58 +03:30
Meysam Parvizi cf4c1f4384 Update README.md 2023-08-08 12:40:43 +03:30
Meysam Parvizi 4a1dfa5058 Update README.md 2023-08-08 11:58:08 +03:30
Meysam Parvizi 65ba823ff1 Add SDLC Models 2023-08-08 11:47:16 +03:30
Meysam Parvizi 2e6c8bd366 Update README.md 2023-08-08 01:59:23 +03:30
Meysam Parvizi c5bc921acf Update README.md 2023-08-08 01:33:13 +03:30
Meysam Parvizi 639a5f9087 Update README.md 2023-08-08 01:22:38 +03:30
Meysam Parvizi 2c7a23f7c0 Update README.md 2023-08-07 19:17:06 +03:30
Meysam Parvizi 087f30af52 Update README.md 2023-08-07 16:58:53 +03:30
Meysam Parvizi 1b9968e8cc Update README.md
Add Udemy prefix to courses
2023-08-07 16:48:12 +03:30
Meysam Parvizi 7e9e42965b Update README.md 2023-08-07 15:15:50 +03:30
Meysam Parvizi 21d63623ff Update README.md 2023-08-07 15:08:34 +03:30
Meysam Parvizi 6bb25ba5c3 Update README.md 2023-08-07 02:55:28 +03:30
Meysam Parvizi 9ab7761c89 Update README.md 2023-08-07 02:23:37 +03:30
Meysam Parvizi 6f7e998db6 Update README.md 2023-08-07 02:04:05 +03:30
Meysam Parvizi 3227c98762 Update README.md 2023-08-06 19:48:05 +03:30
Meysam Parvizi 2d6523dd8f Update README.md
Add some books
2023-08-06 19:32:18 +03:30
Meysam Parvizi 9b45029902 Update README.md
Add SOFT SKILLS
2023-08-06 18:45:57 +03:30
Meysam Parvizi 812195e7c5 Update README.md 2023-08-06 14:28:24 +03:30
Meysam Parvizi 7aa5ee7c9f Update README.md 2023-08-06 14:27:11 +03:30
Meysam Parvizi efe86eb64e Add Hardware Design Basics 2023-08-06 13:53:05 +03:30
Meysam Parvizi d9347c07cd Update README.md 2023-08-06 13:50:36 +03:30
Meysam Parvizi 2913f8d0c4 Update README.md 2023-08-06 13:49:29 +03:30
Meysam Parvizi 4f93d73ba7 Update README.md 2023-08-06 13:48:33 +03:30
Meysam Parvizi fa48729090 Update README.md
Add many useful links
2023-08-06 13:46:41 +03:30
Meysam Parvizi a8ea3d037a Update README.md
Add some links
2023-08-04 21:49:43 +03:30
Meysam Parvizi c2337f54d4 Update README.md 2023-08-04 20:41:55 +03:30
Meysam Parvizi 4a52aab313 Update README.md
Add note about Arduino
2023-08-04 20:03:19 +03:30
Meysam Parvizi f5dee15b72 Update README.md
Add CAN
2023-08-04 19:28:49 +03:30
Meysam Parvizi 71cac1f090 Update README.md
Add Qt Documentation
2023-08-04 14:56:11 +03:30
Meysam Parvizi aa1d88863c Update README.md 2023-08-04 13:28:01 +03:30
Meysam Parvizi 1f8ef79660 Update README.md 2023-08-04 13:17:12 +03:30
Meysam Parvizi 0bd7a541ec Update README.md 2023-08-04 12:25:55 +03:30
Meysam Parvizi 52a103d493 Update README.md 2023-08-04 11:51:50 +03:30
Meysam Parvizi d4e11f4952 Merge pull request #7 from hlord2000/cellular_info
Added references to nRF devacademy courses
2023-08-04 11:47:11 +03:30
hlord2000 3b7fb11dbc Added references to nRF devacademy courses 2023-08-03 23:22:50 -04:00
Meysam Parvizi 70467be709 Update README.md 2023-08-03 17:00:31 +03:30
Meysam Parvizi 7c89a8d994 Update README.md 2023-08-03 16:46:08 +03:30
Meysam Parvizi a974623490 Minor change 2023-08-03 16:43:49 +03:30
Meysam Parvizi 02d3600506 Update README.md 2023-08-03 16:42:13 +03:30
Meysam Parvizi 8ec15c8825 Minor changes
Remove the term "Industry Ready"
2023-08-03 16:00:27 +03:30
Meysam Parvizi 11b4c8e638 Update README.md 2023-08-03 15:31:18 +03:30
Meysam Parvizi 6f13c90f7d Update README.md 2023-08-02 14:48:29 +03:30
Meysam Parvizi 6e79f9f1b3 Update README.md 2023-08-02 13:27:54 +03:30
Meysam Parvizi 7783fcb88f Minor changes 2023-08-02 01:56:32 +03:30
Meysam Parvizi 19d2d522e9 Update README.md 2023-08-02 01:24:57 +03:30
Meysam Parvizi 81a1d2d03d Update README.md
Add Security & Cryptography
2023-08-02 01:17:09 +03:30
Meysam Parvizi c77f3fc47c Update README.md 2023-08-02 00:01:11 +03:30
Meysam Parvizi 3d90a4f057 Update README.md 2023-08-01 23:26:58 +03:30
Meysam Parvizi ce4a816095 Update README.md 2023-08-01 21:03:35 +03:30
Meysam Parvizi 765f809d82 Update README.md
Add Digital Signal Processing
2023-08-01 20:54:05 +03:30
Meysam Parvizi e86c2a3d6d Update README.md
Add RT-Thread
2023-08-01 13:14:05 +03:30
Meysam Parvizi a6f015a751 Update README.md
Update Embedded AI
2023-08-01 03:52:26 +03:30
Meysam Parvizi e83d205475 Update README.md 2023-07-31 21:50:53 +03:30
Meysam Parvizi 651d69b0a2 Update README.md
Add FreeRTOS and Zephyr
2023-07-31 21:48:07 +03:30
Meysam Parvizi 7ca183d679 Update README.md
Add Bootloader
2023-07-31 21:38:27 +03:30
Meysam Parvizi 7dd228bf51 Update README.md
Add all roadmap topics
2023-07-31 13:52:25 +03:30
Meysam Parvizi 735f309232 Update README.md 2023-07-31 13:01:56 +03:30
Meysam Parvizi 67e056564e Update README.md 2023-07-31 12:57:22 +03:30
Meysam Parvizi f691a05766 Minor changes 2023-07-31 12:53:39 +03:30
Meysam Parvizi 83e3d585f1 Update README.md 2023-07-31 12:52:50 +03:30
Meysam Parvizi abdea95830 Update README.md 2023-07-31 12:01:59 +03:30
Meysam Parvizi 78981869e5 Update README.md 2023-07-31 11:59:49 +03:30
Meysam Parvizi cea9490309 Minor change 2023-07-31 11:45:20 +03:30
Meysam Parvizi 40ec98eb6c Update README.md 2023-07-31 11:43:32 +03:30
Meysam Parvizi 206c129f9f Update README.md
Add Version Control
2023-07-31 11:30:32 +03:30
Meysam Parvizi 75eb9c5f39 Update README.md
Add Build System
2023-07-31 11:11:56 +03:30
Meysam Parvizi 1cfad9c59a Update README.md 2023-07-31 03:13:20 +03:30
Meysam Parvizi 6313c63883 Update Roadmap
Add 'Embedded AI' 
Add 'UML' 
Add 'VxWorks' 
Add 'Qt'
2023-07-31 02:48:38 +03:30
Meysam Parvizi cf21153c09 Update README.md 2023-07-31 01:47:04 +03:30
Meysam Parvizi f41e5d3738 Update README.md
Add Programming Languages
2023-07-31 01:25:19 +03:30
Meysam Parvizi a016955502 Update README.md
Add Algorithms & Data Structures
2023-07-30 23:31:09 +03:30
Meysam Parvizi bf22f434ef Update README.md 2023-07-30 22:33:49 +03:30
Meysam Parvizi 42d3f0e325 Update README.md 2023-07-30 21:54:17 +03:30
Meysam Parvizi 65da788e53 Add resources for EMI / SI in PCB design 2023-07-30 13:58:44 +03:30
Meysam Parvizi a7bd324f45 Update README.md 2023-07-30 13:10:07 +03:30
Meysam Parvizi 23c671da4e Update README.md 2023-07-30 13:07:45 +03:30
Meysam Parvizi b1dce8cb2b Add 'The Art of Electronics' 2023-07-30 13:06:58 +03:30
Meysam Parvizi a9a9fc5f02 Update README.md 2023-07-30 13:00:25 +03:30
Meysam 37b3fc63f4 Add 'Encyclopedia of Electronic Components' 2023-07-30 12:51:36 +03:30
Meysam 2095451d43 Add some resources for hardware basics 2023-07-30 12:48:34 +03:30
Meysam c38b928765 Add Ben Eater 8-bit breadboard (#6) 2023-07-30 11:11:48 +03:30
Meysam 9bb1700f2a Add some Learning Resources 2023-07-30 00:05:26 +03:30
Meysam b9d63a0a26 Update README.md 2023-07-29 22:44:53 +03:30
Meysam 1235564886 Add 'Organizational & Time Management Skills' 2023-07-29 22:44:13 +03:30
Meysam d2f0f8fb47 Update README.md 2023-07-29 22:05:05 +03:30
Meysam 96ba2bae7e Add Docker (#5)
Add CoAP & cellular networks (#4)
Add Secure Boot and OTA (#3)
Add Functional Safety
Add MATLAB / Simulink
2023-07-29 16:51:59 +03:30
Meysam 5e33251915 Add SOFT SKILLS (#2) 2023-07-29 14:04:20 +03:30
Meysam e947b65b2d Minor changes 2023-07-28 22:05:31 +03:30
Meysam 21b7ed7e54 Update README.md 2023-07-28 21:48:16 +03:30
Meysam eb50a7f92e More emphasize on DSP
Add eMMC memory
Add Rework
2023-07-28 21:42:13 +03:30
Meysam cae6215eb7 Update README.md 2023-07-28 15:11:06 +03:30
Meysam c734253b08 Update README.md 2023-07-28 14:37:05 +03:30
Meysam 5c0d7b2e90 Update README.md 2023-07-28 13:35:25 +03:30
Meysam 5d222a22b8 Update README.md 2023-07-27 20:44:44 +03:30
Meysam 41ef7f0986 Remove 'Architectures' section
Edit "Protocols" section
Remove "Binary Arithmetic" (already included in "Logic Design"
Add "Memory Management"
Fix notes
2023-07-27 20:40:34 +03:30
Meysam f0cebd35d8 Update README.md 2023-07-27 13:14:44 +03:30
Meysam df09e07d27 Add Bootloder
Add some notes
Remove SVN
2023-07-27 13:12:28 +03:30
Meysam 8b3ea9dd7f Update README.md 2023-07-27 00:52:55 +03:30
Meysam ab85827815 Update README.md 2023-07-27 00:48:43 +03:30
Meysam 5ef7e0a988 Reorganize the diagram
Remove `Development Methodologies`
2023-07-27 00:43:34 +03:30
Meysam d0e1c59fd9 Minor changes 2023-07-26 22:32:29 +03:30
Meysam f8c4c1ab63 Update README.md 2023-07-26 22:27:24 +03:30
2 changed files with 937 additions and 7 deletions
Binary file not shown.
+937 -7
View File
@@ -1,16 +1,940 @@
# Embedded Systems Engineering Roadmap
This is a roadmap for those who want to build a career as an Embedded Developer or Embedded Engineer.
In order to assist beginners, steps have been taken to create a roadmap that is straightforward and easy to understand.
This roadmap is designed to assist beginners aspiring to build a career as an Embedded Engineer / Developer. To provide comprehensive guidance, the topics have been carefully selected based on current job requirements and organized according to my personal experience.
If you think that this map can be improved in anyway, please start an issue or pull request. I’ll be maintaining and updating this repository frequently. The source file is created using [Microsoft Visio](https://office.com/visio).
Becoming an embedded engineer requires a broad understanding of both software and hardware. If you are starting on this journey, you must be highly motivated and passionate to pursue this path. The field of embedded systems demands a solid 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.
![Embedded Systems Engineering Roadmap](https://github.com/m3y54m/Embedded-Engineering-Roadmap/releases/download/Rev.B-2023-07-26/Embedded-Engineering-Roadmap.png)
## What is an Embedded System?
[Making Embedded Systems](https://www.oreilly.com/library/view/making-embedded-systems/9781449308889/): An embedded system is a **computerized system** that is **purpose built** for its application.
[Analog Devices](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. Often, the computer is relatively **invisible to the user**, without obvious applications, files, or operating systems. Examples of products with invisible embedded systems are the controller that runs a microwave oven or the engine control system of a modern automobile.
[Embedded Systems Glossary](https://barrgroup.com/embedded-systems/glossary-e): A combination of **computer hardware and software**, and perhaps **additional mechanical or other parts**, designed to perform a **dedicated function**. 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
![Embedded Systems Engineering Roadmap](https://github.com/m3y54m/Embedded-Engineering-Roadmap/releases/latest/download/Embedded-Engineering-Roadmap.png)
## Learning Resources
### ⭐️ Featured Material
#### 🔎 Searching is Your Super Power!
- [Google](https://www.google.com)
#### 🎥 Courses and YouTube Contents
- [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)
- [Embedded Systems - Jacob Sorber (YouTube Playlist)](https://www.youtube.com/playlist?list=PL9IEJIKnBJjEcPAz6fss-Hx0TLytCOMVC)
- [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
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 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](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](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/)
- [Electronics Tutorials](https://www.electronics-tutorials.ws)
- [SparkFun Learn: Learn at SparkFun Electronics](https://learn.sparkfun.com/)
- [Adafruit Learning System](https://learn.adafruit.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/)
#### 😈 Hardware Hacking
- [Hardware Hacking Tutorial](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)
#### 🗺️ 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)
_________________
**Note:** It is not necessary to read or watch all of the following materials, but it is important to study enough to have a basic understanding of each topic. Of course, the more you study and practice, the greater your knowledge will become, ultimately enhancing your abilities as an engineer.
Some of the resources mentioned here will just be used as references. Refer to them only when you need them.
The symbol of 💎 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.
_________________
### Soft Skills
- [Soft Skills For Embedded Systems Software Developers](https://www.embeddedrelated.com/showarticle/1470.php)
- [10 Skills Every Embedded Engineer Should Have](https://medium.com/@lanceharvieruntime/10-skills-every-embedded-engineer-should-have-dcb867095b91)
_________________
### Electronics Fundamentals
#### Basic Math & Calculus
- [Khan Academy - Calculus 1](https://www.khanacademy.org/math/calculus-1)
- [Calculus For Dummies - Mark Ryan](https://a.co/d/cyvZqE1)
- [💎 Thomas' Calculus](https://a.co/d/gFcCC37)
#### Electrical Circuits Basics
- [💎 Electronics Tutorials](https://www.electronics-tutorials.ws)
- [Lessons in Electric Circuits](https://www.allaboutcircuits.com/textbook/)
- [Make: Electronics: Learning by Discovery - Charles Platt](https://a.co/d/fbRoM1R)
- [Electronic Basics - GreatScott! (YouTube Playlist)](https://youtube.com/playlist?list=PLAROrg3NQn7cyu01HpOv5BWo217XWBZu0)
- [Fundamentals of Electric Circuits - Charles K. Alexander, Matthew Sadiku](https://www.amazon.com/dp/1260226409?ref_=cm_sw_r_cp_ud_dp_Q11YHXNY2BK530RQZC4S)
- [Grob’s Basic Electronics - Mitchel E. Schultz](https://a.co/d/g1g73HV)
- [💎 The Art of Electronics - Paul Horowitz, Winfield Hill](https://artofelectronics.net/)
#### Electronic Components
- [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
- [💎 Digital Design - Morris Mano](https://www.portcity.edu.bd/files/636444791235373856_Digitallogicdesign.pdf)
#### 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)
- [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/)
_________________
### Using Test Equipment
#### Multimeter
- [Learn How to Use a Multimeter!](https://youtu.be/4lAyzRxsbDc)
- [How to Use a Multimeter ](https://learn.sparkfun.com/tutorials/how-to-use-a-multimeter/all)
#### Logic / Protocol Analyzer
- [Instrument Basics: Logic Analyzer](https://youtu.be/u1DYs2I-_lU)
#### Oscilloscope
- [What’s an OSCILLOSCOPE?](https://youtu.be/DgYGRtkd9Vs)
- [How to Use an Oscilloscope](https://youtu.be/u4zyptPLlJI)
- [How to use an oscilloscope / What is an oscilloscope / Oscilloscope tutorial](https://youtu.be/CzY2abWCVTY)
- [Understanding EMI Debugging with Oscilloscopes](https://www.youtube.com/watch?v=x1rn5YNLmVw)
_________________
### Prototyping Skills
#### Using Breadboards
- [Everything You Need to Know about Breadboards](https://www.youtube.com/watch?v=mE33WpRWrXs)
- [How to Use a Breadboard](https://youtu.be/6WReFkfrUIk)
#### Hardware Design Basics
- [Electronic Circuit Design - IFE - TU Graz](https://www.youtube.com/playlist?list=PLLpZ1DoEuR9tbV8r8bMSI94znm6pRB905)
- [Hardware Design - Phil’s Lab](https://www.youtube.com/playlist?list=PLXSyc11qLa1YhVCZ5xWPuPsE5MkgEy5TF)
- [Microcontroller-Based Hardware Design With Altium Designer](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)
- [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)
- [PCB Design for EMI & SI - Phil's Lab #64](https://www.youtube.com/watch?v=VtzPL8wQ8-E)
- [PCB Design for Advanced Users](https://youtube.com/playlist?list=PL3aaAq2OJU5EWfYT_Z93tc9pBF_Sidba_)
- [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)
#### Soldering
- [How To Solder - Electronics with Becky Stern | Digi-Key Electronics](https://www.youtube.com/watch?v=sS4v2hIFp9I)
- [HOW TO SOLDER! (Beginner's Guide)](https://www.youtube.com/watch?v=3jAw41LRBxU)
- [Soldering Crash Course: Basic Techniques, Tips and Advice!](https://www.youtube.com/watch?v=6rmErwU5E-k)
- [How to Solder Through-Hole Components - Another Teaching Moment | DigiKey Electronics](https://www.youtube.com/watch?v=DJH7VLGJ4fs)
- [How to Solder QFN MLF Package by Hand (Using a Hot Air Rework Station) | Digi-Key Electronics](https://youtu.be/X3Rc1s6EpSI)
- [From Solderless Breadboard to Soldered Circuit - Electronics with Becky Stern | Digi-Key Electronics](https://www.youtube.com/watch?v=F9Krq7seV1g)
_________________
### FPGA Design
- [FPGA vs. Microcontroller: How to choose the right one for your project](https://www.youtube.com/watch?v=jblpHUCPQYs)
- [Introduction to FPGA](https://youtube.com/playlist?list=PLEBQazB0HUyT1WmMONxRZn9NmQ_9CIKhb)
- [FPGA Fundamentals](https://nandland.com/fpga-101/)
- [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/)
- [Udemy – FPGA Embedded Design, Part 4 - Microprocessor Design](https://www.udemy.com/course/fpga-embedded-design-cpu/)
- [💎 A Hands-On Guide to Designing Embedded Systems - Adam Taylor, Dan Binnun, Saket Srivastava](https://www.amazon.com/Hands-Guide-Designing-Embedded-Systems/dp/1630816833)
_________________
### Software Development Life Cycle (SDLC) Models
- [What is the software development life cycle?](https://www.coderus.com/the-software-development-lifecycle/)
- [Embedded Product Development Life Cycle: Four Main Steps](https://www.sam-solutions.com/blog/embedded-product-development-life-cycle/)
- [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)
- [What Is the V-Model in Software Development?](https://builtin.com/software-engineering-perspectives/v-model)
_________________
### Programming Fundamentals
#### Algorithms & Data Structures
- [💎 Grokking Algorithms - Aditya Y. Bhargava](https://www.manning.com/books/grokking-algorithms)
- [💎 Introduction to Algorithms - Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein](http://mitpress.mit.edu/9780262367509/introduction-to-algorithms/)
- [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/)
- [Data Structures in C](https://www.sanfoundry.com/c-programming-examples-data-structures/)
- [Data Structures - Full Course Using C and C++](https://www.youtube.com/watch?v=B31LgI4Y4DQ)
#### Design Patterns
- [💎 Design Patterns for Embedded Systems in C - Bruce Powel Douglass](https://www.oreilly.com/library/view/design-patterns-for/9781856177078/)
- [Making Embedded Systems: Design Patterns for Great Software - Elecia White](https://www.oreilly.com/library/view/making-embedded-systems/9781449308889/)
#### State Machines / UML
- [State Machines](https://www.youtube.com/playlist?list=PLPW8O6W-1chxym7TgIPV9k5E8YJtSBToI)
- [Event-Driven Programming](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/)
#### Memory Management
- [Understanding the C runtime memory model](https://www.youtube.com/watch?v=3F3lp_F2YpQ)
- [Dynamic Memory Allocation | C Programming Tutorial](https://www.youtube.com/watch?v=R0qIYWo8igs)
- [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/)
_________________
### Programming Languages
#### C
- [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](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)
- [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)
#### 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++ YouTube Playlist by The Cherno](https://youtube.com/playlist?list=PLlrATfBNZ98dudnM48yfGUldqGD0S4FFb)
#### Assembly
- [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)
#### Python
- [Real Python: Python Tutorials](https://realpython.com/)
- [Python Crash Course - Eric Matthes](https://a.co/d/hSMTJwE)
- [MicroPython - Python for microcontrollers](https://micropython.org/)
- [CircuitPython](https://circuitpython.org/)
#### Rust
- [The Embedded Rust Book](https://docs.rust-embedded.org/book/)
- [The Future of Programming: Rust](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)
_________________
### Build Tools
#### GCC & Make
- [GCC and Make - Compiling, Linking and Building C/C++ Applications](https://www3.ntu.edu.sg/home/ehchua/programming/cpp/gcc_make.html)
- [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
- [CMake Tutorial](https://cmake.org/cmake/help/latest/guide/tutorial/index.html)
- [How to CMake Good](https://youtube.com/playlist?list=PLK6MXr8gasrGmIiSuVQXpfFuE1uPT615s)
#### Bash Scripting
- [Bash scripting cheatsheet](https://devhints.io/bash)
- [Bash Scripting Tutorial for Beginners](https://www.youtube.com/watch?v=tK9Oc6AEnR4)
#### Docker
- [Docker Docs](https://docs.docker.com/get-started/)
- [Introduction to Docker for the Embedded Developer](https://www.youtube.com/watch?v=Fz7ou-VBk-w)
_________________
### Version Control
#### Git
- [Git Tutorial for Beginners: Learn Git in 1 Hour](https://www.youtube.com/watch?v=8JJ101D3knE)
- [Git for Professionals Tutorial - Tools & Concepts for Mastering Version Control with Git](https://www.youtube.com/watch?v=Uszj_k0DGsg)
#### SVN (Subversion)
- [Apache® Subversion®](https://subversion.apache.org/)
_________________
### Microcontrollers
- [💎 Make: AVR Programming - Elliot Williams](https://www.oreilly.com/library/view/make-avr-programming/9781449356484/)
- [💎 Mastering STM32 - Carmine Noviello](https://leanpub.com/mastering-stm32-2nd)
- [Getting Started With AVR](https://www.youtube.com/playlist?list=PLtQdQmNK_0DRhBWYZ32BEILOykXLpJ8tP)
- [Fundamentals of Microcontrollers - Arduino bare-metal breakdown](https://www.youtube.com/playlist?list=PLNyfXcjhOAwOF-7S-ZoW2wuQ6Y-4hfjMR)
- [Getting Started with STM32 and Nucleo](https://youtube.com/playlist?list=PLEBQazB0HUyRYuzfi4clXsKUSgorErmBv)
- [Bare Metal Embedded Programming: Theory and Practice Using STM32](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](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)
- [Awesome Embedded: A curated list of awesome embedded programming](https://github.com/nhivp/Awesome-Embedded)
#### GPIO
- [Tutorial 5: Peripheral 1 - General purpose Input Output (GPIO) Configuration in STM32](https://youtu.be/tjDhmavBGf0)
#### ADC
- [How Do ADCs Work? - The Learning Circuit](https://www.youtube.com/watch?v=g4BvbAKNQ90)
- [Tutorial 13: ADC in STM32F4](https://youtu.be/vIlG_i3GqeU)
- [Tutorial 14: ADC by Polling](https://www.youtube.com/watch?v=uUi6JyUuEJA)
#### DAC
- [How Do DACs Work? - The Learning Circuit](https://www.youtube.com/watch?v=YAxrmoVtEtE)
- [DAC in STM32 || Sine wave || HAL || CubeIDE](https://www.youtube.com/watch?v=6Z1L6ox63j0)
#### Timers
- [STM32 TIMERS](https://www.youtube.com/playlist?list=PLfIJKC1ud8gjLZBzjE3kKBMDEH_lUc428)
#### PWM
- [What is PWM?](https://www.youtube.com/watch?v=B_Ysdv1xRbA)
- [STM32 Guide #3: PWM + Timers](https://www.youtube.com/watch?v=AjN58ceQaF4)
#### Interrupts
- [Polling/Interrupt/DMA differences explained easily](https://www.youtube.com/watch?v=LNPBr3WvuNg)
- [Level Up Your Arduino Code: External Interrupts](https://www.youtube.com/watch?v=J61_PKyWjxU)
- [Tutorial 10: Peripheral 2 - Nested Vector Interrupt controller (NVIC) in STM32](https://www.youtube.com/watch?v=qwebM-YaSU4)
- [Tutorial 11: LAB - External Interrupt ( EXTI ) Interfacing in STM32 using STM32CUBEMX](https://www.youtube.com/watch?v=oJc0seuBbzI)
- [Tutorial 12: Interrupt Priorities in STM32](https://www.youtube.com/watch?v=aXLJD4qJmtk)
#### Watchdog
- [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)
#### Clock Management
- [Clock Configuration in STM32](https://medium.com/@csrohit/clock-configuration-in-stm32-6a058da220e0)
- [STM32: Change clock speed via registers](https://www.youtube.com/watch?v=W_9jPMgiqaQ)
- [#1. Intro to STM32F4 Register Based Programming || Clock Setup || LED Blinking || NO HAL](https://www.youtube.com/watch?v=GJ_LFAlOlSk)
- [Tutorial 8: MCU Clocks configuration in STM32 using STM32CUBEMX](https://www.youtube.com/watch?v=y8yNsWpQiTM)
- [Clock sources and PLL in ARM Cortex M4](https://www.youtube.com/watch?v=2ou8FQ_7PdI)
#### DMA
- [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)
- [STM32 UART DMA and IDLE LINE || Receive unknown length DATA](https://www.youtube.com/watch?v=Bo6MC5A8uTE)
#### Bootloader
- [Basics to Developing Bootloader for Arduino](https://www.electronicwings.com/arduino/basics-to-developing-bootloader-for-arduino)
- [From Zero to main(): How to Write a Bootloader from Scratch](https://interrupt.memfault.com/blog/how-to-write-a-bootloader-from-scratch)
- [How to Create a Super Simple Bootloader](https://www.youtube.com/watch?v=OkUQ3iMmiYQ&list=PLnMKNibPkDnEb1sphpdFJ3bR9dNy7S6mO)
- [Blinky To Bootloader: Bare Metal Programming Series](https://www.youtube.com/playlist?list=PLP29wDx6QmW7HaCrRydOnxcy8QmW0SNdQ)
- [Simple AVR Bootloader tutorial](https://www.pocketmagic.net/simple-avr-bootloader-tutorial/)
- [Udemy – STM32Fx Microcontroller Custom Bootloader Development](https://www.udemy.com/course/stm32f4-arm-cortex-mx-custom-bootloader-development/)
#### Power Management
- [SLEEP Mode in STM32F103 || CubeIDE || Low Power Mode || Current Consumption](https://www.youtube.com/watch?v=2rKcsGkCG0s)
- [STOP MODE in STM32 || CubeIDE || Low Power Mode](https://www.youtube.com/watch?v=UtQhc4XV8k4)
#### GUI Design
- [U8glib library for monochrome displays, version 2](https://github.com/olikraus/u8g2)
- [LVGL](https://lvgl.io/)
- [TouchGFX](https://support.touchgfx.com/4.20/docs/introduction/welcome)
#### Functional Safety
- [Microchip University - Introduction to Functional Safety](https://mu.microchip.com/introduction-to-functional-safety)
- [Udemy – Functional Safety According to ISO 26262 - Crash Course](https://www.udemy.com/course/iso-26262-crash-course/)
- [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)
_________________
### Simulation / Emulation Tools
- [Wokwi - Online ESP32, STM32, Arduino Simulator](https://wokwi.com/)
#### [QEMU](https://www.qemu.org/)
- [QEMU’s documentation](https://www.qemu.org/docs/master/index.html)
- [Running AVR code in QEMU - A quick-start guide to accelerate AVR firmware development](https://yeah.nah.nz/embedded/qemu-avr/)
- [QEMU Simulation - Blinky - STM32F767ZI Full Stack](https://longer-vision-robot.gitbook.io/stm32f767zi-full-stack/chapter-2.-programming-for-stm32/2.4-qemu-simulation-blinky)
- [Emulating a Raspberry Pi in QEMU](https://interrupt.memfault.com/blog/emulating-raspberry-pi-in-qemu)
_________________
### Interfaces, Protocols & Communication Technologies
#### Common
- [Understanding Serial Protocols](https://www.youtube.com/watch?v=LEz5UCN3aHA)
- [PROTOCOLS: UART - I2C - SPI - Serial communications #001](https://www.youtube.com/watch?v=IyGwvGzrqp8)
##### UART
- [Understanding UART](https://www.youtube.com/watch?v=sTHckUyxwp8)
- [how does UART work??? (explained clearly)](https://www.youtube.com/watch?v=V6m2skVlsQI)
- [Basics of UART Communication | UART Frame Structure | RS 232 Basics | Part1](https://www.youtube.com/watch?v=JuvWbRhhpdI)
- [Understanding UART Communication Programming | UART Peripherals | Part 2](https://www.youtube.com/watch?v=QmjKRwgddxw)
- [The RS-232 protocol](https://www.youtube.com/watch?v=AHYNxpqKqwo)
##### I2C
- [Understanding I2C](https://www.youtube.com/watch?v=CAvawEcxoPU)
- [STM32 I2C SLAVE](https://www.youtube.com/playlist?list=PLfIJKC1ud8gj_P7Qb28aTr0t92uk_vwg0)
##### SPI
- [Understanding SPI](https://www.youtube.com/watch?v=0nVNwozXsIc)
- [SPI: The serial peripheral interface](https://www.youtube.com/watch?v=MCi7dCBhVpQ)
- [Getting Started with STM32 and Nucleo Part 5: How to Use SPI | Digi-Key Electronics](https://www.youtube.com/watch?v=eFKeNPJq50g)
##### 1-Wire
- [1-Wire® Technology Overview](https://www.youtube.com/watch?v=CjH-OztKe00)
##### SDIO
- [SDIO Protocol](https://prodigytechno.com/sdio-protocol/)
- [Interface SD CARD with SDIO in STM32](https://controllerstech.com/interface-sd-card-with-sdio-in-stm32/)
- [SDIO Card Slave Driver - ESP32 - Technical Documents](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/peripherals/sdio_slave.html)
#### Audio
##### I2S
- [Building a Digital Music Player with I2S?! What is I2S! EB#45](https://www.youtube.com/watch?v=qNLvoSQCx60)
#### Image & Video
##### CSI-2
- [MIPI Camera Serial Interface 2](https://www.mipi.org/specifications/csi-2)
- [Tutorial: MIPI CSI-2](https://www.youtube.com/watch?v=8REu_h7bzHM)
#### Wireless
- [Bluetooth Low Energy Fundamentals - Nordic Semiconductor](https://academy.nordicsemi.com/courses/bluetooth-low-energy-fundamentals/)
- [What is ZIGBEE And How It Works?](https://www.youtube.com/watch?v=THtVeaxnd9E)
- [How to take advantage of Zigbee and Bluetooth LE 5.2 on STM32WB wireless MCUs - Webinar Replay](https://www.youtube.com/watch?v=2sYEPykOaLQ)
- [What is Thread? Low-power IoT Networking for Smart Home Devices | Digi-Key Electronics](https://youtu.be/5CauESYB9-A)
- [What is Matter? Unifying IoT Devices for the Smart Home | Digi-Key Electronics](https://youtu.be/vJIEfih9bl0)
#### Industrial
##### Modbus
- [What is Modbus and How does it Work?](https://www.youtube.com/watch?v=txi2p5_OjKU)
- [How does Modbus Communication Protocol Work?](https://www.youtube.com/watch?v=JBGaInI-TG4)
- [MODBUS STM32](https://www.youtube.com/playlist?list=PLfIJKC1ud8ggRvaEsMjSEDazoBAnY4MUv)
##### RS485
- [What is RS485 and How it's used in Industrial Control Systems?](https://www.youtube.com/watch?v=3wgKcUDlHuM)
- [What is RS-485?](https://www.youtube.com/watch?v=bt9Px51eP6s)
##### CoAP & MQTT
- [#144 Internet Protocols: CoAP vs MQTT, Network Sniffing, and preparation for IKEA Tradfri Hacking](https://www.youtube.com/watch?v=pfG8uEDZj5g)
- [MQTT vs. CoAP | Comparison of IoT Protocols](https://www.youtube.com/watch?v=0CORpVSUQe0)
- [Simple ESP32 IoT Sensor Node Tutorial: WiFi Enabled MQTT Sensor Data Node](https://www.youtube.com/watch?v=x5A5S0hoyJ0)
- [Cellular IoT Fundamentals - Nordic Semiconductor](https://academy.nordicsemi.com/courses/cellular-iot-fundamentals/)
#### High-Speed
##### Ethernet
- [How the Ethernet Protocol Works – A Complete Guide](https://www.freecodecamp.org/news/the-complete-guide-to-the-ethernet-protocol/)
- [What is an Ethernet PHY?](https://www.youtube.com/watch?v=JH3cMYErmKI)
- [The Data Link Layer, MAC Addressing, and the Ethernet Frame](https://youtu.be/_b4dXKB8Pt8)
##### USB
- [Training - USB 101 - Introduction to USB](https://www.youtube.com/watch?v=5S6ZPmtPzRA)
- [USB 101: An Introduction to Universal Serial Bus 2.0](https://www.infineon.com/dgdl/Infineon-AN57294_USB_101_An_Introduction_to_Universal_Serial_Bus_2.0-ApplicationNotes-v09_00-EN.pdf?fileId=8ac78c8c7cdc391c017d072d8e8e5256)
- [How does a USB keyboard work?](https://youtu.be/wdgULBpRoXk)
- [How does USB device discovery work?](https://www.youtube.com/watch?v=N0O5Uwc3C0o)
- [MOOC - STM32 USB training](https://www.youtube.com/playlist?list=PLnMKNibPkDnFFRBVD206EfnnHhQZI4Hxa)
#### Automotive
##### CAN
- [CAN Bus: Serial Communication - How It Works?](https://www.youtube.com/watch?v=JZSCzRT9TTo&t=21s)
- [CAN Bus: A Beginners Guide Part 1](https://www.youtube.com/watch?v=YBrU_eZM110)
- [CAN Bus: A Beginners Guide Part 2](https://www.youtube.com/watch?v=z5CVljiLhvc)
- [Improving my electric longboard with a CAN Bus! What can the CAN Bus do? EB#44](https://www.youtube.com/watch?v=PL0TPdrhMuI)
- [CAN Bus, OBD2 & J1939 Explained](https://www.youtube.com/playlist?list=PLpV68vjf4Xo4vZ_SjJ6tTlomYm-k18vDZ)
- [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
- [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)
- [TCP - 12 simple ideas to explain the Transmission Control Protocol](https://www.youtube.com/watch?v=JFch3ctY6nE)
- [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)
- [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)
- [Developing applications on STM32Cube with LwIP TCP/IP stack](https://www.st.com/resource/en/user_manual/um1713-developing-applications-on-stm32cube-with-lwip-tcpip-stack-stmicroelectronics.pdf)
#### Cellular
##### GSM / LTE
- [STM32 : Internet Of Things With 4G LTE Modem](https://www.youtube.com/playlist?list=PL2_RO8p04imYY5JOrCDT7V0hnzkgyExRe)
##### LTE-M & NB-IoT
- [Cellular IoT Fundamentals - Nordic Semiconductor](https://academy.nordicsemi.com/courses/cellular-iot-fundamentals/)
_________________
### Memories
- [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)
#### NOR / NAND Flash
- [QSPI in STM32 || Write and Read || N25Q](https://www.youtube.com/watch?v=xIfh_uYy-OU)
- [QSPI in STM32 || Boot from EXT Memory || XIP || N25Q](https://www.youtube.com/watch?v=gAyuF20ok8c)
- [Flash Memory in Embedded Linux Systems](https://www.youtube.com/watch?v=hdwMvwJIV-Y)
#### eMMC
- [What is a eMMC? Intro, Comparing to Other Storage, and Upgrading. SSD, M.2](https://www.youtube.com/watch?v=vGatKmqYxEA)
#### EEPROM
- [Using EEPROM with Arduino - Internal & External](https://www.youtube.com/watch?v=ShqvATqXA7g)
#### SRAM / DRAM
- [SRAM vs DRAM: Difference Between SRAM & DRAM Explained](https://www.enterprisestorageforum.com/hardware/sram-vs-dram/)
- [What is SRAM?](https://www.youtube.com/watch?v=kU2SsUUsftA)
- [SDRAM Hardware & Firmware Tutorial (STM32) - Phil's Lab #80](https://www.youtube.com/watch?v=h28D4AaPSjg)
- [SDRAM in STM32 || MT48LC4](https://www.youtube.com/watch?v=QnDenqvzwyE)
_________________
### Sensors & Actuators
#### Sensors
- [Calibrating Sensors](https://learn.adafruit.com/calibrating-sensors)
- [DHT11 vs DHT22 vs LM35 vs DS18B20 vs BME280 vs BMP180](https://randomnerdtutorials.com/dht11-vs-dht22-vs-lm35-vs-ds18b20-vs-bme280-vs-bmp180/)
- [Getting Started With STM32 and Nucleo Part 2: How to Use I2C to Read Temperature Sensor TMP102](https://www.youtube.com/watch?v=isOekyygpR8)
- [GPS Module and STM32 || NEO 6M || Get coordinates, Date, Time, Speed, etc.](https://www.youtube.com/watch?v=tq_RoaPLahk)
- [Interface MPU6050/GY-521 with STM32 || LCD 20x4 || CubeMx || HAL || SW4STM](https://www.youtube.com/watch?v=xxphp9wDnHA)
- [Arduino with PIR Motion Sensor](https://randomnerdtutorials.com/arduino-with-pir-motion-sensor/)
- [Complete Guide for Ultrasonic Sensor HC-SR04 with Arduino](https://randomnerdtutorials.com/complete-guide-for-ultrasonic-sensor-hc-sr04/)
- [Electronic Basics #15: Temperature Measurement (Part 1) || NTC, PT100, Wheatstone Bridge](https://youtu.be/1U4fep_qAeo?si=Q2FF__EXONN-xN5M)
#### Actuators
- [Adafruit Motor Selection Guide](https://learn.adafruit.com/adafruit-motor-selection-guide)
- [DC Motor Speed Controller PWM With Potentiometer Using STM32](https://www.youtube.com/watch?v=8QpegVuV_AQ)
- [All About Stepper Motors](https://learn.adafruit.com/all-about-stepper-motors)
- [Using Servos With CircuitPython and Arduino](https://learn.adafruit.com/using-servos-with-circuitpython)
- [Electronic Basics #25: Servos and how to use them](https://youtu.be/J8atdmEqZsc?si=bH_xoIwnAsNU5_lD)
- [Electronic Basics #24: Stepper Motors and how to use them](https://youtu.be/bkqoKWP4Oy4?si=kvhwykmFZ0UnLDJ7)
- [Electronic Basics #18: DC & Brushless DC Motor + ESC](https://youtu.be/UteZJ_7C4Mg?si=uADPmCaucyWXd8Xe)
_________________
### Operating Systems
#### Operating System Fundamentals
- [💎 Operating Systems: Three Easy Pieces - Remzi H Arpaci-Dusseau, Andrea C Arpaci-Dusseau](https://pages.cs.wisc.edu/~remzi/OSTEP/)
- [Modern Operating Systems - Andrew S. Tanenbaum, Herbert Bos](https://www.pearson.com/en-us/subject-catalog/p/modern-operating-systems/P200000003295)
#### Embedded Linux
- [FreeRTOS vs Linux for Embedded Systems](https://www.bytesnap.com/news-blog/freertos-vs-linux-embedded-systems/)
- [Introduction to Embedded Linux](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 From Scratch - step-by-step instructions for building your own custom Linux system](https://www.linuxfromscratch.org/)
##### Linux Kernel
- [The Linux Kernel](https://tldp.org/LDP/tlk/)
- [💎 The Linux Programming Interface - Michael Kerrisk](https://man7.org/tlpi/)
- [How Linux Works - Brian Ward](https://nostarch.com/howlinuxworks3)
- [Practical System Programming with C: Pragmatic Example Applications in Linux and Unix-Based Operating Systems - Sri Manikanta Palakollu](https://link.springer.com/book/10.1007/978-1-4842-6321-1)
##### Linux Device Drivers
- [💎 Linux Device Drivers - Jonathan Corbet, Alessandro Rubini, Greg Kroah-Hartman](https://lwn.net/Kernel/LDD3/)
- [Mastering Linux Device Driver Development - John Madieu](https://www.packtpub.com/product/mastering-linux-device-driver-development/9781789342048)
##### U-Boot
- [The U-Boot Documentation](https://u-boot.readthedocs.io/en/latest/)
##### Buildroot
- [Buildroot Documentation](https://buildroot.org/docs.html)
- [Introduction to Embedded Linux Part 1 - Buildroot | Digi-Key Electronics](https://www.youtube.com/watch?v=9vsu67uMcko)
##### Yocto
- [💎 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)
- [Yocto Project Tutorial Series (Basic to Advance)](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/)
- [Embedded Linux Development using Yocto Project Cookbook - Alex Gonzalez](https://www.oreilly.com/library/view/embedded-linux-development/9781788399210/)
##### Multithreading & Parallel Processing
- [Multitasking vs Multithreading vs Multiprocessing](https://medium.com/codex/multitasking-vs-multithreading-vs-multiprocessing-2b0087c861ae)
- [💎 Programming with POSIX Threads - David Butenhof](https://a.co/d/9R6DswF)
- [Parallel Programming and Performance Optimization With OpenMP](https://passlab.github.io/OpenMPProgrammingBook/index.html)
- [Introduction to OpenMP - Tim Mattson (Intel)](https://youtube.com/playlist?list=PLLX-Q6B8xqZ8n8bwjGdzBJ25X2utwnoEG)
- [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)](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 – Multi-Threading and IPC with Qt 5 C++](https://www.udemy.com/course/multi-threading-and-ipc-with-qt-c-plus-plus/)
##### Qt
- [Qt Documentation](https://doc.qt.io/)
- [Introduction to Qt / QML](https://www.youtube.com/playlist?list=PL6CJYn40gN6hUXoYdyn4DHUTXfcVDJcfB)
#### Real-Time OS
##### RTOS Basics
- [Bare-metal and RTOS Based Embedded Systems](https://microcontrollerslab.com/difference-bare-metal-and-rtos-based-embedded-systems/)
- [The Pros and Cons of RTOS vs Bare Metal: Which Will You Choose?](https://medium.com/@lanceharvieruntime/the-pros-and-cons-of-rtos-vs-bare-metal-which-will-you-choose-756e33ba6df7)
- [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)
- [RTOS](https://www.youtube.com/playlist?list=PLPW8O6W-1chyrd_Msnn4LD6LBs2slJITs)
- [Beyond the RTOS](https://www.youtube.com/playlist?list=PLPW8O6W-1chytjkg63-tM7MI0BvGxxPIP)
##### FreeRTOS
- [FreeRTOS - Market leading RTOS](https://www.freertos.org)
- [Introduction to RTOS](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)
- [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)
- [SafeRTOS - Safety Critical Real-Time OS](https://www.freertos.org/FreeRTOS-Plus/Safety_Critical_Certified/SafeRTOS.html)
##### Zephyr
- [Zephyr® Project](https://www.zephyrproject.org/)
- [Why We Moved from FreeRTOS to Zephyr RTOS](https://www.zephyrproject.org/why-we-moved-from-freertos-to-zephyr-rtos/)
- [nRF Connect SDK](https://academy.nordicsemi.com/courses/nrf-connect-sdk-fundamentals/)
- [ESP32 on Zephyr OS](https://www.youtube.com/playlist?list=PLEQVp_6G_y4iFfemAbFsKw6tsGABarTwp)
##### μC/OS / Micriμm OS
- [Micriμm OS](https://www.silabs.com/developers/micrium)
- [µC/OS-III Documentation](https://micrium.atlassian.net/wiki/spaces/osiiidoc/overview)
- [µC/OS-III Books](https://weston-embedded.com/micrium-books)
- [💎 µC/OS-II Documentation (Previously published as a book titled "MicroC/OS-II: The Real-Time Kernel")](https://micrium.atlassian.net/wiki/spaces/osiidoc/overview)
##### NuttX
- [NuttX - The Apache Software Foundation](https://nuttx.apache.org/)
- [NuttX Documentation](https://nuttx.apache.org/docs/latest/)
- [Getting Started to NuttX](https://www.youtube.com/playlist?list=PLd73yQk5Fd8JEsVD-lhwYRQKVu6glfDa8)
##### RT-Thread
- [RT-Thread | An Open Source Embedded Real-time Operating System](https://www.rt-thread.io/)
- [RT-Thread document center](https://www.rt-thread.io/document/site/)
- [RT-Thread Beginners Guide](https://youtube.com/playlist?list=PLXUV89C_M3G5KVw2IerI-pqApdSM_IaZo)
##### Mbed OS
- [Mbed OS](https://os.mbed.com/mbed-os/)
- [Mbed OS Documentation](https://os.mbed.com/docs/mbed-os/)
##### QNX
- [BlackBerry QNX: Embedded OS, Support, and Services](https://blackberry.qnx.com/en)
- [QNX Product Documentation](https://www.qnx.com/developers/docs/index.html)
##### VxWorks
- [VxWorks | Industry Leading RTOS for Embedded Systems](https://www.windriver.com/products/vxworks)
- [VxWorks Documentation](https://docs.windriver.com/category/os_vxworks?labelkey=os_vxworks)
- [VxWORKS-RTOS - Kumar M(YouTube Playlist)](https://www.youtube.com/playlist?list=PLyp1I7W35-q34sYWBlBg8xgoqsizZ57P7)
##### Azure RTOS (ThreadX)
- [Azure RTOS - Making embedded IoT development and connectivity easy](https://azure.microsoft.com/en-us/services/rtos/)
- [Microsoft Azure RTOS documentation](https://learn.microsoft.com/en-us/azure/rtos/)
_________________
### Digital Signal Processing
#### DSP Fundamentals & Filter Design
- [💎 The Scientist and Engineer's Guide to Digital Signal Processing - Steven W. Smith](https://www.dspguide.com/pdfbook.htm)
- [FIR Filter Design and Software Implementation - Phil's Lab #17](https://www.youtube.com/watch?v=uNNNj9AZisM)
- [IIR Filters - Theory and Implementation (STM32) - Phil's Lab #32](https://www.youtube.com/watch?v=QRMe02kzVkA)
- [Digital Signal Processing (ECSE-4530) Lectures, Fall 2014](https://youtube.com/playlist?list=PLuh62Q4Sv7BUSzx5Jr8Wrxxn-U10qG1et)
- [Udemy – Digital Signal Processing (DSP) From Ground Up in C](https://www.udemy.com/course/digital-signal-processing-dsp-from-ground-uptm-in-c/)
- [Real-Time Digital Signal Processing: Fundamentals, Implementations and Applications - Sen M. Kuo, Bob H. Lee, Wenshun Tian](https://www.wiley.com/en-us/Real+Time+Digital+Signal+Processing%3A+Fundamentals%2C+Implementations+and+Applications%2C+3rd+Edition-p-9781118414323)
- [Real-Time Digital Signal Processing from MATLAB to C with the TMS320C6x DSPs - Thad B. Welch, Cameron H.G. Wright, Michael G. Morrow](https://www.routledge.com/Real-Time-Digital-Signal-Processing-from-MATLAB-to-C-with-the-TMS320C6x/Welch-Wright-Morrow/p/book/9780367736453)
- [Schaum's Outline of Signals and Systems - Hwei P. Hsu](https://www.mhprofessional.com/schaum-s-outline-of-signals-and-systems-fourth-edition-9781260454246-usa)
- [💎 Digital Signal Processing - John G. Proakis, Dimitris K. Manolakis](https://a.co/d/75P5PiE)
#### Discrete Fourier Transform / FFT
- [Discrete Fourier Transform - Simple Step by Step](https://www.youtube.com/watch?v=mkGsMWi_j4Q)
- [The Fast Fourier Transform (FFT): Most Ingenious Algorithm Ever?](https://youtu.be/h7apO7q16V0)
- [The FFT Algorithm - Simple Step by Step](https://www.youtube.com/watch?v=htCj9exbGo0)
- [STM32 Fast Fourier Transform (CMSIS DSP FFT) - Phil's Lab #111](https://youtu.be/d1KvgOwWvkM)
#### Controls Systems / PID Control
- [Understanding Control Systems](https://youtube.com/playlist?list=PLn8PRpmsu08q8CE0pbZ-cSrMm_WYJfVGd)
- [Control Systems - CircuitBread (YouTube Playlist)](https://www.youtube.com/playlist?list=PLfYdTiQCV_p4YZNJWExM-5_g0fk9bHDL8)
- [What is a PID Controller? | DigiKey](https://www.youtube.com/watch?v=tFVAaUcOm4I)
- [PID Controller Explained](https://www.youtube.com/watch?v=fv6dLTEvl74)
- [Understanding PID Control](https://youtube.com/playlist?list=PLn8PRpmsu08pQBgjxYFXSsODEF3Jqmm-y)
- [PID Controller Implementation in Software - Phil's Lab #6](https://www.youtube.com/watch?v=zOByx3Izf5U)
- [💎 Control Systems Engineering - Norman S. Nise](https://www.wiley.com/en-us/Control+Systems+Engineering%2C+8th+Edition-p-9781119474227)
- [💎 Modern Control Systems - Richard C. Dorf, Robert H. Bishop](https://www.pearson.com/en-us/subject-catalog/p/modern-control-systems/P200000003484/9780137307098)
#### MATLAB / Simulink
- [MATLAB Tutorials: Getting Started with MATLAB](https://youtube.com/playlist?list=PL7CAABC40B2825C8B)
- [Getting Started with Simulink](https://youtube.com/playlist?list=PL484BA2AD3AE4C2D0)
- [Udemy – MATLAB/SIMULINK Bible|Go From Zero to Hero!](https://www.udemy.com/course/matlabsimulink-biblego-from-zero-to-hero/)
_________________
### Debugging
#### JTAG / SWD
- [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
- [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)
#### OpenOCD
- [This Is 100% How You Should Be Debugging | How to Use OpenOCD to Debug Embedded Software with GDB](https://www.youtube.com/watch?v=_1u7IOnivnM)
_________________
### Testing
- [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 for Embedded C - James Grenning](https://www.amazon.com/Driven-Development-Embedded-Pragmatic-Programmers/dp/193435662X)
#### CI/CD Flow
- [Intro to CI/CD](https://youtu.be/1nxGcfIm-TU)
- [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)
- [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/)
#### Unit Testing
- [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
- [Hardware CI Arena](https://electricui.com/blog/hardware-testing)
- [Exclave: Hardware Testing in Mass Production, Made Easier](https://www.bunniestudios.com/blog/?p=5450)
- [Regression Testing of Embedded Systems](https://www.parasoft.com/blog/regression-testing-of-embedded-systems/)
#### SiL / HiL Testing
- [Embedded CI/CD with HIL Testing](https://youtube.com/playlist?list=PL4cGeWgaBTe1uwiqIAc6fwPzPpvgPZI2J)
#### Industry Standards & Certifications
- [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)
_________________
### Embedded AI
- [Udemy – Getting Started with Embedded AI | Edge AI](https://www.udemy.com/course/getting-started-with-embedded-ai-hands-on-experience/)
- [Intro to Edge AI: Machine Learning + IoT – Maker.io Tutorial | Digi-Key Electronics](https://www.youtube.com/watch?v=Ejld8XZmvwE)
#### 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)
- [Machine Learning Crash Course with TensorFlow APIs - Google](https://developers.google.com/machine-learning/crash-course/)
#### TensorFlow
- [Getting Started with TensorFlow and Keras – Maker.io | Digi-Key Electronics](https://www.youtube.com/watch?v=HCG3hFe1KYY)
- [Intro to TensorFlow Lite Part 1: Wake Word Feature Extraction – Maker.io | Digi-Key Electronics](https://www.youtube.com/watch?v=0fn7pj7Dutc)
- [Intro to TensorFlow Lite Part 2: Speech Recognition Model Training – Maker.io | Digi-Key Electronics](https://www.youtube.com/watch?v=yv_WVwr6OkI)
#### 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)
- [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)
- [edX - Fundamentals of TinyML](https://www.edx.org/learn/machine-learning/harvard-university-fundamentals-of-tinyml)
- [edX - Applications of TinyML](https://www.edx.org/learn/tinyml/harvard-university-applications-of-tinyml)
- [edX - Deploying TinyML](https://www.edx.org/learn/tinyml/harvard-university-deploying-tinyml)
- [edX - MLOps for Scaling TinyML](https://www.edx.org/learn/computer-programming/harvard-university-mlops-for-scaling-tinyml)
- [TinyML: Machine Learning with TensorFlow Lite on Arduino and Ultra-Low-Power Microcontrollers - Pete Warden, Daniel Situnayake](https://tinymlbook.com/)
_________________
### Embedded Security
#### Cryptography
- [Microchip University - Cryptography Primer](https://mu.microchip.com/cryptography-primer)
- [Hashing, Hashing Algorithms, and Collisions - Cryptography - Practical TLS](https://youtu.be/HHQ2QP_upGM)
- [Data Integrity - How Hashing is used to ensure data isn't modified - HMAC - Cryptography](https://www.youtube.com/watch?v=doN3lzzNEIM)
- [Encryption - Symmetric Encryption vs Asymmetric Encryption - Cryptography - Practical TLS](https://www.youtube.com/watch?v=o_g-M7UBqI8)
- [Public and Private Keys - Signatures & Key Exchanges - Cryptography - Practical TLS](https://youtu.be/_zyKvPvh808)
- [Understanding AES Encryption Mechanics: BMPS](https://youtu.be/OnhtzFJW_4I)
- [💎 Understanding Cryptography: A Textbook for Students and Practitioners - Christof Paar, Jan Pelzl](https://link.springer.com/book/10.1007/978-3-642-04101-3)
- [Cryptography and Network Security: Principles and Practice - William Stallings](https://www.pearson.com/en-us/subject-catalog/p/cryptography-and-network-security-principles-and-practice/P200000003477/9780135764213)
- [Serious Cryptography: A Practical Introduction to Modern Encryption - Jean-Philippe Aumasson](https://nostarch.com/seriouscrypto)
- [MOOC - Security Part2: Basics of cryptography](https://youtube.com/playlist?list=PLnMKNibPkDnFSFh57UFTZLpy-7lZiwTHh)
- [MOOC - Security Part3 : STM32 security features](https://youtube.com/playlist?list=PLnMKNibPkDnFzux3PHKUEi14ftDn9Cbm7)
- [Introduction to encryption for embedded Linux developers](https://sergioprado.blog/introduction-to-encryption-for-embedded-linux-developers/)
- [A hands-on approach to symmetric-key encryption](https://sergioprado.blog/a-hands-on-approach-to-symmetric-key-encryption/)
- [Asymmetric-Key Encryption and Digital Signatures in Practice](https://sergioprado.blog/asymmetric-key-encryption-and-digital-signatures-in-practice/)
#### Secure Boot & Secure Firmware Update
- [Blinky To Bootloader: Bare Metal Programming Series](https://www.youtube.com/playlist?list=PLP29wDx6QmW7HaCrRydOnxcy8QmW0SNdQ)
- [MOOC - Security Part4 : STM32 security in practice](https://youtube.com/playlist?list=PLnMKNibPkDnF0wt-ZI74SflnsBV4yKzkO)
- [MOOC - Security Part5 : How to define your security needs](https://youtube.com/playlist?list=PLnMKNibPkDnGqh5OmQWw98ztpf9TeczbC)
- [MOOC - Security Part6: STM32 security ecosystem, from theory to practice](https://youtube.com/playlist?list=PLnMKNibPkDnGd7J7fV7tr-4xIBwkNfD--)
- [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/)
- [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/)
## History
The idea of creating this roadmap came from a [roadmap](https://github.com/vazeri/Embedded-Engineering-RoadMap-2018) designed by [vazeri](https://github.com/vazeri) which was well designed but not updated for years.
I took that idea and changed the structure of the roadmap and tried to improve it. The initial results can be accessed in [m3y54m / Embedded-Engineering-Roadmap-Archived](https://github.com/m3y54m/Embedded-Engineering-Roadmap-Archived) which is now archived. Early versions of the roadmap were created using [Balsamiq Wireframes](https://balsamiq.com) which were not suitable for these types of diagrams. So I decided to use Microsoft Visio 2019 and redrew the whole diagram with it.
The idea of creating this roadmap came from [vazeri / Embedded-Engineering-RoadMap-2018](https://github.com/vazeri/Embedded-Engineering-RoadMap-2018) which was well designed but had some flaws and not updated for years.
I took that idea, changed the structure of the roadmap and tried to improve it. The initial results can be accessed in [m3y54m / Embedded-Engineering-Roadmap-Archived](https://github.com/m3y54m/Embedded-Engineering-Roadmap-Archived) which is now archived. Early versions of the roadmap were created using [Balsamiq Wireframes](https://balsamiq.com) which is not suitable for these types of diagrams. So I decided to use Microsoft Visio instead and redrew the whole diagram.
## Copyright
@@ -22,4 +946,10 @@ This work is licensed under a [Creative Commons Attribution-ShareAlike 4.0 Inter
## Acknowledgement
Special thanks to my friends in the Iranian Twitter community (Electronics and Embedded Systems Engineers) for their help in updating this roadmap.
Special thanks to my friends in the community of Iranian Embedded Engineers in Twitter and [r/embedded](https://www.reddit.com/r/embedded) subreddit for their suggestions that helped in improving this roadmap.
## Contribution
If you think that this 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.
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.