前言 本文介绍当主机同时存在 eMMC 和 NOR flash 这两种存储器的时候,在烧录固件的时候,需根据以下的启动模式和情况来升级固件。
Loader 模式 如果是通过 软件执行 reboot loader 或者 通过硬件Recovery 按键进入的Loader 下载模式的话,可不需要看接下来的内容,直接跳到 《使用USB线缆升级固件》 操作。
Maskrom 模式 如果是通过 《MaskRom模式》 章节进入了Maskrom 模式(或设备异常,经过擦除设备进入Maskrom),而板子同时存在NOR flash和 eMMC 两种存储器,这个时候想要烧录固件,需要区分存储器
固件下载到NOR flash 系统在Maskrom模式下默认将固件下载到NOR flash中,不过由于NOR flash 比较小,不足以装载系统镜像,所以一般只会烧写比较小的文件,如MiniLoaderAll.bin。如果不小心将整个固件下载到NOR flash中,会出现下载固件失败的现象, 此时大家可以参考FAQ去处理
固件下载到eMMC 有两种方法可以将固件烧写进eMMC中,一种是RK原厂提供的烧写方法,需要烧写MiniLoaderAll.bin并切换存储器;另一种是Firefly为了方便大家烧写,提供的一种参考烧写方法,该方法操作上无需要切换存储器,也可以使用Linux端的烧写工具upgrade_tool进行烧写
方法一(Firefly) 该方法需要烧写两次统一固件。第一次在MaskRom下直接烧写Firefly提供的修复小固件RK356x_NorFlash2eMMC-Loader_xxx.img,该固件会自动擦除NOR flash并切换到eMMC的Loader模式,第二次直接烧写你需要升级的固件
Windows端操作方法 烧写RK356x_NorFlash2eMMC-Loader_xxx.img
烧写成功后等待20s左右,系统进入Loader模式
再次点击Firmware选择要更新的固件,如update.img,然后点击Upgrade升级
Linux端操作方法
方法二(原厂) 若要将固件下载到eMMC中,需要先下载MiniLoaderAll.bin, 然后选择将存储器切换到eMMC。具体操作步骤如下:
1.先准备好 MiniLoaderAll.bin,一般存放在以下路径(需提前编译固件):
如果还没有编译SDK,可以从以下链接下载 一个对应CPU型号的MiniLoaderAll.bin。
2.点击下载工具的Advanced Function,然后将准备好的MiniLoaderAll.bin下载到存储器中,见下图
点击List Storage读取存储器,此时存储列表选中的是SPINOR,为确保Nor flash为空,我们选择EraseAll擦除
X 表示设备不存在该存储器 0 表示存在该存储器,但未选中 √ 表示存在该存储器并处于被选中状态
4.在存储列表中选中Emmc后点击Switch Storage
可以看到存储列表中的Emmc状态就会从0切到√,表示选择将固件下载到eMMC
点击EraseAll擦除
点击下载工具的Upgrade Firmware,然后选择我们想要下载进eMMC中的固件进行升级
FAQ
Maskrom模式烧写失败 该现象是因为固件直接烧写进NOR flash中引起的,出现该现象时大家可以根据当前的情况进行处理:
情况一:下载失败时没有断电或重启 可以直接点击EraseFlash擦除NOR flash
之后按照章节固件下载到eMMC的步骤进行固件升级即可
情况二:有进行过重启或断电的操作 通过Recovery按键进入Loader模式, 然后点击AndroidTool的Go maskrom进入Maskrom模式
之后按照章节固件下载到eMMC的步骤进行固件升级即可。若不清楚如何通过Recovery按键进入Loader模式请参考使用USB线缆升级固件章节
如果大家有接串口,可以查看一下log信息,其中Bootdev(atags): mtd 2说明系统启动到NOR flash存储器的uboot中
我们可以直接在这个模式擦除NOR flash
也可以通过rbrom回到Maskrom模式
进入到Maskrom模式后,固件升级都需要按照固件下载到eMMC的步骤进行操作
Go Maskrom无效 点击AndroidTool的Go Maskrom无法进入Maskrom模式,rbrom命令同样也不行,原因是部分旧固件不支持从NOR flash的bootloader回到Maskrom模式,此时可通过Recovery按键重新进入Loader模式,点击AndroidTool的EraseFlash进行擦除
无论是否提示擦除IDB失败都重启一下板子,重启后可进入Maskrom模式
原作者:Firefly Wiki
|