Video failed to load

Boot Devices & Thundercomm SDK

1417 words
7 minutes
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:

Bảng 1: Qualcomm Robotics RB5 Developer Kit — Boot Order
SW4SW3SW2SW1Boot order
0000UFS > SDC2 > USB 3.1 Type-C
0001SDC2 > UFS > USB 3.1 Type-C
0010SDC2 > USB 3.1 Type-C
0011USB 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:

  1. Tải SDK Manager về máy host.
  2. Cài đặt SDK Manager.
  3. Thiết lập SDK Manager: đăng nhập, chọn sản phẩm, platform và phiên bản image.
  4. Tạo image, đưa board vào EDL mode và flash.
  5. 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#

  1. Đă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.
  2. Tải bộ cài SDK Manager:
  3. Giải nén (thay tên file đúng với bản đã tải):
Terminal window
unzip TC-sdkmanager-4.2.0.zip
  1. Kiểm tra các file trong thư mục vừa giải nén:
Terminal window
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.deb

Bướ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#

  1. Cài các thư viện cần thiết:
Terminal window
sudo apt-get install coreutils fakechroot fakeroot kmod \
libc6-arm64-cross python2.7 qemu-user-static wget udev openssh-server dh-python

RidgeRun đã 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.

  1. Từ thư mục TC-sdkmanager-x.x.x, cài gói .deb (thay đúng phiên bản đã tải):
Terminal window
sudo dpkg -i tc-sdkmanager-v4.2.0_amd64.deb
  1. 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.1 và thay qemu-user-static bằng bản 6.2, tránh lỗi khi tạo image:
Terminal window
sudo rm -rf /lib/ld-linux-aarch64.so.1
sudo ln -sf /usr/aarch64-linux-gnu/lib/ld-linux-aarch64.so.1 /lib/ld-linux-aarch64.so.1
sudo ln -sf /bin/bash /bin/sh
sudo dpkg -P qemu-user-static
wget http://archive.ubuntu.com/ubuntu/pool/universe/q/qemu/qemu-user-static_6.2+dfsg-2ubuntu6_amd64.deb
sudo dpkg -i qemu-user-static_6.2+dfsg-2ubuntu6_amd64.deb
  1. Mở một terminal mới và chạy SDK Manager, rồi chuyển sang Bước 3:
Terminal window
sdkmanager

Trên các phiên bản Ubuntu khác (dùng Docker)#

  1. Cài các gói cần thiết:
Terminal window
sudo apt-get install qemu-user-static openssh-server udev -y
  1. Cài Docker (xem Docker Tutorial của RidgeRun).

  2. 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:

Terminal window
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.

  1. Tạo container từ image vừa build (có thể đổi tên sdkmanager_container):
Terminal window
docker create --privileged -v /dev/:/dev -v /run/udev:/run/udev --name sdkmanager_container -p 36000:22 ubuntu:18.04-sdkmanager
  1. 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:
Terminal window
docker start sdkmanager_container
  1. Chạy SDK Manager bên trong container, rồi chuyển sang Bước 3:
Terminal window
sudo docker exec -it sdkmanager_container sdkmanager

Bước 3: Thiết lập SDK Manager#

  1. Đăng nhập bằng tài khoản Thundercomm:
Credential Checking ...
Enter your Thundercomm username:
Enter your Thundercomm password:
  1. 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õ y vì đâ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]? y
Setting it up ... done
  1. Chọn sản phẩm: RB5 là lựa chọn số 4.
Choose a product
1: RB1
2: RB2
3: RB3 Gen2
4: RB5
5: RB5 Gen2
6: RB5N(Non-Pop)
  1. 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-get và 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).
Choose a platform for Robotics RB5 device
Enter 1 to use LU platform, 2 to use LE platform:
  1. Chọn phiên bản image. RidgeRun dùng QRB5165.LU2.0_20250723.2230_debug cho LU và QRB5165.LE.2.0-231113 cho LE.

  2. SDK đã sẵn sàng. Gõ help để xem các lệnh; menu khác nhau theo platform:

Bảng 2: Lệnh của SDK Manager theo platform
LệnhLU platformLE platform
1Tải tài nguyên LU và tạo system.imgTải tài nguyên LE
2Flash full build (cần tạo system.img trước)Flash full build
3Tải LE SDK toolchain
qThoát SDK ManagerThoá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:

  1. 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 repack system.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 ...done
You may proceed to flash full_build to your device
  1. Đư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.

  2. 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.

  3. 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.
========================================================================
  1. Gõ q để thoát SDK Manager, rồi truy cập board bằng adb shell (xem Using ADB). Nếu adb không nhận board, rút ra cắm lại cáp USB Type-C.

Sự cố thường gặp#

Bảng 3: Sự cố thường gặp khi dùng SDK Manager
LỗiNguyên nhânCách xử lý
Could not find a Qualcomm device in QDL modeBoard chưa vào EDL mode đúng cách, máy host không nhận ra boardLàm lại bước đưa board vào EDL mode
There is something wrong happened in Boot up processBoard đã flash xong nhưng adb không kết nối được khi board khởi động lạiChạ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 candidateThiếu gói phụ thuộc khi cài trên Ubuntu 20.04sudo apt install dh-python
/lib/ld-linux-aarch64.so.1: No such file or directorySDK 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 implementedBả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#

  1. Qualcomm® Robotics RB5 Development Kit Quick Start Guide (Qualcomm).
  2. Qualcomm® Robotics SDK Manager User Guide (Thundercomm, PDF).
  3. Qualcomm Robotics RB5 Development Kit (Thundercomm, trang tải SDK Manager).
  4. RidgeRun Developer Wiki: Boot Devices, Thundercomm SDK, Downloading SDK, Installing SDK, Generating Image and Flashing.

Comments

Profile Image of the Author
Art
When the world stopped, I started compiling.
Announcement
Welcome to my blog!
Latest Moments
Table of Contents