|
【Linux】
90% 开发者都无法解决的 eMMC 错误,你遇到过吗
发表于 2022-3-5 00:07:16
浏览:8946
|
回复:1
打印
只看该作者
[复制链接]
楼主
本帖最后由 Donlon 于 2022-3-10 20:34 编辑
之前自己给开发板编译了一个最新版本的uboot,并把uboot在Linux下通过dd命令刷到eMMC里了,但重启后不能正常开机。在串口上可以看到输出了以下的内容,是卡在了uboot SPL的界面,提示mmc初始化错误。(按找最下面一行提示说的的复位开发板也还是会出现同样的错误)
- U-Boot TPL 2021.10-gd80bb749fa (Nov 10 2021 - 00:35:53)
- Channel 0: DDR3, 800MHz
- BW=32 Col=10 Bk=8 CS0 Row=15 CS=1 Die BW=16 Size=1024MB
- Channel 1: DDR3, 800MHz
- BW=32 Col=10 Bk=8 CS0 Row=15 CS=1 Die BW=16 Size=1024MB
- 256B stride
- Trying to boot from BOOTROM
- Returning to boot ROM...
- U-Boot SPL 2021.10-gd80bb749fa (Nov 10 2021 - 00:35:53 +0800)
- Trying to boot from MMC1
- Card did not respond to voltage select! : -110
- spl: mmc init failed with error: -95
- SPL: failed to boot from all boot devices
- ### 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,并点击升级,此时串口显示了以下信息
- DDR Version 1.22 20190506
- In
- Channel 0: DDR3, 800MHz
- Bus Width=32 Col=10 Bank=8 Row=15 CS=1 Die Bus-Width=16 Size=1024MB
- Channel 1: DDR3, 800MHz
- Bus Width=32 Col=10 Bank=8 Row=15 CS=1 Die Bus-Width=16 Size=1024MB
- 256B stride
- ch 0 ddrconfig = 0x101, ddrsize = 0x20
- ch 1 ddrconfig = 0x101, ddrsize = 0x20
- pmugrf_os_reg[2] = 0x32817281, stride = 0x9
- OUT
- Boot1: 2019-03-14, version: 1.19
- CPUId = 0x0
- mmc: ERROR: SDHCI:Transfer data timeout
- mmc: ERROR: SDHCI ERR:cmd:0x153a,stat:0x0
- mmc: ERROR: Tuning procedure failed, falling back to fixed sampling clock
- mmc: ERROR: tuning execution failed
- emmc reinit
- mmc: ERROR: SDHCI:Transfer data timeout
- mmc: ERROR: SDHCI ERR:cmd:0x153a,stat:0x0
- mmc: ERROR: Tuning procedure failed, falling back to fixed sampling clock
- mmc: ERROR: tuning execution failed
- emmc reinit
- mmc: ERROR: SDHCI:Transfer data timeout
- mmc: ERROR: SDHCI ERR:cmd:0x153a,stat:0x0
- mmc: ERROR: Tuning procedure failed, falling back to fixed sampling clock
- mmc: ERROR: tuning execution failed
复制代码
可以看到也有emmc的错误,同时在Android Tool里,则提示了以下错误:
- 下载Boot开始
- 下载Boot成功
- 等待Maskrom开始
- 等待Maskrom成功
- 测试设备开始
复制代码
此时也无法在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模式下也不能正常刷固件,所以想请问一下是上面的操作有问题还是有其他的原因?
|
|