rk系列芯片进入maskbom模式

83人浏览 / 0人评论

1 介绍

Rockusb是Rockchip提供的一个供应商特定的USB类工具,用于Rockchip SoCs的固件下载。


2 进入到Rockusb模式

对于Rockchip SoCs,有以下几点可进入到Rockusb模式。

  • maskrom 模式, 片上SoC无固件, 目标板子会运行maskrom rockusb驱动程序。
  • usbplug 模式。
  • miniLoader rockusb 模式, 目标板子运行miniloader rockusb驱动程序。
  • uboot rockusb模式。

2.1 Maskrom 模式

如果板子内没有可引导的固件被发现,SoC会自动运行Rockusb驱动程序,我们把这个定义为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并运行到usbplug(带rockusb驱动程序)模式,该模式对下载大小没有大小限制。

'ul' 命令: 首先运行'db' 命令,然后下载idbloader到eMMC的0x40地址处;

'uf' 命令: 首先运行'db' 命令,然后将update.img中的image下载到eMMC中;

访问DRAM所需的所有其他命令都应在使用“db”命令之后才能使用。

2.2 Usbplug 模式

usbplug是一个固件,用于使用rkdeveloptool db 命令进行USB下载,内置rockusb驱动程序,DRAM已经在此模式下初始化。

2.3 Miniloader Rockusb 模式

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地址处。

2.4 U-Boot Rockusb 模式

进入这种模式:

- 上电之时按下'recovery' 或者'volumn +'按键。

- 在内核执行"reboot loader"命令。

- 从U-Boot shell执行以下命令:

rockusb 0 mmc 0

3 rockusb的USB VID/PID

Rockchip供应商ID为0x2207, 对于产品ID,不同的SoCs是不同的。

Rockusb产品ID:

  • RK3288: 0x320a
  • RK3328: 0x320c
  • RK3399: 0x330c

在有Rockusb设备连接到Linux PC机下,使用 lsusb 命令进行查看。

全部评论