Linux(open source)的 SD/MMC/SDIO 支援現況概要 转

转载自:http://blog.csdn.net/wawuta/archive/2007/01/29/1497419.aspx

SD Secure Digital )与 MMCMultimedia Card

SD 是一种 flash memory card 的标准,也就是一般常见的 SD 记忆卡,而 MMC 则是较早的一种记忆卡标准,目前已经被 SD 标准所取代。在维基百科上有相当详细的 SD/MMC 规格说明:[http://zh.wikipedia.org/wiki/Secure_Digital ]

SDIO Secure Digital I/O

SDIO 是目前我们比较关心的技术,SDIO 故名思义,就是 SD I/O 接口(interface )的意思,不过这样解释可能还有点抽像。更具体的说明,SD 本来是记忆卡的标准,但是现在也可以把 SD 拿来插上一些外围接口使用,这样的技术便是 SDIO

所以 SDIO 本身是一种相当单纯的技术,透过 SD I/O 接脚来连接外部外围,并且透过 SD 上的 I/O 数据接位与这些外围传输数据,而且 SD 协会会员也推出很完整的 SDIO stack 驱动程序,使得 SDIO 外围(我们称为 SDIO 卡)的开发与应用变得相当热门。

现在已经有非常多的手机或是手持装置都支持 SDIO 的功能(SD 标准原本就是针对 mobile device 而制定),而且许多 SDIO 外围也都被开发出来,让手机外接外围更加容易,并且开发上更有弹性(不需要内建外围)。目前常见的 SDIO 外围(SDIO 卡)有:

  • Wi-Fi card (无线网络卡)
  • CMOS sensor card (照相模块)
  • GPS card
  • GSM/GPRS modem card
  • Bluetooth card
  • Radio/TV card (很好玩)

SDIO 的应用将是未来嵌入式系统最重要的接口技术之一,并且也会取代目前 GPIO 式的 SPI 接口。

SD/SDIO 的传输模式

SD 传输模式有以下 3 种:

  • SPI mode required
  • 1-bit mode
  • 4-bit mode

SDIO 同样也支持以上 3 种传输模式。依据 SD 标准,所有的 SD (记忆卡)与 SDIO (外围)都必须支持 SPI mode ,因此 SPI mode 是「required 」。此外,早期的 MMC 卡(使用 SPI 传输)也能接到 SD 插糟(SD slot ),并且使用 SPI mode 1-bit mode 来读取。

SD MMC Mode

SD 也能读取 MMC 内存,虽然 MMC 标准上提到,MMC 内存不见得要支持 SPI mode (但是一定要支持 1-bit mode ),但是市面上能看到的 MMC 卡其实都有支持 SPI mode 。因此,我们可以把 SD 设定成 SPI mode 的传输方式来读取 MMC 记忆卡。

SD MMC Mode 就是用来读取 MMC 卡的一种传输模式。不过,SD MMC Mode 虽然也是使用 SPI mode ,但其物理特性仍是有差异的:

  • MMC SPI mode 最大传输速率为 20 Mbit/s
  • SD SPI mode 最大传输速率为 25 Mbit/s

为避免混淆,有时也用 SPI/MMC mode SPI/SD mode 的写法来做清楚区别。

Linux SD/MMC 驱动程序

Linux 2.6.17 正式加入 SD/MMC 驱动程序,「官方版」的 release 当然只能在 ARM 平台上使用,若不讨论 host controller 的支持,目前的 Linux SD/MMC/SDIO 支持状况(Core API )如下(Open source compatible for SD/MMC/SDIO ):

1. 支援 MMCOpen source 的实作即是 SD-MMC 的驱动程序。

2. Core API 「可以做到」支持 SD/SPI mode only ,因为有办法做到支持 SPI mode ,当然 1-bit mode 也「可以想办法」做出来。将 1-bit mode 扩充至 4-bit mode ,网络上虽然有人做,不过会有版权问题。

3. SDIO 目前只看到 Atheros Wi-Fi card 的支持(可在 sourceforge 上找到,已正式释出 source code )。

4. 完整的 SD stack 是要付钱的,请特别注意,SD Card Association product license agreement 并「不」允许 open source 的驱动程序实作。所以也不用再问,为什么没有 open source SD 驱动程序了;Linux 是无罪的!

请特别留意的是,以上所述是「官方」的正式支持,并不包含玩家所分享的各种 patch

你可能感兴趣的:(Linux(open source)的 SD/MMC/SDIO 支援現況概要 转)