第22卷第1期计算机仿真2005年1月文章编号:1006—9348(2005)01—0160—04

嵌入式Linux下的MMC/SD卡的原理及实现

纪竞舟,付宇卓

(上海交通大学芯片与系统研究中心,上海200330)

摘要:随着计算机硬件的发展及数据量的增加,对存储设备的要求也越来越高。闪存卡以其特性成为移动设备上的首选存

储媒介。而且由于MMC卡与sD卡的硬件接口是兼容的。因此,该文在Motorola的DragonballMXl平台的基础上,描述了

MMC/SD卡的硬件接口,给出了硬件接口部分的原理图。并介绍了在此嵌人式系统中使用它的一些相关操作及其顺序。最

后介绍了Linux下设备的分类,给出了编写块设备驱动的相关数据结构及函数,详细说明了在Liaux环境下编写相应的驱动

程序的方法及注意事项。

关键词:嵌入式;闪存卡;驱动程序

中图分类号:TP3文献标识码:A

TheTheoryandImplementationofMMC/SDCardBasedonEmbeddedLinux

JIJing—zhou,FUYu—zhuo

(ShanghaiJiaotongUniversitySOGandSystemResearchCenter,Shanghai200030,CK强)ABSTRACr:Wit}lthedevelopmentofhardwareofcomputerandtheincreasingofdata。therequirementofstoragedeviceis

alsodeveloping.Becauseofitscharacteristic,flashcardbecamethepreferredstoragedeviceformobiledevice.What’s

more,thehardwareinterfaceofMMCcardiscompatiblewithSDcard.InthispaperbasedonplatformofDragonballMXl,

thehardw&reinterfaceofMMC/SDcardhasbeendescribed.Theprocessofcorrelativeoperationsandsequenceofthese叩一

elationsinthise删dedsystemhavebeenintroduced.Then,Linuxdevicesaleintroduced.Datastructureandfunctions

aboutlinuxblockdevicedriverarealsogiven.AndtheimplementationoflinuxblockdevicedriverforMMC/SDcardhas

beendescribedindetail.

KEYWORI)s:Embedded;Flashcard;Linuxdriver

1引言

随着计算机硬件设备和软件系统逐步升级,只能存储小容量的文件和数据的软盘已经根本无法满足人们13常应用的基本需求,而相对容量大不了多少的ZIP、MO等光磁盘介质存储设备又由于其驱动器昂贵的价格使用户却步;移动硬盘的容量虽然很大,但普通用户还是很难承受比普通硬盘高出许多的价格。于是用户低价高效的移动存储需求促动了以闪存为介质的微型移动存储设备的出现,比如现在u盘的普及。这些闪存卡功耗低、密度高、体积小、可靠性高、可擦除、可重写,由于是电读写介质,闪存卡完全不受磁性干扰和影响,而且因其具有相对简单的物理内部结构,在发生碰撞时也不易出现数据丢失现象。如今各类闪存卡广泛应用于如PDA、DC、MP3和手机等各种数码产品中。因此新一代的嵌入式处理器,如AMD的AUll00、Intel的X,scale、TI的OMAP以及Motorola的MC9328MXl都增加了对闪存卡的支持。

基金项目:总后科研项目资助(41A1C.51)

收稿日期:2003—10—20

---——160—--——

由于MMC卡和SD卡的接口通常是兼容的,因此本文主要对这两种卡在基于IINlⅨ的嵌入式系统上的实现进行介绍。MMC(MultimediaCard)卡是一种通用的数据存储介质,它定义了简洁的、易于实现的接口,有着广泛的用途,比如电子玩具、PDA以及MP3等等。MMC卡有7根引脚,并在一个较低的电压范围内以20Mbps的速率通信。sD(SecureDi百talcaId)卡在物理上及通信协议上与MMC卡均有类似的地方,但它比MMC卡多了两根引脚用作数据传输,因此它的传输速率比MMC卡更快。SD卡有存储卡和I/O卡两种。存储卡与MMC卡相比,增加了版权保护机制,并有更快的传输速率及更高的存储容量。I/O卡有着高速的数据输入输出功能,并且功耗很低,其主要用在移动设备上。

图1为MMC/SD卡的引脚描述及比较。

从图1可以看出,引脚主要有电压、时钟以及命令和数据信号等。MMC/SD卡是通过发送命令信号,从而达到状态转移、数据读写等操作。除了上述几根引脚外,一张MMC/SD卡通常还可能有插卡检测(CardDetected)信号线和写保护(WriteProtected)信号线。

万方数据万方数据

