Embedded Linux Blog

Embedded Linux Blog Chia sẻ kiến thức mình học được về Embedded Linux

[𝗬𝗼𝗰𝘁𝗼-𝗕𝗕𝗕] 𝟮𝟬. 𝗕𝘂𝗶𝗹𝗱 𝗬𝗼𝗰𝘁𝗼 𝟲.𝟬 𝘄𝗿𝘆𝗻𝗼𝘀𝗲 𝗰𝗵𝗼 𝗯𝗼𝗮𝗿𝗱 𝗕𝗲𝗮𝗴𝗹𝗲𝗯𝗼𝗻𝗲 𝗕𝗹𝗮𝗰𝗸(Mình có lập 1 group Facebook về Chia sẻ kiến thức lập...
24/07/2026

[𝗬𝗼𝗰𝘁𝗼-𝗕𝗕𝗕] 𝟮𝟬. 𝗕𝘂𝗶𝗹𝗱 𝗬𝗼𝗰𝘁𝗼 𝟲.𝟬 𝘄𝗿𝘆𝗻𝗼𝘀𝗲 𝗰𝗵𝗼 𝗯𝗼𝗮𝗿𝗱 𝗕𝗲𝗮𝗴𝗹𝗲𝗯𝗼𝗻𝗲 𝗕𝗹𝗮𝗰𝗸

(Mình có lập 1 group Facebook về Chia sẻ kiến thức lập trình nhúng, mong được các bạn tham gia ủng hộ: https://www.facebook.com/groups/1291288389349930)

Vậy là tròn 1 năm kể từ ngày mình đăng bài viết đầu tiên về build Yocto cho Beaglebone Black. Ban đầu mình dùng Kirkstone, sau đó lên Scarthgap và nghĩ nó sẽ khá bền. Thế nhưng khi Yocto Project ra mắt phiên bản 6.0 Wrynose, cấu trúc project đã có sự thay đổi khá lớn. Mình viết bài này để cập nhật cách build mới nhất, vì mình nghĩ từ bản 6.0 trở đi, cấu trúc này sẽ được giữ nguyên làm chuẩn.

Điểm thay đổi lớn nhất ở core Yocto lần này nằm ở tư duy Distro. Trước đây đi học, chúng ta thường clone repo "poky" (reference distro) và build quanh nó. Nhưng thực tế đi làm, các dự án luôn define distro riêng. Do đó, Yocto hiện tại không support poky dưới dạng repo độc lập nữa mà tách thành layer meta-poky. Nếu không dùng poky distro, chúng ta chỉ cần lấy lõi openembedded-core và các meta-layer cần thiết, giúp cấu trúc project chuyên nghiệp và chuẩn công nghiệp hơn.

✅Tóm tắt các bước thực hiện:
- Chuẩn bị môi trường host và cài đặt các package phụ thuộc mới.
- Khởi tạo thư mục layers chuyên biệt, clone bitbake, openembedded-core và các BSP layers cho BBB (meta-ti, meta-arm) theo branch Wrynose.
- Khởi tạo môi trường bằng script oe-init-build-env trực tiếp từ openembedded-core (mặc định sẽ là DISTRO="nodistro" thay vì poky như trước).
- Cấu hình file bblayers.conf bằng lệnh bitbake-layers add-layer và chọn MACHINE="beaglebone" trong local.conf.
- Tiến hành build hình ảnh hệ điều hành: bitbake core-image-minimal.

✅Note nhỏ cho ai làm theo:
- Script khởi tạo môi trường giờ lấy từ openembedded-core chứ không phải poky, nên nhớ chú ý đường dẫn source layers/openembedded-core/oe-init-build-env build-bbb.
- Việc chia phân vùng, flash OS vào thẻ nhớ và debug bằng UART các bạn vẫn có thể tham khảo lại bài Yocto-BBB 1 và 2 của mình nhé.

🎥 Chi tiết từng bước setup lệnh và giải thích cấu trúc mới mình có chia sẻ trong bài, các bạn có thể thực hành thử ngay trên board của mình!

👉Blog : https://embeddedlinux.blog/
👉Youtube : https://www.youtube.com/
👉Link post : https://embeddedlinux.blog/2026/06/20/yocto-bbb-20-build-yocto-6-0-wrynose-cho-board-beaglebone-black/


Vậy là tròn 1 năm từ hồi mình đăng bài đầu tiên về build Yocto cho Beaglebone Black. Ban đầu mình dùng phiên bản Kirkstone, sau đó update lên Scarthgap và mình nghĩ là nó sẽ khá bền :vv , nhưng lên…

[𝗗𝗲𝘃𝗶𝗰𝗲-𝗗𝗿𝗶𝘃𝗲𝗿-𝗟𝗶𝗰𝗵𝗲𝗲] 𝟯. 𝗚𝗽𝗶𝗼𝗴𝗲𝘁, 𝗗𝘂̀𝗻𝗴 𝗻𝘂́𝘁 𝗯𝗮̂́𝗺 đ𝗶𝗲̂̀𝘂 𝗸𝗵𝗶𝗲̂̉𝗻 𝗹𝗲𝗱(Mình có lập 1 group Facebook về Chia sẻ kiến thức...
10/07/2026

[𝗗𝗲𝘃𝗶𝗰𝗲-𝗗𝗿𝗶𝘃𝗲𝗿-𝗟𝗶𝗰𝗵𝗲𝗲] 𝟯. 𝗚𝗽𝗶𝗼𝗴𝗲𝘁, 𝗗𝘂̀𝗻𝗴 𝗻𝘂́𝘁 𝗯𝗮̂́𝗺 đ𝗶𝗲̂̀𝘂 𝗸𝗵𝗶𝗲̂̉𝗻 𝗹𝗲𝗱

(Mình có lập 1 group Facebook về Chia sẻ kiến thức lập trình nhúng, mong được các bạn tham gia ủng hộ: https://www.facebook.com/groups/1291288389349930)

Bài 1 ta đã cho LED nháy được rồi, giờ tới phần đọc input để điều khiển nó. Nói là dùng nút bấm mà lục tung đống đồ điện tử lên toàn nút dán, không có con nào cắm được, nên bài này mình đổi sang bằng biến trở đóng vai nút bấm :vv Quan trọng là ta sẽ đi từ cách thô nhất (polling) đến cách đúng bài hơn (ngắt qua gpio-keys), và thấy được vì sao cuối cùng vẫn phải xuống Kernel Module.

Dưới đây là các phần chính của bài viết:
✅ Kết nối phần cứng: LED ở PA3 (từ bài 1), biến trở đóng vai nút bấm — 2 chân ngoài là VCC 3.3V và GND, chân tín hiệu ở giữa nối A0. Xoay về phía VCC → mức cao, xoay về GND → mức thấp.
✅ Đọc mức logic bằng gpioget, kết hợp watch -n 0.1 để theo dõi trạng thái chân
✅ Polling: script bash liên tục gpioget chân A0, chỉ khi giá trị đổi mới echo ra brightness để bật/tắt LED.
✅ Ngắt (interrupt): khai báo button node compatible = "gpio-keys", linux,code = .
✅ Test sự kiện bằng evtest /dev/input/event0: bắt event BTN_0 value 0/1 để điều khiển LED theo event thay vì polling liên tục — CPU đỡ phải quay vòng vô ích.

Và cách này vẫn chưa thật sự "chính quy", vì xử lý ngắt đúng nghĩa phải nằm ở kernel space vậy đó chính là lý do bài sau ta bước vào Kernel Module.

👉 Blog : https://embeddedlinux.blog/
👉 Youtube : https://www.youtube.com/
👉 Link post : https://embeddedlinux.blog/2026/06/13/device-driver-lichee-3-gpioget-dung-nut-bam-dieu-khien-led/

Nếu bài viết có chỗ nào khó hiểu hay chưa hợp lý, rất mong được các bạn góp ý thêm.

Cảm ơn các bạn đã đọc! Chúc thực hành thành công và đón đọc Bài Device Driver tiếp theo: Kernel Module nhé!


Nói là dùng nút bấm, mà mình lục tung đống đồ điện tử lên không thấy con nút bấm cắm nào, toàn nút bấm dán. Nên bài này mình sẽ dùng biến trở nhưng với vai trò tương tự nút bấm nhé :vv 1. Kết nối l…

06/07/2026

𝗔𝘂𝘁𝗼𝗺𝗼𝘁𝗶𝘃𝗲 𝗚𝗿𝗮𝗱𝗲 𝗟𝗶𝗻𝘂𝘅 𝗿𝘂𝗻 𝗶𝗻 𝗟𝗫𝗖 𝗰𝗼𝗻𝘁𝗮𝗶𝗻𝗲𝗿 𝗶𝗻𝘀𝗶𝗱𝗲 𝗔𝗔𝗢𝗦

Chạy Automotive Grade Linux (AGL) trong container LXC ngay trên Android Automotive OS (AAOS)

Tại sao phải lựa chọn giữa AGL và AAOS khi chúng ta có thể chạy cả hai? 😄

Chi tiết quá trình porting, mọi người có thể tham khảo tại hai repository của mình dưới đây:
🔹 AGL: https://github.com/Zk47T/agl-frdm-imx95
🔹 AAOS: https://github.com/Zk47T/frdm-imx95-android-automotive

👉Hạn chế hiện tại & Hướng giải quyết:
Hiện tại, giới hạn lớn nhất là cả hai môi trường vẫn phải lần lượt chia nhau quyền truy cập GPU. Bước tiếp theo mình dự định sẽ nghiên cứu triển khai một GPU bridge để chia sẻ tài nguyên đồ họa này. Vì cả hai hệ điều hành đều dùng chung một kernel gốc, việc tối ưu hóa cơ chế chia sẻ này hy vọng sẽ không tốn quá nhiều công sức.

👉Kế hoạch tiếp theo:
Là một người thiên về hệ Yocto hơn, thử nghiệm tới của mình sẽ là đảo ngược cấu trúc này lại: chạy AAOS như một container bên trong AGL. Cách tiếp cận này hứa hẹn sẽ mang lại lợi ích kép, vừa tự do can thiệp sâu vào phần cứng ở phía Yocto, vừa chạy các ứng dụng Android một cách mượt mà.

👉Có bác nào đã từng làm qua các kiến trúc container cho automotive hoặc xử lý việc chia sẻ GPU bridge giống thế này chưa ạ? Rất mong nhận được chia sẻ và thảo luận của mọi người ở phần bình luận bên dưới!

[𝗗𝗲𝘃𝗶𝗰𝗲-𝗗𝗿𝗶𝘃𝗲𝗿 𝗟𝗶𝗰𝗵𝗲𝗲] 𝟭. 𝗕𝗹𝗶𝗻𝗸 𝗟𝗲𝗱 𝘁𝗿𝗲̂𝗻 𝗟𝗶𝗰𝗵𝗲𝗲𝗣𝗶 𝗡𝗮𝗻𝗼(Mình có lập 1 group Facebook về Chia sẻ kiến thức lập trình nhún...
26/06/2026

[𝗗𝗲𝘃𝗶𝗰𝗲-𝗗𝗿𝗶𝘃𝗲𝗿 𝗟𝗶𝗰𝗵𝗲𝗲] 𝟭. 𝗕𝗹𝗶𝗻𝗸 𝗟𝗲𝗱 𝘁𝗿𝗲̂𝗻 𝗟𝗶𝗰𝗵𝗲𝗲𝗣𝗶 𝗡𝗮𝗻𝗼

(Mình có lập 1 group Facebook về Chia sẻ kiến thức lập trình nhúng, mong được các bạn tham gia ủng hộ: https://www.facebook.com/groups/1291288389349930)

Sau bài 1 thì board đã lên được terminal để vọc vạch rồi. Giờ tới "Hello World" của thế giới nhúng — Blink LED. Bài này mình đi từ cách đấu dây phần cứng, dùng gpioset cho nhanh, đến khai báo hẳn LED node trong Device Tree để chân GPIO thuộc về mình chứ không còn "unused" cho các bên khác cũng giành được. Có cả mẹo tính số GPIO khi mỗi hãng đánh tên một kiểu.

Ở đây mình đổi hướng tiếp cận một chút. Hồi mới học device driver, hướng dẫn nào cũng nhảy thẳng vào Kernel Module luôn, mà lúc đó mình chưa hiểu kernel chạy từng bước ra sao, thành ra sợ mấy đoạn device driver này. Đến khi vọc nhiều hơn, sửa device tree từ bước đầu, hiểu được compatible với cơ chế driver binding thì mới "ồ, à ra là thế". Nên với bài Blink LED này, mục tiêu là làm cho LED nháy được cái đã, rồi đi từ Device Tree - > sau sau nữa mới tới Kernel Module :vv

Dưới đây là các phần chính của bài viết:
✅ Pinout LicheePi Nano & cách đấu LED
✅ Cách tính chân GPIO: dù board ghi PA3, GPIO1-A3 (Rockchip) hay GPIO46 (BBB) thì đều quy về 1 con số
✅ Dùng gpioset để bật và blink LED, đọc gpioinfo để hiểu line đang unused hay [used] và vì sao "unused" thì ai cũng điều khiển được.
✅ Khai báo LED node trong Device Tree với compatible = "gpio-leds"
✅ Giải thích từng dòng node (compatible, label, gpios) và dùng dtc decompile DTB để thấy &pio được quy đổi về chuẩn GPIO như thế nào.

Nếu bạn mới học nhúng và muốn hiểu rõ con đường từ "gõ lệnh cho đèn sáng" đến "khai báo phần cứng đúng cách qua Device Tree", bài này sẽ là bước nền rất chắc cho bạn.

👉 Blog : https://embeddedlinux.blog/
👉 Youtube : https://www.youtube.com/
👉 Link post : https://embeddedlinux.blog/2026/06/06/device-driver-lichee-2-blink-led-bang-gpioset-tao-led-node-device-tree/

Cảm ơn các bạn đã đọc! Chúc thực hành thành công và đón đọc Bài Device Driver 2: gpioget, nút nhấn và ngắt nhé!


Okay, sau bài 1 ta đã có 1 board lên được terminal để vọc vạch rồi, giờ đến Hello world của thế giới nhúng. Ta thử Blink Led nhé 1. LicheePi Nano pinout Các bạn lên mạng tìm sipeed licheepi nano là…

19/06/2026

[FRDM iMX95] Automotive Grade Linux IVI Demo Flutter

Sau nhiều ngày vật lộn với Yocto, cross-compile và rootfs, cuối cùng cũng nhìn thấy Flutter UI chạy trên phần cứng thật.

Thực tế thì rất là lag, ở video mình đã x7 tốc độ lên rồi mà vẫn thấy chậm. CPU nóng lên rất nhanh. Board này có 8GB mà có vẻ vẫn chưa ổn với Flutter lắm nhỉ :vv . Hoăc cũng có thể trong quá trình Porting có nhiều chỗ mình bưng từ iMX95 EVK sang chưa được tốt :vv

Nhưng trước mắt là nó chạy được mình sẽ tối ưu thêm :vv


[FRDM-iMX95] Unbox và Giới thiệu tổng quan👉(Mình có mới lập 1 group Facebook về Chia sẻ kiến thức lập trình nhúng, mong ...
13/06/2026

[FRDM-iMX95] Unbox và Giới thiệu tổng quan
👉(Mình có mới lập 1 group Facebook về Chia sẻ kiến thức lập trình nhúng, mong được các bạn tham gia ủng hộ: https://www.facebook.com/groups/1291288389349930 )

Board này có đủ cả CPU, GPU, VPU, NPU tha hồ vọc vạch.
Hiện mình đang port Automotive Grade Linux và Android Automotive OS cho board này dựa theo config từ board iMX95 EVK .

Giá gấp đôi FRDM iMX93, nhưng core thì gấp 3. Với 6 core A*5, 1 core M33, 1 core M7. Kể cũng nhanh tay đặt, minh thấy có 28 con, mà thoáng cái hôm sau còn 20 con nên đặt nhanh không chần chừ, đến hôm nay sau 7 ngày ngó thử thì về 0 luôn rồi :vv

👉Blog : https://embeddedlinux.blog/
👉Link video : https://youtu.be/vdhvQv4tr0k

Ẩn bớt

Hôm nay mình mới nhận được con FRDM iMX95 sau 1 tuần đặt hàng, lên ngay video unbox luôn cho nóng :vv Blog : https://embeddedlinux.blog/Facebook: https://www...

[𝗬𝗼𝗰𝘁𝗼-𝗟𝗶𝗰𝗵𝗲𝗲] 𝟭. 𝗕𝘂𝗶𝗹𝗱 𝗬𝗼𝗰𝘁𝗼 𝗦𝗰𝗮𝗿𝘁𝗵𝗴𝗮𝗽 𝗰𝗵𝗼 𝗯𝗼𝗮𝗿𝗱 𝗟𝗶𝗰𝗵𝗲𝗲 𝗣𝗶 𝗡𝗮𝗻𝗼(Mình có lập 1 group Facebook về Chia sẻ kiến thức lập t...
05/06/2026

[𝗬𝗼𝗰𝘁𝗼-𝗟𝗶𝗰𝗵𝗲𝗲] 𝟭. 𝗕𝘂𝗶𝗹𝗱 𝗬𝗼𝗰𝘁𝗼 𝗦𝗰𝗮𝗿𝘁𝗵𝗴𝗮𝗽 𝗰𝗵𝗼 𝗯𝗼𝗮𝗿𝗱 𝗟𝗶𝗰𝗵𝗲𝗲 𝗣𝗶 𝗡𝗮𝗻𝗼

(Mình có lập 1 group Facebook về Chia sẻ kiến thức lập trình nhúng, mong được các bạn tham gia ủng hộ: https://www.facebook.com/groups/1291288389349930)

Bài trước mình build Yocto Zeus với khá nhiều lỗi phải fix và còn phải dùng Docker. Bài này nâng lên Yocto Scarthgap (5.0) — mình đã porting sẵn vào meta-layer nên build thẳng trên Ubuntu 22.04 không cần Docker, gọn hơn nhiều. Cuối bài mình có note ngắn những gì phải sửa khi port từ Zeus lên Scarthgap cho ai muốn tự làm.

Dưới đây là các phần chính của bài viết:
✅ Chuẩn bị host Ubuntu 22.04 — cài package và locale, không cần Docker như bài Zeus nữa.
✅ Clone poky, meta-openembedded, meta-qt5 và meta-f1c100s đúng branch scarthgap — copy config sample và bitbake core-image-minimal là xong.
✅ Flash image .sunxi-sdimg ra thẻ SD bằng dd và boot lên board Lichee Pi Nano thực tế.
✅ Note ngắn cách port từ Yocto 3.0 Zeus lên 5.0 Scarthgap: đổi branch layer, fix syntax _append → :append, bỏ image-mklibs/image-prelink, và cách tìm patch kernel phù hợp.

Nếu bạn đang dùng Yocto cũ và muốn nâng lên bản mới nhất mà không biết bắt đầu từ đâu, phần note ngắn cuối bài có thể giúp ích cho bạn.

👉 Blog : https://embeddedlinux.blog/
👉 Youtube : https://www.youtube.com/
👉 Link post : https://embeddedlinux.blog/2026/05/24/yocto-lichee-1-build-yocto-scarthgap-cho-board-lichee-pi-nano/

Thực tế mình đã porting xong và update vào meta-layer nên công việc khá nhàn, mình sẽ để 1 note ở cuối bài về mình đã phải sửa gì để port từ Yocto 3.0 Zeus lên Yocto 5.0 Scarthgap 1. Chuẩn bị máy h…

[𝗬𝗼𝗰𝘁𝗼-𝗟𝗶𝗰𝗵𝗲𝗲] 𝟬. 𝗕𝘂𝗶𝗹𝗱 𝗬𝗼𝗰𝘁𝗼 𝗭𝗲𝘂𝘀 𝗰𝗵𝗼 𝗯𝗼𝗮𝗿𝗱 𝗟𝗶𝗰𝗵𝗲𝗲 𝗣𝗶 𝗡𝗮𝗻𝗼(Mình có lập 1 group Facebook về Chia sẻ kiến thức lập trình ...
29/05/2026

[𝗬𝗼𝗰𝘁𝗼-𝗟𝗶𝗰𝗵𝗲𝗲] 𝟬. 𝗕𝘂𝗶𝗹𝗱 𝗬𝗼𝗰𝘁𝗼 𝗭𝗲𝘂𝘀 𝗰𝗵𝗼 𝗯𝗼𝗮𝗿𝗱 𝗟𝗶𝗰𝗵𝗲𝗲 𝗣𝗶 𝗡𝗮𝗻𝗼

(Mình có lập 1 group Facebook về Chia sẻ kiến thức lập trình nhúng, mong được các bạn tham gia ủng hộ: https://www.facebook.com/groups/1291288389349930)

Mình chốt dùng Lichee Pi Nano làm board giá rẻ cho series Device Driver sắp tới. Có guide build Yocto Zeus từ bác ninhnn2 từ 6 năm trước nhưng build thử thì lỗi khá nhiều — bài này là để ghi lại các fix mình đã làm để build được image chạy được trên board thật. Bài tiếp theo mình sẽ nâng lên Yocto Scarthgap, gọn hơn nhiều, nên nếu các bạn muốn đơn giản hơn thì hãy chờ bài đó nhé.

Dưới đây là các phần chính của bài viết:

✅ Dùng Docker Ubuntu 20.04 để tránh conflict khi host đang chạy Ubuntu 22.04/24.04 — Yocto Zeus rất nhạy cảm với phiên bản toolchain.
✅ Clone đầy đủ poky zeus, meta-openembedded, meta-qt5 và meta-f1c100s (bản fork đã fix của mình).
✅ Init môi trường Yocto, copy config sample sẵn và chạy bitbake core-image-minimal — 1608 task build thẳng.
✅ Lưu ý tuning BB_NUMBER_THREADS và PARALLEL_MAKE nếu máy ảo RAM ít.
✅ Flash image .sunxi-sdimg ra thẻ SD bằng dd và boot lên board Lichee Pi Nano thực tế.

Nếu bạn muốn có một distro Linux nhỏ gọn tự build chạy trên board giá rẻ dưới 5 USD, Yocto + Lichee Pi Nano là combo đáng thử.

👉 Blog : https://embeddedlinux.blog/
👉 Youtube : https://www.youtube.com/
👉 Link post : https://embeddedlinux.blog/2026/05/16/yocto-lichee-0-build-yocto-zeus-cho-board-lichee-pi-nano/


Mình chốt là sẽ dùng con Lichee Pi Nano làm con board giá rẻ cho series Device Driver sắp tới. Mình thấy có guide từ bác fanning (ninhnn2) đã hướng dẫn build cho board này bằng Yocto Zeus (3.0) từ …

[𝗞𝗲𝗿𝗻𝗲𝗹-𝗤𝗘𝗠𝗨] 𝟭. 𝗞𝗚𝗗𝗕 𝗱𝗲𝗯𝘂𝗴 𝘁𝘂̛̀ 𝘀𝘁𝗮𝗿𝘁_𝗸𝗲𝗿𝗻𝗲𝗹 𝘃𝗼̛́𝗶 𝗴𝗶𝗮𝗼 𝗱𝗶𝗲̣̂𝗻 𝘁𝗿𝗲̂𝗻 𝗩𝗦 𝗖𝗼𝗱𝗲(Mình có lập 1 group Facebook về Chia sẻ ki...
23/05/2026

[𝗞𝗲𝗿𝗻𝗲𝗹-𝗤𝗘𝗠𝗨] 𝟭. 𝗞𝗚𝗗𝗕 𝗱𝗲𝗯𝘂𝗴 𝘁𝘂̛̀ 𝘀𝘁𝗮𝗿𝘁_𝗸𝗲𝗿𝗻𝗲𝗹 𝘃𝗼̛́𝗶 𝗴𝗶𝗮𝗼 𝗱𝗶𝗲̣̂𝗻 𝘁𝗿𝗲̂𝗻 𝗩𝗦 𝗖𝗼𝗱𝗲

(Mình có lập 1 group Facebook về Chia sẻ kiến thức lập trình nhúng, mong được các bạn tham gia ủng hộ: https://www.facebook.com/groups/1291288389349930)

Không có JTAG, không debug được từ dòng đầu tiên trên board thật — vậy thì quay sang QEMU. Bài này mình sẽ build kernel, QEMU và BusyBox từ source, rồi đặt breakpoint thẳng vào start_kernel với giao diện debug đầy đủ trên VS Code.

Dưới đây là các phần chính của bài viết:

✅ Clone và build linux-next với đầy đủ debug config: KGDB, DEBUG_INFO_DWARF5, FRAME_POINTER, PROVE_LOCKING,...
✅ Build QEMU từ source cho target aarch64-softmmu — không dùng bản apt để chủ động hơn về version.
✅ Build BusyBox static và tạo root filesystem thủ công, đóng gói thành initramfs.cpio.gz chạy thẳng trên RAM.
✅ Khởi chạy QEMU với flag -s -S để CPU đóng băng ngay từ đầu, chờ GDB connect qua TCP.
✅ Setup launch.json VS Code để đặt breakpoint tại start_kernel trong init/main.c và debug có giao diện.

Nếu bạn muốn debug kernel từ dòng lệnh đầu tiên mà không cần phần cứng, QEMU + KGDB là combo đáng thử nhất.

👉 Blog : https://embeddedlinux.blog/
👉 Youtube : https://www.youtube.com/
👉 Link post : https://embeddedlinux.blog/2026/05/02/kernel-qemu-1-kgdb-debug-tu-start_kernel-voi-giao-dien-tren-vs-code/


Như mình đã nói bên bài Kernel-BBB 2, hiện tại nếu không dùng JTAG bên BBB thì khả năng sẽ không debug kernel từ dòng đầu tiên được. Do đó mình sẽ quay sang hướng QEMU để kiểm soát toàn bộ vụ code …

Address

Hanoi
100000

Alerts

Be the first to know and let us send you an email when Embedded Linux Blog posts news and promotions. Your email address will not be used for any other purpose, and you can unsubscribe at any time.

Contact The School

Send a message to Embedded Linux Blog:

Shortcuts

Share