1、我们的设计中SD卡与ARM不在同一块PCB板上,这两块板卡是通过背板连接起来的。我大概测量了一下走线长度大概在5000-6000MIL。信号间最大不匹配长度有800mil左右。SD卡的读写时钟为50MHz。CMD线上加了10k的上拉电阻。在这种情况下,从SD卡启动总是会报错,如下:
DVFS driver module loaded
regulator_init_complete: SPKVDD: incomplete constraints, leaving on
snvs_rtc snvs_rtc.0: setting system clock to 1970-01-01 00:00:00 UTC (0)
Waiting for root device /dev/mmcblk0p1...
mmc1: new high speed SDHC card at address 1234
mmcblk0: mmc1:1234 SA08G 7.28 GiB
mmcblk0: error -84 transferring data, sector 0, nr 8, cmd response 0x900, card s
tatus 0xb00
mmcblk0: retrying using single block read
mmcblk0: error -84 transferring data, sector 2, nr 6, cmd response 0x900, card s
tatus 0x0
end_request: I/O error, dev mmcblk0, sector 2
mmc1: Got data interrupt 0x0000000a even though no data operation was in progres
s.
后来看到“SPF-27392_C3.pdf”page6明确提到SD卡走线等长,所以怀疑这可能是主要问题。
2、根据我们自己的板子,已经重新编译过MFGtool 的firmware,至于烧写失败我觉得还是跟第一个问题有关,如果SD卡读写都有问题,烧写系统自然会失败。
因此,个人感觉将SD卡读写时钟降到25mhz,对于验证此问题会有很大帮助。