Linux의 SD 카드 리더: 기본 SPI 또는 SD 프로토콜

Linux의 SD 카드 리더: 기본 SPI 또는 SD 프로토콜

SD 카드 리더기가 있는 노트북이 있는데 GNU/Linux 드라이버가 SPI 프로토콜을 사용하는지 아니면 독점 SD 프로토콜(1비트 또는 4비트)을 사용하는지 알고 싶습니다. 이 질문을 드리는 이유는 제가 사용하고 있는 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함수에서 이를 확인할 수 있습니다 mmc_init_card(). Linux 2.6.38의 경우 489행은 고속 전송을 활성화하는 것으로 나타나고 535행은 4비트 폭의 전송을 활성화하는 것으로 보입니다. "mmc"로 인해 혼동하지 마십시오. 이 디렉토리에는 SD(SDIO 포함) 카드와 MMC를 처리하기 위한 드라이버가 포함되어 있습니다.

관련 정보