Boot Devices & Thundercomm SDK
Bài này tổng hợp và viết lại từ các trang Boot Devices, Thundercomm SDK, Downloading SDK, Installing SDK và Generating Image and Flashing trong RidgeRun Developer Wiki.
Để RB5 chạy được hệ điều hành, cần trả lời hai câu hỏi: board sẽ boot từ đâu, và làm sao đưa image vào đó. Bài này đi qua cả hai: các boot device cùng cách chọn thứ tự boot bằng DIP switch, rồi toàn bộ quy trình dùng Thundercomm SDK Manager để tạo image và flash lên board.
Boot devices và boot order
Boot device là bộ nhớ chứa bootloader và các file cần thiết của hệ điều hành để board boot được. Sau khi cấp nguồn, phần mềm chạy đầu tiên là firmware PBL (Primary Boot Loader). PBL dò các boot device theo một thứ tự đã cấu hình (boot order), tìm thấy bootloader ở thiết bị nào thì nạp bootloader từ thiết bị đó vào bộ nhớ chính.
Qualcomm Robotics RB5 Developer Kit có ba boot device:
- UFS (Universal Flash Storage): bộ nhớ flash 128GB nằm trên SoM QRB5165.
- SDC2 (Secure Digital Card 2): thẻ microSD cắm vào khe microSD trên mainboard.
- USB 3.1 Type-C: thiết bị cắm vào cổng USB Type-C trên mainboard để làm boot device.
Mainboard của RB5 có một DIP switch cấu hình boot (DIP Switch 1, gồm SW1–SW4). Mỗi tổ hợp công tắc cho một boot order khác nhau:
| SW4 | SW3 | SW2 | SW1 | Boot order |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | UFS > SDC2 > USB 3.1 Type-C |
| 0 | 0 | 0 | 1 | SDC2 > UFS > USB 3.1 Type-C |
| 0 | 0 | 1 | 0 | SDC2 > USB 3.1 Type-C |
| 0 | 0 | 1 | 1 | USB 3.1 Type-C |
Mặc định (tất cả bằng 0), board boot từ UFS. Quy trình flash bằng Thundercomm SDK bên dưới cũng ghi image vào UFS.
Thundercomm SDK Manager
Thundercomm SDK Manager là công cụ chính thức để làm việc với Qualcomm Robotics RB5 (QRB5165). Nó cung cấp giải pháp tạo image trọn gói (end-to-end): tải tài nguyên, tạo OS image và flash lên board. SDK Manager chạy trên máy host, không chạy trên RB5.
Toàn bộ quy trình gồm các bước:
- Tải SDK Manager về máy host.
- Cài đặt SDK Manager.
- Thiết lập SDK Manager: đăng nhập, chọn sản phẩm, platform và phiên bản image.
- Tạo image, đưa board vào EDL mode và flash.
- Truy cập board bằng
adb.
Bài này dùng SDK Manager 4.2.0, phiên bản mới nhất tại thời điểm RidgeRun viết hướng dẫn (tháng 11/2025).
Yêu cầu máy host
- Hệ điều hành: Ubuntu Linux 20.04. Với phiên bản Ubuntu khác, chạy SDK Manager trong Docker container Ubuntu 20.04/18.04.
- Dung lượng đĩa: 20GB.
- RAM: 16GB.
Bước 1: Tải SDK Manager
- Đăng ký tài khoản trên trang chính thức của Thundercomm. Bắt buộc phải có tài khoản để dùng SDK Manager.
- Tải bộ cài SDK Manager:
- Phiên bản mới nhất của SDK Manager trên trang sản phẩm RB5 của Thundercomm.
- Tải trực tiếp bản 4.2.0.
- Giải nén (thay tên file đúng với bản đã tải):
unzip TC-sdkmanager-4.2.0.zip- Kiểm tra các file trong thư mục vừa giải nén:
cd TC-sdkmanager-4.2.0/ls# Dockerfile Dockerfile_18.04 Dockerfile_20.04 Dockerfile_22.04 README_Linux.txt README_Windows.txt tc-sdkmanager-v4.2.0_amd64.debBước 2: Cài SDK Manager
Cách cài phụ thuộc vào phiên bản Ubuntu trên máy host.
Trên Ubuntu 20.04
- Cài các thư viện cần thiết:
sudo apt-get install coreutils fakechroot fakeroot kmod \libc6-arm64-cross python2.7 qemu-user-static wget udev openssh-server dh-pythonRidgeRun đã thử với các phiên bản: coreutils 8.30, fakechroot 2.19, fakeroot 1.24, kmod 27, libc6-arm64-cross 2.31, python 2.7.18, qemu-user-static 4.2.1, wget 1.20.3, udev 245, dh-python 4.20.
- Từ thư mục
TC-sdkmanager-x.x.x, cài gói.deb(thay đúng phiên bản đã tải):
sudo dpkg -i tc-sdkmanager-v4.2.0_amd64.deb- Hoàn tất thiết lập môi trường. Các lệnh này sửa symlink
ld-linux-aarch64.so.1và thayqemu-user-staticbằng bản 6.2, tránh lỗi khi tạo image:
sudo rm -rf /lib/ld-linux-aarch64.so.1sudo ln -sf /usr/aarch64-linux-gnu/lib/ld-linux-aarch64.so.1 /lib/ld-linux-aarch64.so.1sudo ln -sf /bin/bash /bin/shsudo dpkg -P qemu-user-staticwget http://archive.ubuntu.com/ubuntu/pool/universe/q/qemu/qemu-user-static_6.2+dfsg-2ubuntu6_amd64.debsudo dpkg -i qemu-user-static_6.2+dfsg-2ubuntu6_amd64.deb- Mở một terminal mới và chạy SDK Manager, rồi chuyển sang Bước 3:
sdkmanagerTrên các phiên bản Ubuntu khác (dùng Docker)
- Cài các gói cần thiết:
sudo apt-get install qemu-user-static openssh-server udev -y-
Cài Docker (xem Docker Tutorial của RidgeRun).
-
Tạo Docker image Ubuntu 18.04 từ Dockerfile đi kèm SDK. Lệnh này có thể mất khoảng 30 phút; lưu ý dấu cách và dấu chấm ở cuối lệnh:
cd TC-sdkmanager-x.x.x/sudo docker build -t ubuntu:18.04-sdkmanager .Kiểm tra image đã được tạo bằng docker images: phải có dòng với TAG là 18.04-sdkmanager.
- Tạo container từ image vừa build (có thể đổi tên
sdkmanager_container):
docker create --privileged -v /dev/:/dev -v /run/udev:/run/udev --name sdkmanager_container -p 36000:22 ubuntu:18.04-sdkmanager- Khởi động container. Mỗi lần cần dùng lại SDK Manager thì chạy lệnh này; kiểm tra bằng
docker container ls -a, cột STATUS phải làUp:
docker start sdkmanager_container- Chạy SDK Manager bên trong container, rồi chuyển sang Bước 3:
sudo docker exec -it sdkmanager_container sdkmanagerBước 3: Thiết lập SDK Manager
- Đăng nhập bằng tài khoản Thundercomm:
Credential Checking ...Enter your Thundercomm username:Enter your Thundercomm password:- Chọn thư mục đích để lưu tài nguyên image. Mặc định là
/root/. Nếu không chạy trong Docker, nên chọn thư mục khác như/home/$USER/. Khi được hỏi có tiếp tục không, phải gõyvì đây không phải lựa chọn mặc định:
Enter absolute target directory for Image resources (overwrites existing files, default: /root/):You are about to install the SDK to '/root/'. Proceed [Y/n]? ySetting it up ... done- Chọn sản phẩm: RB5 là lựa chọn số 4.
Choose a product1: RB12: RB23: RB3 Gen24: RB55: RB5 Gen26: RB5N(Non-Pop)- Chọn platform. Cả hai đều dựa trên Linux kernel 5.4:
- LU (Linux Ubuntu): rootfs Ubuntu, có trình quản lý gói
apt-getvà biên dịch được ngay trên board (on-device compilation). - LE (Linux Embedded): dựa trên hệ thống build Yocto (OpenEmbedded), đi kèm toolchain để biên dịch trên máy khác (off-target compilation).
- LU (Linux Ubuntu): rootfs Ubuntu, có trình quản lý gói
Choose a platform for Robotics RB5 deviceEnter 1 to use LU platform, 2 to use LE platform:-
Chọn phiên bản image. RidgeRun dùng
QRB5165.LU2.0_20250723.2230_debugcho LU vàQRB5165.LE.2.0-231113cho LE. -
SDK đã sẵn sàng. Gõ
helpđể xem các lệnh; menu khác nhau theo platform:
| Lệnh | LU platform | LE platform |
|---|---|---|
1 | Tải tài nguyên LU và tạo system.img | Tải tài nguyên LE |
2 | Flash full build (cần tạo system.img trước) | Flash full build |
3 | Tải LE SDK toolchain | |
q | Thoát SDK Manager | Thoát SDK Manager |
Bước 4: Tạo image và flash
Quy trình giống nhau cho cả LU và LE, chỉ khác thời gian chạy:
- Tải tài nguyên và tạo image: chọn lệnh
1, rồi gõyđể xác nhận. Với LU, SDK tải khoảng 764MB rồi repacksystem.img, mất khoảng 40 phút; với LE chỉ tải và giải nén, khoảng 5 phút (đo trên Intel Core i7-1065G7). Khi xong sẽ thấy:
Move sparse images to full_build ...doneYou may proceed to flash full_build to your device-
Đưa board vào EDL mode (Emergency Download mode) để máy host flash được. Xem hướng dẫn Setting up board in EDL Mode của RidgeRun.
-
Flash full build: chọn lệnh
2, rồi gõy. SDK tìm thấy board qua cổng serial (ví dụ/dev/ttyUSB0) và bắt đầu flash. Theo đo của RidgeRun, flash LU mất khoảng 30 phút, LE khoảng 5 phút. -
Sau khi flash xong, board tự khởi động lại. SDK chờ board boot lên rồi báo:
========================================================================Robotics device is ready to use.Open another terminal and enter 'adb shell' to interact with your device.========================================================================- Gõ
qđể thoát SDK Manager, rồi truy cập board bằngadb shell(xem Using ADB). Nếuadbkhông nhận board, rút ra cắm lại cáp USB Type-C.
Sự cố thường gặp
| Lỗi | Nguyên nhân | Cách xử lý |
|---|---|---|
Could not find a Qualcomm device in QDL mode | Board chưa vào EDL mode đúng cách, máy host không nhận ra board | Làm lại bước đưa board vào EDL mode |
There is something wrong happened in Boot up process | Board đã flash xong nhưng adb không kết nối được khi board khởi động lại | Chạy adb kill-server trên máy host trước khi flash, hoặc khởi động lại board bằng tay rồi kiểm tra lại bằng adb |
E: Package 'python' has no installation candidate | Thiếu gói phụ thuộc khi cài trên Ubuntu 20.04 | sudo apt install dh-python |
/lib/ld-linux-aarch64.so.1: No such file or directory | SDK tạo symlink tới ld-2.27.so, trong khi Ubuntu 20.04 có ld-2.31.so (gặp ở SDK 4.0.1) | Trỏ lại symlink: sudo ln -sf /usr/aarch64-linux-gnu/lib/ld-2.31.so /lib/ld-linux-aarch64.so.1 |
semop(1): encountered an error: Function not implemented | Bản qemu-user-static cũ (gặp ở SDK 4.0.1) | Cài lại qemu-user-static 6.2 như ở Bước 2 |
SDK 4.0.1 (bản cũ) cài được trên Ubuntu 20.04 với các bước gần giống bản 4.2.0; RidgeRun đã dùng bản này để flash image LU 2.0. Lưu ý: file README của SDK thiếu một dấu gạch nối trong tên gói qemu-user-static ở lệnh wget, làm lệnh tải báo lỗi 404.
Tham khảo
- Qualcomm® Robotics RB5 Development Kit Quick Start Guide (Qualcomm).
- Qualcomm® Robotics SDK Manager User Guide (Thundercomm, PDF).
- Qualcomm Robotics RB5 Development Kit (Thundercomm, trang tải SDK Manager).
- RidgeRun Developer Wiki: Boot Devices, Thundercomm SDK, Downloading SDK, Installing SDK, Generating Image and Flashing.










