<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Beaglebone on Embedded Linux Blog</title><link>https://embeddedlinux.blog/tags/beaglebone/</link><description>Recent content in Beaglebone on Embedded Linux Blog</description><generator>Hugo</generator><language>vi</language><lastBuildDate>Fri, 26 Jun 2026 10:10:45 +0700</lastBuildDate><atom:link href="https://embeddedlinux.blog/tags/beaglebone/index.xml" rel="self" type="application/rss+xml"/><item><title>[Yocto-BBB] 20. Build Yocto 6.0 wrynose cho board Beaglebone Black</title><link>https://embeddedlinux.blog/2026/06/20/yocto-bbb-20-build-yocto-6-0-wrynose-cho-board-beaglebone-black/</link><pubDate>Sat, 20 Jun 2026 06:09:00 +0700</pubDate><guid>https://embeddedlinux.blog/2026/06/20/yocto-bbb-20-build-yocto-6-0-wrynose-cho-board-beaglebone-black/</guid><description>&lt;p&gt;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 phiên bản Wrynose đã có sự thay đổi khá lớn về cấu trúc. Nên mình viết thêm bài này về cách build ở version mới nhé, mình nghĩ từ bản 6.0 này trở đi, cấu trúc sẽ được giữ nguyên.&lt;/p&gt;</description></item><item><title>[Kernel-BBB] 1. KGDB qua UART</title><link>https://embeddedlinux.blog/2026/04/18/kernel-bbb-1-kgdb-qua-uart/</link><pubDate>Sat, 18 Apr 2026 06:56:00 +0700</pubDate><guid>https://embeddedlinux.blog/2026/04/18/kernel-bbb-1-kgdb-qua-uart/</guid><description>&lt;p&gt;Giữ nguyên cấu hình từ bài &lt;a href="https://embeddedlinux.blog/2025/06/28/yocto-bbb-1-build-beaglebone-black-image-bang-yocto-project/"&gt;Yocto-BBB 1&lt;/a&gt;&#10; mình thêm 1 meta-layer mới riêng cho phần kernel này&lt;/p&gt;&#10;&lt;h2 id="1-tạo-meta-layer-mới"&gt;1. Tạo meta layer mới&lt;/h2&gt;&#10;&lt;h3 id="11-tạo-meta-layer-và-add-vào-bblayers"&gt;1.1 Tạo meta layer và add vào bblayers&lt;/h3&gt;&#10;&lt;div class="code-block is-term" translate="no" data-lang="bash" data-pagefind-weight="0.4"&gt;&#10; &lt;div class="code-head" data-pagefind-ignore&gt;&lt;span class="lang"&gt;bash&lt;/span&gt;&lt;button type="button" class="copy-btn" aria-label="Copy" data-copied="Đã copy"&gt;&lt;svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;&lt;rect x="9" y="9" width="11" height="11" rx="2"/&gt;&lt;path d="M5 15V5a2 2 0 012-2h10"/&gt;&lt;/svg&gt;&lt;span&gt;Copy&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;pre class="term"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span class="t-p"&gt;$&lt;/span&gt; &lt;span class="t-c"&gt;source&lt;/span&gt; oe-init-build-env &lt;span class="t-pa"&gt;build-bbb/&lt;/span&gt;&lt;/span&gt;&#10;&lt;span class="line"&gt;&lt;span class="t-p"&gt;&lt;span class="t-pu"&gt;zk47@ltu&lt;/span&gt;:&lt;span class="t-pd"&gt;~/Youtube/Yocto/yocto-bbb/poky/build-bbb&lt;/span&gt;$&lt;/span&gt; &lt;span class="t-c"&gt;bitbake-layers&lt;/span&gt; create-layer &lt;span class="t-pa"&gt;../meta-kernel&lt;/span&gt;&lt;/span&gt;&#10;&lt;span class="line"&gt;&lt;span class="t-out"&gt;NOTE: Starting bitbake server...&lt;/span&gt;&lt;/span&gt;&#10;&lt;span class="line"&gt;&lt;span class="t-out"&gt;Add your new layer with 'bitbake-layers add-layer ../meta-kernel'&lt;/span&gt;&lt;/span&gt;&#10;&lt;span class="line"&gt;&lt;span class="t-out"&gt;&lt;/span&gt;&lt;/span&gt;&#10;&lt;span class="line"&gt;&lt;span class="t-p"&gt;$&lt;/span&gt; &lt;span class="t-c"&gt;bitbake-layers&lt;/span&gt; add-layer &lt;span class="t-pa"&gt;../meta-kernel&lt;/span&gt;&lt;/span&gt;&#10;&lt;span class="line"&gt;&lt;span class="t-out"&gt;NOTE: Starting bitbake server...&lt;/span&gt;&lt;/span&gt;&#10;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10;&lt;h3 id="12-tạo-recipe-kernel-append"&gt;1.2 Tạo recipe kernel append&lt;/h3&gt;&#10;&lt;p&gt;Ta dùng câu lệnh sau để biết được recipe kernel (Thực tế ta có thể dùng virtual/kernel nhưng nó kiểu tên chung, không chỉ đích danh)&lt;/p&gt;</description></item><item><title>[Yocto-BBB] 19. Cấu hình share state , đẩy nhanh quá trình build</title><link>https://embeddedlinux.blog/2026/04/11/yocto-bbb-19-cau-hinh-share-state-day-nhanh-qua-trinh-build/</link><pubDate>Sat, 11 Apr 2026 06:54:00 +0700</pubDate><guid>https://embeddedlinux.blog/2026/04/11/yocto-bbb-19-cau-hinh-share-state-day-nhanh-qua-trinh-build/</guid><description>&lt;h2 id="1-thiết-lập-http-server"&gt;1. Thiết lập HTTP server&lt;/h2&gt;&#10;&lt;p&gt;Ở đây mình dùng nginx, các bạn hoàn toàn có thể dùng các cách đơn giản hơn. Vì ở đây đơn giản là share cái folder sstate-cache, từ 1 máy khác đã build yocto sang 1 máy cùng mạng&lt;/p&gt;</description></item><item><title>[Yocto-BBB] 18. GDB debug qua recipe-sysroot</title><link>https://embeddedlinux.blog/2026/03/31/yocto-bbb-18-debug-qua-recipe-sysroot/</link><pubDate>Tue, 31 Mar 2026 20:11:59 +0700</pubDate><guid>https://embeddedlinux.blog/2026/03/31/yocto-bbb-18-debug-qua-recipe-sysroot/</guid><description>&lt;p&gt;Ở bài này mình sẽ hướng dẫn các bạn về cách debug 1 file binary đã đươc build ra từ recipe-sysroot trong thư mục output của recipe đó.&lt;/p&gt;&#10;&lt;h2 id="1-sysroot-là-gì-"&gt;1. Sysroot là gì ?&lt;/h2&gt;&#10;&lt;p&gt;Sysroot là system root, là 1 thư mục đóng vai trò như root filesystem ảo, dành cho quá trình cross-compile. Nó chứa các header files, libraries, và các artifact cần thiết để compiler/linker có thể build code cho target mà không cần chạy trực tiếp trên target.&lt;/p&gt;</description></item><item><title>[Android-BBB] 1. Chạy Android 6 trên Bealgebone Black</title><link>https://embeddedlinux.blog/2026/01/24/android-bbb-1-chay-android-6-tren-bealgebone-black/</link><pubDate>Sat, 24 Jan 2026 21:24:47 +0700</pubDate><guid>https://embeddedlinux.blog/2026/01/24/android-bbb-1-chay-android-6-tren-bealgebone-black/</guid><description>&lt;p&gt;Chắc chắn rồi Beaglbone Black chỉ có 512Mb, nên khó mà có thể chạy Android 1 cách mượt mà được. Mình làm thử, và viết bài này để những ai định thử, thì có thể trải nghiệm nhé :vv&lt;/p&gt;&#10;&lt;h2 id="1-android-6-image"&gt;1. Android 6 Image&lt;/h2&gt;&#10;&lt;h3 id="11-tự-build-image"&gt;1.1 Tự build image&lt;/h3&gt;&#10;&lt;p&gt;Các bạn co thể follow theo trang github này để tự build image: &lt;a href="https://github.com/csimmonds/android4beagle" target="_blank" rel="noopener"&gt;https://github.com/csimmonds/android4beagle&lt;/a&gt;&#10;&lt;/p&gt;</description></item><item><title>[Yocto-BBB] 17. Cài Links-X11, Lướt web trên core-image-sato</title><link>https://embeddedlinux.blog/2026/01/17/yocto-bbb-17-cai-links-x11-luot-web-tren-core-image-sato/</link><pubDate>Sat, 17 Jan 2026 06:34:00 +0700</pubDate><guid>https://embeddedlinux.blog/2026/01/17/yocto-bbb-17-cai-links-x11-luot-web-tren-core-image-sato/</guid><description>&lt;p&gt;Nọ mình cài Android 6 trên Beaglebone Black thì có thấy app Trình duyệt, nhưng không lướt được web. Với các board mới hơn như FRDM i.MX93 thì hỗ trợ tốt cho Chromium, nhưng chắc chắn yêu cầu phần cứng phải tốt hơn rất nhiều.&lt;/p&gt;</description></item><item><title>[Yocto-BBB] 16. Bật ADB, SSH Port-Forwarding</title><link>https://embeddedlinux.blog/2025/11/22/yocto-bbb-16-bat-adb-ssh-port-forwarding/</link><pubDate>Sat, 22 Nov 2025 06:46:00 +0700</pubDate><guid>https://embeddedlinux.blog/2025/11/22/yocto-bbb-16-bat-adb-ssh-port-forwarding/</guid><description>&lt;p&gt;ADB: Android Debug Bridge&lt;/p&gt;&#10;&lt;p&gt;Ở bài này, mình sẽ hướng dẫn với các bạn cách config để build image với ADB giúp cho việc truyền file qua USB thuận tiện hơn. Cũng như Port Forwarding, để ta có thể dùng ssh thông qua USB.&lt;/p&gt;</description></item><item><title>[Boot-BBB] 5. Tạo Beaglebone Black image với Buildroot</title><link>https://embeddedlinux.blog/2025/11/21/boot-bbb-5-tao-beaglebone-black-image-voi-buildroot/</link><pubDate>Fri, 21 Nov 2025 08:58:00 +0700</pubDate><guid>https://embeddedlinux.blog/2025/11/21/boot-bbb-5-tao-beaglebone-black-image-voi-buildroot/</guid><description>&lt;p&gt;Ở bài này minh sẽ hướng dẫn các bạn dùng Buildroot để tạo Beaglebone Black image. Các bạn hiểu đơn giản Buildroot tương tự như Yocto Project nhưng tinh giản hơn, ít cấu hình hơn vậy. Mục tiêu cuối cùng là build ra 1 custom embedded linux image&lt;/p&gt;</description></item><item><title>[Boot-BBB] 4. Tạo root filesystem thủ công với busybox</title><link>https://embeddedlinux.blog/2025/11/15/boot-bbb-4-tao-root-filesystem-thu-cong-voi-busybox/</link><pubDate>Sat, 15 Nov 2025 06:30:00 +0700</pubDate><guid>https://embeddedlinux.blog/2025/11/15/boot-bbb-4-tao-root-filesystem-thu-cong-voi-busybox/</guid><description>&lt;p&gt;Okay, bài hôm nay mình sẽ tiếp tục hướng dẫn các bạn cách tạo root filesystem thủ công, với các utility từ busybox (utilities ở đây được hiểu là các binary phục vụ cho command như &amp;quot;ls&amp;quot;,&amp;quot;cat&amp;quot;,...)&lt;/p&gt;&#10;&lt;p&gt;Kể cả với root filesystem (rfs) căn bản, ta vẫn cần tầm 50 comamnd.&lt;/p&gt;</description></item><item><title>[Boot-BBB] 3. Compile Linux Kernel và cấu hình tự động cho u-boot</title><link>https://embeddedlinux.blog/2025/11/08/boot-bbb-3-comiple-linux-kernel-va-cau-hinh-uboot-env/</link><pubDate>Sat, 08 Nov 2025 07:16:00 +0700</pubDate><guid>https://embeddedlinux.blog/2025/11/08/boot-bbb-3-comiple-linux-kernel-va-cau-hinh-uboot-env/</guid><description>&lt;p&gt;Ở bài trước ta đang dừng lại ở việc thiếu cấu hình u-boot. Bài này ta sẽ compile kernel và thêm file cấu hình uboot.env để khiến bootloader chạy ổn&lt;/p&gt;&#10;&lt;h2 id="1-fetch-kernel-code-và-compile"&gt;1. Fetch kernel code và Compile&lt;/h2&gt;&#10;&lt;h3 id="11-clone-source-code"&gt;1.1 Clone source code&lt;/h3&gt;&#10;&lt;div class="code-block is-term" translate="no" data-lang="bash" data-pagefind-weight="0.4"&gt;&#10; &lt;div class="code-head" data-pagefind-ignore&gt;&lt;span class="lang"&gt;bash&lt;/span&gt;&lt;button type="button" class="copy-btn" aria-label="Copy" data-copied="Đã copy"&gt;&lt;svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;&lt;rect x="9" y="9" width="11" height="11" rx="2"/&gt;&lt;path d="M5 15V5a2 2 0 012-2h10"/&gt;&lt;/svg&gt;&lt;span&gt;Copy&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;pre class="term"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span class="t-c"&gt;git&lt;/span&gt; clone &lt;a class="t-u" href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux" target="_blank" rel="noopener"&gt;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux&lt;/a&gt;&lt;/span&gt;&#10;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10;&lt;p&gt;Khá là lâu, nên các bạn đá miếng bánh, uống tí cà phê chill chill rồi quay lại check sau. Mình clone về check thì là 5,1 Gb&lt;/p&gt;</description></item><item><title>[Boot-BBB] 2. Compile U-boot và chạy test MLO, u-boot.img</title><link>https://embeddedlinux.blog/2025/11/01/boot-bbb-2-u-boot-1-build-va-chay-test-mlo-u-boot-img/</link><pubDate>Sat, 01 Nov 2025 09:18:00 +0700</pubDate><guid>https://embeddedlinux.blog/2025/11/01/boot-bbb-2-u-boot-1-build-va-chay-test-mlo-u-boot-img/</guid><description>&lt;p&gt;Ở bài này, mình sẽ hướng dẫn các bạn compile từ source của &lt;code&gt;u-boot&lt;/code&gt; và cấu hình cho board &lt;strong&gt;Beaglebone Black&lt;/strong&gt;. Về u-boot là gì, các bạn có thể đọc thêm tại &amp;lt;/2025/05/10/bbb-linux-3-beaglebone-black-boot-process-u-boot/&amp;gt;&lt;/p&gt;&#10;&lt;h2 id="1-clone-cấu-hình-và-compile-u-boot"&gt;1. Clone, cấu hình và compile u-boot&lt;/h2&gt;&#10;&lt;h3 id="11-clone-và-checkout"&gt;1.1 Clone và checkout&lt;/h3&gt;&#10;&lt;div class="code-block is-term" translate="no" data-lang="bash" data-pagefind-weight="0.4"&gt;&#10; &lt;div class="code-head" data-pagefind-ignore&gt;&lt;span class="lang"&gt;bash&lt;/span&gt;&lt;button type="button" class="copy-btn" aria-label="Copy" data-copied="Đã copy"&gt;&lt;svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;&lt;rect x="9" y="9" width="11" height="11" rx="2"/&gt;&lt;path d="M5 15V5a2 2 0 012-2h10"/&gt;&lt;/svg&gt;&lt;span&gt;Copy&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;pre class="term"&gt;&lt;code&gt;&lt;span class="line"&gt;&lt;span class="t-c"&gt;git&lt;/span&gt; clone &lt;a class="t-u" href="https://source.denx.de/u-boot/u-boot.git" target="_blank" rel="noopener"&gt;https://source.denx.de/u-boot/u-boot.git&lt;/a&gt;&lt;/span&gt;&#10;&lt;span class="line"&gt;&lt;span class="t-c"&gt;cd&lt;/span&gt; u-boot&lt;/span&gt;&#10;&lt;span class="line"&gt;&lt;span class="t-c"&gt;git&lt;/span&gt; checkout v2023.01&lt;/span&gt;&#10;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10;&lt;p&gt;Mình &lt;code&gt;checkout&lt;/code&gt; v2023.01 bởi đó là phiên bản được sử dụng trong &lt;strong&gt;worklabs bootlin&lt;/strong&gt;, mang độ tương thích cao với &lt;code&gt;busybox&lt;/code&gt; và &lt;code&gt;buildroot&lt;/code&gt; trong cùng series&lt;/p&gt;</description></item><item><title>[Boot-BBB] 1. Build Cross compiler tool crosstool-ng</title><link>https://embeddedlinux.blog/2025/10/25/boot-bbb-1-build-cross-compiler-tool/</link><pubDate>Sat, 25 Oct 2025 08:03:00 +0700</pubDate><guid>https://embeddedlinux.blog/2025/10/25/boot-bbb-1-build-cross-compiler-tool/</guid><description>&lt;p&gt;Chào các bạn, hôm nay mình sẽ bắt đầu 1 series mới mang tên Boot-BBB. Series này sẽ độc lập với series Yocto-BBB. Ở đây mình sẽ không dùng đến yocto mà sẽ build từ source cho crosstool-ng, u-boot, buildroot, busybox.&lt;/p&gt;</description></item><item><title>[Yocto-BBB] 15. Thay đổi Boot Logo</title><link>https://embeddedlinux.blog/2025/10/18/yocto-bbb-15-thay-doi-boot-logo/</link><pubDate>Sat, 18 Oct 2025 09:25:00 +0700</pubDate><guid>https://embeddedlinux.blog/2025/10/18/yocto-bbb-15-thay-doi-boot-logo/</guid><description>&lt;p&gt;Okay, bài này mình sẽ hướng dẫn cách thay đổi &lt;strong&gt;Boot Logo&lt;/strong&gt; trên &lt;strong&gt;Beaglebone Black&lt;/strong&gt;. Ban đầu mình nghĩ sẽ là 1 cái phải tìm hiểu sâu. Nhưng thực tế cách thay đổi khá đơn giản. Và đấy cũng là 1 cái hay của &lt;code&gt;Linux&lt;/code&gt; khi đã hỗ trợ rất nhiều nhưng &lt;code&gt;Package&lt;/code&gt;. Việc của mình là mò ra cái cần dùng và ráp nó lại.&lt;/p&gt;</description></item><item><title>[Yocto-BBB] 14. X11 và RDP (Remote Desktop Protocol)</title><link>https://embeddedlinux.blog/2025/10/11/yocto-bbb-14-x11-va-rdp/</link><pubDate>Sat, 11 Oct 2025 09:13:00 +0700</pubDate><guid>https://embeddedlinux.blog/2025/10/11/yocto-bbb-14-x11-va-rdp/</guid><description>&lt;p&gt;Vì quá trình build Weston quá phức tạp rồi, và mình cũng có thử Weston + RDP không thành, nên mình sang X11 + RDP luôn cho đỡ phức tạp&lt;/p&gt;&#10;&lt;h2 id="1-lý-do-dùng-rdp"&gt;1. Lý do dùng RDP&lt;/h2&gt;&#10;&lt;p&gt;Mục tiêu của việc dùng &lt;code&gt;RDP&lt;/code&gt; (Remote Desktop Protocol) này là bạn hoàn toàn có thể truy cập từ xa tới board với giao diện giống như VNC vậy .&lt;/p&gt;</description></item><item><title>[Yocto-BBB] 13. Build weston, sửa lỗi input, dnd.</title><link>https://embeddedlinux.blog/2025/10/04/yocto-bbb-13-build-weston-sua-loi-input-dnd/</link><pubDate>Sat, 04 Oct 2025 12:15:29 +0700</pubDate><guid>https://embeddedlinux.blog/2025/10/04/yocto-bbb-13-build-weston-sua-loi-input-dnd/</guid><description>&lt;p&gt;Lúc bắt tay vào làm minh không nghĩ mình sẽ viết bài này, mà mình nghĩ sẽ làm bài &lt;strong&gt;RDP + Weston&lt;/strong&gt; luôn. Vì trên con &lt;code&gt;STM32MP157&lt;/code&gt; thì build cái được ngay, nhưng trên con &lt;strong&gt;Beaglebone Black&lt;/strong&gt; này, mình mất 2 ngày mới làm cho &lt;code&gt;Weston&lt;/code&gt; có vẻ hoạt động đúng được.&lt;/p&gt;</description></item><item><title>[Yocto-BBB] 12. Truyền file qua TFTP</title><link>https://embeddedlinux.blog/2025/09/27/yocto-bbb-12-truyen-file-qua-tftp/</link><pubDate>Sat, 27 Sep 2025 09:10:00 +0700</pubDate><guid>https://embeddedlinux.blog/2025/09/27/yocto-bbb-12-truyen-file-qua-tftp/</guid><description>&lt;p&gt;Bài trước mình đã hướng dẫn các bạn truyền file qua UART, bài này mình sẽ hướng dẫn các bạn cách truyền file qua TFTP. (u-boot có hỗ trợ TFTP để load file)&lt;/p&gt;&#10;&lt;h2 id="1-tftp-là-gì-"&gt;1. TFTP là gì ?&lt;/h2&gt;&#10;&lt;p&gt;TFTP (Trivial File Transfer Protocol) là một giao thức truyền tệp &lt;strong&gt;rất đơn giản&lt;/strong&gt;, hoạt động trên &lt;code&gt;UDP&lt;/code&gt; (port 69).&lt;/p&gt;</description></item><item><title>[Yocto-BBB] 11. Truyền file qua UART</title><link>https://embeddedlinux.blog/2025/09/20/yocto-bbb-11-truyen-file-qua-uart/</link><pubDate>Sat, 20 Sep 2025 09:25:00 +0700</pubDate><guid>https://embeddedlinux.blog/2025/09/20/yocto-bbb-11-truyen-file-qua-uart/</guid><description>&lt;p&gt;Ở bài này, mình sẽ hướng dẫn các bạn cách truyền file qua UART. Sẽ rất hữu dụng khi sắp tới ta học về quá trình Boot trên BBB cũng như u-boot.&lt;/p&gt;&#10;&lt;h2 id="1-lý-do"&gt;1. Lý do&lt;/h2&gt;&#10;&lt;p&gt;Cho đến giờ mình biết tới 1 số kiểu truyền file từ HOST sang board sau. Mình sẽ nêu ra ưu và nhược điểm của nó&lt;/p&gt;</description></item><item><title>[Yocto-BBB] 10. Boot từ eMMC</title><link>https://embeddedlinux.blog/2025/08/30/yocto-bbb-10-boot-from-emmc/</link><pubDate>Sat, 30 Aug 2025 08:40:00 +0700</pubDate><guid>https://embeddedlinux.blog/2025/08/30/yocto-bbb-10-boot-from-emmc/</guid><description>&lt;p&gt;Ở bài này mình sẽ hướng dẫn các bạn cách cấu hình để Beaglebone Black boot từ eMMC.&lt;/p&gt;&#10;&lt;h2 id="1-lý-do"&gt;1. Lý do&lt;/h2&gt;&#10;&lt;h3 id="11-emmc-là-gì-"&gt;1.1 eMMC là gì ?&lt;/h3&gt;&#10;&lt;p&gt;&lt;strong&gt;eMMC (embedded MultiMediaCard)&lt;/strong&gt; là một loại bộ nhớ lưu trữ tích hợp, kết hợp &lt;strong&gt;flash NAND&lt;/strong&gt; và &lt;strong&gt;bộ điều khiển&lt;/strong&gt; trên cùng một chip.&lt;/p&gt;</description></item><item><title>[Yocto-BBB] 9. Sử dụng devtool, tạo patch và cách cài file IPK</title><link>https://embeddedlinux.blog/2025/08/23/yocto-bbb-9-su-dung-devtool-tao-patch-va-file-ipk/</link><pubDate>Sat, 23 Aug 2025 08:52:00 +0700</pubDate><guid>https://embeddedlinux.blog/2025/08/23/yocto-bbb-9-su-dung-devtool-tao-patch-va-file-ipk/</guid><description>&lt;p&gt;Ở bài 5 về thêm driver cho &lt;strong&gt;USB wifi&lt;/strong&gt; mình đã từng hướng dẫn các bạn cách tạo &lt;code&gt;recipes&lt;/code&gt; thủ công để lấy code từ git về build. ở bài 8 vừa rồi, mình cũng có để code &lt;code&gt;main.c&lt;/code&gt; xử lý i2c trên git, tuy nhiên khi copy về board ta sẽ phải sửa lại &lt;code&gt;I2C_DEV&lt;/code&gt; và &lt;code&gt;I2C_ADDR&lt;/code&gt; cho đúng.&lt;/p&gt;</description></item><item><title>[Yocto-BBB] 8. Kết nối I2C với SSD1306 OLED 0.96 Inch</title><link>https://embeddedlinux.blog/2025/08/16/yocto-bbb-8-ket-noi-voi-ssd1306-oled-0-96-inch/</link><pubDate>Sat, 16 Aug 2025 08:05:00 +0700</pubDate><guid>https://embeddedlinux.blog/2025/08/16/yocto-bbb-8-ket-noi-voi-ssd1306-oled-0-96-inch/</guid><description>&lt;p&gt;Ở bài này mình sẽ hướng dẫn các bạn cách kết nối Beaglebone Black với màn SSD1306 cũng như tạo recipes để build program cho việc tương tác này. Dưới đây là cách kết nối&lt;/p&gt;&#10;&lt;p&gt;(Nếu các bạn gặp khó khăn trong quá trình thực hành theo blog, các bạn có thể tham khảo video thực hành của mình ở cuối bài )&lt;/p&gt;</description></item><item><title>[Yocto-BBB] 7. Thêm driver cho USB wifi</title><link>https://embeddedlinux.blog/2025/08/09/yocto-bbb-7-them-driver-cho-usb-wifi/</link><pubDate>Sat, 09 Aug 2025 08:15:00 +0700</pubDate><guid>https://embeddedlinux.blog/2025/08/09/yocto-bbb-7-them-driver-cho-usb-wifi/</guid><description>&lt;p&gt;Với các board không có sẵn module wifi như &lt;strong&gt;Beaglebone Black&lt;/strong&gt;, thì việc dùng 1 usb wifi là rất tiện so với việc cắm dây Ethernet. Ở bài này mình dùng mẫu USB wifi từ &lt;strong&gt;TP-Link WN722N&lt;/strong&gt; V2 khá phổ biến ở các shop Việt Nam&lt;/p&gt;</description></item><item><title>[Yocto-BBB] 6. SSH tới board qua Ethernet</title><link>https://embeddedlinux.blog/2025/08/02/yocto-bbb-6-ssh-toi-board-qua-ethernet/</link><pubDate>Sat, 02 Aug 2025 08:25:00 +0700</pubDate><guid>https://embeddedlinux.blog/2025/08/02/yocto-bbb-6-ssh-toi-board-qua-ethernet/</guid><description>&lt;p&gt;Tiếp tục bài 5, bài này mình sẽ hướng dẫn các bạn thêm package vào image để kết nối được Internet khi cắm Ethernet, từ đó SSH tới board, tiện cho việc lập trình sau này hơn.&lt;/p&gt;&#10;&lt;p&gt;(Nếu các bạn gặp khó khăn trong quá trình thực hành theo blog, các bạn có thể tham khảo video thực hành của mình ở cuối bài )&lt;/p&gt;</description></item><item><title>[Yocto-BBB] 5. Thay đổi banner sau khi đăng nhập</title><link>https://embeddedlinux.blog/2025/07/26/yocto-bbb-5-thay-doi-banner-sau-khi-dang-nhap/</link><pubDate>Sat, 26 Jul 2025 09:37:00 +0700</pubDate><guid>https://embeddedlinux.blog/2025/07/26/yocto-bbb-5-thay-doi-banner-sau-khi-dang-nhap/</guid><description>&lt;p&gt;Mục tiêu của chúng ta sau bài này là sau khi đăng nhập ta sẽ hiện ra màn hình như sau&lt;/p&gt;&#10;&lt;p&gt;(Nếu các bạn gặp khó khăn trong quá trình thực hành theo blog, các bạn có thể tham khảo video thực hành của mình ở cuối bài )&lt;/p&gt;</description></item><item><title>[Yocto-BBB] 4. Thay đổi Distro Description</title><link>https://embeddedlinux.blog/2025/07/19/yocto-bbb-4-thay-doi-distro-description/</link><pubDate>Sat, 19 Jul 2025 09:21:00 +0700</pubDate><guid>https://embeddedlinux.blog/2025/07/19/yocto-bbb-4-thay-doi-distro-description/</guid><description>&lt;p&gt;Như bài trước đã nói, mục tiêu của bài này mình sẽ thay đổi distro description từ &amp;quot;Poky (Yocto Project Reference Distro)&amp;quot; sang dòng hiển thị custom theo cá nhân&lt;/p&gt;&#10;&lt;h2 id="thay-đổi-distro-description"&gt;Thay đổi Distro Description&lt;/h2&gt;&#10;&lt;p&gt;Đầu tiên ta tìm xem, vậy trong repo poky, dòng chữ này được chứa trong file nào sau khi build xong image&lt;/p&gt;</description></item><item><title>[Yocto-BBB] 3. Thêm mật khẩu cho User</title><link>https://embeddedlinux.blog/2025/07/12/yocto-bbb-3-them-mat-khau-cho-user/</link><pubDate>Sat, 12 Jul 2025 09:38:00 +0700</pubDate><guid>https://embeddedlinux.blog/2025/07/12/yocto-bbb-3-them-mat-khau-cho-user/</guid><description>&lt;p&gt;Ở 2 bài trước, ta đang không cài mật khẩu cho user root. Đến bài này mình sẽ thêm mật khẩu (do không có sudo, nên thêm cho root luôn :v)&lt;/p&gt;&#10;&lt;p&gt;(Nếu các bạn gặp khó khăn trong quá trình thực hành theo blog, các bạn có thể tham khảo video thực hành của mình ở cuối bài )&lt;/p&gt;</description></item><item><title>[Yocto-BBB] 2. UART Debug Board và Bitbake Append</title><link>https://embeddedlinux.blog/2025/07/05/yocto-bbb-2-uart-debug-board/</link><pubDate>Sat, 05 Jul 2025 08:04:00 +0700</pubDate><guid>https://embeddedlinux.blog/2025/07/05/yocto-bbb-2-uart-debug-board/</guid><description>&lt;p&gt;Ở bài trước, chúng ta đã build thành công core-minimal-image ở bài này mình sẽ tiếp tục với việc kết nối uart debug và ôn lại về bitbake append&lt;/p&gt;&#10;&lt;p&gt;(Nếu các bạn gặp khó khăn trong quá trình thực hành theo blog, các bạn có thể tham khảo video thực hành của mình ở cuối bài )&lt;/p&gt;</description></item><item><title>[Yocto-BBB] 0. Lý thuyết, Tài liệu, và câu lệnh thường dùng trong Series Yocto</title><link>https://embeddedlinux.blog/2025/06/27/yocto-bbb-0-ly-thuyet-tai-lieu-va-cau-lenh-thuong-dung-trong-series-yocto/</link><pubDate>Fri, 27 Jun 2025 09:26:00 +0700</pubDate><guid>https://embeddedlinux.blog/2025/06/27/yocto-bbb-0-ly-thuyet-tai-lieu-va-cau-lenh-thuong-dung-trong-series-yocto/</guid><description>&lt;p&gt;Khi thực hành theo các bài trong series, có những câu lệnh mình thường dùng, có 1 số lý thuyết có thể dễ quên, và 1 số tài liệu phụ. Ở bài này mình sẽ tổng hợp lại để cho các bạn dễ theo dõi, làm theo hơn .&lt;/p&gt;</description></item><item><title>[BBB-Linux] 1. Beaglebone Black Boot Process Overview</title><link>https://embeddedlinux.blog/2025/06/21/bbb-linux-1-beaglebone-black-boot-process-overview/</link><pubDate>Sat, 21 Jun 2025 08:51:00 +0700</pubDate><guid>https://embeddedlinux.blog/2025/06/21/bbb-linux-1-beaglebone-black-boot-process-overview/</guid><description>&lt;p&gt;&lt;figure class="md-img"&gt;&lt;img src="https://embeddedlinux.blog/uploads/blogger/043d800bc825.jpg" alt="" loading="lazy" decoding="async"&gt;&lt;/figure&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;Tổng quan sẽ gồm 5 giai đoạn theo mô tả trên hình, ta đi vào sâu hơn về từng giai đoạn&lt;/p&gt;&#10;&lt;h2 id="1-soc-rom-bootloader"&gt;1. SoC ROM Bootloader&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;RBL (ROM Bootloader): cái này sẽ do bên vendor, hay bên sản xuất board code, không thể thay thế được nội dung&lt;/li&gt;&#10;&lt;li&gt;Đây là đoạn code đầu tiên sẽ chạy khi mở board lên&lt;/li&gt;&#10;&lt;li&gt;Nhiệm vụ chính là để chạy khối tiếp theo First Stage Bootloader (SPL/MLO)&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="2-first-stage-bootloader-splmlo"&gt;2. First Stage Bootloader (SPL/MLO)&lt;/h2&gt;&#10;&lt;p&gt;SPL: Secondary Program Loader&lt;/p&gt;</description></item><item><title>[BBB-Linux] 3. Beaglebone Black Boot Process - U-boot</title><link>https://embeddedlinux.blog/2025/05/10/bbb-linux-3-beaglebone-black-boot-process-u-boot/</link><pubDate>Sat, 10 May 2025 11:16:00 +0000</pubDate><guid>https://embeddedlinux.blog/2025/05/10/bbb-linux-3-beaglebone-black-boot-process-u-boot/</guid><description>&lt;p&gt;Tiếp tục với Boot Process trên BBB đó là u-boot&lt;/p&gt;&#10;&lt;p&gt;&lt;figure class="md-img"&gt;&lt;img src="https://embeddedlinux.blog/uploads/blogger/b2740fa3dded.png" alt="" loading="lazy" decoding="async"&gt;&lt;/figure&gt;&#10;&lt;/p&gt;&#10;&lt;h2 id="1-u-boot-là-gì-"&gt;1. U-boot là gì ?&lt;/h2&gt;&#10;&lt;p&gt;&lt;strong&gt;U-Boot (Universal Boot Loader)&lt;/strong&gt; là một trình nạp khởi động mã nguồn mở, đóng vai trò quan trọng trong các hệ thống nhúng sử dụng Linux. Nó chịu trách nhiệm khởi tạo phần cứng cơ bản và chuyển quyền điều khiển cho nhân hệ điều hành. Nhờ khả năng tương thích với nhiều nền tảng như ARM, x86 hay PowerPC, U-Boot được ứng dụng rộng rãi trong phát triển phần mềm nhúng. Ngoài ra, nó còn cho phép cấu hình môi trường hệ thống trước khi kernel được thực thi, góp phần đảm bảo quá trình khởi động diễn ra ổn định và linh hoạt.&lt;/p&gt;</description></item><item><title>[BBB-Linux] 3.1 Tại sao cần có Device Tree ?</title><link>https://embeddedlinux.blog/2025/05/10/bbb-linux-3-1-tai-sao-can-co-device-tree/</link><pubDate>Sat, 10 May 2025 11:16:00 +0000</pubDate><guid>https://embeddedlinux.blog/2025/05/10/bbb-linux-3-1-tai-sao-can-co-device-tree/</guid><description>&lt;p&gt;&lt;figure class="md-img"&gt;&lt;img src="https://embeddedlinux.blog/uploads/blogger/30b8446785db.png" alt="" loading="lazy" decoding="async"&gt;&lt;/figure&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;Trên 1 Board sẽ có rất nhiều ngoại vi, tuy nhiên khi OS đi vào hoạt động thì bản thân nó không thể nhận biết được các ngoại vi on-board, ngoại trừ USB (có cơ chế Self Discoverable). Đó là lý do cần có 1 file code để định nghĩa các ngoại vi trên board.&lt;/p&gt;</description></item><item><title>[BBB-Linux] 2. Beaglebone Black Boot Process - RBL, SPL</title><link>https://embeddedlinux.blog/2025/05/08/bbb-linux-2-beaglebone-black-boot-process-rbl-spl/</link><pubDate>Thu, 08 May 2025 15:29:00 +0000</pubDate><guid>https://embeddedlinux.blog/2025/05/08/bbb-linux-2-beaglebone-black-boot-process-rbl-spl/</guid><description>&lt;p&gt;&lt;figure class="md-img"&gt;&lt;img src="https://embeddedlinux.blog/uploads/2025/05/image-3.png" alt="" loading="lazy" decoding="async"&gt;&lt;/figure&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;Bài này sẽ tìm hiểu kỹ hơn về quá trình RBL (ROM Bootloader) và SPL (Secondary Program Loader) mình đã nói qua ở bài 1.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Ti AM335x CPU diagram&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;figure class="md-img"&gt;&lt;img src="https://embeddedlinux.blog/uploads/2025/05/image-4.png" alt="" loading="lazy" decoding="async"&gt;&lt;/figure&gt;&#10;&lt;/p&gt;&#10;&lt;h2 id="1-rbl-rom-bootloader"&gt;1. RBL (ROM Bootloader)&lt;/h2&gt;&#10;&lt;p&gt;Như ảnh ở trên ta có cấu trúc AM3359 SoC, phần chip chính gồm&lt;/p&gt;</description></item></channel></rss>