干嵌入式或者做过瑞芯微(Rockchip)平台开发的朋友,对 RKDevTool 和 Upgrade_Tool 这两款烧录工具应该都不陌生。前者是 Windows 下的图形化工具,后者是 Linux 下的命令行工具,日常给 eMMC 烧录镜像、量产刷机、救砖都靠它们。但我发现很多人对这两个工具的理解停留在“点一下烧录”的层面,遇到换平台、批量生产、分区定制、变砖恢复这些场景就抓瞎。
今天这篇我把双平台烧录的底层逻辑和实操细节完整梳理一遍,重点讲我踩过不少坑之后沉淀下来的 5 个高阶技巧,覆盖 Windows 和 Linux 双环境,从驱动安装、模式切换、分区解析到批量脚本、救砖恢复全部走一遍。不管你是刚接触 RK 平台的初学者,还是已经量产过几款设备的工程师,这篇文章都能让你少走弯路。
1. 双平台工具链解析:先搞懂 RKDevTool 和 Upgrade_Tool 的分工
很多人以为 RKDevTool 和 Upgrade_Tool 只是同一个功能在 Windows 和 Linux 下的两个版本,其实它们的设计思路并不完全一样。理解它们各自的特点,是使用好 5 个高阶技巧的前提。
1.1 RKDevTool 更依赖图形界面,但底层同样走协议通道
RKDevTool 是瑞芯微官方提供的 Windows 图形化烧录工具,主界面有“下载镜像”“升级固件”“高级功能”等几个 Tab,操作逻辑是:把设备接入 USB,切换到 Loader 模式,软件识别到设备后,选择 update.img 整包或按分区填写地址,点击执行就开始烧录。
它的核心机制是把用户界面上的点击动作翻译成一组组对设备存储器的写指令,通过 USB 传输给 RockUSB 设备。真正干活的是驱动层和 USB 协议层,界面只是包装。所以 RKDevTool 的配置文件 config.ini 里其实就是一串地址和文件路径的映射,理解了配置格式,你就知道图形界面背后发生了什么。
RKDevTool 的优势是直观,新手容易上手,单台设备调试时效率很高。但它也有让人头疼的地方:对驱动依赖非常重,Windows 10/11 的驱动签名策略经常导致设备识别失败;而且界面化操作不适合批量产线,一台接一台地人工点击太痛苦。
1.2 Upgrade_Tool 是命令行工具,专为脚本化和自动化而生
Upgrade_Tool 是瑞芯微官方在 Linux 下提供的命令行烧录工具,名字里没有 Dev,因为它的定位本来就不是开发调试,而是面向产线、服务器、CI 环境的自动化场景。它的工作目录下通常有 upgrade_tool 可执行文件和一些配置文件,用sudo ./upgrade_tool加参数来执行操作。
Upgrade_Tool支持的操作很丰富:ld列出设备、db下载 boot、dl下载镜像到指定分区、uf升级固件、rd读取设备信息、reset重启设备等。每种操作都有明确的返回码和打印信息,非常适合写入自动化脚本,比如检测设备插入、开始烧录、校验结果、断电重启,全流程无需人干预。
它的缺点也明显:没有任何图形界面,第一次接触的人会觉得很“劝退”。而且参数很多,如果不清楚每条命令的含义,很容易把分区表搞乱,甚至把设备刷成砖。所以使用 Upgrade_Tool 前,至少要对 eMMC 的分区布局和瑞芯微的烧录流程有基本概念。
1.3 实际项目中的选型与互补思路
我在实际项目里的习惯是:开发阶段用 Windows + RKDevTool,因为调试板子、验证驱动、临时改分区都比较直观;进入量产或要做回归测试时,切到 Linux + Upgrade_Tool,写个脚本一次性刷几十台板子。
这里有三个实用的选型建议,都是经验之谈:
- 如果电脑只有 Windows,但在做批量烧录,别硬点鼠标。可以在 Windows 上装虚拟机跑 Ubuntu,把 USB 直通给虚拟机,用 Upgrade_Tool 脚本化。实测 USB 直通的稳定性足够,只要不跑高带宽传输基本没问题。
- 如果板子已经变砖,进不了 Loader 模式但还能被识别为 MaskRom 设备,建议优先用 Linux + Upgrade_Tool,因为 MaskRom 模式下 Windows 驱动很容易出兼容性问题,Linux 下只要 udev 规则配置好,基本不会出现“设备识别到一半消失”的情况。
- 如果团队里有测试工程师,不需要他理解底层原理,那就统一封装一个烧录脚本,只让他执行一条命令。平时我用
upgrade_tool uf update.img和upgrade_tool di -b boot.img这两个命令覆盖 90% 的日常需求,其余命令都是围绕它们做校验和异常处理。
2. 烧录前必须搞清的基础:驱动、模式和镜像格式
无论用哪个工具,烧录 eMMC 之前都需要先解决三个基础问题:设备能不能被电脑识别、设备处于什么模式、要烧录的镜像是什么格式。这三个问题没搞清楚,后面所有技巧都是空中楼阁。
2.1 Windows 下驱动是最大的坑,Linux 下也要配 udev 规则
Windows 下使用 RKDevTool,第一步是安装官方驱动助手(DriverAssitant),安装后设备插入并进入 Loader 模式,设备管理器里会出现一个 Rockchip USB 设备。如果设备管理器里看到的是未知设备或感叹号,大概率是驱动签名问题或驱动版本不对。
Win10/Win11 系统下,如果驱动装不上,最直接的办法是进入“高级启动”禁用驱动程序强制签名,然后再装一次。这个操作我已经做过 N 次,是解决“烧录工具识别不到设备”最高频的手段。另外要注意:驱动版本要和 RKDevTool 版本匹配,我遇到过一次 RKDevTool 版本太老、驱动助手版本太新的情况,结果设备始终无法进入烧录状态,最后换了配套版本才解决。
Linux 下虽然没有驱动签名问题,但权限问题也很烦。默认情况下,普通用户访问 USB 设备需要 sudo,而每次 sudo 在自动化脚本里非常碍事。我的做法是在/etc/udev/rules.d/下新建一个规则文件,内容类似:
SUBSYSTEM=="usb", ATTR{idVendor}=="2207", MODE="0666" SUBSYSTEM=="usb", ATTR{idVendor}=="2207", ATTR{idProduct}=="310b", MODE="0666"这里的2207是瑞芯微的 USB Vendor ID,310b等是不同模式下的 Product ID,具体值可以用lsusb查看。配好后重启 udev 服务,普通用户就能直接操作设备了,脚本里再也不用到处写 sudo。
2.2 Loader 模式、MaskRom 模式和 ADB 模式,别搞混
烧录时设备所处的模式决定了工具能做什么操作。瑞芯微平台的设备模式主要有三种:
- Loader 模式:设备在启动早期进入 bootrom 里内建的升级程序,USB 枚举为 RockUSB 设备,可以用 RKDevTool 或 Upgrade_Tool 进行正常烧录。进入方式通常是按住板子上的 Recovery 键再上电,或执行
adb reboot loader。 - MaskRom 模式:当设备连 Loader 都进不去的极端情况,比如 bootloader 被擦掉,会进入 bootrom 中最底层的 MaskRom 升级模式。在这个模式下可以用工具重新烧写 Loader,然后恢复 Loader 模式。进入方式一般需要短接 eMMC 的 CLK 或 CMD 引脚,或者部分板卡有专门的 MaskRom 按键。
- ADB 模式:系统正常启动后,设备通过 ADB 连接电脑。此时 RKDevTool 只能做部分高级操作(如修改参数、抓日