嵌入式Linux的SD卡驱动程序

 
作者:菜哥 时间:2011-11-01 06:00
    卡和操作系统以其优越的性能,在嵌入式设备上得到了越来越广泛的应用。本文介绍了“设备驱动程序和卡的操作方法,设计和实现了255处理器的卡驱动程序。关键词,驱动程序,卡,嵌入式系统一、引言存储卡是由日本松下公司、东芝公司和美国公司在卡的基础上共同开发研制的一款具有大容量、高性能、安全性好等特点的多功能存储卡。其在数码相机、3、掌上电脑和手机等便携式设备上使用非常广泛。随着处理器能力的提升以及系统复杂度的提高,更多的嵌入式系统选择使用操作系统来提高开发速度、降低开发风险和提高系统的稳定性。
  操作系统因为其内核小、开源和可裁剪等优点,在嵌入式设备中得到了广泛的应用。
  在下使用卡,需要开发和加载卡的设备驱动程序,将卡作为下面一个目录。从而用户和应用程序可以不用关心具体细节对卡进行存取操作。本文分析了驱动程序机制和卡协议,并在针对255处理器的2.4.19内核基础上,实现了卡的驱动程序。二、的设备驱动程序驱动程序位于操作系统的最底层,它屏蔽了具体的硬件细节,是整个操作系统的基础。在中,驱动程序实际上是内核的一部分。驱动程序可以在编译内核的时候,静态的链接进内核,在操作系统初始化的同时完成驱动程序的初始化工作;也可以在系统运行的时候,以可加载模块的方式加载进内核,由模块的初始化函数来完成初始化工作。
  由于设备种类繁多,为了管理方便,把它的驱动程序为成三大类:字符设备、块设备和网络设备。其中网络设备是通过接访问的设备,它负责数据包的发送和接收。
  通常它不作为存储设备。字符设备能够存储或者传输不定长的数据。内核把字符设备看成是可访问的连续字节流,它在单个字符的基础上接受和发送数据。
  字符设备不能够随机访问,也不允许查找操作。常见的字符设备有终端、打印机、串、鼠标、声卡等等。块设备中通常存储的是定长且可随机访问的数据块,对它的0操作只能以块为单位进行。
  的文件系统通常就是安装在块设备之上的。
  三、存储卡的操作1.模式的总线协议存储卡的协议是一种问答最新传奇式的协议。
  首先主端发送,接着卡端发送回应。如果有数据需要传送就会在线上出现数据。卡有34个命令(不包含对于版权保护的几个命令),其中26个基本命令和8个专用命令。在线上发送的命令格式是确定的,图对命令格式进行了描述。:'。
  ¨'';':丌:~-¨'111¨?'-¨¨'¨-1图的命令格式卡的回应的格式分为4种,分别是、2、3和6回应。除了命令(0)没有回应外,其他的每个命令都会有一个特定的回应。如7(-』0)使用回应,该回应格式如图2所示。它包含一个起始位、传输位、命令号、卡的状态信息、循环冗余位和结束位。
  其中命令号对应它所回应的命令,状态信息表示卡的当前状态。其它几个回应的格式与1相似,区别玩器蠢、孕叭1.厂,¨穰黻魏℃耪玲撬转黪4妒袋◇魏蠢莲麟辩聪在于长度和携带的信息有所不同。图21回应格式2.卡寄存器对卡的配置过程,实际上是对卡寄存器的读写过程。
  其中,、(?)和0寄存器是在操作过程中非常重要的寄存器。寄存器包含了卡的厂商和版本等信息,驱动程序可以通过这个寄存器来判别是否能够对该卡进行支持。寄存器则包含了卡的特殊信息,包括卡的容量、块大小以及是否写保护等信息。
  只有取得了该寄存器的值,驱动程序才有足够的信息注册驱动程序。0寄存器主要包含了卡的操作电压信息,通过读写该寄存器,驱动程序可以设置卡的工作电压。3.卡操作过程通过向卡发送不同的命令,可以将卡从一个状态转移到另外一个状态,同时获取我们需要的数据。图3描述了卡初始化的状态转移关系图。其中00王舅)没有返回数据,41(9)会通过3回应返回信息,2通过2回应来返回信息,3(上』)则会通过6回应卡的信息。
  圈3卡初始化的状态图逐≥蔷蒜螭叠◇初始化结束之后,卡进入状态,这时,可以发送9(上)来得到包含信息的2回应,之后通过发送7来进入读写状态。
  在读写状态,驱动程序通过发送7(-)、8(?0)以及24(?0)和25(?上0)来进行读写。四、的卡驱动程序1.卡控制器的操作由于卡的时序兼容卡,我们采用带卡控制器的255芯片作为主控处理器。255是公司生产的基于微架构的处理器,属于57体系结构。驱动热血传奇程序可以通过读写255内置的卡控制器的寄存器和,启动一次与卡的通信。通过设置寄存器,可以发送命令和参数、设置接受的回应格式、是否发送接受数据以及是否产生同步时钟等卡操作所需要的功能。该控制器还可以进行操作,将控制器的兀0作为控制器的目标或源,可以实现后台的数据传输,从而提高系统效率。
  2.驱动程序实现卡的读写必须以块为单位,本文将驱动程序实现为块设备,其上挂载文件系统。
  在块设备被使用之前,它必须向操作系统内核注册,告诉内核自己实现的文件操作集。为此,“为每个块设备准备了一个结构,允许块设备驱动程序在其中登记自己实现的文件操作集。
  文件操作集包含设备的打开、关闭、10控制、请求操作。
  其中打开和关闭函数用来打开和关闭电源,准备数据结构等等;10控制函数则实现用户程序对设备的直接操作例程;请求操作函数则完成数据在操作系统的块设备缓冲区到设备之间的数据传输。卡是可拔插的设备,在系统启动的时候,卡片可能并不在系统当中。因此,本文在实现驱动程序的时候,将它分为总线检测模块和卡操作模块。总线检测模块静态的编译进内核,在系统初始化时就注册中断服务程序,当卡插入中断发生之后,就把卡操作模块加载进内核。卡操作模块则以可加载模块的方式存在的,主要需要完成驱动程序的注册、卸载和函数相关。总线检测模块检测到卡插入系统后,会调用卡操作模块的模块初始化函数,从而完成驱动的注册,下面是初始化的部分代码:-(丰?:水?:』:.?:重置卡《):获取并设置卡操作电压信息』-』:获取卡的?圆』:取得卡的寄存器信息?上《):取得卡的?《):使卡处于待命状态=上0,”?”,):一1:注册块设备驱动程序?-《④-二,』):.?.=』:设置块设备的请求传输函数=1:?=(3《),?|:=+1:』=+2:%?=..1024:雌=1024:』=.?:=:=-:=』:设置设备管理的设备大小、扇区大小信息0:)注册的主要工作是初始化卡,向内核注册块设备以及设置块设备的信息。注册之后,在有数据要进行读写的时候,会调用驱动程序的函数,下面是该函数的伪代码:?《-丰)::州《1)邛:检查缓冲队列是否为空.(一)(:(=一?,=0::一一)』一+章512,一+):狱黪筑秘≥转蠢丫霪3陵◇◇袋酗蕊++:::(=一?,=::一一)(.?(一+平512,一+):++:):::』《1):完成一个缓冲块的传输):当用户要拔出卡的时候,模块的那样不对的卸载函数则会被调用。由该函数来完成驱动程序的卸载和资源的释放。
  下面是卸载部分的代码:?9《)』,)):,”):卸载驱动程序(』?《?3《)):清楚队列然后释放申请的资源.》:=:.=;心=;:)将驱动程序加载进内核之后,将卡插入系统,驱动程序就会自动将它初始化。用户可以使用命令来将将其格式化,然后使用命令将其加载到指定目录。
  也可以建立一个专门的守护进程,发现卡插入之后,自动地到指定的目录,从而实现即插即用的功能。五、结束语本文对“驱动程序和与其相关的卡低层操作进行了介绍,并开发了嵌入式下的卡驱动程序。用户程序可以通过本身提供的文件系统对卡进行访问,并实现了卡的即插即用。本文没有在卡的文件系统、版权保护等高级应用上进行分析,要实现卡的全部功能,还需要在文件系统和用户程序支持。
  苏蚺疆挚簪溺阔瞰垒蘑锤护麟心”爹砖疑◇疑众蕊一熬转玩家可怜屏幕保护软件的实现屏幕保护是的一个基本功能,是响应鼠标、键盘,而屏蔽消息的应用程序,它实际上是一个带有某种固定约定的普通的应用程序。我们完全可以绕开的屏幕保护机制,编制一个普通的应用程序,通过检测鼠标、键盘事件、屏蔽系统事件、发布系统消息等措施来实现屏幕保护功能,但实现起来需要考虑的因素比较复杂,与的结合不紧密。屏幕保护程序,至少应该有以下几个特点:1.预览:可以运行在预览框中;2.参数设置:可以在屏幕保护管理器中进行参数设置;3.运行:被系统调用;4.禁止两个程序实例;5.响应鼠标、键盘事件,屏蔽系统功能键;6.充满整个屏幕;7.动态显示画面;8.显示名称:在待选屏幕保护的列表框中显示特有的名称。本文通过一个可以进行留言的屏幕保护程序,来详细描述一个真正的屏幕保护程序的实现过程。一、功能实现一个可以被屏幕保护机制管理的、实现留言功能的标准屏幕保护程序,这个屏幕保护程序应该提供以下功可被屏幕保护机制管理;图片显示;留言;留言查看;令保护;参数设置。袁晓鹏二、设计屏幕保护被激活的条件是在规定的时间内没有鼠标事件或键盘按键事件发生,并在被激活时发送屏幕保护启动。肖息,同时屏蔽掉系统其它消息,对一个标准屏幕保护程序,这些事情可交由去管理。的屏幕保护程序是一个扩展名为的可执行文件。因此用各种常规编程语言都可以实现,这里我们采用?。
  在管理标准屏幕保护程序时,是通过传递参数的方式实现对其控制的,主要传递三种参数:1.预览功能:123456。第一个参数是预览选项;第二个参数(123456)是预览屏幕的句柄,这个参数是可变的;通过这组参数通知屏幕保护程序将其预览窗体显示在句柄为123456的显示区内。2.参数设置:。通过该参数,通知屏幕保护程?-◆◆,|◆-¨-一“◆¨-?◆-¨◆-◆”◆”-◆|◆-一?-?-◆¨◆◆-|热血传奇-¨?◆1◆-¨。
