前言
固件烧录是将编译好的系统镜像写入到开发板存储介质(eMMC/SD卡)的过程。RK3588支持多种烧录方式,本文将详细介绍各种烧录方法和启动调试技巧。
一、烧录工具
1.1 Windows工具
| 工具 | 用途 | 位置 |
|---|---|---|
| RKDevTool | 固件烧录 | RKTools/windows/ |
| DriverAssitant | USB驱动安装 | RKTools/windows/ |
| FactoryTool | 量产烧录 | RKTools/windows/ |
1.2 Linux工具
| 工具 | 用途 | 位置 |
|---|---|---|
| upgrade_tool | 命令行烧录 | RKTools/linux/ |
| rkdeveloptool | 开发烧录 | 需单独编译 |
1.3 安装USB驱动(Windows)
1. 运行 DriverAssitant_v5.x.exe
2. 点击"驱动安装"
3. 等待安装完成
4. 重启电脑
二、烧录模式
2.1 模式说明
| 模式 | 说明 | 进入方式 |
|---|---|---|
| Maskrom | 最底层模式,用于救砖 | 短接Maskrom点 |
| Loader | 引导模式,常用烧录 | 按住Recovery键上电 |
| Recovery | 恢复模式 | adb reboot recovery |
| Fastboot | 快速启动模式 | adb reboot bootloader |
2.2 进入Loader模式
方法1:按键进入
1. 设备断电
2. 按住Recovery键(或Vol+键)
3. 连接USB并上电
4. 松开按键
方法2:ADB命令
adb reboot loader
方法3:串口命令
# 在U-Boot阶段按任意键进入命令行
=> rockusb 0 mmc 0
2.3 进入Maskrom模式
方法1:短接
1. 设备断电
2. 短接Maskrom测试点(参考原理图)
3. 连接USB并上电
4. 松开短接
方法2:擦除
# 在Loader模式下擦除
# 使用RKDevTool擦除所有分区
三、Windows烧录
3.1 RKDevTool烧录
烧录完整固件(update.img):
1. 打开RKDevTool
2. 切换到"升级固件"页面
3. 点击"固件"选择update.img
4. 设备进入Loader模式
5. 点击"升级"
6. 等待烧录完成
分区烧录:
1. 切换到"下载镜像"页面
2. 勾选需要烧录的分区
3. 选择对应的镜像文件:
- MiniLoaderAll.bin -> Loader
- parameter.txt -> parameter
- uboot.img -> uboot
- boot.img -> boot
- super.img -> super
4. 点击"执行"
3.2 分区镜像对应
| 分区名 | 镜像文件 | 说明 |
|---|---|---|
| Loader | MiniLoaderAll.bin | 引导程序 |
| parameter | parameter.txt | 分区表 |
| uboot | uboot.img | U-Boot |
| trust | trust.img | ATF |
| misc | misc.img | 启动模式 |
| boot | boot.img | 内核+ramdisk |
| recovery | recovery.img | 恢复系统 |
| super | super.img | system+vendor+odm |
四、Linux烧录
4.1 upgrade_tool使用
# 添加执行权限
chmod +x upgrade_tool
# 查看设备
sudo ./upgrade_tool ld
# 烧录完整固件
sudo ./upgrade_tool uf update.img
# 烧录分区
sudo ./upgrade_tool di -b boot.img
sudo ./upgrade_tool di -s super.img
sudo ./upgrade_tool di -u uboot.img
# 重启设备
sudo ./upgrade_tool rd
4.2 rkdeveloptool使用
# 安装依赖
sudo apt-get install libudev-dev libusb-1.0-0-dev
# 编译rkdeveloptool
git clone https://github.com/rockchip-linux/rkdeveloptool
cd rkdeveloptool
autoreconf -i
./configure
make
sudo make install
# 查看设备
sudo rkdeveloptool ld
# 下载Loader
sudo rkdeveloptool db MiniLoaderAll.bin
# 烧录分区
sudo rkdeveloptool wl 0x0 parameter.txt
sudo rkdeveloptool wl 0x4000 uboot.img
sudo rkdeveloptool wl 0x8000 boot.img
# 重启
sudo rkdeveloptool rd
4.3 fastboot烧录
# 进入fastboot模式
adb reboot bootloader
# 查看设备
fastboot devices
# 烧录boot
fastboot flash boot boot.img
# 烧录super
fastboot flash super super.img
# 重启
fastboot reboot
五、SD卡启动
5.1 制作SD卡启动盘
# 查看SD卡设备
lsblk
# 假设SD卡为/dev/sdb
# 烧录固件
sudo dd if=update.img of=/dev/sdb bs=4M status=progress
sync
5.2 SD卡启动配置
部分开发板需要设置启动顺序:
1. 拨码开关设置为SD卡启动
2. 或修改U-Boot启动顺序
六、串口调试
6.1 串口连接
开发板调试串口 -> USB转TTL模块 -> PC
连接方式:
- TX -> RX
- RX -> TX
- GND -> GND
6.2 串口参数
波特率: 1500000 (RK3588默认)
数据位: 8
停止位: 1
校验位: None
流控制: None
6.3 串口工具
Windows:
- SecureCRT
- MobaXterm
- Putty
Linux:
# minicom
sudo apt-get install minicom
sudo minicom -D /dev/ttyUSB0 -b 1500000
# picocom
sudo apt-get install picocom
sudo picocom -b 1500000 /dev/ttyUSB0
# screen
sudo screen /dev/ttyUSB0 1500000
6.4 串口日志分析
# U-Boot阶段
DDR Version V1.xx
LPDDR4X, 8GB
...
Hit key to stop autoboot
# Kernel阶段
[ 0.000000] Booting Linux on physical CPU 0x0000000000
[ 0.000000] Linux version 5.10.xx
...
# Android阶段
init: starting service 'zygote'
...
Boot completed
七、ADB调试
7.1 ADB连接
# USB连接
adb devices
# 网络连接
adb connect 192.168.1.100:5555
7.2 常用ADB命令
# 进入shell
adb shell
# 获取root权限
adb root
adb remount
# 推送文件
adb push local_file /data/local/tmp/
# 拉取文件
adb pull /data/local/tmp/file ./
# 安装APK
adb install app.apk
# 查看日志
adb logcat
# 重启
adb reboot
adb reboot recovery
adb reboot bootloader
7.3 ADB over WiFi
# 设备端开启
setprop service.adb.tcp.port 5555
stop adbd
start adbd
# PC端连接
adb connect <device_ip>:5555
八、启动问题排查
8.1 无法进入Loader模式
检查步骤:
- 确认USB线连接正常
- 确认驱动安装正确
- 尝试Maskrom模式
- 检查硬件是否损坏
8.2 烧录失败
常见原因:
- 固件不匹配
- USB连接不稳定
- 存储介质损坏
解决方法:
# 进入Maskrom模式
# 先下载Loader
# 再烧录固件
8.3 启动卡住
排查方法:
-
连接串口查看日志
-
确定卡在哪个阶段
-
针对性解决
卡在U-Boot
- 检查DDR初始化
- 检查存储识别
卡在Kernel
- 检查设备树
- 检查驱动加载
卡在Android
- 检查SELinux
- 检查系统服务
九、量产烧录
9.1 FactoryTool使用
1. 打开FactoryTool
2. 导入固件
3. 配置烧录参数
4. 连接多台设备
5. 批量烧录
9.2 烧录脚本
#!/bin/bash
# batch_flash.sh
TOOL="./upgrade_tool"
FIRMWARE="update.img"
while true; do
# 等待设备
while ! $TOOL ld | grep -q "Found"; do
sleep 1
done
echo "Device found, flashing..."
$TOOL uf $FIRMWARE
if [ $? -eq 0 ]; then
echo "Flash success!"
$TOOL rd
else
echo "Flash failed!"
fi
sleep 2
done
十、总结
本文介绍了RK3588固件烧录的完整流程:
- 烧录工具:RKDevTool、upgrade_tool
- 烧录模式:Loader、Maskrom、Fastboot
- 烧录方法:完整固件、分区烧录
- 调试方法:串口、ADB
- 问题排查:常见问题解决
熟练掌握烧录方法是开发调试的基础,建议多实践不同的烧录方式。