[Rockchip RK356x] 烧写异常问题汇总

Posted Neutionwei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Rockchip RK356x] 烧写异常问题汇总相关的知识,希望对你有一定的参考价值。

rk356x maskrom烧写过程或烧写后出现异常的主要原因是 同时存在Nor flash和emmc存储介质的情况下,烧写步骤有遗漏或操作不当引起的,严重情况会导致系统起不来

下面汇总一些异常的情况和处理方法以供参考



一、烧写固件失败提示Download Firmware Fail



原因:没有切换存储为emmc,直接烧录固件,此时固件是烧写到nor flash中,nor flash的容量无法装载一个大小为1GB+的完整固件,所以会出现失败。出现烧写失败时建议点击EraseFlash进行擦除,防止重启后进入nor flash中



解决方法:参考维基的操作步骤https://wiki.t-firefly.com/Core- ... an-xia-zai-dao-emmc进行烧写即可

二、读取存储列表(List Storage)失败



原因:没有下载 MiniLoaderAll.bin 就直接点 读取存储列表(List Storage),缺少步骤的一个典型

解决方法:
1. 下载好对应主控的MiniLoaderAll.bin,下载链接https://www.t-firefly.com/share/ ... 2084e383074ada.html 或 本帖附件

2. 按照步骤下载MiniLoaderAll.bin到工具的Boot一栏再点读取存储列表(List Storage)



三、点击下载(Download)异常



 



原因:
1. 获取的MiniLoaderAll.bin有问题
2. 重复下载了MiniLoaderAll.bin

解决方法:
重新下一个MiniLoaderAll.bin,如https://www.t-firefly.com/share/ ... 2084e383074ada.html 或 本帖附件;Boot一栏下载成功后无需重复点击下载Download

四、烧写成功后无法启动
 

Bootdev(atags): mtd 2
GUID Partition Table Header signature is wrong: 0xA9425BF5A94153F3 != 0x5452415020494645
*** ERROR: Can't write GPT header ***
Backup GPT repair fail!
PartType: EFI
boot mode: recovery (misc)
FIT: No fdt blob
boot mode: None
android 11.0, Build 2021.4, v2
Found DTB in boot part
Failed to read resource hdr
Failed to create resource list
Failed to load DTB
Failed to get kernel dtb, ret=-19
io-domain: OK
Model: Rockchip RK3568 Evaluation Board
rockchip_set_ethaddr: vendor_storage_write failed -5
rockchip_set_serialno: could not find efuse/otp device
no recovery key node
CLK: (sync kernel. arm: enter 816000 KHz, init 816000 KHz, kernel 0N/A)
  apll 816000 KHz
  dpll 780000 KHz
  gpll 1188000 KHz
  cpll 1000000 KHz
  npll 24000 KHz
  vpll 24000 KHz
  hpll 24000 KHz
  ppll 100000 KHz
  armclk 816000 KHz
  aclk_bus 150000 KHz
  pclk_bus 50000 KHz
  aclk_top_high 300000 KHz
  aclk_top_low 200000 KHz
  hclk_top 150000 KHz
  pclk_top 50000 KHz
  aclk_perimid 300000 KHz
  hclk_perimid 150000 KHz
  pclk_pmu 50000 KHz
Net:   No ethernet found.
Hit key to stop autoboot('CTRL+C'):  0
## Booting FIT Image FIT: No fit blob
FIT: No FIT image
ANDROID: reboot reason: "(none)"
optee api revision: 2.0
TEEC: blk_dread fail
TEEC: OpteeClientRkFsInit fail!
Can't read vboot flag
Android boot failed, error -1.
no mmc device at slot 1
no mmc device at slot 0
starting USB...
Bus dwc3@fcc00000: usb maximum-speed not found
Register 2000140 NbrPorts 2
Starting the controller
USB XHCI 1.10
Bus dwc3@fd000000: usb maximum-speed not found
Register 2000140 NbrPorts 2
Starting the controller
USB XHCI 1.10
scanning bus dwc3@fcc00000 for devices... 1 USB Device(s) found
scanning bus dwc3@fd000000 for devices... cannot reset port 1!?
1 USB Device(s) found
       scanning usb for storage devices... 0 Storage Device(s) found

