SD/MMC/SDIO 是三种常见的存储或通信设备,它们都使用了同一种物理接口和电气协议,但是有不同的功能和应用场景。SD 和 MMC 是主要用于存储的设备,而 SDIO 是可以提供多种 IO 功能的设备,如 WiFi、蓝牙、GPS 等。在 Linux 系统中,如何驱动这些设备呢?本文将介绍 Linux 中 SD/MMC/SDIO 设备的驱动原理和实例,包括如何注册和管理主设备(host)和从设备(card),如何使用 MMC 子系统和总线,以及如何处理请求和中断等。
一、SD/MMC/SDIO概念区分
SD(SecureDigital)与 MMC(MultimediaCard)
SD 是一种 flash memory card 的标准,也就是一般常见的 SD 记忆卡,而 MMC 则是较早的一种记忆卡标准,目前已经被 SD 标准所取代。在维基百科上有相当详细的 SD/MMC 规格说明:[http://zh.wikipedia.org/wiki/Secure_Digital]。
SDIO(SecureDigital I/O)
SDIO 是目前我们比较关心的技术,SDIO 故名思义,就是 SD 的 I/O 接口(interface&