嵌入式linux mmc启动,嵌入式Linux下的MMC-SD卡的原理及实现相关推荐

  1. 嵌入式存储器中EEPROM、FRAM、eMMC和SD卡的区别

    对于所有基于微控制器的嵌入式系统而言,存储器都是其中的主要元件.例如,开发人员需要足够的 RAM 以存储所有易失性变量.创建缓冲区以及管理各种应用堆栈.RAM 对于嵌入式系统相当重要,同样,开发人员也 ...

  2. linux4 sd卡驱动,在Linux上,如何格式化USB驱动器和SD卡

    在Linux中,你可以使用图形工具,如GParted或命令行工具,例如fdisk或parted,来格式化驱动器和分区. 在本教程中,向你展示如何使用Linux的parted工具格式化USB驱动器或SD ...

  3. STM32用cube配置FATFS模式下SPI读写SD卡

    要求:掌握SD卡协议原理,用STM32F103 完成对SD卡的数据读取(FAT文件模式) 目录 一.SD卡与FATS 1.SD卡 2.FATFS文件系统 二.工程实现 1.编译运行 2.接线 3.初始 ...

  4. mac os android sd卡,如何在Mac OS下永久删除SD卡上的文件?

    Mac数据恢复软件可以轻松恢复已删除或格式化的数据.因此,在Mac OS下从SD卡删除文件时,Mac数据恢复软件也可以恢复删除的文件.在某些情况下,仅删除是不够的.例如,当您要丢弃旧的SD卡时,应确保 ...

  5. 在STM32下完成对SD卡的数据读取

    目录 一.SD卡介绍 二.SPI协议 三.操作过程 1.初始化 2.线路连接 3.修改代码 四.编译运行 五.结果演示 ​ 六.参考文献 一.SD卡介绍 SD存储卡是一种基于半导体快闪记忆器的新一代记 ...

  6. 简述arm linux内核启动流程,Linux内核启动过程和Bootloader(总述)

    1.Linux内核启动过程概述 一个嵌入式 Linux 系统从软件角度看可以分为四个部分:引导加载程序(Bootloader),Linux 内核,文件系统,应用程序.其中 Bootloader是系统启 ...

  7. linux初始化启动文件,Linux 的初始化与启动过程

    我们运行程序只需要点击应用程序的图标就可以了,但在这之前,我们必须启动我们的系统.在一切之前,我们必须有某些程序去引导我们系统的内核,这些程序就是内核引导程序了,例如LILO.GRUB.U-Boot. ...

  8. firefox linux脚本启动,在Linux终端中使用后台运行模式启动程序的方法

    这是一个篇幅不长但是十分有用的教程,可以帮助你在终端启动一个Linux应用程序,并且使终端窗口不会丢失焦点. 我们有很多可以在Linux系统中打开一个终端窗口的方法,这取决于你的选择以及你的桌面环境. ...

  9. 低温linux内核启动readl,Linux内核启动流程分析(一)

    很久以前分析的,一直在电脑的一个角落,今天发现贴出来和大家分享下.由于是word直接粘过来的有点乱,敬请谅解! S3C2410 Linux 2.6.35.7启动分析(第一阶段) 1.依据arch/ar ...

最新文章

  1. 用python简单处理图片(2):图像通道\几何变换\裁剪
  2. matlab可达性分析,毕业论文 Petri网系统的可达性研究
  3. Python ——告白小程序,添加微信号(快来设置你的freestyle吧)
  4. C++ string字符串常见操作函数
  5. 对cookie与session的理解
  6. @程序员,你的 996,可能是给公司无能的管理背锅
  7. Vue报错'Do not use built-in or reserved HTML elements as component id:解决方法
  8. 迪杰斯特拉算法 php,最短路径算法
  9. 2018linux市场份额数据,2018年7月Windows 10市场份额上涨,Linux仅占1.35%
  10. 墨卡托投影和高斯-克吕格 (Gauss-Krüger) 投影
  11. 字节跳动社招Java常见面试题
  12. 游戏实时语音解决方案是怎么炼成的
  13. Android 进阶自定义View(5)图表统计PieChartView圆饼图的实现
  14. 服务器无法通过系统,Day 10246 服务器无法通过系统非页面共享区来进行分配,因为服务器已达非页面共享分配的配置极限...
  15. Codechef April Challenge 2019 游记
  16. 关于Android 日历事件的实现
  17. Java全栈学习路线-拭去心尘
  18. 高效又稳定的ChatGPT大模型训练技巧总结,让训练事半功倍!
  19. html中的ppt文字不清晰,PPT文字太少怎么办!高手必备的PPT救场技巧
  20. 带信号灯的最短路dijkstra问题(阿里巴巴2018校园招聘算法题)

热门文章

  1. 华南师大19级计算机学院专硕上机题
  2. input输入框不可编辑
  3. IDEA官网进不去解决方法
  4. 名人 经典 语录(史玉柱)
  5. J2EE中使用Spring AOP框架和EJB组件
  6. ps5上有什么好玩的游戏
  7. Poppin 技术点
  8. 射雕三部曲---故事年表
  9. python数据处理——将横轴设为时间,两个纵轴为不同单位的图
  10. @Temporal的使用