当网络使用dtoverlay=sdtweak,poll_once
启动 pi 时,仍然会轮询该卡,从而每 10 秒产生一次日志垃圾邮件:
[ 144.474158] mmc0: Timeout waiting for hardware cmd interrupt.
[ 144.474182] mmc0: sdhci: ============ SDHCI REGISTER DUMP ===========
[ 144.474199] mmc0: sdhci: Sys addr: 0x00000000 | Version: 0x00001002
[ 144.474205] mmc0: sdhci: Blk size: 0x00000000 | Blk cnt: 0x00000000
[ 144.474213] mmc0: sdhci: Argument: 0x00000000 | Trn mode: 0x00000000
[ 144.474221] mmc0: sdhci: Present: 0x1fff0001 | Host ctl: 0x00000001
[ 144.474228] mmc0: sdhci: Power: 0x0000000f | Blk gap: 0x00000080
[ 144.474234] mmc0: sdhci: Wake-up: 0x00000000 | Clock: 0x0000f447
[ 144.474242] mmc0: sdhci: Timeout: 0x00000000 | Int stat: 0x00000000
[ 144.474250] mmc0: sdhci: Int enab: 0x00ff1003 | Sig enab: 0x00ff1003
[ 144.474257] mmc0: sdhci: ACmd stat: 0x00000000 | Slot int: 0x00000000
[ 144.474262] mmc0: sdhci: Caps: 0x45ee6432 | Caps_1: 0x0000a525
[ 144.474267] mmc0: sdhci: Cmd: 0x0000371a | Max curr: 0x00080008
[ 144.474275] mmc0: sdhci: Resp[0]: 0x00000000 | Resp[1]: 0x00000000
[ 144.474280] mmc0: sdhci: Resp[2]: 0x00000000 | Resp[3]: 0x00000000
[ 144.474284] mmc0: sdhci: Host ctl2: 0x00000000
[ 144.474288] mmc0: sdhci: ADMA Err: 0x00000000 | ADMA Ptr: 0x00000000
[ 144.474293] mmc0: sdhci: ============================================
sdtweak 未能在 pi4 上设置不可移除标志的直接原因是它并不意味着:
pi<strong i="6">@raspberrypi</strong>:~ $ dtoverlay -h sdtweak
Name: sdtweak
Info: Tunes the bcm2835-sdhost SD/MMC driver
N.B. This functionality is now available via the sd_* dtparams in the
base DTB.
...
需要的是一个通用的sd_pollonce
dtparam,它很容易添加。 但是,当 SD 卡被移除(或延迟插入)时,它可能不是您想要的,因为它可能反应不佳。
除了sd_pollonce
之外,也许真正需要的是驱动程序更改以减少日志垃圾邮件,也许以sd_debug
条件。
请问这个可以解决吗?
我已将更新的 .dts 文件推送到 rpi-4.19.y,将 sd_poll_once dtparams 添加到所有下游 .dtbs。 您可以在此处获取 bcm2711-rpi-4-b.dtb 的预构建版本。 与dtparam=sd_poll_once
一起使用。
使用sd_poll_once
现在绿色 LED 不工作
嗨@pelwell ,您在一月份将构建推送到 Google Drive 以解决此问题。 你有机会在这里发布补丁吗?
正如 sdtweak 文档所说,它提供的功能现在可以通过特定于板的 dtparams 获得:
dtparam=sd_poll_once
sdtweak 已被有效弃用,并将被正式弃用和删除。