Device 0: unknown device
No ethernet found.
missing environment variable: pxeuuid
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/00000000
No ethernet found.
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/0000000
No ethernet found.
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/000000
No ethernet found.
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/00000
No ethernet found.
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/0000
No ethernet found.
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/000
No ethernet found.
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/00
No ethernet found.
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/0
No ethernet found.
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/default-arm-rockchip
No ethernet found.
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/default-arm
No ethernet found.
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/default
No ethernet found.
Config file not found
No ethernet found.
No ethernet found.
=>



原因: 系统从nor flash中启动了,见log信息Bootdev(atags): mtd 2,这种情况是因为nor flash不为空,nor flash有一部分不完整的固件,通常是直接把固件烧到nor flash引起的

解决方法:
1.此uboot命令行中直接把nor flash擦除

=> mtd erase nor0
Erasing 0x00000000 ... 0x01ffffff (8192 eraseblock(s))
=> reboot




2.进入maskrom通过AndroidTool工具把nor flash给擦除掉,具体参考维基https://wiki.t-firefly.com/Core- ... an-xia-zai-dao-emmc



该情况进入maskrom过程中会遇到两种情况,第一种是emmc是空的(被擦除过了),第二种是emmc烧写过固件。

emmc为空的情况下,参考维基章节<<Maskrom模式>>短接nor flash就可以进入maskrom了;

AIO-3568J: MaskRom模式 — Firefly Wiki
ROC-RK3568-PC: MaskRom模式 — Firefly Wiki
ROC-RK3566-PC: MaskRom模式 — Firefly Wiki

emmc烧写过固件,此时短接nor flash后,系统从emmc启动到正常模式。每次重启进入正常模式都需要短接nor flash,比较麻烦,所以还是要把nor flash给擦除掉,建议还是使用AndroidTool工具擦除,所以我们要重新回到maskrom模式。不改硬件的情况下有以下方法:


① 系统从spi flash启动过程长按ctrl+c组合键进入spi flash的uboot命令行模式,输入rbrom回车进入maskrom

②同时短接nor flash和emmc 进入maskrom

③(部分旧固件)短接nor flash时,系统从emmc启动过程长按ctrl+c组合键进入emmc正常的uboot命令行模式,输入rbrom回车进入maskrom
 

U-Boot 2017.09 (Jul 07 2021 - 10:03:57 +0800)
...
dwmmc@fe2b0000: 1, dwmmc@fe2c0000: 2, sdhci@fe310000: 0
Bootdev(atags): mmc 0
MMC0: HS200, 200Mhz
...
  pclk_pmu 100000 KHz
Net:   eth1: ethernet@fe010000, eth0: ethernet@fe2a0000
Hit key to stop autoboot('CTRL+C'):  0
=> <INTERRUPT>
=> <INTERRUPT>
=> rbrom


Bootdev(atags): mmc 0说明是从emmc中启动的

五、烧写成功后卡在Starting kernel

Starting kernel ...

=>

原因: 可能是使用的串口模块或串口软件配置不当引起的,系统可能已经起来了,此时可以接上屏幕看看有没有显示或ADB能否正常使用

解决方法:可以尝试使用官方的串口模块

以上是关于[Rockchip RK356x] 烧写异常问题汇总的主要内容,如果未能解决你的问题,请参考以下文章

Rockchip | Rockchip原始固件与RK固件格式

RK3399快速上手 | 03-RK3399启动流程分析

RK3399快速上手 | 03-RK3399启动流程分析

[RK356x] [Firefly-Linux] 一节课间时间带你了解Ubuntu固件各个分区

[RK356x] [Firefly-Linux] 一节课间时间教你单独更新Kernel到Ubuntu系统的boot分区

[ROC-RK3568-PC] 手把手教你把出厂的Android系统烧写为Ubuntu系统