在进行SD卡驱动介绍之前,我的思路是先讲一下我们要驱动的对象-SD卡,他的一些基本信息,从这些信息里我们能了解、抽象出来通用信息,这些信息也是我们做驱动的时候,需要了解的内容,力求在开始正式驱动工作前,通过这篇文章就能对SD卡的信息了解的非常详细。

文章目录

  • 1. 总结
  • 2. 为什么现在有这么多的SD卡标准?
  • 3. SD卡协会
  • 4. SD卡分类标准
    • 4.1 容量分类:SDSC/SDHC/SDXC/SDUC
    • 4.2 物理总线接口版本
      • 4.2.1 SD Bus(默认总线和高速总线)
      • 4.2.2 UHS(Ultra High Speed超高速)
      • 4.2.3 SD Express
      • 4.2.4 总线速度模式分类
    • 4.3 速度认证标准(最低写入速度)
      • 4.3.1 class标准(圆圈中带数字)
      • 4.3.2 UHS速度分级(U标)
      • 4.3.3 视频速度等级(V标)
      • 4.3.4 应用性能分级(A标)
  • 5. 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标准传输速度需要设备支持,高版本向下兼容低版本,不支持该标准可以兼容降速为普通存储卡使用。

  1. UHS-I
    UHS-I总线规范定义了两种速度,分别是UHS-50和UHS-104,前者具有50MB/s的数据传输速率,后者则为104MB/s,在SD卡上面的标记如下:

  2. UHS-II
    继续提速,原有的物理接口排针不够用了,因为总线的频率不能无限制的提高,因此SD卡协会在原有的金手指下面加入了第二排金手指,用于拓宽数据传输的通道(物理接口排针数量变了)。
    在拓宽之后,UHS-II的最高速度可以达到312MB/s。另外,由于引入了新的一排金手指,也就是一个新的数据传输通道,使得支持UHS-II总线的SD卡可以在全双工或者半双工之间切换。打个比方,原本的SD卡只有一条车道,而UHS-II总线为SD卡新建了一条车道,这两条车道可以同向行驶(半双工),也可以逆向行驶(全双工),在两条车道同向的状态下,同样时间从A地(主机)到B地(SD卡)的总车流量就自然增加了一倍。

  3. 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 总线速度模式分类

针对上面三类型接口,按总线速度模式来分类,一共有以下几种:

  1. Default Speed mode: 3.3V供电模式,频率上限25MHz,速度上限 12.5MB/sec
  2. High Speed mode: 3.3V供电模式,频率上限50MHz,速度上限 25MB/sec
  3. SDR12: UHS-I卡, 1.8V供电模式,频率上限25MHz,速度上限 12.5MB/sec
  4. SDR25: UHS-I卡, 1.8V供电模式,频率上限50MHz,速度上限 25MB/sec
  5. SDR50: UHS-I卡, 1.8V供电模式,频率上限100MHz,速度上限 50MB/sec
  6. SDR104: UHS-I卡, 1.8V供电模式,频率上限208MHz,速度上限 104MB/sec
  7. DDR50: UHS-I卡, 1.8V供电模式,频率上限50MHz,性能上限 50MB/sec
  8. 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以上。

参考资料:
超能课堂(207) SD卡标准错综复杂,到底该认哪一个?

