在进行SD卡驱动介绍之前,我的思路是先讲一下我们要驱动的对象-SD卡,他的一些基本信息,从这些信息里我们能了解、抽象出来通用信息,这些信息也是我们做驱动的时候,需要了解的内容,力求在开始正式驱动工作前,通过这篇文章就能对SD卡的信息了解的非常详细。
文章目录
1. 总结
对于SD卡驱动,需要了解主机支持总线速度模式分类中的 哪几类:这牵涉到配置主控端,输出工作电压、时钟频率等等这些信息:
2. 为什么现在有这么多的SD卡标准?
首先大家都知道,SD卡说白了就是外部存储器,本质就是用来存数据的,他的功能十分单一,既然这么单一,那为啥还有出现那么多五花八门的版本、标准、专业术语啊这些的呢。
原因很简单,就是为了满足我们日益增加的对数据存储的需求。
以我们的手机来举例子,以前我们可能就是为了存储个通讯录,你人际关系再复杂,几十上百个KB也就差不多了,后面有了听音乐的需求,可能几百MB或者几个GB也就够了,到现在既要下视频、又要下音乐、文件等等,数据有了爆发式的增量需求,那我们对容量的需求也就很大了。
SD卡作为存储设备,肯定需要对它进行接口设计、协议规范,那在一开始制定的时候,受到时下的思维局限,可能没法看的那么远(十年前,谁能想到U盘存储都能上TB了呢),导致随着对容量需求不断增大,你原来设计的已经没法满足了,这时候就需要修改协议:比如原有的物理接口已经到了速度上线,需要重新设计接口,这就导致说SD卡的规范在不断调整,但是这种调整又不能随便乱改,这就出现了不同的标准,也就出现现在这种情况。
3. SD卡协会
为了能让SD卡标准化,方便统一,有个SD卡协会的组织,专门规定了各种涉及SD卡的协议,其中我们主要关注两类:SD Specifications Part 1 Physical Layer Simplified Specification(简单理解成:卡协议) 和SD Specifications Part A2 SD Host Controller Simplified Specification(简单理解成:主机协议)。
其中,卡协议规定了SD卡的物理规格和命令协议,而主机协议是用来标准化SD主机控制器,针对的是SD卡主机控制器厂商,这个协议不是强制的。
4. SD卡分类标准
SD协会,从三个方面对SD卡制定了三个分类标准:按存储容量分类、按最低写入速度分类、按物理总线接口分类。
4.1 容量分类:SDSC/SDHC/SDXC/SDUC
最早的SD卡标准是SDSC,单卡最大容量2GB,后来慢慢2G最大上限不够用了,2006年,SD卡协会制定了新的SDHC标准(大容量标准):容量在2G以上(不含2G)到32GB以内的SD卡都遵循SDHC标准。
原来SDSC使用的是FAT12和FAT16的文件系统,因为容量不超过2GB,FAT16也够用了,但是后面扩容了,就引入了FAT32作为SDHC的文件系统。
2009年,SD卡协会推出了SDXC标准:容量高于32GB(不含32G)到2TB,然后将文件系统改成了exFAT。
2018年宣布新的SD卡容量标准-SDUC:2TB(不含)~128TB.
所以SDHC、SDUC等这些标准都只代表容量分级的标准,但是在速度上没有一个明确的标准。
4.2 物理总线接口版本
CPU这些控制芯片想要从外部存储器里面读取数据,就需要经过一个I/O总线(Bus),那么对于和SD卡一起诞生的bus就是SD Bus。同样,在设计之初,SD Bus总线速度并不高,为了满足容量的扩充变化,SD协会也制定了新的物理总线接口:UHS和SD Express。一共三种总线,共计6种版本。
注意,物理总线接口标准(或者叫总线速度标准)只是规定了SD卡物理接口所能够达到的速度上限,但是我们基本上还用不到能跑到总线速度上线的SD卡。
4.2.1 SD Bus(默认总线和高速总线)
最早的SD Bus速度为12.5MB/s,而后在SD标准1.1版中,SD协会为这条总线加入了高速模式,总线速度提高一倍达到25MB/s。
目前所有的SD卡均都支持SD Bus的这两种模式。
4.2.2 UHS(Ultra High Speed超高速)
UHS的出现,是因为SD Bus不够用了,于是SD协会在SD3.0规范中为SDHC和SDXC添加了UHS超高速总线。
目前有UHS-I、UHS-II、UHS-III三种版本。实现UHS标准传输速度需要设备支持,高版本向下兼容低版本,不支持该标准可以兼容降速为普通存储卡使用。
-
UHS-I
UHS-I总线规范定义了两种速度,分别是UHS-50和UHS-104,前者具有50MB/s的数据传输速率,后者则为104MB/s,在SD卡上面的标记如下:
-
UHS-II
继续提速,原有的物理接口排针不够用了,因为总线的频率不能无限制的提高,因此SD卡协会在原有的金手指下面加入了第二排金手指,用于拓宽数据传输的通道(物理接口排针数量变了)。
在拓宽之后,UHS-II的最高速度可以达到312MB/s。另外,由于引入了新的一排金手指,也就是一个新的数据传输通道,使得支持UHS-II总线的SD卡可以在全双工或者半双工之间切换。打个比方,原本的SD卡只有一条车道,而UHS-II总线为SD卡新建了一条车道,这两条车道可以同向行驶(半双工),也可以逆向行驶(全双工),在两条车道同向的状态下,同样时间从A地(主机)到B地(SD卡)的总车流量就自然增加了一倍。
-
UHS-III
UHS-III与UHS-II一样,使用两排金手指进行数据交换,不过它取消了半双工模式,只保留了全双工的工作模式,但是最高传输速率仍旧比UHS-II高了一倍,有624MB/s。
4.2.3 SD Express
在2018年6月份,SD卡协会为SD卡引入了PCIe总线,虽然只有单通道,但是速率也轻松超越UHS-III规格,全双工的工作状态下可以达到985MB/s,另外,由于采用了PCIe总线进行数据传输,使得SD卡可以支持NVMe协议。
而支持SD Express规范的SD卡只保留了对UHS-I和SD总线的兼容性,不再兼容UHS-II和UHS-III。
4.2.4 总线速度模式分类
针对上面三类型接口,按总线速度模式来分类,一共有以下几种:
- Default Speed mode: 3.3V供电模式,频率上限25MHz,速度上限 12.5MB/sec
- High Speed mode: 3.3V供电模式,频率上限50MHz,速度上限 25MB/sec
- SDR12: UHS-I卡, 1.8V供电模式,频率上限25MHz,速度上限 12.5MB/sec
- SDR25: UHS-I卡, 1.8V供电模式,频率上限50MHz,速度上限 25MB/sec
- SDR50: UHS-I卡, 1.8V供电模式,频率上限100MHz,速度上限 50MB/sec
- SDR104: UHS-I卡, 1.8V供电模式,频率上限208MHz,速度上限 104MB/sec
- DDR50: UHS-I卡, 1.8V供电模式,频率上限50MHz,性能上限 50MB/sec
- UHS156: UHS-II RCLK Frequency Range 26MHz - 52MHz, up to 1.56Gbps per lane.
4.3 速度认证标准(最低写入速度)
上面的分类,容量分类只是从容量角度,总线速度标准,也只是物理总线理论能达到的上线,这些都和SD卡我们实际有用读写速度无关,因此SD卡协会为SD卡本身的速度制定了一些列的认证标准,这些标准都是基于不同的应用角度,各自之间都是互相平行的关系。
4.3.1 class标准(圆圈中带数字)
它指出了SD卡的最低写入速度,一共制定了4档,分别为Class 2、Class 4、Class 6和Class 10,代表SD卡的最低持续写入速度为2MB/s、4MB/s、6MB/s和10MB/s。
在几年前SD卡性能普遍还很羸弱的时候,Class标识可以让用户非常简便的认出SD卡的持续写入性能:Class 10的卡,它的持续写入速度就一直是10MB/s。不过随着SD卡性能的提高,现在的SD卡最低写入速度随随便便就上个几十MB/s的,几乎市场上所有SD卡都带着Class 10标识,它早已不能描述SD卡的最低写入性能了,但是它的存在指出这张SD卡是兼容SD总线的高速模式的。
4.3.2 UHS速度分级(U标)
UHS速度标识是与UHS-I总线一起加入到SD卡的标签纸上的,它就简单很多,只有两档,U1代表这张卡的最小写入速度为10MB/s,与Class 10基本上就是一个意思,而U3则代表这张卡的最低写入速度为30MB/s,是U1的三倍。
而UHS速度标识一般是和上文提到的UHS-I总线标识一起出现的,下面这张就是比较常见的、支持UHS-I总线规范,最低写入速度大于30MB/s的SD卡。
4.3.3 视频速度等级(V标)
针对视频应用角度指定的标准,不是重点,自行搜索即可。
4.3.4 应用性能分级(A标)
设备对SD卡随机读写性能分级,不是重点,自行搜索接口。
5. SD卡上常见标识解读
UHS模式:总线接口标识,标识支持的UHS-I接口(UHS是全新的总线模式,目前有UHS-I 、UHS-II、UHS-III三种版本,实现UHS标准的传输速度,需要设备硬件上支持,不支持该标准,会降速兼容为普通存储卡);
Class等级:speed class标示法,是一种比较旧的速度级别,表示在不支持UHS的设备上所达到的速度级别(在以往的设备、或者是不支持UHS接口的设备中使用时所达到的速度级别,C10和U1的速度基本相同);
超高速等级:UHS Speed Class标示法,标识在UHS接口上,数据传输速率级别为3
视频速度级别:Video Speed Class标示法,4K视频拍摄需求增大后,SD卡协会针对视频拍摄应用制定的视频速度等级,比如拍摄4k 视频的存储卡必须要达到V30以上。