1 介绍
Rocku***是Rockchip提供的一个供应商特定的USB类工具,用于Rockchip SoCs的固件下载。
2 进入到Rocku***模式
对于Rockchip SoCs,有以下几点可进入到Rocku***模式。
maskrom 模式, 片上SoC无固件, 目标板子会运行maskrom rocku***驱动程序。
u***plug 模式。
miniLoader rocku*** 模式, 目标板子运行miniloader rocku***驱动程序。
uboot rocku***模式。
2.1 Maskrom 模式
如果板子内没有可引导的固件被发现,SoC会自动运行Rocku***驱动程序,我们把这个定义为Bootrom模式或者Maskrom模式。
如果固件在板子的某个存储媒介, 为了进入这种模式,我们可以采取措施防止cpu成功读取固件:
对于SD-card, 可以不插入SD-card;
对于eMMC, 短接eMMC时钟引脚到GND;
对于NAND, 短接数据引脚或者时钟引脚到GND;
对于SPI, 短接spi信号引脚到GND;
在U-Boot and Kernel, WIP执行"reboot bootrom"命令;
在eMMC或其他媒体设备中,用不可引导数据擦除可引导区域
在Maskrom模式下,DRAM不可用,因此下载大小受内部存储大小的限制。
这种模式下允许使用以下命令:
'db' 命令: 系统初始化DRAM并运行到u***plug(带rocku***驱动程序)模式,该模式对下载大小没有大小限制。
'ul' 命令: 首先运行'db' 命令,然后下载idbloader到eMMC的0x40地址处;
'uf' 命令: 首先运行'db' 命令,然后将update.img中的image下载到eMMC中;
访问DRAM所需的所有其他命令都应在使用“db”命令之后才能使用。
2.2 U***plug 模式
u***plug是一个固件,用于使用rkdeveloptool db 命令进行USB下载,内置rocku***驱动程序,DRAM已经在此模式下初始化。
2.3 Miniloader Rocku*** 模式
Rockchip早期image(带U-Boot 2014.10)使用miniloader作为默认USB固件升级路径, 使用以下选项进入此模式:
- 上电之时按下'recovery' 或者'volumn +'按键。
- 找不到下一阶段固件。
例如, erase U-Boot中可引导的数据:
mmc erase 0x4000 0x2000
- 在内核中执行"reboot loader" 命令。
注意: 在这个miniloader rocku***模式, rkdeveloptool的偏移量不是实际物理地址,
物理偏移量0~0x2000不能通过wl命令写入;
wl 命令的物理偏移量是偏移增加0x2000, 例如:
执行"rkdeveloptool wl 0x2000 uboot.img"命令会把uboot.img烧写到emmc的0x4000地址处。
2.4 U-Boot Rocku*** 模式
进入这种模式:
- 上电之时按下'recovery' 或者'volumn +'按键。
- 在内核执行"reboot loader"命令。
- 从U-Boot shell执行以下命令:
rocku*** 0 mmc 0
3 rocku***的USB VID/PID
Rockchip供应商ID为0x2207, 对于产品ID,不同的SoCs是不同的。
Rocku***产品ID:
RK3288: 0x320a
RK3328: 0x320c
RK3399: 0x330c
在有Rocku***设备连接到Linux PC机下,使用 lsu*** 命令进行查看。
4 固件下载
rkdeveloptool 和 upgrade_tool 是对Rockchip SoCs进行固件升级的工具,该SoCs通过USB使用Rocku***协议。