跳到主要内容

Type-C 固件升级

这页讲的是通过 Type-C USB 口给 Neardi Pi 3 烧录固件。板子这边只需要进入 Loader 或 MaskRom 模式,电脑端可以用 Windows、Linux 或 macOS 工具来烧。

日常升级优先用 Loader 模式。MaskRom 主要是救砖用的,Loader 进不去时再考虑。

准备

  • Neardi Pi 3
  • Windows / Linux / macOS 电脑
  • 质量好一点的 Type-C 数据线
  • update.img 固件,固件可以从 Neardi Pi 3 固件下载 获取,也可以由 SDK 编译生成

固件一般分两种:

  • update.img:统一固件,包含分区表、loader、uboot、kernel、rootfs 等内容。正式发布的固件一般用这个格式,烧录后会更新整机分区数据。
  • 分区镜像:例如 boot.imgrootfs.imguboot.img。开发调试时常用,只刷某个分区,不影响其他分区。

安装烧录工具

  • Windows
  • Linux
  • macOS / MacBook

Windows 下使用 RKDevTool 图形工具。

  1. 下载 Release_DriverAssistant.zip,提取码:ldkj

  2. 解压后运行 DriverInstall.exe。建议先点驱动卸载,再点驱动安装

  3. 下载 RKDevTool_Release_v3.37,提取码:ldkj

  4. 解压后运行 RKDevTool.exe。Windows 7/8 建议右键选择管理员身份运行。

Linux 下不需要安装 Rockusb 驱动,直接使用命令行工具 upgrade_tool

下载:Linux_Upgrade_Tool,提取码:ldkj

解压后可以把 upgrade_tool 放到系统路径里,后面调用会方便一些:

unzip Linux_Upgrade_Tool_xxxx.zip
cd Linux_UpgradeTool_xxxx
sudo mv upgrade_tool /usr/local/bin
sudo chown root:root /usr/local/bin/upgrade_tool
sudo chmod a+x /usr/local/bin/upgrade_tool

如果后面需要用 adbfastboot,可以另外安装对应工具:

sudo mv adb /usr/local/bin
sudo chown root:root /usr/local/bin/adb
sudo chmod a+x /usr/local/bin/adb
sudo mv fastboot /usr/local/bin
sudo chown root:root /usr/local/bin/fastboot
sudo chmod a+x /usr/local/bin/fastboot

Linux 和 macOS 的命令行工具参数基本一致,可以参考 Rockchip 的《命令行开发工具使用文档》。

macOS 下也用 upgrade_tool,不需要额外安装 Windows 那套 Rockusb 驱动。

下载:Mac upgrade_tool,提取码:ldkj

解压后进入工具目录,先给工具加执行权限:

chmod +x ./upgrade_tool

查看帮助信息:

~/Desktop/work/neardi-work/tools/upgrade_tool_v2.13_for_mac % ./upgrade_tool -h
Using /Users/neardi/Desktop/work/neardi-work/tools/upgrade_tool_v2.13_for_mac/config.ini

---------------------Tool Usage ---------------------
Help: H
Version: V
Log: LG
------------------Upgrade Command ------------------
ChooseDevice: CD
ListDevice: LD
SwitchDevice: SD
UpgradeFirmware: UF <Firmware> [-noreset]
UpgradeLoader: UL <Loader> [-noreset] [FLASH|EMMC|SPINOR|SPINAND]
DownloadImage: DI <-p|-b|-k|-s|-r|-m|-u|-t|-re image>
DownloadBoot: DB <Loader>
EraseFlash: EF <Loader|firmware>
PartitionList: PL
WriteSN: SN <serial number>
ReadSN: RSN
ReadComLog: RCL <File>
CreateGPT: GPT <Input Parameter> <Output Gpt>
SwitchStorage: SSD
----------------Professional Command -----------------
TestDevice: TD
ResetDevice: RD [subcode]
ResetPipe: RP [pipe]
ReadCapability: RCB
ReadFlashID: RID
ReadFlashInfo: RFI
ReadChipInfo: RCI
ReadSecureMode: RSM
WriteSector: WS <BeginSec> <PageSizeK> <PageSpareB> <File>
ReadLBA: RL <BeginSec> <SectorLen> [File]
WriteLBA: WL <BeginSec> [SizeSec] <File>
EraseLBA: EL <BeginSec> <EraseCount>
EraseBlock: EB <CS> <BeginBlock> <BlokcLen> [--Force]
RunSystem: RUN <uboot_addr> <trust_addr> <boot_addr> <uboot> <trust> <boot>
-------------------------------------------------------

Linux 和 macOS 的命令行工具参数基本一致,可以参考 Rockchip 的《命令行开发工具使用文档》。

进入升级模式

烧录前,板子需要进入 Loader 或 MaskRom。普通升级用 Loader,MaskRom 留给 Loader 进不去的恢复场景。

Loader 模式 Update 按键

Update 按键:日常烧录优先进入 Loader 模式。

Boot MaskRom 按键

Boot/MaskRom 按键:Loader 进不去时再使用。

硬件方式进入 Loader

  1. 先断开电源。

  2. 用 Type-C 数据线连接电脑和开发板的 Type-C 烧录口。

  3. 按住板子上的 Update 按键不放。

  4. 接上电源。

  5. 等 2 秒左右松开 Update 按键。

