【RK3588 Android12】固件烧录与启动

前言

固件烧录是将编译好的系统镜像写入到开发板存储介质(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模式

检查步骤:

  1. 确认USB线连接正常
  2. 确认驱动安装正确
  3. 尝试Maskrom模式
  4. 检查硬件是否损坏

8.2 烧录失败

常见原因:

  1. 固件不匹配
  2. USB连接不稳定
  3. 存储介质损坏

解决方法:

复制代码
# 进入Maskrom模式
# 先下载Loader
# 再烧录固件

8.3 启动卡住

排查方法:

  1. 连接串口查看日志

  2. 确定卡在哪个阶段

  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固件烧录的完整流程:

  1. 烧录工具:RKDevTool、upgrade_tool
  2. 烧录模式:Loader、Maskrom、Fastboot
  3. 烧录方法:完整固件、分区烧录
  4. 调试方法:串口、ADB
  5. 问题排查:常见问题解决

熟练掌握烧录方法是开发调试的基础,建议多实践不同的烧录方式。

相关推荐
灵哎惹,凌沃敏2 小时前
一句话总结IIC协议
arm开发·单片机·开源协议
2401_863318632 小时前
基于单片机的温度控制系统的设计
单片机·嵌入式硬件
z20348315203 小时前
AI模型部署草稿
人工智能·单片机·嵌入式硬件
金色光环4 小时前
【SCPI学习】STM32与LWIP实现SCPI命令解析
stm32·嵌入式硬件·算法·scpi学习·scpi
小范馆4 小时前
STM32F03C8T6通过AT指令获取天气API
前端·javascript·stm32
The Kite4 小时前
乐鑫ESP32-C3-DevKitM-1开发板深度测评:性能、功能与应用场景解析
单片机
CQ_YM4 小时前
51单片机(4)
单片机·嵌入式硬件·51单片机
jh10_4 小时前
嵌入式硬件day1
嵌入式硬件
小痞同学6 小时前
【铁头山羊STM32】HAL库 1.GPIO部分
stm32·单片机·嵌入式硬件