- 1、本文档共67页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
杂项设备的设备节点 与之前的字符设备节点需要手工创建不同,杂项设备在注册时,会自动根据设备名称创建好设备节点。 设备节点、次设备号,可以到/proc/misc中查找 Led驱动程序 见“Tiny210用户手册”中的led驱动程序例程 QTE编程请参考“Mini6410 Qt4和Qtopia编程开发指南.pdf” 谢谢! 模块其他信息 常用信息有作者、描述、版权等。 MODULE_AUTHOR(“author”); MODULE_DESCRIPTION(“the description”); MODULE_LICENSE(“Dual BSD/GPL”); 常用的版权信息有GPL、Dual BSD/GPL(2.6内核)等。 常用头文件 #include linux/module.h 必备,定义模块 #include linux/init.h 必备,定义模块初始化 #include linux/fs.h 定义注册函数 #include linux/moduleparam.h 定义模块参数 #include linux/ioctl.h 定义硬件控制函数 #include linux/device.h 定义总线设备 #include linux/slab.h 内存管理,kmalloc等 #include linux/miscdevice.h 定义杂项设备misc #include linux/errno.h 定义read、write错误码 #include linux/err.h 定义kenerl错误返回 #include linux/list.h 定义内核链表 #include linux/mutex.h 定义内核头文件互斥方式 内核模块Makefile Makefile Makefile相关说明 obj-m 内核模块对象,固定名称 := 的含义是添加,相当于 += $(shell pwd) 执行shell命令pwd所返回的 Linux 2.6内核中,make内核模块需要使用“make –C 内核目录 M=工作目录 modules”格式。-C意为进入目录 执行模块安装与卸载 #insmod ./helloModule.ko (Linux2.4中使用.o) #lsmod #rmmod helloModule 2.3 字符设备驱动 设备驱动大致构成 Linux的设备驱动程序大致可以分为如下几个部分:驱动程序的注册与注销、设备的打开与释放、设备的读写操作、设备的控制操作、设备的中断和轮询处理 在之前的内核模块框架的基础上,增加实际设备的注册、注销和操作 字符设备驱动构成 字符设备驱动构成: 驱动程序的注册与注销 register_chrdev_region( ) unregister_chrdev_region( ) 设备的打开与释放 file_operations结构中的函数open( ) file_operations结构中的函数release( ) 设备驱动构成 设备的读写操作 Read() Write() 设备的i/o控制操作 ioctl( ) 设备的中断和轮询处理 对于不支持中断的硬件设备,读写时需要轮流查询设备状态,以便决定是否继续进行数据传输。如果设备支持中断,则可以按中断方式进行操作 字符设备驱动程序框架:入口和出口函数 int module_init(void) { 硬件初始化; 注册设备; 注册中断; } void module_exit(void) { 释放中断资源; 释放该设备; 释放其他的系统资源; } 通过file_operations定义操作 struct file_operations driver_fops = { .open= driver_open, .release= driver_release, .read= driver_read, .write= driver_write, .poll= driver_poll, .unlocked_ioctl= driver_ioctl, .fasync= driver_fasync, }; file_operations结构 open: 用于打开文件设备 release: 在关闭文件的调用 read: 用于从设备中读取数据 write: 向设备发送数据 poll: 查询设备是否可读或可写 unlocked_ioctl: 提供执行设备特定命令的方法 fasync: 用于设备的异步通知操作 file_operations定义 Linux
您可能关注的文档
- 前言课程编程思想及实践材料分析.pptx
- 前言旅游管理信息系统材料分析.ppt
- 前言小学教育教学知识与能力材料分析.ppt
- 前智能电网时代网络规划的思路材料分析.ppt
- 潜心研题精心选题用心讲题材料分析.ppt
- 浅谈“矮丑穷”材料分析.ppt
- 浅谈奢侈品品牌营销材料分析.pptx
- 浅谈输液港相关真菌血症及生物被膜抗真菌策略材料分析.pptx
- 浅谈网络犯罪(修改)材料分析.ppt
- 浅谈物联网材料分析.ppt
- 浙江衢州市卫生健康委员会衢州市直公立医院高层次紧缺人才招聘11人笔试模拟试题参考答案详解.docx
- 浙江温州泰顺县退役军人事务局招聘编外工作人员笔试备考题库及参考答案详解一套.docx
- 江苏靖江市数据局公开招聘编外工作人员笔试模拟试题及参考答案详解.docx
- 广东茂名市公安局电白分局招聘警务辅助人员40人笔试模拟试题带答案详解.docx
- 江苏盐城市大丰区住房和城乡建设局招聘劳务派遣工作人员4人笔试模拟试题带答案详解.docx
- 浙江舟山岱山县东沙镇人民政府招聘笔试模拟试题及参考答案详解1套.docx
- 最高人民检察院直属事业单位2025年度公开招聘工作人员笔试模拟试题含答案详解.docx
- 浙江金华市委宣传部、中共金华市委网信办所属事业单位选调工作人员笔试备考题库及答案详解1套.docx
- 广东深圳市党建组织员招聘40人笔试模拟试题及答案详解1套.docx
- 江苏南京水利科学研究院招聘非在编工作人员4人笔试模拟试题及参考答案详解.docx
文档评论(0)