电子工程师技术服务社区
- 社区
- 论坛
- 开发板专区
- 【Firefly-RK3399 试用体验】05-MaskRom模式
【Firefly-RK3399 试用体验】05-MaskRom模式
-
-
cztqwan
- LV5工程师
-
| 2017-06-10 00:10:16
- 浏览量 4381
- 回复:2
本帖最后由 cztqwan 于 2017-6-10 00:11 编辑
【Firefly-RK3399试用体验】05-MaskRom模式一、启动模式简介 RK3299
有三种启动模式:1
、Normal
模式;2
、Loader
模式;3
、MaskRom
模式。 Normal
模式是正常的启动过程,各个组件依次加载,直到正常进入系统。 Loader
模式会让bootloader
进入升级状态,等待主机命令,用于固件升级等。Firefly-RK3399
要进入Loader
模式,需要在bootloader
启动时检测到RECOVERY
(恢复)键被按下,并且USB
处于和PC
连接的状态。 MaskRom
模式是设备变砖的最后一条防线,用于bootloader
损坏时进行系统修复。一般情况下是不用进入MaskRom
模式的,只有在设备进入不了Loader
模式(bootloader
校验失败,读取不了IDR
块,或bootloader
损坏)、SD
卡启动也失效的情况下,BootRom
代码才会进入MaskRom模式。此时BootRom
代码等待主机通过USB
接口传送bootloader
代码,传送完成后进行加载并运行,并进入Loader
模式。二、启动流程分析 RK3399
支持灵活的启动方式,可以从NandFlash
、SPI Flash
、eMMC Flash
和SD
卡启动。
上图是RK3399
的启动流程图。上电后,A53
核从0xffff0000
地址得到第一条执行指令,之后,BootRom
代码在SRAM
上运行,依次校验存储设备里的bootloader
,如果校验通过,则加载并运行bootloader
引导代码,bootloader
引导代码负责初始化DDR
内存,加载bootloader
完整代码到DDR
内存中并运行,最后,bootloader
加载存储设备上的Linux
内核,并将执行权交给Linux
内核。如果所有的存储设备的bootloader
都无法校验通过,则会自动进入MaskRom
模式。三、“准备IDB失败”问题 在从Flint OS
固件刷回Ubuntu
固件的过程中,出现了“准备IDB
失败”的问题,无论是哪一个版本的固件都无法成功烧写,应该是检查ID Block
的过程出现了问题,这种情况下是比较麻烦的,既无法进入U-Boot
,又没有自动进入MaskRom
模式,所以需要强制进入MaskRom
模式来进行修复。要强行进入MaskRom
模式,可以人为的把Flash
的数据脚与地线短接,让系统会认为Flash
数据出错,从而清除Flash
数据,Flash
数据被清除后,无法通过ID Block
检查,从而进入MaskRom
模式。四、进入MaskRom模式 出现了“准备IDB
失败”也就宣告了无法通过Loader
模式进行固件更新了,只能通过强制进入MaskRom
模式重新下载U-boot
进行固件更新。 Firefly-rk3399
在硬件上预留了焊点(TP31,TP32)
,可以通过以下方式强制进入MaskRom
模式: 1
、设备断开所有电源,拔出SD
卡,并用USBType-C
线连接好设备和主机; 3、
在开发板的背面找到预留的焊点(TP31, TP32)
,如下图所示; 4
、用金属针接通的预留的焊点(TP31,TP32)
,并保持; 5
、给设备上电; 6
、稍候片刻,之后松开金属针,设备就会进入MaskRom
模式。
从下图可以看到,进入MaskRom
模式后,进行固件升级时,首先会下载Boot
,当Boot
成功更新后,MaskRom
模式会自动进入Loader
模式,对固件进行进一步的更新,这时可以发现IDB
的准备过程不再提示出现错误,固件可以成功烧录。
本帖最后由 cztqwan 于 2017-6-10 00:11 编辑
【Firefly-RK3399试用体验】05-MaskRom模式一、启动模式简介 RK3299
有三种启动模式:1
、Normal
模式;2
、Loader
模式;3
、MaskRom
模式。 Normal
模式是正常的启动过程,各个组件依次加载,直到正常进入系统。 Loader
模式会让bootloader
进入升级状态,等待主机命令,用于固件升级等。Firefly-RK3399
要进入Loader
模式,需要在bootloader
启动时检测到RECOVERY
(恢复)键被按下,并且USB
处于和PC
连接的状态。 MaskRom
模式是设备变砖的最后一条防线,用于bootloader
损坏时进行系统修复。一般情况下是不用进入MaskRom
模式的,只有在设备进入不了Loader
模式(bootloader
校验失败,读取不了IDR
块,或bootloader
损坏)、SD
卡启动也失效的情况下,BootRom
代码才会进入MaskRom模式。此时BootRom
代码等待主机通过USB
接口传送bootloader
代码,传送完成后进行加载并运行,并进入Loader
模式。二、启动流程分析 RK3399
支持灵活的启动方式,可以从NandFlash
、SPI Flash
、eMMC Flash
和SD
卡启动。
上图是RK3399
的启动流程图。上电后,A53
核从0xffff0000
地址得到第一条执行指令,之后,BootRom
代码在SRAM
上运行,依次校验存储设备里的bootloader
,如果校验通过,则加载并运行bootloader
引导代码,bootloader
引导代码负责初始化DDR
内存,加载bootloader
完整代码到DDR
内存中并运行,最后,bootloader
加载存储设备上的Linux
内核,并将执行权交给Linux
内核。如果所有的存储设备的bootloader
都无法校验通过,则会自动进入MaskRom
模式。三、“准备IDB失败”问题 在从Flint OS
固件刷回Ubuntu
固件的过程中,出现了“准备IDB
失败”的问题,无论是哪一个版本的固件都无法成功烧写,应该是检查ID Block
的过程出现了问题,这种情况下是比较麻烦的,既无法进入U-Boot
,又没有自动进入MaskRom
模式,所以需要强制进入MaskRom
模式来进行修复。要强行进入MaskRom
模式,可以人为的把Flash
的数据脚与地线短接,让系统会认为Flash
数据出错,从而清除Flash
数据,Flash
数据被清除后,无法通过ID Block
检查,从而进入MaskRom
模式。四、进入MaskRom模式 出现了“准备IDB
失败”也就宣告了无法通过Loader
模式进行固件更新了,只能通过强制进入MaskRom
模式重新下载U-boot
进行固件更新。 Firefly-rk3399
在硬件上预留了焊点(TP31,TP32)
,可以通过以下方式强制进入MaskRom
模式: 1
、设备断开所有电源,拔出SD
卡,并用USBType-C
线连接好设备和主机; 3、
在开发板的背面找到预留的焊点(TP31, TP32)
,如下图所示; 4
、用金属针接通的预留的焊点(TP31,TP32)
,并保持; 5
、给设备上电; 6
、稍候片刻,之后松开金属针,设备就会进入MaskRom
模式。
从下图可以看到,进入MaskRom
模式后,进行固件升级时,首先会下载Boot
,当Boot
成功更新后,MaskRom
模式会自动进入Loader
模式,对固件进行进一步的更新,这时可以发现IDB
的准备过程不再提示出现错误,固件可以成功烧录。