【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. 问题排查:常见问题解决

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

相关推荐
悠哉悠哉愿意4 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
Lester_11014 天前
STM32霍尔传感器输入口设置为复用功能输入口时,还能用GPIO函数直接读取IO的状态吗
stm32·单片机·嵌入式硬件·电机控制
LCG元4 天前
低功耗显示方案:STM32L0驱动OLED,动态波形绘制与优化
stm32·嵌入式硬件·信息可视化
三佛科技-187366133974 天前
120W小体积碳化硅电源方案(LP8841SC极简方案12V10A/24V5A输出)
单片机·嵌入式硬件
z20348315204 天前
STM32F103系列单片机定时器介绍(二)
stm32·单片机·嵌入式硬件
古译汉书4 天前
【IoT死磕系列】Day 7:只传8字节怎么控机械臂?学习工业控制 CANopen 的“对象字典”(附企业级源码)
数据结构·stm32·物联网·http
Alaso_shuang4 天前
STM32 核心输入、输出模式
stm32·单片机·嵌入式硬件
脚后跟4 天前
AI助力嵌入式物联网项目全栈开发
嵌入式硬件·物联网·ai编程
2501_918126914 天前
stm32死锁是怎么实现的
stm32·单片机·嵌入式硬件·学习·个人开发
z20348315204 天前
STM32F103系列单片机定时器介绍(一)
stm32·单片机