Rockusb是Rockchip提供的一个供应商特定的USB类工具,用于Rockchip SoCs的固件下载。
对于Rockchip SoCs,有以下几点可进入到Rockusb模式。
如果板子内没有可引导的固件被发现,SoC会自动运行Rockusb驱动程序,我们把这个定义为Bootrom模式或者Maskrom模式。
如果固件在板子的某个存储媒介, 为了进入这种模式,我们可以采取措施防止cpu成功读取固件:
在Maskrom模式下,DRAM不可用,因此下载大小受内部存储大小的限制。
这种模式下允许使用以下命令:
'db' 命令: 系统初始化DRAM并运行到usbplug(带rockusb驱动程序)模式,该模式对下载大小没有大小限制。
'ul' 命令: 首先运行'db' 命令,然后下载idbloader到eMMC的0x40地址处;
'uf' 命令: 首先运行'db' 命令,然后将update.img中的image下载到eMMC中;
访问DRAM所需的所有其他命令都应在使用“db”命令之后才能使用。
usbplug是一个固件,用于使用rkdeveloptool db 命令进行USB下载,内置rockusb驱动程序,DRAM已经在此模式下初始化。
Rockchip早期image(带U-Boot 2014.10)使用miniloader作为默认USB固件升级路径, 使用以下选项进入此模式:
- 上电之时按下'recovery' 或者'volumn +'按键。
- 找不到下一阶段固件。
例如, erase U-Boot中可引导的数据:
mmc erase 0x4000 0x2000
- 在内核中执行"reboot loader" 命令。
注意: 在这个miniloader rockusb模式, rkdeveloptool的偏移量不是实际物理地址,
物理偏移量0~0x2000不能通过wl命令写入;
wl 命令的物理偏移量是偏移增加0x2000, 例如:
执行"rkdeveloptool wl 0x2000 uboot.img"命令会把uboot.img烧写到emmc的0x4000地址处。
进入这种模式:
- 上电之时按下'recovery' 或者'volumn +'按键。
- 在内核执行"reboot loader"命令。
- 从U-Boot shell执行以下命令:
rockusb 0 mmc 0
Rockchip供应商ID为0x2207, 对于产品ID,不同的SoCs是不同的。
Rockusb产品ID:
在有Rockusb设备连接到Linux PC机下,使用 lsusb 命令进行查看。
全部评论