EmbeddedThings
Sharing embedded systems concepts
Hướng đối tượng trong embedded
Overhead in C++
Xử lý ngắt
Bit fields in C
12/04/2026
# Roadmap học Embedded Systems từ con số 0 đến đi làm
Nếu bạn mới bắt đầu học Embedded hoặc đang bị “ngợp” vì không biết nên học cái gì trước, cái gì sau, thì roadmap dưới đây sẽ giúp bạn đi đúng hướng.
Mình chia theo thứ tự học thực tế, từ dễ đến khó, từ phần mềm đến phần cứng. Mỗi mục đều có tài liệu hoặc khóa học đi kèm để bạn học ngay.
---
# 1. Lập trình cơ bản – nền móng bắt buộc
Muốn làm Embedded thì trước tiên phải biết lập trình.
Ưu tiên:
* C
* Sau đó có thể học thêm C++, Python
* Cuối cùng mới nên xem qua Assembly
Nên học:
* Biến, hàm, con trỏ, struct, enum
* Bitwise, quản lý bộ nhớ
* Stack / Heap
* Data Structure và thuật toán cơ bản
Tài liệu:
* C Programming Full Course – freeCodeCamp:
[https://www.youtube.com/watch?v=KJgsSFOSQv0](https://www.youtube.com/watch?v=KJgsSFOSQv0)
* CS50 C:
[https://cs50.harvard.edu/x/](https://cs50.harvard.edu/x/)
* Learn C:
[https://www.learn-c.org/](https://www.learn-c.org/)
* C++ cho Embedded:
[https://www.youtube.com/watch?v=zBkNBP00wJE](https://www.youtube.com/watch?v=zBkNBP00wJE)
* Python cơ bản:
[https://www.learnpython.org/](https://www.learnpython.org/)
---
# 2. Toán và điện tử cơ bản
Đây là phần nhiều người bỏ qua nhưng lại rất quan trọng.
Cần biết:
* Điện áp, dòng điện, điện trở
* Định luật Ohm
* Điện trở kéo lên / kéo xuống
* MOSFET, transistor, relay
* Mạch RC, tụ điện, diode
* Số nhị phân, hex, bit, digital logic
Tài liệu:
* Basic Electronics – GreatScott:
[https://www.youtube.com/playlist?list=PLAROrg3NQn7dY5J9v7Q1JvLJ7QG6JfY6h](https://www.youtube.com/playlist?list=PLAROrg3NQn7dY5J9v7Q1JvLJ7QG6JfY6h)
* All About Circuits:
[https://www.allaboutcircuits.com/](https://www.allaboutcircuits.com/)
* Digital Logic Design:
[https://www.youtube.com/watch?v=M0mx8S05v60](https://www.youtube.com/watch?v=M0mx8S05v60)
* Khan Academy – Electrical Engineering:
[https://www.khanacademy.org/science/electrical-engineering](https://www.khanacademy.org/science/electrical-engineering)
---
# 3. Vi điều khiển (Microcontroller)
Sau khi biết C và điện tử cơ bản, hãy bắt đầu với một dòng MCU phổ biến như STM32 hoặc ESP32.
Nên học theo thứ tự:
* GPIO
* UART
* Timer
* PWM
* ADC
* Interrupt
* DMA
* Watchdog
* Bootloader
Nếu bạn học STM32, đây là thứ tự nên đi:
1. Nháy LED
2. Đọc nút nhấn
3. UART gửi dữ liệu
4. PWM điều khiển LED hoặc motor
5. ADC đọc cảm biến
6. Interrupt
7. DMA
8. FreeRTOS
Tài liệu:
* STM32 từ đầu:
[https://controllerstech.com/](https://controllerstech.com/)
* STM32CubeIDE + STM32 tutorial:
[https://deepbluembedded.com/](https://deepbluembedded.com/)
* STM32 HAL Driver playlist:
[https://www.youtube.com/playlist?list=PLfIJKC1ud8ghc4A0F0nT2rA6zS2s5P1Qx](https://www.youtube.com/playlist?list=PLfIJKC1ud8ghc4A0F0nT2rA6zS2s5P1Qx)
* ESP32 Tutorial:
[https://randomnerdtutorials.com/projects-esp32/](https://randomnerdtutorials.com/projects-esp32/)
* Datasheet và Reference Manual STM32:
[https://www.st.com/en/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus.html](https://www.st.com/en/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus.html)
---
# 4. Giao tiếp giữa các thiết bị
Đây là kỹ năng cực kỳ quan trọng vì gần như mọi cảm biến và module đều dùng giao tiếp.
Phải học:
* UART
* I2C
* SPI
Sau đó học thêm:
* CAN
* RS485 / Modbus
* USB
* Ethernet
* BLE / WiFi / MQTT
Thứ tự học đề xuất:
UART → I2C → SPI → CAN → RS485 → MQTT
Tài liệu:
* UART/I2C/SPI dễ hiểu:
[https://learn.sparkfun.com/tutorials](https://learn.sparkfun.com/tutorials)
* I2C vs SPI vs UART:
[https://www.youtube.com/watch?v=IyGwvGzrqp8](https://www.youtube.com/watch?v=IyGwvGzrqp8)
* CAN Bus:
[https://www.csselectronics.com/pages/can-bus-simple-intro-tutorial](https://www.csselectronics.com/pages/can-bus-simple-intro-tutorial)
* Modbus RS485:
[https://www.simplymodbus.ca/](https://www.simplymodbus.ca/)
* MQTT cơ bản:
[https://www.hivemq.com/mqtt-essentials/](https://www.hivemq.com/mqtt-essentials/)
---
# 5. RTOS – bắt đầu khi dự án lớn hơn
Khi dự án có nhiều task cùng chạy: đọc cảm biến, truyền dữ liệu, UI, motor... thì bạn cần RTOS.
Nên học:
* Task
* Queue
* Semaphore
* Mutex
* Event Group
* Software Timer
Khuyên dùng:
* FreeRTOS
* Sau này có thể tìm hiểu Zephyr
Tài liệu:
* FreeRTOS official:
[https://www.freertos.org/](https://www.freertos.org/)
* FreeRTOS tutorial:
[https://controllerstech.com/freertos-tutorials/](https://controllerstech.com/freertos-tutorials/)
* Mastering FreeRTOS ebook:
[https://www.freertos.org/Documentation/RTOS_book.html](https://www.freertos.org/Documentation/RTOS_book.html)
* Zephyr Project:
[https://docs.zephyrproject.org/](https://docs.zephyrproject.org/)
---
# 6. Embedded Linux
Nếu bạn muốn đi theo hướng Linux Embedded, BeagleBone, Raspberry Pi, Jetson, Zynq hoặc hệ thống chạy Linux thì cần học phần này.
Nên học:
* Linux command line
* Bash
* C/C++ trên Linux
* Makefile / CMake
* Cross compile
* Device Tree
* Kernel Driver
* GPIO, I2C, SPI trên Linux
Roadmap:
1. Linux command line
2. Bash script
3. Makefile / CMake
4. Cross compile
5. Linux driver
6. Device Tree
7. Yocto / Buildroot
Tài liệu:
* Linux Journey:
[https://linuxjourney.com/](https://linuxjourney.com/)
* The Linux Command Line:
[https://linuxcommand.org/tlcl.php](https://linuxcommand.org/tlcl.php)
* Makefile tutorial:
[https://makefiletutorial.com/](https://makefiletutorial.com/)
* CMake tutorial:
[https://cmake.org/cmake/help/latest/guide/tutorial/](https://cmake.org/cmake/help/latest/guide/tutorial/)
* Linux Device Driver book:
[https://lwn.net/Kernel/LDD3/](https://lwn.net/Kernel/LDD3/)
* BeagleBone Black Linux Driver playlist:
[https://www.youtube.com/results?search_query=beaglebone+linux+device+driver](https://www.youtube.com/results?search_query=beaglebone+linux+device+driver)
* Yocto:
[https://docs.yoctoproject.org/](https://docs.yoctoproject.org/)
* Buildroot:
[https://buildroot.org/docs.html](https://buildroot.org/docs.html)
---
# 7. Debugging – kỹ năng giúp bạn sống sót
Nhiều người học code nhưng không học debug.
Phải biết:
* Dùng debugger
* Breakpoint
* Watch variable
* SWD / JTAG
* Logic Analyzer
* Oscilloscope
Nếu làm Embedded mà chưa từng dùng oscilloscope hoặc logic analyzer thì rất khó đi xa.
Tài liệu:
* STM32 Debugging:
[https://www.youtube.com/results?search_query=stm32+debugging+with+st-link](https://www.youtube.com/results?search_query=stm32+debugging+with+st-link)
* Saleae Logic Analyzer:
[https://support.saleae.com/](https://support.saleae.com/)
* Oscilloscope cơ bản:
[https://www.youtube.com/watch?v=u4zyptPLlJI](https://www.youtube.com/watch?v=u4zyptPLlJI)
---
# 8. Build System và công cụ
Nên biết:
* GCC
* Make
* CMake
* Git
* Docker
Tài liệu:
* Git Handbook:
[https://guides.github.com/introduction/git-handbook/](https://guides.github.com/introduction/git-handbook/)
* Learn Git Branching:
[https://learngitbranching.js.org/](https://learngitbranching.js.org/)
* Docker cho người mới:
[https://www.youtube.com/watch?v=fqMOX6JJhGo](https://www.youtube.com/watch?v=fqMOX6JJhGo)
---
# 9. Testing và Clean Code
Đừng chỉ code chạy được. Hãy code dễ bảo trì.
Nên học:
* Unit Test
* TDD
* Clean Code
* MISRA C
* Code Review
Tài liệu:
* Unity Test Framework:
[https://github.com/ThrowTheSwitch/Unity](https://github.com/ThrowTheSwitch/Unity)
* Ceedling:
[https://github.com/ThrowTheSwitch/Ceedling](https://github.com/ThrowTheSwitch/Ceedling)
* Clean Code summary:
[https://github.com/ryanmcdermott/clean-code-javascript](https://github.com/ryanmcdermott/clean-code-javascript)
* MISRA C overview:
[https://www.perforce.com/resources/qac/misra-c-cpp](https://www.perforce.com/resources/qac/misra-c-cpp)
---
# 10. Học theo project – cách nhanh nhất để giỏi
Sau khi học từng phần riêng lẻ, hãy ghép chúng lại thành project thật.
Project beginner:
* STM32 đọc nhiệt độ và hiển thị LCD
* ESP32 gửi dữ liệu lên MQTT
* Điều khiển motor bằng PWM
Project intermediate:
* Hệ thống cảm biến gửi dữ liệu qua RS485
* Thiết bị IoT dùng WiFi + MQTT
* Bootloader OTA cho STM32
Project advanced:
* Embedded Linux + STM32 giao tiếp UART
* Hệ thống điều khiển motor dùng FreeRTOS
* Gateway Modbus RS485 sang MQTT
* Driver Linux cho GPIO / I2C / SPI
---
# 11. Roadmap 6 tháng cho người mới
Tháng 1:
* Học C
* Học điện tử cơ bản
Tháng 2:
* STM32 GPIO, UART, Timer, ADC
Tháng 3:
* I2C, SPI, Interrupt, DMA
Tháng 4:
* FreeRTOS + Project nhỏ
Tháng 5:
* Embedded Linux hoặc IoT
Tháng 6:
* Làm 1 project hoàn chỉnh và đưa lên GitHub
---
# 12. Kênh YouTube / Website nên follow
YouTube:
* Phil’s Lab
* FastBit Embedded Brain Academy
* Low Level Learning
* Ben Eater
* Andreas Spiess
* Jacob Sorber
* Shawn Hymel
Website:
* [https://controllerstech.com/](https://controllerstech.com/)
* [https://deepbluembedded.com/](https://deepbluembedded.com/)
* [https://embeddedartistry.com/](https://embeddedartistry.com/)
* [https://www.embedded.com/](https://www.embedded.com/)
* [https://interrupt.memfault.com/](https://interrupt.memfault.com/)
---
Nếu bạn đang học Embedded, hãy comment bạn đang ở giai đoạn nào:
* Mới học C
* Đang học STM32
* Đang học RTOS
* Đang làm Embedded Linux
* Đang đi làm nhưng muốn nâng trình
Mình sẽ viết tiếp từng phần chi tiết hơn, ví dụ:
* Roadmap học STM32 trong 30 ngày
* Roadmap học FreeRTOS
* Roadmap học Linux Driver trên BeagleBone
* Roadmap làm project để đi phỏng vấn
Con trỏ
Thao tác bit - Vũ khí cấu hình thanh ghi
Cấu trúc bộ nhớ chương trình nhúng
Từ khoá “volatile” trong Embedded C-Tại sao nó sống còn ?
#
Click here to claim your Sponsored Listing.
Category
Website
Address
Tay Ho
11500