




已阅读5页,还剩51页未读, 继续免费阅读
(计算机应用技术专业论文)嵌入式系统存储卡驱动研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
华中科技大学硕士学位论文 摘要 为了在嵌入式l i n u x 中能够方便快捷地使用“非易失性”的嵌入式存储卡,有 必要对嵌入式l i n u x 中的存储卡驱动开发加以研究,从而构筑一个嵌入式l i n u x 的 存储子系统。根据嵌入式l i n u x 的特点,在其中进行存储卡驱动开发所要用到的各 种关键技术包括核心模块的构建、设备控制器的抽象化、用户模块的搭建、设备读 写请求的处理以及对存储卡的热插拔管理。 为了实现嵌入式存储子系统,首先必须构建一个存储子系统模型,它包括文件 系统、块设备管理器以及存储卡驱动三部分。在该模型的基础上,将嵌入式存储子 系统的开发过程分为需求分析、开发环境的建立以及进行存储卡驱动的设计三大步, 其中存储卡驱动的设计是研究的重点。 在现有技术条件下,闪存卡是嵌入式存储卡的首选,而紧凑存储卡 ( c o m p a c t f l a s h 存储卡,简称c f 卡) 是目前嵌入式系统中应用最为广泛的f l a s h 存储卡。为了使c f 卡满足嵌入式l i n u x 存储卡的开发需求,在设计c f 卡驱动时, 根据c f 卡的硬件特性,分别为c f 卡的内存寻址方式和输入输出方式构筑驱动开 发环境,并在此开发环境中通过i d e ( i n t e g r a t e dd r i v ee l e c t r o n i c s ) 管理来实现c f 卡在这两种工作方式下的驱动,且从关键技术、硬件环境、接口配置、后半部处理 方式等方面比较c f 卡在这两种工作方式下驱动设计的异同。 嵌入式存储卡要求使用方便,一大特色就是对其能够进行热插拔管理。为了实 现嵌入式l i n u x 中对c f 卡、多媒体卡这类存储卡的热插拔,首先要构筑特定的系 统环境以支持这些存储卡的热插拔管理,并从操作系统层和应用程序层两个层次来 实现这些存储卡的热插拔管理模块。 关键词:嵌入式系统,存储设备,驱动,闪存卡,热插拔 华中科技大学硕士学位论文 a b s 仃a c t i no r d e rt oc o n v e n i e n t l ya n ds w i f t l yu s en o n v o l a t i l ee m b e d d e ds t o r a g ec a r d si nt h e e m b e d d e dl i n u x ,i ti s n e c e s s a r yt oi n v e s t i g a t et h ed e v e l o p m e n to ft h es t o r a g ec a r d d r i v e r si nt h ee m b e d d e dl i n u x s e q u e n t i a l l yas t o r a g es u b s y s t e mc a nb ec o n s t r u c t e d a c c o r d i n gt ot h ec h a r a c t e r i s t i c so ft h ee m b e d d e dl i n u x ,t h ek e yt e c h n i q u e sw h i c ha r e u s e di nt h es t o r a g ec a r dd r i v e r s d e v e l o p i n gs c h e m e sa r ep r o b e di n t oi nt h es y s t e m ,s u c h 踮c o n s t r u c t i n gt h ec o r em o d u l e sa c c o r d i n gt ot h ed e v i c e ss p e c i f i c a t i o n t h ea b s t r a c t i o n o ft h ed e v i c e s c o n t r o l l e r ,b u i l d i n g t h e u s e r s m o d u l e s ,d e a l i n gw i t ht h er e a d i n go r w r i t i n gr e q u e s tt ot h ed e v i c e ,t h eh o tp l u gm a n a g e m e n tt ot h ee m b e d d e ds t o r a g ec a r d s , a n ds oo n t oi m p l e m e n tt h es t o r a g es u b s y s t e m ,as t o r a g es u b s y s t e mm o d e li sb u i l d e df i r s t , w h i c hi n c l u d e sf i l es y s t e m s ,am a n a g e rt ob l o c kd e v i c e sa n ds o m ec a r dd r i v e r s b a s e do n t h em o d e l ,t h ed e v e l o p i n go ft h es t o r a g es u b s y s t e mc a nb ed i v i d e di n t ot h r e ep a r t s ,s u c h a st h es y s t e m sd e m a n d a n a l y s i s ,t h ec o n s t r u c t i n go f t h ed e v e l o p i n ge n v i r o n m e n ta n dt h e d e s i g n i n go f t h es t o r a g ec a r d sd r i v e r ,w h i c hi st h es t u d y i n ge m p h a s i si nt h ep r o j e c t u n d e rt h et e c h n i q u ec o n d i t i o n si ne x i s t e n c e ,t h ef l a s hc a r di st h ef i r s ts e l e c t i o no f t h ee m b e d d e ds t o r a g ec a r d s w h i l et h ec o m p a c t f l a s h s t o r a g ec a r d s ,t h es h o r t e n e df o r m a sc f c a r d s ,a r et h em o s tw i d e l yu s e df l a s hc a r d si nt h ee m b e d d e ds y s t e ma tp r e s e n t t h e d e v e l o p m e n td e m a n do f t h es t o r a g ed e v i c em u s tb ef i l l e di nt h ee m b e d d e dl i n u xw h i l e d e s i g n i n gt h ed r i v e r so f t h ec fc a r d s oa c c o r d i n gt ot h eh a r d w a r ec h a r a c t e r i s t i c so f t h e c fc a r d ,t h ed e v e l o p m e n te n v i r o n m e n t sf o rt h ec fc a r d st w oa d d r e s s i n gm o d e s ,t h a ti s t os a yt h em e m o r ym o d ea n dt h ei 0 ( i n p u t o u t p u t ) m o d e ,a r es e p a r a t e l yc o n s t r u c t e d t h e nb a s e do nt h ee n v i r o n m e n t ,t h ed r i v e rt h r o u g ht h ei d e ( i n t e g r a t e d d r i v ee l e c t r o n i c s ) m a n a g e r f o re a c ha d d r e s s i n gm o d eo fc fc a r di s i m p l e m e n t e d ,a n dt h es i m i l a r i t i e sa n d d i f f e r e n c e si nt h et w om o d e s d r i v e rd e s i g n i n ga r e c o m p a r e di n s u c ha s p e c t sa s k e y t e c h n i q u e s ,h a r d w a r ee n v i r o n m e n t s ,t h ei n t e r f a c e s c o n f i g u r a t i o n ,t h eb o t t o m h a l f d i s p o s i n gm o d e ,a n ds oo n t h ee m b e d d e ds t o r a g ec a r d ss h o u l db eu s e dc o n v e n i e n t l ya n do n ef e a t u r e i st h a t t h e i rh o tp l u gc a nb e m a n a g e d i no r d e rt oi m p l e m e n tt h eh o tp l u gt os u c hs t o r a g ec a r d s i i 华中科技大学硕士学位论文 a sc fc a r da n dm u l t i m e d i a c a r dc a r d ,t h e s u p p o r t i n ge n v i r o n m e n tf o rt h eh o tp l u g m a n a g e ra r ec o n s t r u c t e di nt h ee m b e d d e dl i n u x t h e nh o tp l u gm a n a g i n gm o d u l e sf o r s u c hs t o r a g ed e v i c e sa r ei m p l e m e n t e d t h r o u g h t h eb o r o m o p e r a t i n gs y s t e ml e v e la n dt h e u p p e ra p p l i c a t i o n1 e v e l k e yw o r d s :e m b e d d e d s y s t e m ,s t o r a g ed e v i c e s ,d r i v e r ,f l a s hc a r d s ,h o t p 1 u g 独创性声明 本人声明所呈交的学位论文是我个人在导师指导下进行的研究工作及取得 的研究成果。尽我所知,除文中已经标明引用的内容外,本论文不包含任何其他 个人或集体已经发表或撰写过的研究成果。对本文的研究做出贡献的个人和集体, 均已在文中以明确方式标明。本人完全意识到本声明的法律结果由本人承担。 学位论文作者签名:罗盈 日期:夕一口口争年年月纠日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,即:学校 有权保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅 和借阅。本人授权华中科技大学可以将本学位论文的全部或部分内容编入有关数 据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 保密口,在年解密后适用本授权书。 本论文属于 不保密e 托 ( 请在以上方框内打“”) 学位论文作者签名:罗盈 日期:动听年年月纠日 指导教师签名卵w 匆阳 日期:以年月妒日 华中科技大学硕士学位论文 1 1 课题背景 1 绪论 伴随着二十一世纪的曙光,人类迎来了一个充满希望的新时代。而作为二十世 纪人类社会最伟大的发明之一,计算机也迈入了其另一个充满机遇的阶段后p c ( p e r s o n a lc o m p u t e r ) 时代i l 】。不知不觉中,形式多样的数字化产品已经开始继p c 机之后成为信息处理的一大主要工具f 2 j ,并且正在逐步形成一个充满商机的巨大产 业。 后p c 时代的到来,使得人们开始越来越多地接触到一个新的概念嵌入式 产品。像手机、p d a ( p e r s o n a ld i g i t a la s s i s t a n t ) 等均属于手持的嵌入式产品【3 j ,v c d ( v i d e 0c o m p a c td i s k ) 机、机顶盒等也属于嵌入式产品【4 ,”,而像数控机床、网络 冰箱等同样都采用嵌入式系统1 6 。8 1 嵌入式系统在应用上的特殊性决定了其组成上的特殊性,实际上并不存在标准 的嵌入式系统组成。但每一个系统在硬件上都有c p u ( c e n t r a lp r o c e s s i n gu n i t ) 、 存储器、i o ( i n p u t o u t p u t ) 子系统这三大组成部分。在软件成分上则是嵌入式操 作系统网。嵌入式l i n u x 是嵌入式操作系统的一个新成员,其最大的特点是源代码 公开并且遵循g p l ( g e n e r a l p u b l i cl i c e n s e ) 协议i l “。 与其他的嵌入式操作系统相比,嵌入式l i n u x 具备稳定、高效、易定制、易裁 减、硬件支持广泛以及免费、开放源代码等特点,并具有一些独特的优势 1 4 - 7 l 。第 一,l i n u x 系统是层次结构且内核完全开放。l i n u x 是由很多体积小且性能高的微内 核和系统组成。在内核代码完全开放的前提下,不同领域和不同层次的用户可以根 据自己的应用需要很容易地对内核进行改造,在低成本的前提下,设计和开发出真 正满足自己需要的嵌入式系统。第二,强大的网络支持功能。l i n u x 诞生于因特网 并具有u n i x 的特性,这就保证了它支持所有标准因特网协议,并且可以利用l i n u x 的网络协议栈将其开发成为嵌入式的t c p i p ( t r a n s m i s s o nc o n t r o lp r o t o c o l i n t e r n e t p r o t o c 0 1 ) 网络协议栈。第三,l i n u x 具备一整套工具链,容易自行建立嵌入式系统 的开发环境和交叉运行环境,并且可以跨越嵌入式系统开发中仿真工具的障碍。一 般开发嵌入式操作系统的程序调试和跟踪都是使用仿真器来实现的,而使用l i n u x 华中科技大学硕士学位论文 1v,r, 系统做原型的时候,可以绕过这个障碍,直接使用内核调试器来做操作系统的内核 调试和查错。第四,l i n u x 具有广泛的硬件支持特性。无论是r i s c ( r e d u c e di n s t r u c t i o n s e tc o m p u t e r ) 还是c i s c ( c o m p l e xi n s t r u c t i o ns e tc o m p m e r ) 、3 2 位还是6 4 位等 各种处理器,l i n u x 都能运行。l i n u x 最通常使用的微处理器是i n t e lx 8 6 芯片家族, 但它同样也能运行于m o t o r o l a 公司的6 8 k 系列c p u 和i b m ( i n t e r n a t i o n a lb u s i n e s s m a c h i n e s ) 、a p p l e 、m o t o r o l a 公司的p o w e r p cc p u 以及i n t e l 公司的s t r o n ga r m ( a d v m a c e dk i s cm a c h i n e s ) c p u 等处理器系统,这意味着嵌入式l i n u x 将具有更 广泛的应用前景【1 8 ,”j 。 由于嵌入式系统的特殊性,其存储器也不同于通用计算机中的存储器。嵌入式 系统一般都不采用磁盘,其操作系统和应用软件的映象以及必要的数据,都必须存 储在某种“非易失性”,即断电以后内容不会丢失的存储设备中。 每一种存储器都离不开其驱动对它的支持。方便、快捷的存储卡设备驱动一直 是人们追求的目标。本课题的目的就是对嵌入式系统中的存储卡驱动进行研究,从 而为嵌入式l i n u x 建立一个存储子系统。 1 2 国内外概况 嵌入式l i n u x 中存储设备驱动是随着嵌入式存储设备的变化而不断发展的。因 此,我们结合嵌入式存储设备的概况来研究其驱动的发展状况。 1 2 1 嵌入式存储设备的概况 在嵌入式l i n u x 中,可选的嵌入式存储设备可分为以下几类: 1 易失性的读写存储设备,如r a m ( r a m d o ma c c e s sm e m o r y ) 。其内容只 能在有电源时才能够保持。在嵌入式l i n u x 中,其驱动和通用r a m 驱动类似。 2 非易失性的存储设备。主要有以下几种:掩膜式r o m ( r e a d o n l y m e m o r y ) 、 可编程r o m ( p r o m ,p r o g r a m m a b l e r o m ) 、可擦除r o m ( e p r o m ,e r a s a b l e p r o m ) 、 闪存 2 0 - 2 2 】。闪存在本质上是一种e e p r o m ( e l e c t r i c a l l ye r a s a b l ep r o m ) ,但它在 正常的工作电压和电流下就可以进行擦除和重写。这是个很大的优点,因为这样就 可以在目标系统中“在线”地改变其内容了。例如,现在p c 机的b i o s ( b a s i ci n p u t o u t p u ts y s t e m ) 内容都放在闪存芯片中,因此当有新版的b i o s 出来时,就可以通 过网络下载并写入闪存芯片,很方便地达到了版本更新的目的。有些嵌入式系统, 2 华中科技大学硕士学位论文 特别是一些网络设备,甚至还可以由设备的提供商通过网络遥控,自动地完成软件 版本的更新。不过,对闪存的写入要比读出慢得多,并且很麻烦,必须在写入之前 成片地擦除原有的内容,而不能直接在原有内容上重写。 显然,在现有的技术条件下,闪存是最理想的菲易失性存储器,而且近年来闪 存芯片的窑量增长很快,而价格则大幅下降,所以现在一般都已采用闪存,而 e p r o m 已逐渐少用【2 3 ,2 4 1 。 现在f l a s h 包括内置的f l a s h 芯片和外置的f l a s h 存储卡。对f l a s h 芯片来说, 在l i n u x 中有m t d ( m e m o r yt e c h n o l o g yd e v i c e ) 技术对其支持,这种技术相对成 熟,不在本文讨论之列。本文着重讨论f l a s h 存储卡。 使用f l a s h 存储卡的历史开始于p c 存储卡,其标准由p c m c i a ( p e r s o n a l c o m p u t e rm e m o r y c a r di n t e r n a t i o n a la s s o c i a t i o n ) 建立于1 9 9 0 年盼“。然后,随着 1 9 9 2 年p c 卡标准的修订版本,p c a t a ( p e r s o n a lc o m p u t e ra d v a n c e dt e c h n o l o g y a t t a c h m e n t ) 卡标准诞生了,它作为与a t a ( a d v a n c e d t e c h n o l o g y a t t a c h m e n t ) 兼 容的i o 卡,使用与a t a 同种类型的接口,可当作硬盘来使用。这种卡使用得非常 广泛,现在市场上的大部分笔记本电脑都包含使用这种卡的插槽。 1 9 9 8 年,m m c ( m u l t i m e d i a c a r d ) 卡和m e m o r ys t i c k 发布。它们的体积更小, 且主要用于小设备( 如便携式音乐唱机) 上面。1 9 9 9 年,其后继产品一带有保护功 能的卡出现了,即m a g i cg a t em e m o r ys t i c k 、s d ( s e c u r ed i g i t a l ) m e m o r y 卡和 s m m c ( s e c u r e m u l t i m e d i a c a r d ) 。其中,s m m c 是一种带有保护功能的m m c 卡, 并且与一般的m m c 卡兼容。 1 2 2 嵌入式l i n u x 中存储卡驱动的研究概况 由于嵌入式l i n u x 的开放源代码特性,存储卡驱动的编写也是开放性的,既可 以由存储设备开发商提供,也可以由开放源代码组织进行标准化,当然也可以由用 户进行定制。因此嵌入式l i n u x 的存储卡驱动可以分为多平台的多卡驱动开发包和 标准化的单一种类存储设备驱动包。 1 。多平台的多卡驱动开发包 与各种嵌入式存储设备相配套的是设备驱动。为缩短嵌入式产品的开发周期并 增加其产品的竞争力,许多存储卡生产厂商都为其设备提供相应的设备驱动【2 7 2 9 】, 使得其设备的适应性更强。这里我们看一下s a n d i s k 的主机开发包( h d t k ,h o s t d e v e l o p e r st o o lk i t ) 。 华中科技大学硕士学位论文 s a n d i s k 的主机开发工具包是一个集成的解决方案,用来管理f l a s h 存储设备上 的高端数据。一旦集成到应用程序或者操作系统中,h d t k 就提供完全的文件系统 功能来管理存储设备上的数据。 可以说,s a n d i s k 的主机开发工具包包含了开发者把s a n d i s kf l a s h 数据存储产 品集成到任何平台上所需要的所有配件。 h d t k 主要在两个层次上进行操作: ( 1 ) 在高端层次,s a n d i s k 的h d t k 提供了个本地f a t ( f i l e a l l o c a t i o n t a b l e ) 文件系统。它与d o s ( d i s ko p e r a t i n gs y s t e m ) 操作系统完全兼容。存储介质在许 多操作系统环境( 如d o s 、w i n d o w s 、l i n u x 等) 下可通用。 ( 2 ) 在低端层次,h d t k 对f l a s h 存储介质提供不同的设备驱动接口。用有限 软件支持的平台可以充分利用这种非正式的软件结构,它增加了系统的磁盘子系统 功能。h d t k 软件包一0 1 包含a t a 、i d e ( i n t e g r a t e d d r i v e e l e c t r o n i c s ) 驱动:h d t k 软件包一0 2 包含m m c 卡、s p i ( s e r i a l p e r i p h e r a li m e r f a c e ) 驱动。 在许多不需要文件系统的嵌入式应用中,h d t k 能通过它的低端驱动来对f l a s h 存取设备进行直接存取,通过外设总线设备驱动提供对s a n d i s kf l a s h 产品的低端 i ,o 存取。 2 标准化的单一种类存储设备驱动包 嵌入式存储设备品种众多,每一种类都有相应的协会对其应用进行推广,并建 立相应的规范说明。这样,驱动开发者就能够遵循该规范编写驱动程序,并运用面 向对象的方法,使得驱动标准化,编写也更加方便。l i n u x 中的u s b ( u n i v e r s a ls e r i a l b u s ) h o s t 包、p c m c i a 软件包即是典型的标准化包。 我们知道,在l i n u x 中存在一个“u s bc o r e ”的子系统,它有一个特殊的应用 接口来支持u s b 设备和主机控制器,其目的是通过定义一系列数据接1 3 、宏和函数 来抽象化所有的硬件或者设备独立部分 3 0 3 3 】。u s bc o r e 包含对所有u s b 设备驱动 和主机控制器驱动一致的程序。这些函数可以组合成一个高端或者低端a p i ( a p p l i c a t i o np r o g r a m m i n gi n t e r f a c e ) 层。在l i n u x 中对u s b 设备和主机控制器分 别有一个a p i 。假定完成了主机控制器驱动,这里主要谈谈u s b 设备驱动u s b s t o r a g e 的开发。u s bs t o r a g e 是u s bc o r e 的一个子系统。u s bs t o r a g e 驱动在u s b c o r e 中进行注册或者撤销。u s b 的a p i 包括一系列函数来选择或者查询描述器、配 置可选的设备设置。所有这些标准操作都是通过对设备的控制传输来完成的。u s b s t o r a g e 的探测函数s t o r a g e a ) r o b e 根据a p i 找到应用u s b 接1 3 的f l a s h ,然后配置同 f l a s h 相关的u s b 读写函数即可。整个驱动为标准的层次结构形式。 4 华中科技大学硕士学位论文 = = = j 自= = = = = = = = = = = = = = = # = = = = _ 自;= = = = = 1 3 嵌入式存储卡驱动的主要关键技术 嵌入式l i n u x 存储卡驱动程序的开发主要集中在以下几个方面:核心模块的建 立、设备抽象层的实现、用户模块的搭建、设备读写请求的处理以及存储卡热插拔 技术的管理。 1 _ 3 1 核心模块的建立 设备驱动程序必须为系统内核或者他们的子系统提供一个标准的接口,该接口 使得驱动的开发更加程序化、规范化瞰3 5 】。例如,一个s c s i ( s m a l lc o m p u t e rs y s t e m i n t e r f a c e ) 设备驱动程序应该为s c s i 子系统提供个s c s i 设备接口;一个u s b 设 备驱动程序要为系统内核和u s b 子系统提供u s b 接口( 包括文件i t o 和缓冲区等) 。 为了推广设备的应用,每一个设备都有一个协会对其进行标准化并制定规范说明。 该规范的实现即是此类设备的抽象化。设备的抽象化构成了驱动的核心模块,通过 它来为系统内核或者他们的子系统提供标准的接口。 1 3 2 设备控制器抽象层的实现 一般来说,对设备进行的操作,最终是通过适配器( 即控制器) 来完成的 3 6 ,3 7 。 虽然此类设备的核心模块提供了该类设备统一的对外接口,但由于各个系统中c p u 以及主板等硬件设备的不同,造就了相应的设备适配器也就不尽相同。这样,针对 不同的适配器,需要对其进行相应的抽象。如i n t e lp x a 2 5 5 系列产品中m m c 卡的 适配器就不同于m o t o r o l a 芯片中m m c 卡的控制器。控制器是设备栈的终极接口。 根据软硬件环境,我们必须抽象化不同的设备控制器。 1 3 3 用户模块的搭建 对用户程序而言,设备驱动程序隐藏了设备的具体细节,对各种不同设备提供 了一致的接口,一般来说是把设备映射为一个特殊的设备文件,用户程序可以象对 其它文件一样对此设备文件进行操作【3 8 ,3 鲋。l i n u x 对硬件存储设备支持两个标准接 口:块设备文件接口和字符设备文件接口。嵌入式存储设备一般都是面向块的i 0 华中科技大学硕士学位论文 操作,所有的i 0 操作都通过在内核地址空间中的缓冲区进行,可以支持几乎任意 长度和任意位置上的i o 请求,即提供随机存储的功能。l i n u x 中的主设备号唯一地 标识了设备类型,即设备驱动程序类型,它是块设备表或字符设备表中设备表项的 索引。次设备号仅由设备驱动程序解释,一般用于识别若干可能的硬件设备中i o 请求所涉及到的那个设备。用户模块通过主次设备号为设备在内核中建立映射,同 时,它也为用户程序提供一组固定的入口点。一般来说,该模块提供如下几个入 口点: o p e n 入口点:打开设备并准备i 0 操作。 c l o s e 入口点:关闭一个设备。 r e a d 入口点:从设备上读数据。 w r i t e 入口点:往设备上写数据。 i o c t l 入口点:对设备执行读写之外的操作。 s e l e c t 入口点:检查设备,看数据是否可读或者设备是否可用于写数据。 当然,驱动还可能提供一些其它的入口点。 1 3 4 设备读写请求的处理 在l i n u x 中,嵌入式存储设备一般是作为块设备而存在。对该设备的读写请求, 最终都归结为底层块设备读写处理。该处理分为i 0 请求服务子程序和读写服务子 程序f 4 1 1 。 i 0 请求服务子程序又称为驱动程序的上半部分。调用这部分是由于系统调用 的结果。这部分程序在执行的时候,系统仍认为和进行调用的进程属于同一个进程, 只是由用户态变成了核心态,具有此系统调用的用户程序的运行环境。 读写服务子程序又称为驱动程序的下半部分。若设备是通过中断来处理读写请 求的,则称为中断服务子程序。这时由l i n u x 系统接收硬件设备中断,再由系统调 用中断服务子程序。中断可以产生在任何一个进程运行的时候,因此在中断服务程 序被调用的时候,不能依赖于任何进程的状态,也就不能调用任何与进程运行环境 有关的函数。因为存储卡驱动程序一般支持同一类型的若干设备,所以一般在系统 调用中断服务子程序的时候,都带有一个或多个参数,以唯一标识请求服务的设备。 然而,有些设备没有中断可用,则需要通过轮询的方式来处理设备的读写请求。这 一般是通过查询设备的状态来完成。 华中科技大学硕士学位论文 一:目= 自= = = = = ;= ;= = f = = = 2 2 2 。2 4 。# 2 2 。2 1 3 5 存储卡热插拔技术的管理 嵌入式存储卡的一大特点是使用方便,即要做到即插即用 4 2 _ 4 4 1 ,这就要求在驱 动中对存储卡进行热插拔管理 4 ”。为了实现存储卡的热插拔管理,需要从内核层 和应用层这两个层次来实现。卡的热插拔事件首先要在内核层实现,通过中断或者 轮询得知热插拔事件,然后调用自动配置和初始化子程序,通过它来负责检测所要 驱动的存储卡是否存在和是否能正常工作。如果该设备正常,则对这个设备及其相 关的、存储卡驱动程序所必须的设备寄存器进行初始化。这部分驱动程序仅在初始 化的时候被调用一次。 在应用层,也要对热插拔事件进行管理。存储卡的最终用户是应用程序。应用 程序截获卡的热插拔事件之后,才能进行下一步处理。一般在应用层可以通过阻塞 方式 4 s - s l l 来捕获热插拔事件。 在热插拔事件的管理中,要尽量做到“傻瓜”,同时要合理利用资源,及时对 事件进行响应。 1 4 课题主要研究工作 鉴于嵌入式l i n u x 系统的优势以及嵌入式存储卡中f l a s h 存储卡的独特地位, 本文主要研究如何将它们结合在一起,即如何在嵌入式l i n u x 中应用f l a s h 存储卡。 与其他存储卡相比,紧凑存储卡( c o m p a c t f l a s h 存储卡,简称c f 卡) 卡市场认可 度高,且可以能够像人们所熟悉的a t a 硬盘那样方便地进行操作。因此本文以c f 卡为例,通过它在各种环境中的驱动来研究嵌入式l i n u x 存储卡驱动,从而为嵌入 式l i n u x 系统提供一个完善的存储子系统。 在研究嵌入式l i n u x 存储卡驱动的过程中,将完成如下工作: 1 为嵌入式l i n u x 存储子系统构建一个系统模型,并根据该模型分析存储子系 统开发的步骤以及关键部分。 2 研究嵌入式l i n u x 中c f 卡的驱动,即根据c f 卡的硬件特性,分别构造c f 卡在m e m o r y 方式、i o 方式下的开发环境,然后在相应环境中进行驱动设计,从 而得知驱动开发的关键技术以及如何根据工作环境来设计c f 卡的驱动,并分析c f 卡在两种工作方式下进行驱动设计的异同。 3 探讨存储子系统中对f l a s h 存储卡热插拔管理的硬件支持环境以及关键技 华中科技大学硕士学位论文 := := = = = = = = = = = ;= = ;= = = = = = # = ;= ;= = = = ;= = ; 术,并从系统层和应用层两个层面进行设计。 完成以上工作后,我们将能够得到一个嵌入式l i n u x 存储子系统,并将达到如 下目标:首先要支持指定的文件系统,如d o s 、f a t 、f a t 3 2 等系统;其次使得存 储卡在各种操作系统中通用,并能对设备进行有效的分区管理;同时能够根据硬件 设计要求,设计不同的数据寻址方式,如i o 方式、m e m o r y 方式等,并根据已有 的总线宽度进行对数据进行访问;最后,通过对存储卡的热插拔管理,让存储卡尽 量做到“傻瓜型”。 华中科技大学硕士学位论文 2 嵌入式存储子系统的开发构架 在嵌入式系统中应用存储卡,必须构建一个存储子系统。为此,我们首先给出 嵌入式l i n u x 中的一个存储子系统模型,然后根据该模型,分析嵌入式l i n u x 中存 储子系统的开发步骤。 2 1 系统模型 存储子系统一般包括文件系统、块设备管理器以及存储卡驱动,图2 1 示意了 l i n u x 中一个基本的存储子系统模型。 图2 ,1 嵌入式l i n u x 中存储子系统 嵌入式l i n u x 系统将存储设备视为文件;因此,可以利用l i n u x 文件系统来对 其设备进行管理。 首先,l i n u x 为用户程序提供一个统一的、抽象的、虚拟的文件系统界面,即 华中科技大学硕士学位论文 一= = = = ;= = = ;= = = = = = = _ 目= = = = = = = = # ;= = j = = = = 文件”,通过这些系统调用对文件进行操作,而无需关心具体的文件属于什么文件 系统以及具体文件系统的设计和实现。 嵌入式存储卡在l i n u x 中是以“块设备”的形式存在的【5 3 ,5 ”,即它们是以记录 块或“扇区”为单位,成块地进行输入输出的设备。l i n u x 系统通过一个块设备文 件来管理嵌入式存储卡。这个块设备文件抽象化各种块设备,通过b l k d e v s 将各种 的块设备组织起来。 为了方便地使用嵌入式存储卡,可将其上的数据按照一定的组织形式来存放, 即用普通的磁盘文件来组织数据。这个“文件”包含了两方面的信息,一是存储的 数据本身,还有一部分就是有关该文件的组织和管理的信息,这些信息都存储在“文 件系统”中,即存储设备上。嵌入式l i n u x 支持多种文件系统,如e x t 2 ( s e c o n d e x t e n d e d f i l e s y s t e m ) 、f a t 、j f f s 2 ( j o u n a l i n g f a l s hf i l e s y s t e m ) 、n f s ( n e t w o r k f i l e s y s t e r a ) 等。 当打开一个代表块设备的文件节点,对这个“块设备文件”进行读写时,就把 设备的内容看作一个字节流,而忽略其内容的组织。同样,当打开一个存在于块设 备上的普通文件时,就把这个特定的文件看作一个字节流,但是这个字节流按一定 的格式和规则映射到块设备上。同时,大容量的嵌入式存储卡可以迸行分区管理。 对嵌入式存储卡的读写操作,最终都是通过1 1r wb l o c k 0 完成的,即是通过块 设备管理器来完成的。在块设备管理器中,用r e q u e s t _ q u e u e 结构抽象化一个块设备 的请求队列,并将各种块设备的操作请求队列通过b l kd e v m a xb l k d e v 有效地 组织起来。在抽象化块设备的数据请求后,即可进入存储卡驱动来完成这些具体的 设备请求。 存储卡驱动层是直接与物理设备打交道的,即根据每个存储卡的硬件特性,进 行驱动设计,完成各种存储卡物理上的读写操作。常用的存储卡有m m c 卡、s d 卡、 s m m c 卡、c f 卡。 2 2 开发步骤 嵌入式l i n u x 存储予系统的开发是一个系统工程。为了提高系统开发的效率、 缩短研发周期,在对系统的各个组成部分进行详细分析的基础上同时深入研究系统 各组成部分间的依赖性、相关性,以便合理安排开发进度,尽可能她提高系统开发 的并行性。嵌入式l i n u x 存储子系统的开发般经过需求分析、建立开发环境以及 编写存储卡驱动等步骤。 华中科技大学硕士学位论文 2 2 。1 需求分析 需求分析主要是分析具体的应用要求,如功能、实时性、功耗、成本等,以便 构建个合适的嵌入式存储子系统。通常的需求包括: 速度一每种应用需求都有不同的读写速度,而存储卡的读写速度一般可调控, 故可以选择合适的速度来满足应用需求。 安全、容错性一不同应用环境对存储卡的安全、容错要求也不尽相同。如普通 用户只要存储系统能够方便快捷地存储数据就可以满足需求,而在军事部门或保密 部门的数据则一般要进行加密处理。这种类似的安全要求可以在应用层一级进行处 理,但在嵌入式存储子系统中也可以在驱动层来实现。同时,容错性也可以处理某 些误操作等非正常环境。 便携性一嵌入式存储卡一般是可以移动且可以升级的。用户是否提出这些要求 对驱动有很大的影响。若有这些要求,则需要设计热插拔管理程序,从而使得嵌入 式存储卡做到即插即用。 文件系统的选择不同平台上设备的数据组织方式不尽相同。选择哪种文件系 统来组织数据,需要用户三思。般来说,f a t 文件系统应用较早,从而也比较通 用,所以系统一般应该支持f a t 文件系统。 此外,根据不同的应用环境,可能还有其它需求,这里不再讲述。 2 2 2 开发环境的建立 首先要根据需求分析进行存储卡选型。在满足基本需求的同时,尽量做到最大 的性价比。通常的硬件环境有a r m 、m i p s ( m i l l i o n i n s t r u c t i o n p e rs e c o n d ) 、m o t o r 0 1 a 等开发板。根据这些硬件环境,就可以选择相应的存储卡。本文着重探讨在a r m 开发平板下构建利用c f 卡作为存储设备的存储子系统。 同时,由子大部分嵌入式l i n u x 系统都是基于非p c 平台的,而且嵌入式系统 本身的硬件资源有限,无法在上面进行直接开发,一般都是利用p c 机进行开发, 为此我们需要在p c 机上建立针对目标平台的交叉开发调试环境,用于编译、链接、 运行、调试目标系统上的核心和应用程序。 在设计中我们采用了基于主机、目标机体系的开发模式。此外,由于我们是在 x 8 6 平台上开发基于a r m 处理器的l i n u x 核心和应用程序,首先必须建立个交 华中科技大学硕士学位论文 = = = = ;= = 2 = = = ;= = = ;自= _ = = = = = = ;= = ;= = = = = = 叉开发环境,它是由g n u ( g n u sn o tu n i x ) c 库,g n ub i n u t i l s 以及g n u 编译 器g c c 等一系列交叉开发工具组成,它们用来在主机平台上编译目标格式的二进制 代码。 2 2 3 存储卡驱动的编写 在嵌入式l i n u x 系统中,通过环境的配置可以方便地得到存储子系统的存储管 理器,即通过文件系统来实现。这样,存储子系统开发的关键部分就是存储驱动的 设计。如图2 2 所示,我们给出了一般存储卡驱动的结构图。 卜啬 掣u 存 i 0 控制 储 低级驱动 卡 驱 设备层:控制 动 器总线接口 图2 2 存储卡驱动结构图 前面提到,每种存储卡都有某个协会对其应用推广提供支持,并给出相应的规 范说明。如c f 卡有c f a ( c o m p a c t f l a s ha s s o c i a t i o n ) ,m m c 卡有m m c a ( m u l t i m e d i a c a r da s s o c i a t i o n ) ,其规范分别由c f a 、m m c a 进行发布。这些规范 给出了存储卡的读写速度、方式、命令格式以及其它相关的卡特性。在驱动中,可 以将这些规范作为核心协议加以实现。 另一方面,对这些卡的物理操作又是通过控制器来完成的。各个嵌入式产品生 产厂商根据这些存储卡规范,在其开发模板上提供对这些存储卡的支持。这样,就 会有不同的硬件环境,从而设计出不同的存储卡控制器。如x s c a l e 芯片有一个集 成的控制器m m cc o n t r o l l e r ,而s a n d i s k 开发了一个8 0 c 51 控制器来操作m m c 卡。 同时,存储卡本身可能有不同的寻址方式,如c f 卡有m e m
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年安全管理员安全技术测试题
- 电容分相单相异步电动机教学设计-2025-2026学年中职专业课-电机与电气控制技术-智能设备运行与维护-装备制造大类
- 深刻的教学课件怎么写
- 安全生产法试题及答案
- 在建工程机械租赁协议
- 度假房转租合同模板
- 《4 知识 声音的强弱》(教学设计)-2023-2024学年人教版(2012)音乐一年级上册
- 小学数学毕业测试卷及答案(夺冠)
- 咖啡厅转让协议样本
- 元器件操作能力测试题及答案
- 护理人员行为规范
- 2025版安全生产法全文
- 2025年中国护腰垫数据监测报告
- 2025年中远海运集团招聘笔试备考题库(带答案详解)
- 新教师职业素养提升培训
- 2025至2030中国工业混合式步进电机行业发展趋势分析与未来投资战略咨询研究报告
- 小学生课件藏文版下载
- 委托协议承办会议协议书
- 养生馆转让协议书
- 外观检验考试试题及答案
- 《杜甫生平》课件
评论
0/150
提交评论