软件方式进入 Loader

如果系统还能正常启动,也可以在串口终端或 adb shell 里执行:

reboot loader

确认 Loader 是否识别

  • Windows
  • Linux
  • macOS / MacBook

RKDevTool 底部看到发现一个 LOADER 设备,说明已经进入 Loader。

如果按了 Update 仍然没有识别,先换一根 Type-C 数据线,再看 Windows 设备管理器里有没有 RockusbDevice。没有的话,重新安装驱动。

Linux 上执行:

sudo upgrade_tool ld

正常会看到 Mode=Loader 或类似 Loader 字样。

macOS 上在工具目录执行:

~/Desktop/work/neardi-work/tools/upgrade_tool_v2.13_for_mac % ./upgrade_tool ld
Using /Users/neardi/Desktop/work/neardi-work/tools/upgrade_tool_v2.13_for_mac/config.ini
List of rockusb connected(1)
DevNo=1 Vid=0x2207,Pid=0x350e,LocationID=11 Mode=Loader SerialNo=c2c27cc7b99bf98d

看到 Mode=Loader 就可以继续烧录了。

MaskRom 模式

MaskRom 主要用于 Loader 模式无法进入时的恢复场景。按键位置和启动模式说明见 更新固件介绍

烧写固件

  • Windows
  • Linux
  • macOS / MacBook

烧写统一固件 update.img

步骤如下:

  1. 切换到升级固件页。
  2. 点击固件,选择要烧录的 update.img
  3. 工具会解析固件信息,确认无误后点击升级
  4. 如果升级失败,可以先点擦除 Flash,再重新升级。

如果要烧录的固件 loader 版本和板子原来的 loader 版本不一致,建议先执行擦除 Flash

烧写分区镜像

当工具提示发现一个 LOADER 设备后,进入下载镜像页,点击设备分区表读取分区信息。

单独烧写 boot.img 可以按下面做:

  1. 切换到下载镜像页。
  2. 确认工具已经发现 LOADER 设备,需要的话点击切换
  3. 点击设备分区表。这一步要执行;如果弹出提示窗口,点确认。
  4. 只勾选 boot 分区。
  5. 点击 boot 行的镜像路径单元格,选择 boot.img
  6. 点击升级开始烧录。

烧写统一固件 update.img

sudo upgrade_tool uf update.img

如果升级失败,可以先擦除再烧:

sudo upgrade_tool ef update.img
sudo upgrade_tool uf update.img

烧写分区镜像

常用分区烧录命令如下:

sudo upgrade_tool di -b /path/to/boot.img
sudo upgrade_tool di -r /path/to/recovery.img
sudo upgrade_tool di -m /path/to/misc.img
sudo upgrade_tool di -u /path/to/uboot.img
sudo upgrade_tool di -dtbo /path/to/dtbo.img
sudo upgrade_tool di -p parameter
sudo upgrade_tool ul bootloader.bin

如果板子系统还能正常启动,只是临时调试 boot.img,也可以在板端直接写 boot 分区:

sudo dd if=./boot.img of=/dev/block/by-name/boot
sync

这个方法不经过烧录工具,写错分区会直接覆盖数据,调试时再用。

如果 flash 状态异常,可以尝试低级格式化或擦除:

sudo upgrade_tool lf update.img
sudo upgrade_tool ef update.img

fastboot 烧写动态分区时,一般是下面这种流程:

adb reboot fastboot
sudo fastboot flash vendor vendor.img
sudo fastboot flash system system.img
sudo fastboot reboot

macOS 下命令和 Linux 基本一致,只是一般在工具目录里执行 ./upgrade_tool

烧写统一固件:

~/Desktop/work/neardi-work/tools/upgrade_tool_v2.13_for_mac % ./upgrade_tool uf /Volumes/neardi/ex-disk/rockchip/rk3576/linux/neardi_rk3576_linux6.1_r6/rockdev/update.img
Using /Users/neardi/Desktop/work/neardi-work/tools/upgrade_tool_v2.13_for_mac/config.ini
ftruncate: Invalid argument
Loading firmware...
Support Type:3576 FW Ver:1.0.00 FW Time:2026-07-02 18:20:15
Loader ver:1.64 Loader Time:2026-07-02 17:44:18
Start to upgrade firmware...
Test Device Start
Test Device Success
Check Chip Start
Check Chip Success
Get FlashInfo Start
Get FlashInfo Success
Prepare IDB Start
Prepare IDB Success
Download IDB Start
Download IDB Success
Download Firmware Start
Download Image... (100%)
Download Firmware Success
Upgrade firmware ok.

这里保留 ftruncate: Invalid argument 这一行。这个日志在 macOS 上可能会出现,只要后面看到 Upgrade firmware ok.,本次烧录就是成功的。

常见问题

Loader 识别不到

先换 Type-C 数据线和电脑 USB 口。烧录口必须接板子的 Type-C OTG/烧录口,普通供电线或者质量差的线很容易导致识别失败。

Windows 下还要检查驱动是否装好;Linux/macOS 下先用 upgrade_tool ld 看设备有没有出来。

什么时候用 MaskRom

正常烧录不要一上来就进 MaskRom。只有 Loader 进不去、bootloader 损坏或者擦写异常时,再按 更新固件介绍 里的方式进入 MaskRom。