- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
有很多朋友关心驱动,但更菜的菜鸟居多:)总结了一下 把 I/O 驱动改成个更简单的 LED
驱动吧
做的工作非常简单,就是让连在 GPC0-GPC2 上的 LED 顺序闪 10 下目的就是演示一下驱动过程。
— 先补充一下基础知识 懂的朋友就不用看了嵌入式驱动的概念
设备驱动程序是操作系统内核和机器硬件之间的接口,设备驱动程序为应用程序屏蔽了硬件的细节,这样在应用程序看来,硬件设备只是一个设备文件,应用程序可
以像操作普通文件一样对硬件设备进行操作。设备驱动程序是内核的一部分,它主要完成的功能有:对设备进行初始化和释放;把数据从内核传送到硬件和从硬件读
取数据;读取应用程序传送给设备文件的数据、回送应用程序请求的数据以及检测和处理设备出现的错误。
Linux 将设备分为最基本的两大类:一类是字符设备,另一类是块设备。字符设备和块设备的主要区别是:在对字符设备发出读/写请求时,实际的硬
件 I/O 一般就紧接着发生了。字符设备以单个字节为单位进行顺序读写操作,通常不使用
缓冲技术;块设备则是以固定大小的数据块进行存储和读写的,如硬盘、
软盘等,并利用一块系统内存作为缓冲区。为提高效率,系统对于块设备的读写提供了缓存机制,由于涉及缓冲区管理、调度和同步等问题,实现起来比字符设备复
杂得多。LCD 是以字符设备方式加以访问和管理的,Linux 把显示驱动看做字符设备,把要显示的数据一字节一字节地送往 LCD 驱动器。
Linux 的设备管理是和文件系统紧密结合的,各种设备都以文件的形式存放在/dev 目录下, 称为设备文件。应用程序可以打开、关闭和读写这些设
备文件,完成对设备的操作,就像操作普通的数据文件一样。为了管理这些设备,系统为设
备编了号,每个设备号又分为主设备号和次设备号。主设备号用来区分不
同种类的设备,而次设备号用来区分同一类型的多个设备。对于常用设备,Linux 有约定俗成的编号,如硬盘的主设备号是 3。Linux 为所有的设备文件都
提供了统一的操作函数接口,方法是使用数据结构 struct
file_operations。这个数据结构中包括许多操作函数的指针,如 open()、close()、read()
和 write()等,但由于外设
的种类较多,操作方式各不相同。Struct
file_operations 结构体中的成员为一系列的接口函数,如用于读/写的 read/write 函数和用于控制的 ioctl 等。打开一个文件就是
调用这个文件file_operations 中的open 操作。不同类型的文件有不同的file_operations
成员函数,如普通的磁盘数据文件,
接口函数完成磁盘数据块读写操作;而对于各种设备文件,则最终调用各自驱动程序中的
I/O 函数进行具体设备的操作。这样,应用程序根本不必考虑操作的是设
备还是普通文件, 可一律当作文件处理, 具有非常清晰统一的 I/O 接口。所以
file_operations 是文件层次的 I/O 接口。二 开始写了
采用了在代码里加注释的方法,同时把几个文件上传了一下,喜欢的朋友可以下载当作模板。
每个文件以==隔开
一共需要写写 3 个文件,1 个驱动头文件,1 个驱动文件,一个驱动测试用程序文件分别是 test.h,test.c 和 ledtest.c
简单说说驱动都做什么,怎么做
系统加载驱动
应用程序里打开设备(文件)
应用程序对设备操作
应用程序关闭设备(文件)
系统关闭设备
应用程序如何对设备操作?
记得 C 语言里怎么写文件吗?这里很相象的。对于一般的字符设备(还有块设备,网络设备等等)主要有 3 个函数(还有很多,可以看)llseek
read: write: ioctl: 这里只用 ioctl:控制函数,当然也可以使用读写函数操作 IO 口,但
ioctl:似乎更适合。
具体实现可以看 ledtest.c 文件了。
test.c 中主要有几个函数 分别负责初始化和清除,打开和关闭。以及 ioctl 对串口寄存器写一些数据。
初始化和清除,打开和关闭函数里都各有一句主要句,已经分别作了注释。只要记住就好了。
对寄存器操作就不单独说了,需要看 44B0 数据手册了。好了 剩下的看代码吧。
==============================
==========test.h==================
==============================
/****************************************Copyright (c)**************************************************
** FREE
**
**----------
您可能关注的文档
最近下载
- 2025年闽教版(2024)小学英语四年级上册(全册)教学设计(附目录P123).docx
- 人教版高中英语第三册Unit 1 FESTIVALS AND CELEBRATIONS教学设计.docx VIP
- 数据结构常用算法数据结构算法.pdf VIP
- 20世纪人类最伟大的100项科学发明.doc VIP
- 北师大版九年级上册数学第一次月考试卷及答案.docx VIP
- 脊柱外科进修汇报.pptx VIP
- 2025年最新版个人征信报告(含水印)模板【可修改】 .pdf VIP
- 金刚砂地坪施工技术交底.pdf VIP
- 人教版英语2024七年级上册全册单元知识清单(背诵版).pdf VIP
- 股权设计与股权激励.pdf VIP
文档评论(0)