基于ARM9的linux2.6内核下CF卡的驱动设计及应用.pdfVIP

基于ARM9的linux2.6内核下CF卡的驱动设计及应用.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于ARM9 的linux2.6 内核下CF 卡的 驱动设计与应用 曹理发,尹勇 武汉理工大学信息工程学院,湖北武汉(430070 ) E-mail:xiaocao1114@163.com 摘 要:本文在分析LINUX 内核下驱动程序结构的基础上,对CF 卡的工作原理进行介绍, 实现了IDE 模式CF 卡的驱动并成功应用在H.264 视频处理系统中。同时,文中给出了硬件 接口图及软件设计思想。 关键词:ARM9,CF 卡;LINUX 操作系统;驱动设计 1. 引言 Linux是开放源代码的操作系统, 由于其高效稳定、执行速度快、实现了真正的多任务、 多用户环境、强大的网络功能、较好的可裁减性与移植性等特点, 在嵌入式系统领域获得了 飞速发展。针对ARM 体系结构CPU开发的, 具有MMU功能的嵌入式Linux 操作系统无疑是 ARM 平台上操作系统的最佳选择。 CF (Compact Flash )卡,是一种移动存储卡,在许多便携式电子产品,如PDA 、数码相机、 便携式多媒体播放器中广泛应用。CF卡模拟硬盘的工作原理,但内部没有机械机构,因此可靠 性比硬盘好。CF卡的功耗也比硬盘小很多,大概为硬盘功耗的5%。随着闪存技术的发展,CF 卡的最大容量已经突破了10Gbyte。虽然CF卡单位容量价格比比不上硬盘,但由于其功耗低、 速度快、重量轻、兼容性好,很适合那些既要求大容量存储同时也对功耗很敏感的嵌入式系 统。在CF卡设备开发中,有些处理器本身集成了CF卡控制器,如Intel公司的pxa255 、pxa270处 理器,Atmel公司的AT91RM9200处理器等[1] 。这类处理器与CF卡的接口比较容易实现。但是 很多处理器并没有集成CF控制器,如三星公S3C44B0X、S3C2410等。这类处理器要实现CF 卡接口功能,必须利用CPU未用端口和附加的电路来进行逻辑扩展。本文就是基于此展开研 究的,成功开发了IDE模式的CF卡的驱动并应用于H.264视频处理系统中。 2. LINUX 设备驱动结构 Linux支持三类硬件设备:字符设备、块设备和网络设备。字符设备是指无须缓存直接按 字节读写的设备。块设备以块为单位进行读写, 能够进行随机访问。网络设备在Linux 里有 专门的处理, 它没有被映射到文件系统的设备节点, 对它的访问采用socket机制。字符设备与 块设备的主要区别是:在对字符设备发出读/写请求时, 实际的硬件I/O一般紧接着发生;块设 备是利用一块系统内存作缓冲区来进行实际的I/O操作[2] 。 在Linux 中,几乎所有的内容都是文件, 对设备驱动的访问也是以文件操作的方式实现。 无论是字符设备还是块设备, 用户对设备的操作都是通过虚拟文件系统(VFS)转化为设备驱 动与硬件操作例程的交互。即使是访问网络设备的socket接口,也是通过VFS实现的。Linux 通过VFS为用户提供了一个统一的设备访问接口,使用户能够透明地访问设备驱动程序。所 有的硬件设备都可以使用和操作系统调用接口来打开、关闭、读写和I/O 控制, 而驱动程序 的主要任务就是实现这些系统调用函数。Linux系统中的所有硬件设备都使用一种特殊的设 备文件来表示。每个设备文件都有两个设备号:一个是主设备号,它用来标识该设备的种类, 也标识该设备使用的驱动程序;另一个是次设备号, 用来标识使用同一设备驱动程序的不同 -1- [3] 硬件设备 。 实现一个嵌入式Linux设备驱动的大致流程如下: ⑴ 定义主、次设备号;也可以动态获取。 ⑵ 实现驱动初始化和清除函数,如果驱动程序采用模块方式,则要实现模块初始化和清除

文档评论(0)

kehan123 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档