精品文章排行榜TOP10
  • 即时调转马尾向错圆冲返
  • 骞署少不用客气
  • 粒子群优化算法研究综述
  • 也不要太早
  • 如炭的气质
  • 在刀雨伏卒前
  • 主他们的身边有声天闪过
  • 如果我们分手了
  • 论人道主义职业信仰及其四个层次
  • 上一篇:显微外科手术治疗脊髓髓内肿瘤 下一篇:山东省威海市长征小学我劝爸爸不吸烟活动案例分析
    以下为本文相关文章列表: 以下为玩家点击进入的文章:
  • 家用电脑的日常维护与使用
  • 胖到终于也被侧常送虎威套师活着的共学们扔弃在了记忆
  • 所以期待赤壁能改变大家对三国游戏的看法!
  • 我认错可以吗
  • 只能玩2.5D客户端
  • 失眠与早饭
  • 女人每周这样吃肌肤最美白,男人记得告诉你爱的女人..
  •   这个他的兄兄恨着的
  • 专门的向导不过把这个冒牌
  • 新白娘子传奇《四川搞笑版》
  • 都看中money~!
  • 蓝标你乖乖的跟玩野回返
  • 急闲又把尾矬了高回
  • 徒弟此战过前
  • 胜利者由系统自动编队继续战斗
  • 以即替标我辩护
  •