SD卡驱动-基础知识相关推荐

  1. 卡函数or1200基于simple-spi的SD卡驱动

    每日一贴,天今的内容关键字为卡函数 这篇blog来说说基于simple-spi这个ipcore编写spi模式的SD Card裸机的驱动程序,植移依附分不清什么SD卡啊,micro SD啊,miniSD ...

  2. sd 卡驱动--基于高通平台

    点击打开链接 内容来自以下博客: http://blog.csdn.net/qianjin0703/article/details/5918041 Linux设备驱动子系统第二弹 - SD卡 (有介绍 ...

  3. Linux SD卡驱动

    二.MMC/SD介绍及SDI主机控制器 首先我们来理清几个概念: MMC:(Multi Media Card)由西门子公司和首推CF的SanDisk于1997年推出的多媒体记忆卡标准. SD:(Sec ...

  4. STM32F407 SPI SD卡驱动的验证

    试验原因 网上靠谱的STM32F4的SPI方式SD卡驱动不多. 包括ST官方板子,都不用SPI_SD的驱动方式,而是用SDIO. 如果没有官方资料加持,出问题时真头疼, 相当于一个人在玩. 自己板子上 ...

  5. S5PV210开发系列五 sd卡驱动实现

    SD卡(Secure Digital Memory Card)具有体积小.容量大.数据传输快.可插拔.安全性好等优点,被广泛应用于便携式设备上.例如作为数码相机的存储卡,作为手机.平板多媒体扩展卡用的 ...

  6. 详解sd协议以及裸机和u-boot中的sd卡驱动(2)

    3. sd卡驱动 3.1 引入 经过第2章我们知道,要想实现读写sd卡,需要按照sd协议规定的基本传输单位(命令.响应.数据)以及流程(初始化.读.写),向sd卡发送信号或者从sd卡接收信号. 为了简 ...

  7. sd 卡驱动在2.6内核的编写.sd/mmc/sdio kernel,sd/mmc/sdio 内核

    [转帖请注明出处:blog.csdn.net/lanmanck] sd卡驱动主要参照已有的文件即可,2410,9260都挺好.其实写驱动主要是搞清楚工作流程即可.我这里写一些心得与大家分享下,基于2. ...

  8. SD卡驱动分析(二)

    三.下面分析一下高通的android2.3的代码中SD卡驱动的流程. 在kernel中,SD卡是作为平台设备加入到内核中去的,在/kernel/arch/arm/mach-msm/devices-ms ...

  9. SD卡驱动分析(一)

    Android下的SD卡驱动与标准LINUX下的SD卡驱动好像没有太大的区别,这里就以高通的ANDROID 2.3以代表,来简要分析一下LINUX下SD卡驱动的写法.由于小弟的技术有限,分析的有错的地 ...

  10. Linux SD卡驱动开发(五) —— SD 卡驱动分析Core补充篇

    Core层中有两个重要函数 mmc_alloc_host 用于构造host,前面已经学习过,这里不再阐述:另一个就是 mmc_add_host,用于注册host 前面探测函数s3cmci_probe, ...

最新文章

  1. 【转载】雨更大了的飞鸽传书
  2. JAVA中整数类型数据溢出问题研究
  3. Eclipse中@author的修改
  4. 几个常用的Oracle函数及实例运用
  5. 【动态规划】蓝桥2020:画廊
  6. 怎样使按钮响应回车键
  7. 利用泰勒展开求高斯分布表
  8. 一文搞懂DTFT,DFT,FFT
  9. VUzzer: Application-aware Evolutionary Fuzzing
  10. Python网络爬虫实例(爬一些小网站的图片)
  11. 页面可视化搭建工具业界的轮子
  12. 管理的本质是协调还是决策?看看孙权是怎么做到的。
  13. GPS定位基本原理浅析
  14. 国产28nm制程光刻机突破在即,助力国产芯片
  15. 大数据应用要经得起考验,不可盲目跟风_光点科技
  16. 最小二乘估计的Matlab仿真
  17. 亲测有效:Steam 上的 Mountain 游戏设置为壁纸的方法
  18. 国仁网络资讯:抖音被降权、限流、警告了怎么办;触碰了抖音哪些违规行为。
  19. 最系统的大数据挖掘技术及其应用详解!
  20. Angular+arcgisjs之平面地图测距、测面积、搜索

热门文章

  1. VBA代码宝+代码助手
  2. c语言中优先级顺序表
  3. 《仿人机器人原理与实战》一1.2 反射弧与仿人机器人设计
  4. hb100 微波雷达arduino_Arduino Microwave sensor微波传感器模块
  5. 网页保存为pdf神器(可自定义编辑)—Print Edit WE
  6. AiChallenger比赛记录之样本不均衡
  7. Alsa是Linux高级音频接口(百度文库无下载券抄来的)
  8. 使用腾讯云短信实现发送短信验证码
  9. MySQL高可用之PXC详解
  10. icem合并面网格_icem 混合网格 流沙