- 1、本文档共133页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
注册与注销 注册和注销函数:register_*dev()unregister_*dev()//include/linux/fs.h 所谓注册就是在内核的chrdevs或blkdevs中添加一项。 struct device_struct { const char * name; struct file_operations * fops; };相同主设备号的fops元素内容相同。 打开与释放 打开设备: open() 检查与设备有关的错误,如未准备好。 如果是首次打开,则初始化设备。 确定次设备号,根据需要可更新设备的f_op。 如果需要,分配且设置文件中的private_data。 递增设备使用的计数器。 如果只允许一个进程使用设备,则需要设忙标志。 释放设备:release() 递减设备使用的计数器 释放设备文件中的私有数据所占空间 如果是独占设备,则要清除忙标志,使其他进程可以使用 如果是最后一个释放,则关闭设备 设备的读写操作 字符设备: foo_read()和foo_write() 块设备 block_read和block_write()——策略规程,不需要在驱动程序中实现。 通过缓冲区读写,只在数据不在缓冲区时才真正执行数据传输,通过request_fn()完成。 struct blk_dev_struct struct request 设备的控制 ioctl() 一般做法是: 首先差错检查, 然后用一个大的switch语句(可能是内嵌的)来处理所有可能的ioctl命令。 返回: 出错返回-erro 其他情况由用户定义 字符设备驱动程序 数据结构 注册与注销 轮询和中断 对应驱动程序的“三个接口”。 添加一个简单的字符设备 确定主设备号 编写file_operations中的函数以及中断处理函数。 编写初始化函数foo_init() 在chr_dev_init()中添加调用和返回初始化函数的代码。 修改drivers/char/Makefile; 假设我们把所以必要的函数写foo.c中,则在“L_OBJS := tty_io.o n_tty.o console.o \”行把“foo.o”加到其中。 将该设备私有的*.c,*.h复制到目录drivers/char下。 用命令:make clean;make dep;make zImage重新编译内核。 用mknod命令在目录/dev下建立相应主设备号的用于读写的特殊文件 mknod命令:建立设备特殊文件 格式: mknod 文件名 类型 主设备号 次设备号 类型:c或b,代表字符设备或块设备 块设备驱动程序 数据结构 注册与注销 读写请求及其处理 增加一个块设备的方法和字符设备差不多。 块设备不需要编写file_operations结构里的read和write函数,但是也需要read和write在request中调用。 需要有请求处理函数,以及中断处理函数。 驱动源代码 驱动源代码 驱动源代码 驱动源代码 驱动源代码 编译驱动程序 应用程序 编译应用程序 背景知识: Linux设备管理 主要内容 概述 驱动程序基础 中断处理 辅助函数 设备驱动程序 模块编程基础 字符设备 块设备 网络设备 概述 输入输出子系统: 下层:设备驱动程序 上层:设备无关部分 设备管理总体结构示意 用户程序 系统调用接口 文件系统 高速缓存 字符设备 块设备 驱动程序 硬件设备 输入输出系统层次结构 用户进程 设备无关软件 设备驱动程序 设备服务子程序 中断处理程序 硬件 I/O请求 I/O应答 进行I/O调用;格式化I/O 命名、保护、阻塞、缓冲、分配 建立设备寄存器、检测状态 I/O结束时,唤醒设备服务子程序 执行I/O操作 驱动程序基础——命名空间 并行设备:lp软盘:fdSCSI盘:sdIDE硬盘:hda1, hda2, hdb等网络设备:ethn, slipn, pppn等 在写驱动程序的时候,需要给函数名加上选择的前缀来避免任何混淆。如:foo_read(),foo_write()等。 驱动程序基础——内存分配 函数kmalloc()内存以2的幂大小的块分配 有一个优先级参数 宏kfree()和函数kfree_s()kfree()调用kfree_s(),和free()一样工作可以直接调用kfree_s(),但是需要知道释放内存块的大小 驱动程
您可能关注的文档
- 浙江省龙湾中学高考语文《古诗词鉴赏之人物形象》.ppt
- 尺规作图(定稿).ppt
- 尺规作图与平行线.ppt
- 海南传统建筑文化.ppt
- 尺规作图角平分线.ppt
- 海淀期中讲评 (2).ppt
- 局域网网络结构以及VLAN划分.ppt
- 屈原与《楚辞》.ppt
- 消费者行为学课件个性、自我概念和生活方式.ppt
- 涂文浩面部精雕主任1.ppt
- 4.1 陆地水体及其关系 课件高二上学期地理中图版(2019)选择性必修一.pptx
- 混凝土结构与砌体结构设计习题集 .pdf
- 统编版语文四年级下册 22.古诗三首 课件(共50张PPT).pptx
- 青海2024行测笔试真题及答案 .pdf
- 2.1 充分发挥市场在资源配置中的决定性作用 课件-高中政治统编版必修二经济与社会.pptx
- 27.巨人的花园 课件(共58张PPT).pptx
- 统编版语文一年级下册5 树和喜鹊 第1课时 课件(共37张PPT).pptx
- 2.1 充分发挥市场在资源配置中的决定性作用 课件政治一轮复习统编版必修二经济与社会.pptx
- 贵港市平南县2024届小升初考试语文试卷含答案 .pdf
- 小学期末考试质量分析 .pdf
文档评论(0)