我正在使用 linux 内核 SD/MMC 驱动程序进行编程,但我对此知之甚少。内核打印下面的记录器日志。从转储寄存器日志中,我无法检测到 MMC 驱动程序或 MMC 硬件的问题。如果有谁熟悉它并帮助我?(对不起我的英语不好)另外:我使用这个MMC在CortexA9中启动一个android,在启动之前会很长时间并且很多“Timeout waiting for hardware interrupt”,看来是我的MMC驱动程序或硬件造成的?
日志如下:
[ 11.356884] ^^^^^^^Sirfsoc-dsmmc.c >> sdhci_timeout_timer() error --
[ 11.366256]
[ 11.366259] ^^^^^^^Enter sdhci_dumpregs function after sdhci_timeout_timer()
error -- add by ^^^^^^^
[ 11.377104] : =========== REGISTER DUMP (mmc0)===========
[ 11.382487] : Sys addr: 0x00000000 | Version: 0x00000200
[ 11.387868] : Blk size: 0x00000000 | Blk cnt: 0x00000000
[ 11.393250] : Argument: 0x00000c00 | Trn mode: 0x00000000
[ 11.398631] : Present: 0x01f70001 | Host ctl: 0x00000000
[ 11.404012] : Power: 0x00000001 | Blk gap: 0x00000000
[ 11.409394] : Wake-up: 0x00000000 | Clock: 0x00004007
[ 11.414777] : Timeout: 0x00000000 | Int stat: 0x00000000
[ 11.420157] : Int enab: 0x00000000 | Sig enab: 0x00000000
[ 11.425540] : AC12 err: 0x00000000 | Slot int: 0x00000000
[ 11.430920] : Caps: 0x07e00080 | Caps_1: 0x00000000
[ 11.436302] : Cmd: 0x0000341a | Max curr: 0x00000001
[ 11.441684] : ===========================================
[ 11.447066]
[ 11.447069] ^^^^^^^sdchci_dumpregs after sdhci_timeout_timer() error -- add b
y ^^^^^^^
[ 21.474339] mmc0: Timeout waiting for hardware interrupt.
[ 21.476884]
[ 21.476888] ^^^^^^^Sirfsoc-dsmmc.c >> sdhci_timeout_timer() error --
[ 21.486258]
[ 21.486260] ^^^^^^^Enter sdhci_dumpregs function after sdhci_timeout_timer()
error -- add by ^^^^^^^
[ 21.497108] : =========== REGISTER DUMP (mmc0)===========
[ 21.502491] : Sys addr: 0x00000000 | Version: 0x00000200
[ 21.507871] : Blk size: 0x00000000 | Blk cnt: 0x00000000
[ 21.513253] : Argument: 0x80000c08 | Trn mode: 0x00000000
[ 21.518634] : Present: 0x01f70001 | Host ctl: 0x00000000
[ 21.524015] : Power: 0x00000001 | Blk gap: 0x00000000
[ 21.529399] : Wake-up: 0x00000000 | Clock: 0x00004007
[ 21.534779] : Timeout: 0x00000000 | Int stat: 0x00000000
[ 21.540160] : Int enab: 0x00000000 | Sig enab: 0x00000000
[ 21.545542] : AC12 err: 0x00000000 | Slot int: 0x00000000
[ 21.550924] : Caps: 0x07e00080 | Caps_1: 0x00000000
[ 21.556305] : Cmd: 0x0000341a | Max curr: 0x00000001
[ 21.561687] : ===========================================
[ 21.567068]
[ 21.567071] ^^^^^^^sdchci_dumpregs after sdhci_timeout_timer() error -- add b
y ^^^^^^^
[ 31.594338] mmc0: Timeout waiting for hardware interrupt.
[ 31.596879]
[ 31.596882] ^^^^^^^Sirfsoc-dsmmc.c >> sdhci_timeout_timer() error --
[ 31.606253]
[ 31.606256] ^^^^^^^Enter sdhci_dumpregs function after sdhci_timeout_timer()
error -- add by ^^^^^^^
[ 31.617102] : =========== REGISTER DUMP (mmc0)===========
[ 31.622484] : Sys addr: 0x00000000 | Version: 0x00000200
[ 31.627865] : Blk size: 0x00000000 | Blk cnt: 0x00000000
[ 31.633248] : Argument: 0x00000000 | Trn mode: 0x00000000
[ 31.638629] : Present: 0x01f70000 | Host ctl: 0x00000000
[ 31.644010] : Power: 0x00000001 | Blk gap: 0x00000000
[ 31.649392] : Wake-up: 0x00000000 | Clock: 0x00004007
[ 31.654773] : Timeout: 0x00000000 | Int stat: 0x00000000
[ 31.660155] : Int enab: 0x00000000 | Sig enab: 0x00000000
[ 31.665536] : AC12 err: 0x00000000 | Slot int: 0x00000000
[ 31.670920] : Caps: 0x07e00080 | Caps_1: 0x00000000
[ 31.676301] : Cmd: 0x00000000 | Max curr: 0x00000001
[ 31.681682] : ===========================================
[ 31.687063]
[ 31.687065] ^^^^^^^sdchci_dumpregs after sdhci_timeout_timer() error -- add b
y ^^^^^^^
[ 41.714339] mmc0: Timeout waiting for hardware interrupt.
[ 41.716881]
[ 41.716885] ^^^^^^^Sirfsoc-dsmmc.c >> sdhci_timeout_timer() error --
[ 41.726256]
[ 41.726259] ^^^^^^^Enter sdhci_dumpregs function after sdhci_timeout_timer()
error -- add by ^^^^^^^
[ 41.737106] : =========== REGISTER DUMP (mmc0)===========
[ 41.742489] : Sys addr: 0x00000000 | Version: 0x00000200
[ 41.747869] : Blk size: 0x00000000 | Blk cnt: 0x00000000
[ 41.753251] : Argument: 0x000001aa | Trn mode: 0x00000000
[ 41.758632] : Present: 0x01f70000 | Host ctl: 0x00000000
[ 41.764014] : Power: 0x00000001 | Blk gap: 0x00000000
[ 41.769395] : Wake-up: 0x00000000 | Clock: 0x00004007
[ 41.774777] : Timeout: 0x00000000 | Int stat: 0x00000000
[ 41.780158] : Int enab: 0x00000000 | Sig enab: 0x00000000
[ 41.785540] : AC12 err: 0x00000000 | Slot int: 0x00000000
[ 41.790923] : Caps: 0x07e00080 | Caps_1: 0x00000000
[ 41.796303] : Cmd: 0x0000081a | Max curr: 0x00000001
[ 41.801684] : ===========================================
[ 41.807066]
[ 41.807069] ^^^^^^^sdchci_dumpregs after sdhci_timeout_timer() error -- add b
y ^^^^^^^
[ 51.834338] mmc0: Timeout waiting for hardware interrupt.
[ 51.836885]
[ 51.836888] ^^^^^^^Sirfsoc-dsmmc.c >> sdhci_timeout_timer() error --
[ 51.846259]
[ 51.846261] ^^^^^^^Enter sdhci_dumpregs function after sdhci_timeout_timer()
error -- add by ^^^^^^^
[ 51.857108] : =========== REGISTER DUMP (mmc0)===========
[ 51.862491] : Sys addr: 0x00000000 | Version: 0x00000200
[ 51.867874] : Blk size: 0x00000000 | Blk cnt: 0x00000000
[ 51.873255] : Argument: 0x00000000 | Trn mode: 0x00000000
[ 51.878635] : Present: 0x01f70001 | Host ctl: 0x00000000
[ 51.884017] : Power: 0x00000001 | Blk gap: 0x00000000
[ 51.889399] : Wake-up: 0x00000000 | Clock: 0x00004007
[ 51.894780] : Timeout: 0x00000000 | Int stat: 0x00000000
[ 51.900162] : Int enab: 0x00000000 | Sig enab: 0x00000000
[ 51.905543] : AC12 err: 0x00000000 | Slot int: 0x00000000
[ 51.910926] : Caps: 0x07e00080 | Caps_1: 0x00000000
[ 51.916307] : Cmd: 0x00000502 | Max curr: 0x00000001
[ 51.921688] : ===========================================
[ 51.927069]
[ 51.927072] ^^^^^^^sdchci_dumpregs after sdhci_timeout_timer() error -- add b
y ^^^^^^^
[ 61.954338] mmc0: Timeout waiting for hardware interrupt.
[ 61.956879]
[ 61.956883] ^^^^^^^Sirfsoc-dsmmc.c >> sdhci_timeout_timer() error --
[ 61.966255]
[ 61.966257] ^^^^^^^Enter sdhci_dumpregs function after sdhci_timeout_timer()
error -- add by ^^^^^^^
[ 61.977103] : =========== REGISTER DUMP (mmc0)===========
[ 61.982486] : Sys addr: 0x00000000 | Version: 0x00000200
[ 61.987868] : Blk size: 0x00000000 | Blk cnt: 0x00000000
[ 61.993248] : Argument: 0x00000000 | Trn mode: 0x00000000
[ 61.998630] : Present: 0x01f70001 | Host ctl: 0x00000000
[ 62.004013] : Power: 0x00000001 | Blk gap: 0x00000000
[ 62.009394] : Wake-up: 0x00000000 | Clock: 0x00004007
[ 62.014775] : Timeout: 0x00000000 | Int stat: 0x00000000
[ 62.020156] : Int enab: 0x00000000 | Sig enab: 0x00000000
[ 62.025538] : AC12 err: 0x00000000 | Slot int: 0x00000000
[ 62.030921] : Caps: 0x07e00080 | Caps_1: 0x00000000
[ 62.036301] : Cmd: 0x00000502 | Max curr: 0x00000001
[ 62.041682] : ===========================================
[ 62.047065]
[ 62.047067] ^^^^^^^sdchci_dumpregs after sdhci_timeout_timer() error -- add b
y ^^^^^^^
[ 72.074338] mmc0: Timeout waiting for hardware interrupt.
[ 72.076883]
[ 72.076886] ^^^^^^^Sirfsoc-dsmmc.c >> sdhci_timeout_timer() error --
[ 72.086257]
[ 72.086260] ^^^^^^^Enter sdhci_dumpregs function after sdhci_timeout_timer()
error -- add by ^^^^^^^
[ 72.097106] : =========== REGISTER DUMP (mmc0)===========
[ 72.102489] : Sys addr: 0x00000000 | Version: 0x00000200
[ 72.107872] : Blk size: 0x00000000 | Blk cnt: 0x00000000
[ 72.113252] : Argument: 0x00000000 | Trn mode: 0x00000000
[ 72.118634] : Present: 0x01f70001 | Host ctl: 0x00000000
[ 72.124015] : Power: 0x00000001 | Blk gap: 0x00000000
[ 72.129397] : Wake-up: 0x00000000 | Clock: 0x00004007
[ 72.134778] : Timeout: 0x00000000 | Int stat: 0x00000000
[ 72.140161] : Int enab: 0x00000000 | Sig enab: 0x00000000
[ 72.145541] : AC12 err: 0x00000000 | Slot int: 0x00000000
[ 72.150924] : Caps: 0x07e00080 | Caps_1: 0x00000000
[ 72.156305] : Cmd: 0x00000502 | Max curr: 0x00000001
[ 72.161686] : ===========================================
[ 72.167068]
[ 72.167071] ^^^^^^^sdchci_dumpregs after sdhci_timeout_timer() error -- add b
y ^^^^^^^
[ 82.194338] mmc0: Timeout waiting for hardware interrupt.
[ 82.196878]
[ 82.196881] ^^^^^^^Sirfsoc-dsmmc.c >> sdhci_timeout_timer() error --
[ 82.206251]
[ 82.206254] ^^^^^^^Enter sdhci_dumpregs function after sdhci_timeout_timer()
error -- add by ^^^^^^^
[ 82.217101] : =========== REGISTER DUMP (mmc0)===========
[ 82.222485] : Sys addr: 0x00000000 | Version: 0x00000200
[ 82.227865] : Blk size: 0x00000000 | Blk cnt: 0x00000000
[ 82.233246] : Argument: 0x00000000 | Trn mode: 0x00000000
[ 82.238628] : Present: 0x01f70001 | Host ctl: 0x00000000
[ 82.244009] : Power: 0x00000001 | Blk gap: 0x00000000
[ 82.249391] : Wake-up: 0x00000000 | Clock: 0x00004007
[ 82.254773] : Timeout: 0x00000000 | Int stat: 0x00000000
[ 82.260154] : Int enab: 0x00000000 | Sig enab: 0x00000000
[ 82.265536] : AC12 err: 0x00000000 | Slot int: 0x00000000
[ 82.270918] : Caps: 0x07e00080 | Caps_1: 0x00000000
[ 82.276299] : Cmd: 0x00000502 | Max curr: 0x00000001
[ 82.281681] : ===========================================
[ 82.287063]
[ 82.287066] ^^^^^^^sdchci_dumpregs after sdhci_timeout_timer() error -- add b
y ^^^^^^^
[ 92.314341] mmc0: Timeout waiting for hardware interrupt.
[ 92.316881]
[ 92.316885] ^^^^^^^Sirfsoc-dsmmc.c >> sdhci_timeout_timer() error --
[ 92.326256]
[ 92.326259] ^^^^^^^Enter sdhci_dumpregs function after sdhci_timeout_timer()
error -- add by ^^^^^^^
[ 92.337106] : =========== REGISTER DUMP (mmc0)===========
[ 92.342488] : Sys addr: 0x00000000 | Version: 0x00000200
[ 92.347870] : Blk size: 0x00000000 | Blk cnt: 0x00000000
[ 92.353250] : Argument: 0x00000000 | Trn mode: 0x00000000
[ 92.358632] : Present: 0x01f70000 | Host ctl: 0x00000000
[ 92.364013] : Power: 0x00000001 | Blk gap: 0x00000000
[ 92.369395] : Wake-up: 0x00000000 | Clock: 0x00004007
[ 92.374776] : Timeout: 0x00000000 | Int stat: 0x00000000
[ 92.380157] : Int enab: 0x00000000 | Sig enab: 0x00000000
[ 92.385539] : AC12 err: 0x00000000 | Slot int: 0x00000000
[ 92.390922] : Caps: 0x07e00080 | Caps_1: 0x00000000
[ 92.396303] : Cmd: 0x0000371a | Max curr: 0x00000001
[ 92.401685] : ===========================================
[ 92.407066]
[ 92.407069] ^^^^^^^sdchci_dumpregs after sdhci_timeout_timer() error -- add b
y ^^^^^^^
[ 102.434339] mmc0: Timeout waiting for hardware interrupt.
[ 102.436884]
[ 102.436887] ^^^^^^^Sirfsoc-dsmmc.c >> sdhci_timeout_timer() error --
[ 102.446259]
[ 102.446262] ^^^^^^^Enter sdhci_dumpregs function after sdhci_timeout_timer()
error -- add by ^^^^^^^
[ 102.457109] : =========== REGISTER DUMP (mmc0)===========
[ 102.462490] : Sys addr: 0x00000000 | Version: 0x00000200
[ 102.467872] : Blk size: 0x00000000 | Blk cnt: 0x00000000
[ 102.473253] : Argument: 0x00000000 | Trn mode: 0x00000000
[ 102.478635] : Present: 0x01f70000 | Host ctl: 0x00000000
[ 102.484018] : Power: 0x00000001 | Blk gap: 0x00000000
[ 102.489399] : Wake-up: 0x00000000 | Clock: 0x00004007
[ 102.494779] : Timeout: 0x00000000 | Int stat: 0x00000000
[ 102.500161] : Int enab: 0x00000000 | Sig enab: 0x00000000
[ 102.505542] : AC12 err: 0x00000000 | Slot int: 0x00000000
[ 102.510924] : Caps: 0x07e00080 | Caps_1: 0x00000000
[ 102.516306] : Cmd: 0x0000371a | Max curr: 0x00000001
[ 102.521688] : ===========================================
[ 102.527070]
[ 102.527073] ^^^^^^^sdchci_dumpregs after sdhci_timeout_timer() error -- add b
y ^^^^^^^
[ 112.554340] mmc0: Timeout waiting for hardware interrupt.
[ 112.556888]
[ 112.556891] ^^^^^^^Sirfsoc-dsmmc.c >> sdhci_timeout_timer() error --
[ 112.566262]
[ 112.566265] ^^^^^^^Enter sdhci_dumpregs function after sdhci_timeout_timer()
error -- add by ^^^^^^^
[ 112.577112] : =========== REGISTER DUMP (mmc0)===========
[ 112.582495] : Sys addr: 0x00000000 | Version: 0x00000200
[ 112.587875] : Blk size: 0x00000000 | Blk cnt: 0x00000000
[ 112.593258] : Argument: 0x00000000 | Trn mode: 0x00000000
[ 112.598638] : Present: 0x01f70000 | Host ctl: 0x00000000
[ 112.604019] : Power: 0x00000001 | Blk gap: 0x00000000
[ 112.609401] : Wake-up: 0x00000000 | Clock: 0x00004007
[ 112.614782] : Timeout: 0x00000000 | Int stat: 0x00000000
[ 112.620164] : Int enab: 0x00000000 | Sig enab: 0x00000000
[ 112.625546] : AC12 err: 0x00000000 | Slot int: 0x00000000
[ 112.630928] : Caps: 0x07e00080 | Caps_1: 0x00000000
[ 112.636309] : Cmd: 0x0000371a | Max curr: 0x00000001
[ 112.641691] : ===========================================
[ 112.647072]
[ 112.647075] ^^^^^^^sdchci_dumpregs after sdhci_timeout_timer() error -- add b
y ^^^^^^^
[ 122.674338] mmc0: Timeout waiting for hardware interrupt.
[ 122.676882]
[ 122.676885] ^^^^^^^Sirfsoc-dsmmc.c >> sdhci_timeout_timer() error --
[ 122.686257]
[ 122.686260] ^^^^^^^Enter sdhci_dumpregs function after sdhci_timeout_timer()
error -- add by ^^^^^^^
[ 122.697107] : =========== REGISTER DUMP (mmc0)===========
[ 122.702488] : Sys addr: 0x00000000 | Version: 0x00000200
[ 122.707870] : Blk size: 0x00000000 | Blk cnt: 0x00000000
[ 122.713251] : Argument: 0x00000000 | Trn mode: 0x00000000
[ 122.718633] : Present: 0x01f70000 | Host ctl: 0x00000000
[ 122.724014] : Power: 0x00000001 | Blk gap: 0x00000000
[ 122.729397] : Wake-up: 0x00000000 | Clock: 0x00004007
[ 122.734777] : Timeout: 0x00000000 | Int stat: 0x00000000
[ 122.740159] : Int enab: 0x00000000 | Sig enab: 0x00000000
[ 122.745540] : AC12 err: 0x00000000 | Slot int: 0x00000000
[ 122.750922] : Caps: 0x07e00080 | Caps_1: 0x00000000
[ 122.756304] : Cmd: 0x0000371a | Max curr: 0x00000001
[ 122.761686] : ===========================================
[ 122.767068]
[ 122.767071] ^^^^^^^sdchci_dumpregs after sdhci_timeout_timer() error -- add b
y ^^^^^^^
[ 132.794340] mmc0: Timeout waiting for hardware interrupt.
[ 132.796887]
[ 132.796890] ^^^^^^^Sirfsoc-dsmmc.c >> sdhci_timeout_timer() error --
[ 132.806259]
[ 132.806262] ^^^^^^^Enter sdhci_dumpregs function after sdhci_timeout_timer()
error -- add by ^^^^^^^
[ 132.817110] : =========== REGISTER DUMP (mmc0)===========
[ 132.822493] : Sys addr: 0x00000000 | Version: 0x00000200
[ 132.827874] : Blk size: 0x00000000 | Blk cnt: 0x00000000
[ 132.833255] : Argument: 0x00000000 | Trn mode: 0x00000000
[ 132.838636] : Present: 0x01f70001 | Host ctl: 0x00000000
[ 132.844017] : Power: 0x00000001 | Blk gap: 0x00000000
[ 132.849399] : Wake-up: 0x00000000 | Clock: 0x00004007
[ 132.854781] : Timeout: 0x00000000 | Int stat: 0x00000000
[ 132.860162] : Int enab: 0x00000000 | Sig enab: 0x00000000
[ 132.865544] : AC12 err: 0x00000000 | Slot int: 0x00000000
[ 132.870927] : Caps: 0x07e00080 | Caps_1: 0x00000000
[ 132.876307] : Cmd: 0x00000102 | Max curr: 0x00000001
[ 132.881688] : ===========================================
[ 132.887070]
[ 132.887073] ^^^^^^^sdchci_dumpregs after sdhci_timeout_timer() error -- add b
y ^^^^^^^
[ 133.091254] mmc0: new high speed SDHC card at address b368
[ 133.094266] mmcblk0: mmc0:b368 00000 7.51 GiB
[ 133.106779] mmcblk0: p1 p2 p3 p4 < p5 p6 p7 p8 >
[ 133.111292] sirfsoc_rtc sirfsoc_rtc.0: setting system clock to 1970-01-01 02:
23:46 UTC (8626)
[ 133.127864] Freeing init memory: 2868K
[ 133.442704] mmc1: new SD card at address aaaa
[ 133.445366] mmcblk1: mmc1:aaaa SU02G 1.84 GiB
[ 133.457479] mmcblk1: p1
[ 133.657088] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. O
pts: (null)