LinuxのSDカードリーダー:基本SPIまたはSDプロトコル

LinuxのSDカードリーダー:基本SPIまたはSDプロトコル

SDカードリーダー付きのラップトップがあり、GNU / LinuxドライバがSPIプロトコルを使用するのか、独自のSDプロトコル(1ビットまたは4ビット)を使用しているのかを知りたいです。この質問をする理由は、私が使用しているSPIベースのSDカードリーダーデバイスをテストしているからです。ノートブックで読み取り速度を確認したとき、6MB/秒の速度でカードを読みました。もう一つ、見たいです。ドライバのソース、どこで見つけることができます知っていますか?

よろしくお願いします!

答え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関数でこれを確認できますmmc_init_card()。 Linux 2.6.38では、489行は高速転送を有効にしているように見え、535行は4ビット幅の転送を有効にしているようです。 「mmc」で混同しないでください。このディレクトリには、SD(SDIOを含む)カードとMMCを処理するためのドライバが含まれています。

関連情報