From a20e4aca35390e8ec1f6a83a3ea6f10c2ce7280b Mon Sep 17 00:00:00 2001 From: Meysam Parvizi Date: Mon, 11 Sep 2023 14:36:46 +0330 Subject: [PATCH 1/7] Fix empty box of `Simulation / Emulation Tools` --- Embedded-Engineering-Roadmap.vsdx | Bin 94246 -> 94307 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Embedded-Engineering-Roadmap.vsdx b/Embedded-Engineering-Roadmap.vsdx index a8db7dde6772ac4bad6e1f51ed60e75a363c535c..86953a27ab0ba09fe988b57bcaedc05570a84746 100644 GIT binary patch delta 25799 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 z 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 From 8a43d03ff55e5f18e9474b928b5a4045ca3d9ba0 Mon Sep 17 00:00:00 2001 From: Meysam Parvizi Date: Mon, 11 Sep 2023 15:07:51 +0330 Subject: [PATCH 2/7] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 1617bc2..3ba1200 100644 --- a/README.md +++ b/README.md @@ -106,7 +106,7 @@ _________________ 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. +The ๐Ÿ’Ž symbol is to indicate well-known references that have really invaluable and comprehensive content. If you want to deepen your understanding of a topic, refer to the resources marked with a ๐Ÿ’Ž icon. _________________ @@ -178,7 +178,7 @@ _________________ ### Prototyping Skills -#### Using Breadboards +#### Breadboarding - [Everything You Need to Know about Breadboards](https://www.youtube.com/watch?v=mE33WpRWrXs) - [How to Use a Breadboard](https://youtu.be/6WReFkfrUIk) From ef0e2e4a880c898d5d889a4edf1e1dbaa79aeeeb Mon Sep 17 00:00:00 2001 From: Meysam Parvizi Date: Mon, 11 Sep 2023 15:10:57 +0330 Subject: [PATCH 3/7] Update README.md --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 3ba1200..0ab3994 100644 --- a/README.md +++ b/README.md @@ -347,6 +347,9 @@ _________________ ### Microcontrollers +- [What Is a Microcontroller? The Defining Characteristics and Architecture of a Common Component](https://www.allaboutcircuits.com/technical-articles/what-is-a-microcontroller-introduction-component-characteristics-component/) +- [How to Choose the Right Microcontroller for Your Application ](https://www.allaboutcircuits.com/technical-articles/how-to-choose-the-right-microcontroller-for-your-application/) +- [How to Read a Microcontroller Datasheet: Introduction and First Steps](https://www.allaboutcircuits.com/technical-articles/how-to-read-a-microcontroller-datasheet-introduction-and-first-steps2/) - [๐Ÿ’Ž Make: AVR Programming - Elliot Williams](https://www.oreilly.com/library/view/make-avr-programming/9781449356484/) - [๐Ÿ’Ž Mastering STM32 - Carmine Noviello](https://leanpub.com/mastering-stm32-2nd) - [Getting Started With AVR](https://www.youtube.com/playlist?list=PLtQdQmNK_0DRhBWYZ32BEILOykXLpJ8tP) From 24676992a85cc4d7658798638d9d6af8c58f8ec3 Mon Sep 17 00:00:00 2001 From: Meysam Parvizi Date: Mon, 11 Sep 2023 20:35:42 +0330 Subject: [PATCH 4/7] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0ab3994..b20b253 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ Becoming an embedded engineer requires a broad understanding of both software an ## 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. +[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. From 4a921c486c17baccb059495d3bd7b7e00a35aaba Mon Sep 17 00:00:00 2001 From: Meysam Parvizi Date: Tue, 12 Sep 2023 00:51:32 +0330 Subject: [PATCH 5/7] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index b20b253..4c8d6dc 100644 --- a/README.md +++ b/README.md @@ -924,6 +924,8 @@ _________________ #### Secure Boot & Secure Firmware Update +- [AVR230: DES Bootloader on tinyAVR and megaAVR devices](https://www.microchip.com/en-us/application-notes/avr230) +- [AVR231: AES Bootloader](https://www.microchip.com/en-us/application-notes/an2462) - [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) From a969b64f4ad892b5cfcd986e1ea5efa248dee601 Mon Sep 17 00:00:00 2001 From: Meysam Parvizi Date: Tue, 12 Sep 2023 01:24:14 +0330 Subject: [PATCH 6/7] Update README.md Add `Renode` --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 4c8d6dc..dd6b2d2 100644 --- a/README.md +++ b/README.md @@ -456,6 +456,11 @@ _________________ - [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) +#### [Renode](https://renode.io/) + +- [Renode - Antmicro's open source simulation and virtual development framework for complex embedded systems](https://github.com/renode/renode) +- [Renode - documentation](https://renode.readthedocs.io/en/latest/) + _________________ ### Interfaces, Protocols & Communication Technologies From f884c71825d3f07b7f1f4339811287554d11dc9b Mon Sep 17 00:00:00 2001 From: Meysam Parvizi Date: Tue, 12 Sep 2023 01:45:23 +0330 Subject: [PATCH 7/7] Update README.md Add "(YouTube Playlist)" suffix to all YouTube playlist links --- README.md | 98 +++++++++++++++++++++++++++---------------------------- 1 file changed, 49 insertions(+), 49 deletions(-) diff --git a/README.md b/README.md index dd6b2d2..2e9f27d 100644 --- a/README.md +++ b/README.md @@ -69,9 +69,9 @@ If you do not have any background in programming the embedded systems, Arduino b 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) +- [New Arduino Tutorials (YouTube Playlist)](https://youtube.com/playlist?list=PLGs0VKk2DiYw-L-RibttcvK-WBZm8WLEP) - [Arduino in a commercial product?](https://www.youtube.com/watch?v=c5LzsqeSCAc) -- [Arduino Project to Product](https://www.youtube.com/playlist?list=PLEBQazB0HUyQd6Fsf5NQ75M9llbi1_j_8) +- [Arduino Project to Product (YouTube Playlist)](https://www.youtube.com/playlist?list=PLEBQazB0HUyQd6Fsf5NQ75M9llbi1_j_8) #### ๐Ÿ‘จโ€๐Ÿซ Educational Websites @@ -91,7 +91,7 @@ Additionally, the [Arduino Core](https://github.com/arduino/ArduinoCore-API) tak #### ๐Ÿ˜ˆ Hardware Hacking -- [Hardware Hacking Tutorial](https://www.youtube.com/playlist?list=PLoFdAHrZtKkhcd9k8ZcR4th8Q8PNOx7iU) +- [Hardware Hacking Tutorial (YouTube Playlist)](https://www.youtube.com/playlist?list=PLoFdAHrZtKkhcd9k8ZcR4th8Q8PNOx7iU) - [The Hardware Hacking Handbook: Breaking Embedded Security with Hardware Attacks - Jasper van Woudenberg, Colin O'Flynn](https://a.co/d/gUIytFX) @@ -185,9 +185,9 @@ _________________ #### 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) +- [Electronic Circuit Design - IFE - TU Graz (YouTube Playlist)](https://www.youtube.com/playlist?list=PLLpZ1DoEuR9tbV8r8bMSI94znm6pRB905) +- [Hardware Design - Philโ€™s Lab (YouTube Playlist)](https://www.youtube.com/playlist?list=PLXSyc11qLa1YhVCZ5xWPuPsE5MkgEy5TF) +- [Microcontroller-Based Hardware Design With Altium Designer (YouTube Playlist)](https://www.youtube.com/playlist?list=PL3aaAq2OJU5HcbClqrOhqBDozF7HmxV-s) #### PCB Design @@ -200,7 +200,7 @@ _________________ - [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_) +- [PCB Design for Advanced Users (YouTube Playlist)](https://youtube.com/playlist?list=PL3aaAq2OJU5EWfYT_Z93tc9pBF_Sidba_) - [9 Simple Tricks to Improve EMC / EMI on Your Boards - Practical examples (with Min Zhang)](https://www.youtube.com/watch?v=Lf51sx6sC0I) - [Many EMC Tips to Help You Design Better PCB Boards (with Keith Armstrong)](https://www.youtube.com/watch?v=gHF5JyJF-N4) @@ -218,7 +218,7 @@ _________________ ### 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) +- [Introduction to FPGA (YouTube Playlist)](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/) @@ -257,8 +257,8 @@ _________________ #### State Machines / UML -- [State Machines](https://www.youtube.com/playlist?list=PLPW8O6W-1chxym7TgIPV9k5E8YJtSBToI) -- [Event-Driven Programming](https://www.youtube.com/playlist?list=PLPW8O6W-1chx8Y7Oq2gOE0NUPXmQxu2Wr) +- [State Machines (YouTube Playlist)](https://www.youtube.com/playlist?list=PLPW8O6W-1chxym7TgIPV9k5E8YJtSBToI) +- [Event-Driven Programming (YouTube Playlist)](https://www.youtube.com/playlist?list=PLPW8O6W-1chx8Y7Oq2gOE0NUPXmQxu2Wr) - [Embedded System Design using UML State Machines](https://www.udemy.com/course/embedded-system-design-using-uml-state-machines/) #### Memory Management @@ -275,7 +275,7 @@ _________________ - [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) +- [C Programming Tutorials (YouTube Playlist)](https://www.youtube.com/playlist?list=PLA1FTfKBAEX4hblYoH6mnq0zsie2w6Wif) - [๐Ÿ’Ž The C Programming Language - Brian W. Kernighan, Dennis M. Ritchie ](https://www.amazon.com/dp/0131103628?ref_=cm_sw_r_cp_ud_dp_KRZ8M1WTXWVG0HMSRBXA) - [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) @@ -285,7 +285,7 @@ _________________ - [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) +- [C++ by The Cherno (YouTube Playlist)](https://youtube.com/playlist?list=PLlrATfBNZ98dudnM48yfGUldqGD0S4FFb) #### Assembly @@ -302,7 +302,7 @@ _________________ #### Rust - [The Embedded Rust Book](https://docs.rust-embedded.org/book/) -- [The Future of Programming: Rust](https://www.youtube.com/playlist?list=PLc7W4b0WHTAUAEAguiqpNa5H0QqXJIJI6) +- [The Future of Programming: Rust (YouTube Playlist)](https://www.youtube.com/playlist?list=PLc7W4b0WHTAUAEAguiqpNa5H0QqXJIJI6) - [Community Rust support projects for STM32 microcontrollers](https://github.com/stm32-rs) - [Rust on ESP Community](https://github.com/esp-rs) @@ -318,7 +318,7 @@ _________________ #### CMake - [CMake Tutorial](https://cmake.org/cmake/help/latest/guide/tutorial/index.html) -- [How to CMake Good](https://youtube.com/playlist?list=PLK6MXr8gasrGmIiSuVQXpfFuE1uPT615s) +- [How to CMake Good (YouTube Playlist)](https://youtube.com/playlist?list=PLK6MXr8gasrGmIiSuVQXpfFuE1uPT615s) #### Bash Scripting @@ -352,12 +352,12 @@ _________________ - [How to Read a Microcontroller Datasheet: Introduction and First Steps](https://www.allaboutcircuits.com/technical-articles/how-to-read-a-microcontroller-datasheet-introduction-and-first-steps2/) - [๐Ÿ’Ž Make: AVR Programming - Elliot Williams](https://www.oreilly.com/library/view/make-avr-programming/9781449356484/) - [๐Ÿ’Ž 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) +- [Getting Started With AVR (YouTube Playlist)](https://www.youtube.com/playlist?list=PLtQdQmNK_0DRhBWYZ32BEILOykXLpJ8tP) +- [Fundamentals of Microcontrollers - Arduino bare-metal breakdown (YouTube Playlist)](https://www.youtube.com/playlist?list=PLNyfXcjhOAwOF-7S-ZoW2wuQ6Y-4hfjMR) +- [Getting Started with STM32 and Nucleo (YouTube Playlist)](https://youtube.com/playlist?list=PLEBQazB0HUyRYuzfi4clXsKUSgorErmBv) +- [Bare Metal Embedded Programming: Theory and Practice Using STM32 (YouTube Playlist)](https://www.youtube.com/playlist?list=PL4cGeWgaBTe155QQSQ72DksLIjBn5Jn2Z) - [Beginning STM32: Developing with FreeRTOS, libopencm3 and GCC - Warren Gay](https://link.springer.com/book/10.1007/978-1-4842-3624-6) -- [Intro to Raspberry Pi Pico and RP2040](https://www.youtube.com/playlist?list=PLEBQazB0HUyQO6rJxKr2umPCgmfAU-cqR) +- [Intro to Raspberry Pi Pico and RP2040 (YouTube Playlist)](https://www.youtube.com/playlist?list=PLEBQazB0HUyQO6rJxKr2umPCgmfAU-cqR) - [Udemy โ€“ Microcontroller Embedded C Programming: Absolute Beginners](https://www.udemy.com/course/microcontroller-embedded-c-programming/) - [Udemy โ€“ Embedded Systems STM32 Low-Layer APIs(LL) Driver Development](https://www.udemy.com/course/embedded-systems-stm32-low-level-ll-driver-development/) - [Udemy โ€“ Embedded Systems STM32 HAL APIs Driver Development](https://www.udemy.com/course/embedded-systems-stm32-hal-apis-driver-development/) @@ -381,7 +381,7 @@ _________________ #### Timers -- [STM32 TIMERS](https://www.youtube.com/playlist?list=PLfIJKC1ud8gjLZBzjE3kKBMDEH_lUc428) +- [STM32 TIMERS (YouTube Playlist)](https://www.youtube.com/playlist?list=PLfIJKC1ud8gjLZBzjE3kKBMDEH_lUc428) #### PWM @@ -421,7 +421,7 @@ _________________ - [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) +- [Blinky To Bootloader: Bare Metal Programming Series (YouTube Playlist)](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/) @@ -481,7 +481,7 @@ _________________ ##### I2C - [Understanding I2C](https://www.youtube.com/watch?v=CAvawEcxoPU) -- [STM32 I2C SLAVE](https://www.youtube.com/playlist?list=PLfIJKC1ud8gj_P7Qb28aTr0t92uk_vwg0) +- [STM32 I2C SLAVE (YouTube Playlist)](https://www.youtube.com/playlist?list=PLfIJKC1ud8gj_P7Qb28aTr0t92uk_vwg0) ##### SPI @@ -526,7 +526,7 @@ _________________ - [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) +- [MODBUS STM32 (YouTube Playlist)](https://www.youtube.com/playlist?list=PLfIJKC1ud8ggRvaEsMjSEDazoBAnY4MUv) ##### RS485 @@ -554,7 +554,7 @@ _________________ - [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) +- [MOOC - STM32 USB training (YouTube Playlist)](https://www.youtube.com/playlist?list=PLnMKNibPkDnFFRBVD206EfnnHhQZI4Hxa) #### Automotive @@ -564,7 +564,7 @@ _________________ - [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) +- [CAN Bus, OBD2 & J1939 Explained (YouTube Playlist)](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) @@ -584,7 +584,7 @@ _________________ ##### GSM / LTE -- [STM32 : Internet Of Things With 4G LTE Modem](https://www.youtube.com/playlist?list=PL2_RO8p04imYY5JOrCDT7V0hnzkgyExRe) +- [STM32 : Internet Of Things With 4G LTE Modem (YouTube Playlist)](https://www.youtube.com/playlist?list=PL2_RO8p04imYY5JOrCDT7V0hnzkgyExRe) ##### LTE-M & NB-IoT @@ -655,7 +655,7 @@ _________________ #### 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) +- [Introduction to Embedded Linux (YouTube Playlist)](https://youtube.com/playlist?list=PLEBQazB0HUyTpoJoZecRK6PpDG31Y7RPB) - [Mastering Embedded Linux Programming - Chris Simmonds](https://www.packtpub.com/product/mastering-embedded-linux-programming-third-edition/9781789530384) - [Linux From Scratch - step-by-step instructions for building your own custom Linux system](https://www.linuxfromscratch.org/) @@ -684,7 +684,7 @@ _________________ - [๐Ÿ’Ž 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) +- [Yocto Project Tutorial Series (Basic to Advance) (YouTube Playlist)](https://www.youtube.com/playlist?list=PLwqS94HTEwpQmgL1UsSwNk_2tQdzq3eVJ) - [Udemy โ€“ Embedded Linux using Yocto](https://www.udemy.com/course/embedded-linux-using-yocto/) - [๐Ÿ’Ž Embedded Linux Systems with the Yocto Project - Rudolf J.Streif](https://www.oreilly.com/library/view/embedded-linux-systems/9780133443301/) - [Embedded Linux Development using Yocto Project Cookbook - Alex Gonzalez](https://www.oreilly.com/library/view/embedded-linux-development/9781788399210/) @@ -694,7 +694,7 @@ _________________ - [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) +- [Introduction to OpenMP - Tim Mattson (Intel) (YouTube Playlist)](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) @@ -706,7 +706,7 @@ _________________ ##### Qt - [Qt Documentation](https://doc.qt.io/) -- [Introduction to Qt / QML](https://www.youtube.com/playlist?list=PL6CJYn40gN6hUXoYdyn4DHUTXfcVDJcfB) +- [Introduction to Qt / QML (YouTube Playlist)](https://www.youtube.com/playlist?list=PL6CJYn40gN6hUXoYdyn4DHUTXfcVDJcfB) #### Real-Time OS @@ -717,13 +717,13 @@ _________________ - [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) +- [RTOS (YouTube Playlist)](https://www.youtube.com/playlist?list=PLPW8O6W-1chyrd_Msnn4LD6LBs2slJITs) +- [Beyond the RTOS (YouTube Playlist)](https://www.youtube.com/playlist?list=PLPW8O6W-1chytjkg63-tM7MI0BvGxxPIP) ##### FreeRTOS - [FreeRTOS - Market leading RTOS](https://www.freertos.org) -- [Introduction to RTOS](https://www.youtube.com/playlist?list=PLEBQazB0HUyQ4hAPU1cJED6t3DU0h34bz) +- [Introduction to RTOS (YouTube Playlist)](https://www.youtube.com/playlist?list=PLEBQazB0HUyQ4hAPU1cJED6t3DU0h34bz) - [Mastering the FreeRTOS Real Time Kernel - a Hands On Tutorial Guide](https://www.freertos.org/Documentation/RTOS_book.html) - [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) @@ -735,7 +735,7 @@ _________________ - [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) +- [ESP32 on Zephyr OS (YouTube Playlist)](https://www.youtube.com/playlist?list=PLEQVp_6G_y4iFfemAbFsKw6tsGABarTwp) ##### ฮผC/OS / Micriฮผm OS @@ -748,13 +748,13 @@ _________________ - [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) +- [Getting Started to NuttX (YouTube Playlist)](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) +- [RT-Thread Beginners Guide (YouTube Playlist)](https://youtube.com/playlist?list=PLXUV89C_M3G5KVw2IerI-pqApdSM_IaZo) ##### Mbed OS @@ -770,7 +770,7 @@ _________________ - [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) +- [VxWORKS-RTOS - Kumar M (YouTube Playlist)](https://www.youtube.com/playlist?list=PLyp1I7W35-q34sYWBlBg8xgoqsizZ57P7) ##### Azure RTOS (ThreadX) @@ -786,7 +786,7 @@ _________________ - [๐Ÿ’Ž 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) +- [Digital Signal Processing (ECSE-4530) Lectures, Fall 2014 (YouTube Playlist)](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) @@ -802,19 +802,19 @@ _________________ #### Controls Systems / PID Control -- [Understanding Control Systems](https://youtube.com/playlist?list=PLn8PRpmsu08q8CE0pbZ-cSrMm_WYJfVGd) +- [Understanding Control Systems (YouTube Playlist)](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) +- [Understanding PID Control (YouTube Playlist)](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) +- [MATLAB Tutorials: Getting Started with MATLAB (YouTube Playlist)](https://youtube.com/playlist?list=PL7CAABC40B2825C8B) +- [Getting Started with Simulink (YouTube Playlist)](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/) _________________ @@ -867,7 +867,7 @@ _________________ #### SiL / HiL Testing -- [Embedded CI/CD with HIL Testing](https://youtube.com/playlist?list=PL4cGeWgaBTe1uwiqIAc6fwPzPpvgPZI2J) +- [Embedded CI/CD with HIL Testing (YouTube Playlist)](https://youtube.com/playlist?list=PL4cGeWgaBTe1uwiqIAc6fwPzPpvgPZI2J) #### Industry Standards & Certifications @@ -921,8 +921,8 @@ _________________ - [๐Ÿ’Ž 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) +- [MOOC - Security Part2: Basics of cryptography (YouTube Playlist)](https://youtube.com/playlist?list=PLnMKNibPkDnFSFh57UFTZLpy-7lZiwTHh) +- [MOOC - Security Part3 : STM32 security features (YouTube Playlist)](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/) @@ -931,10 +931,10 @@ _________________ - [AVR230: DES Bootloader on tinyAVR and megaAVR devices](https://www.microchip.com/en-us/application-notes/avr230) - [AVR231: AES Bootloader](https://www.microchip.com/en-us/application-notes/an2462) -- [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--) +- [Blinky To Bootloader: Bare Metal Programming Series (YouTube Playlist)](https://www.youtube.com/playlist?list=PLP29wDx6QmW7HaCrRydOnxcy8QmW0SNdQ) +- [MOOC - Security Part4 : STM32 security in practice (YouTube Playlist)](https://youtube.com/playlist?list=PLnMKNibPkDnF0wt-ZI74SflnsBV4yKzkO) +- [MOOC - Security Part5 : How to define your security needs (YouTube Playlist)](https://youtube.com/playlist?list=PLnMKNibPkDnGqh5OmQWw98ztpf9TeczbC) +- [MOOC - Security Part6: STM32 security ecosystem, from theory to practice (YouTube Playlist)](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/)