嵌入式系统第二讲(研)嵌入式Linux编程材料分析.ppt

嵌入式系统第二讲(研)嵌入式Linux编程材料分析.ppt

  1. 1、本文档共67页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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

您可能关注的文档

文档评论(0)

贪玩蓝月 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档