出于某种原因,几乎任何机器Windows / Mac / Linux上运行的卡都无法在我们的嵌入式主板上运行。更糟糕的是,我们有相同的卡可以正常工作!我查看了omap_hsmmc驱动程序(内核2.6.32)并尝试了各种更改,例如降低启用SPI模式的时钟速率等但没有运气。
以下是工作卡的输出(以前的命令是相同的):
mmc0: clock 24000000Hz busmode 2 powermode 2 cs 0 Vdd 16 width 2 timing 2
mmc0: host does not support reading read-only switch. assuming write-enable.
mmc0: new high speed SDHC card at address 59b4
mmcblk0: mmc0:59b4 SD 7.35 GiB
mmcblk0:
mmc0: starting CMD18 arg 00000000 flags 000000b5
mmc0: blksz 512 blocks 8 flags 00000200 tsac 100 ms nsac 0
mmc0: CMD12 arg 00000000 flags 0000049d
mmci-omap-hs mmci-omap-hs.0: mmc0: CMD18, argument 0x00000000
mmci-omap-hs mmci-omap-hs.0: IRQ Status is 1
mmci-omap-hs mmci-omap-hs.0: IRQ Status is 2
mmci-omap-hs mmci-omap-hs.0: mmc0: CMD12, argument 0x00000000
mmci-omap-hs mmci-omap-hs.0: IRQ Status is 3
mmc0: req done (CMD18): 0: 00000900 00000000 00000000 00000000
mmc0: 4096 bytes transferred: 0
mmc0: (CMD12): 0: 00000b00 00000000 00000000 00000000
p1 p2
mmci-omap-hs mmci-omap-hs.0: mmc_fclk: disabled
mmci-omap-hs mmci-omap-hs.0: mmc_fclk: enabled
mmci-omap-hs mmci-omap-hs.0: context was not lost
mmc0: starting CMD18 arg 000234cb flags 000000b5
mmc0: blksz 512 blocks 2 flags 00000200 tsac 100 ms nsac 0
mmc0: CMD12 arg 00000000 flags 0000049d
mmci-omap-hs mmci-omap-hs.0: mmc0: CMD18, argument 0x000234cb
mmci-omap-hs mmci-omap-hs.0: IRQ Status is 1
mmci-omap-hs mmci-omap-hs.0: IRQ Status is 2
mmci-omap-hs mmci-omap-hs.0: mmc0: CMD12, argument 0x00000000
mmci-omap-hs mmci-omap-hs.0: IRQ Status is 3
坏卡:
mmc0: clock 24000000Hz busmode 2 powermode 2 cs 0 Vdd 16 width 2 timing 2
mmc0: host does not support reading read-only switch. assuming write-enable.
mmc0: new high speed SDHC card at address 59b4
mmcblk0: mmc0:59b4 SD 7.35 GiB
mmcblk0:
mmc0: starting CMD18 arg 00000000 flags 000000b5
mmc0: blksz 512 blocks 8 flags 00000200 tsac 100 ms nsac 0
mmc0: CMD12 arg 00000000 flags 0000049d
mmci-omap-hs mmci-omap-hs.0: mmc0: CMD18, argument 0x00000000
mmci-omap-hs mmci-omap-hs.0: IRQ Status is 1
mmci-omap-hs mmci-omap-hs.0: IRQ Status is 208002
mmci-omap-hs mmci-omap-hs.0: MMC IRQ 0x208002 : TC ERRI DCRC
mmci-omap-hs mmci-omap-hs.0: mmc0: CMD12, argument 0x00000000
mmci-omap-hs mmci-omap-hs.0: IRQ Status is 3
mmc0: req done (CMD18): 0: 00000900 00000000 00000000 00000000
mmc0: 0 bytes transferred: -84
mmc0: (CMD12): 0: 00000b00 00000000 00000000 00000000
mmcblk0: retrying using single block read
mmc0: starting CMD17 arg 00000000 flags 000000b5
mmc0: blksz 512 blocks 1 flags 00000200 tsac 100 ms nsac 0
mmci-omap-hs mmci-omap-hs.0: mmc0: CMD17, argument 0x00000000
mmci-omap-hs mmci-omap-hs.0: IRQ Status is 1
mmci-omap-hs mmci-omap-hs.0: IRQ Status is 208002
mmci-omap-hs mmci-omap-hs.0: MMC IRQ 0x208002 : TC ERRI DCRC
mmc0: req done (CMD17): 0: 00000900 00000000 00000000 00000000
mmc0: 0 bytes transferred: -84
看起来多块DMA传输失败(CMD18),因此驱动程序会尝试单个块传输,但也会失败。
我应该看什么?如果还有什么我可以试试这个驱动程序? “MMC IRQ 0x208002:TC ERRI DCRC”是什么意思?
答案 0 :(得分:0)
在4位数据模式下,问题是连接错误。