- 1、本文档共43页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
字符设备的注册 早期方法: 内核中仍有许多字符驱动不使用刚刚描述过的cdev 接口。没有更新到 2.6 内核接口的老代码。 注册一个字符设备的早期方法: int register_chrdev(unsigned int major, const char *name, struct file_operations *fops); major 是给定的主设备号。为0代表什么? name 是驱动的名字(将出现在 /proc/devices), fops 是设备驱动的file_operations 结构。 register_chrdev 将给设备分配 0 - 255 的次设备号, 并且为每一个建立一个缺省的 cdev 结构。 从系统中卸载字符设备的函数: int unregister_chrdev(unsigned int major, const char *name); 字符设备驱动程序编写流程 实现底层操作函数 将这些底层操作函数结合到file_operations结构中; 在模块的入口函数 申请、注册设备号; 初始化cdev(要关联一个file_operations结构) 注册cdev; 在模块的出口函数 注销cdev; 注销设备号; 字符设备模块入口函数的执行流程: 字符设备驱动程序编写流程 字符设备模块出口函数的执行流程: 字符设备驱动程序编写流程 实例--(1)编写底层函数 实例--(2)创建file_operations变量,将底层操作函数集合到该结构中; 实例--(3)模块初始化函数; 实例--(4)模块出口函数; 编译模块; 在ARM板上插入模块 # insmod first_drv.ko 插入模块之后,可以通过文件/proc/devices 查看设备信息 # cat /proc/devices 找到 first_drv的主设备号是249,如下图 建立设备文件 # mknod /dev/first_drv c 249 0 建立好设备文件之后,应用程序就可以通过设备文件来访问驱动程序了。 应用测试程序如图: 在开发板上执行测试程序的效果如下: 课堂小结 字符设备驱动程序的编写框架是: 编写底层硬件的操作函数,将这些函数集合在一个file_operations结构中; 在模块的入口函数中,申请设备号,初始化并注册一个cdev结构; 在模块的出口函数中,注销cdev结构,注销设备号; 可以通过文件 /proc/devices 查看设备信息,找到动态分配的主设备号 手动建立设备文件的命令是mknod 预习内容 字符设备驱动框架 开发驱动程序需要对内核有一定的了解,并不是非要解读的多么透彻。 操作系统是通过各种驱动程序来驾驭硬件设备,它为用户屏蔽了各种各样的设备,驱动硬件是操作系统最基本的功能,并且提供统一的操作方式。正如我们查看屏幕上的文档时,不用去管到底使用nVIDIA芯片,还是ATI芯片的显示卡,只需知道输入命令后,需要的文字就显示在屏幕上。硬件驱动程序是操作系统最基本的组成部分,在Linux内核源程序中也占有较高的比例。 内核紧紧地包围在硬件周围,内核是一些软件包的组合,它们可以直接访问系统的硬件,包括处理器、内存和I/O设备。而用户进程则通过内核提供的用户服务来和内核通讯,从而间接地控制系统硬件。 用户级的程序使用内核提供的标准系统调用来与内核通讯,这些系统调用有:open(), read(), write(), ioctl(), close() 等等。 讲解重要成员,涉及内存管理、块设备、同步异步通讯机制等成员放到后面章节。注意学习方法,先迅速掌握基本构架,再从点到面,深入理解其他成员。 Lofft_t 长偏移量,即使32平台也使用64位的数据宽度。 讲解重要成员,涉及内存管理、块设备、同步异步通讯机制等成员放到后面章节。注意学习方法,先迅速掌握基本构架,再从点到面,深入理解其他成员。 Lofft_t 长偏移量,即使32平台也使用64位的数据宽度。 讲解重要成员,涉及内存管理、块设备、同步异步通讯机制等成员放到后面章节。注意学习方法,先迅速掌握基本构架,再从点到面,深入理解其他成员。 Lofft_t 长偏移量,即使32平台也使用64位的数据宽度。 讲解重要成员,涉及内存管理、块设备、同步异步通讯机制等成员放到后面章节。注意学习方法,先迅速掌握基本构架,再从点到面,深入理解其他成员。 Lofft_t 长偏移量,即使32平台也使用64位的数据宽度。 在glibc中定义的FILE 是用于用户空间的变量,不会出现在内核代码中。而file结构体是内核的一个数据结构,也不会出现在用户程序中。 读写指针 loff_t f_pos。 在glibc中定义的FILE 是用于用户空间的变量,不会出现在内核代
您可能关注的文档
- 12事物的答案不止一个.ppt
- 12《闻一多先生的说和做》PPT.ppt
- 12月5日地理周练成品.doc
- 12数控2班 法在身边.ppt
- 12机械数控机床大作业.doc
- 12月份课件年末关账--王志会.pptx
- 12章-学习策略.ppt
- 12、雪地里的小画家 两课时.ppt
- 12第11章发动机运行特性与匹配技术.ppt
- 12第十二章--宏观经济的基本指标及其衡量.ppt
- 四川省德阳市罗江中学2025届高三考前热身化学试卷含解析.doc
- 山东省枣庄现代实验学校2025届高三下学期第五次调研考试化学试题含解析.doc
- 吉林省长春市十一高中等九校教育联盟2025届高三一诊考试生物试卷含解析.doc
- 2025届江苏省盐城市伍佑中学高考仿真模拟化学试卷含解析.doc
- 2025届广西贺州中学高考冲刺押题(最后一卷)生物试卷含解析.doc
- 安徽省池州市贵池区2025届高三第一次模拟考试生物试卷含解析.doc
- 宁夏银川一中2025届高三(最后冲刺)化学试卷含解析.doc
- 广东省广州市增城区四校联考2025届高考压轴卷化学试卷含解析.doc
- 2025届邯郸市第一中学高考生物必刷试卷含解析.doc
- 2025届安徽省安庆市石化第一中学高考仿真卷化学试卷含解析.doc
最近下载
- 山东省泰安市泰山区2023-2024学年上学期期中考试七年级英语试题.docx VIP
- 财务管理实务 财务管理实务 实训指导书.doc
- 2024年新人教版九年级上册化学全册教案.docx
- 上海通用汽车GVDP整车开发流程.pdf VIP
- 苏教版四年级上册同步奥数培优 第十四讲 智巧问题.pdf VIP
- 2024年江苏省苏州高新区招聘“两新”组织党建专职党务工作者6人历年【综合基础知识500题】高频考点模拟试题及参考答案解析.docx VIP
- 2024年武汉市东湖生态旅游风景区管理委员会公开招聘机关派遣制工作人员9人笔试备考试题及答案解析.docx VIP
- 人教版普通高中地理选择性必修2区域发展.pdf
- 人体解剖学常考重要知识点.doc
- 2023年江苏苏州相城区招考聘用两新组织党建专职党务工作者23人笔试历年难易错点考题荟萃附带答案详解.docx VIP
文档评论(0)