Firefly开源社区

标题: 90% 开发者都无法解决的 eMMC 错误,你遇到过吗 [打印本页]

作者: Donlon    时间: 2022-3-5 00:07
标题: 90% 开发者都无法解决的 eMMC 错误,你遇到过吗
本帖最后由 Donlon 于 2022-3-10 20:34 编辑

之前自己给开发板编译了一个最新版本的uboot,并把uboot在Linux下通过dd命令刷到eMMC里了,但重启后不能正常开机。在串口上可以看到输出了以下的内容,是卡在了uboot SPL的界面,提示mmc初始化错误。(按找最下面一行提示说的的复位开发板也还是会出现同样的错误)

  1. U-Boot TPL 2021.10-gd80bb749fa (Nov 10 2021 - 00:35:53)
  2. Channel 0: DDR3, 800MHz
  3. BW=32 Col=10 Bk=8 CS0 Row=15 CS=1 Die BW=16 Size=1024MB
  4. Channel 1: DDR3, 800MHz
  5. BW=32 Col=10 Bk=8 CS0 Row=15 CS=1 Die BW=16 Size=1024MB
  6. 256B stride
  7. Trying to boot from BOOTROM
  8. Returning to boot ROM...

  9. U-Boot SPL 2021.10-gd80bb749fa (Nov 10 2021 - 00:35:53 +0800)
  10. Trying to boot from MMC1
  11. Card did not respond to voltage select! : -110
  12. spl: mmc init failed with error: -95
  13. SPL: failed to boot from all boot devices
  14. ### ERROR ### Please RESET the board ###
复制代码

在出现这个错误时,初步怀疑是新版uboot的问题,因为之前用Firefly提供的uboot都可以正常启动,而更新了之后却不行。因此,打算先进入Maskrom模式,刷回原来的uboot再继续解决问题。
接着短接eMMC的时钟并启动,将开发板连接电脑,可以在Android Tool里识别到一个Maskrom设备。随后在升级固件里选择从 https://www.t-firefly.com/doc/download/3.html 下载的 FIREFLY-RK3399-DEBIAN9-DESKTOP-GPT-20200110-1051.img,并点击升级,此时串口显示了以下信息

  1. DDR Version 1.22 20190506
  2. In
  3. Channel 0: DDR3, 800MHz
  4. Bus Width=32 Col=10 Bank=8 Row=15 CS=1 Die Bus-Width=16 Size=1024MB
  5. Channel 1: DDR3, 800MHz
  6. Bus Width=32 Col=10 Bank=8 Row=15 CS=1 Die Bus-Width=16 Size=1024MB
  7. 256B stride
  8. ch 0 ddrconfig = 0x101, ddrsize = 0x20
  9. ch 1 ddrconfig = 0x101, ddrsize = 0x20
  10. pmugrf_os_reg[2] = 0x32817281, stride = 0x9
  11. OUT
  12. Boot1: 2019-03-14, version: 1.19
  13. CPUId = 0x0
  14. mmc: ERROR: SDHCI:Transfer data timeout
  15. mmc: ERROR: SDHCI ERR:cmd:0x153a,stat:0x0
  16. mmc: ERROR: Tuning procedure failed, falling back to fixed sampling clock
  17. mmc: ERROR: tuning execution failed
  18. emmc reinit
  19. mmc: ERROR: SDHCI:Transfer data timeout
  20. mmc: ERROR: SDHCI ERR:cmd:0x153a,stat:0x0
  21. mmc: ERROR: Tuning procedure failed, falling back to fixed sampling clock
  22. mmc: ERROR: tuning execution failed
  23. emmc reinit
  24. mmc: ERROR: SDHCI:Transfer data timeout
  25. mmc: ERROR: SDHCI ERR:cmd:0x153a,stat:0x0
  26. mmc: ERROR: Tuning procedure failed, falling back to fixed sampling clock
  27. mmc: ERROR: tuning execution failed
复制代码

可以看到也有emmc的错误,同时在Android Tool里,则提示了以下错误:

  1. 下载Boot开始
  2. 下载Boot成功
  3. 等待Maskrom开始
  4. 等待Maskrom成功
  5. 测试设备开始
复制代码

此时也无法在Maskrom模式下刷固件。

另外,如果在SD卡槽插入一个刷了Linux固件的SD卡的话,在短接了eMMC的时钟的情况下,SD卡里的系统是可以正常启动的,但是启动后无法识别eMMC(/dev目录下只有一个mmcblk0,是SD卡对应的设备),在dmesg里可以找到一个mmc1: error -110 whilst initialising MMC card的错误

虽然以上的错误都指向eMMC,但是eMMC应该是好的,因为最前面的log是uboot打印的,而这个uboot是刷到eMMC里的,所以eMMC应该可以正常读取,但是就是不能正常启动,而且Maskrom模式下也不能正常刷固件,所以想请问一下是上面的操作有问题还是有其他的原因?


作者: liaoya    时间: 2023-10-17 08:40
请问你后来找到解决方法了吗?




欢迎光临 Firefly开源社区 (https://dev.t-firefly.com/) Powered by Discuz! X3.1