Linux 上的 SD 读卡器:底层 SPI 或 SD 协议

Linux 上的 SD 读卡器:底层 SPI 或 SD 协议

我有一台带有 SD 读卡器的笔记本电脑,我想知道 GNU/Linux 驱动程序是否使用 SPI 协议或专有 SD 协议(一位或四位)。我问这个问题是因为我正在测试我正在使用的基于 SPI 的 SD 读卡器设备,当我检查笔记本上的读取速度时,它以 6MB/s 的速度读取卡...另一件事,我想查看驱动程序来源,您知道在哪里可以找到它们吗?

提前致谢!

答案1

在不查看内核源代码的情况下,这将取决于特定的 SD 芯片及其内核驱动程序。您应该查看数据表和内核源代码。例如,在我的笔记本电脑上:

$ lspci | grep SD
15:00.2 SD Host controller: Ricoh Co Ltd R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter (rev 21)

据推测,该芯片在硬件中实现了 SD 状态机,以及一些芯片到主机的接口(PCI,在我的例子中)。芯片到卡连接的细节可能由芯片抽象出来,但选择可能会受到主机的影响。除非存在已知的错误,否则内核可能会采用最快的可用方法。

更新:检查内核源代码。如果卡支持 4 位传输,它们会自动启用。您可以在drivers/mmc/core/mmc.c, function中看到这一点mmc_init_card()。对于 Linux 2.6.38,第 489 行似乎激活高速传输,第 535 行似乎激活 4 位宽传输。不要让“mmc”让您感到困惑。该目录包含处理 SD(包括 SDIO)卡以及 MMC 的驱动程序。

相关内容