- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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设备驱动的大致流程如下:
⑴ 定义主、次设备号;也可以动态获取。
⑵ 实现驱动初始化和清除函数,如果驱动程序采用模块方式,则要实现模块初始化和清除
您可能关注的文档
最近下载
- 城管执法队员百分制考核细则.docx VIP
- 高血压的诊治PPT课件.pptx VIP
- 第二单元第04课时用混合运算解决实际问题(1)(教学课件)数学人教版三年级上册(新教材).pptx
- 健身会所操课教练工作流程及规范 .pdf VIP
- 《江苏省工业、建筑业、服务业、生活和农业用水定额(2025年)》.docx VIP
- 国投证券-固态电池系列报告(一):未来已来固态电池行业迎来产业驱动.pdf VIP
- Hubsan哈博森无人机ZINO说明书用户手册.pdf
- 高中政治必修二《经济与社会》选择题专练30题 .pdf VIP
- 高危高尿酸血症药物降尿酸治疗专家共识(2025版).pptx VIP
- 2025湖南郴州桂阳县招聘25名城市社区专职工作者笔试备考题库及答案解析.docx VIP
文档评论(0)