- 1、本文档共22页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验三增加新的设备驱动程序 实验三 增加新的设备驱动程序 预备知识 Linux设备分类 Linux设备文件 Linux设备驱动 实验指导 设备驱动函数 模块方式动态加载 编译时静态加载 实验目的、内容 1.1 Linux设备分类 字符设备 通过位于/dev目录的文件系统结点来存取 映射为chrdevs向量表中的device_struct条目 大部分字符设备是数据通道,只能顺序存取 直接对设备进行读写操作 块设备 通过/dev目录的文件系统结点存取,分为SCSI类和IDE类 填充blk_dev向量表中的blk_dev_struct数据结构 利用系统内存作为缓冲区在设备与内存间传送数据 网络设备 类似于一个已挂载的块设备 基于BSD Unix的Socket机制 1.2 Linux设备文件 把物理设备看成文件,将各种设备硬件的物理特性的细节屏蔽起来,实现用户程序与设备的无关性 三类设备文件:字符设备文件(c)、块设备文件(b)、网络设备文件(s) 设备文件命名规则 第一部分:主设备号,2-3个字符,表示设备的种类(驱动) 第二部分:次设备号,字母或数字,用于区分同种设备中的单个设备 通过proc文件系统访问相应的驱动程序 1.3 Linux驱动程序 驱动程序加载方式 常见的驱动程序作为内核模块动态加载(如声卡、网卡等) 最基础的驱动程序编译在内核文件中(如CPU、PCI总线、VFS等) 驱动加载时的模块命令 模块加入:insmod modulename.ko 查看模块:lsmod 删除模块:rmmod modulename 实验三 增加新的设备驱动程序 预备知识 Linux设备分类 Linux设备文件 Linux设备驱动 实验指导 设备驱动函数 模块方式动态加载 编译时静态加载 实验目的、内容 2.1 添加设备驱动程序 注册设备:向系统登记设备及驱动程序的入口点 int register_chrdev (unsigned int major, const char *name, struct file_operations *fops); //向系统的字符设备表登记一个字符设备 //major:希望获得的设备号,为0时系统选择一个没有被占用的设备号返回。 //name:设备名 //fops:登记驱动程序实际执行操作的函数的指针 //登记成功,返回设备的主设备号,否则,返回一个负值 int register_blkdev (unsigned int major, const char *name, struct file_operations *fops); //向系统的块设备表登记一个块设备 添加设备驱动程序(续) 设备卸载 int unregister_chrdev (unsigned int major, const char *name); //卸载字符设备 //major:要卸载设备的主设备号 //name:设备名 int unregister_blkdev (unsigned int major, const char *name); //卸载块设备 添加设备驱动程序(续) Linux系统采用一组固定的入口点来实现驱动设备的功能。 open入口点: 打开设备。对将要进行的I/O操作做好必要的准备工作,如清除缓冲区等 close入口点: 关闭一个设备 read入口点: 从设备上读数据 write入口点: 往设备上写数据 ioctl入口点: 执行读、写之外的操作 select入口点: 检查设备,看数据是否可读或设备是否可用于写数据 添加设备驱动程序 内核模块(LKM, Loadable Kernel Modules) Linux核心是一种monolithic类型的内核,即单一的大核心 linux内核是一个整体结构,因此向内核添加或者删除某些功能,都十分困难。为了解决这个问题,引入了模块机制,从而可以动态的在内核中添加或删除模块 添加设备驱动程序(续) 模块的实现机制 模块初始化(注册) int init_module( ){ }; 模块卸载(注销) int cleanup_module( ){ }; 操作 unsigned long sys_create_module (char *name, unsigned long size); //重新分配内存 int sys_delete_module (char *name); //卸载 int sys_query_module (const char *name, int which, void *buf, size_t bufsize, size_t *
您可能关注的文档
- 《X射线衍射定性分析》何崇智.doc
- 《柏林中央车站的建设与启示》文章缩写.doc
- 《摆的研究》教学设计-船营教育信息网.doc
- 《发挥学生主体作用,构建数学活力课堂的研究与实践.ppt
- 《机械制造工艺学》第二版王先奎课件机械制造工艺学ch4-2表面粗糙度.ppt
- 《企业管理》电子教案5.ppt
- 《职业指导》试卷.doc
- 0Bmpvre《证券交易》模拟试卷三有答案.doc
- 1g改-第三章第一节:核酸的种类分布与功能复习.ppt
- 1测试方法基础.ppt
- 少儿体育培训 商业计划书.docx
- 平台卖货创业计划书怎么写.docx
- 人教版五年级下册数学期末测试卷及答案(各地真题).docx
- 《农村金融市场利率定价机制与农村金融风险管理策略优化策略优化策略优化策略优化研究》教学研究课题报告.docx
- 高中生预防性教育课程实施中的学生法律素养培养研究教学研究课题报告.docx
- 小学语文课堂中阅读能力培养的策略与效果分析教学研究课题报告.docx
- 基于多学科协作的新冠肺炎康复者肺功能恢复模式探讨教学研究课题报告.docx
- 初中化学环保教学中加强学生社会责任感的教学研究课题报告.docx
- 高中地理区域地理教学中地域特色与经济发展教学研究课题报告.docx
- 河南省商丘市第三高级中学高二体育《三级跳远》说课稿 新人教版[001].docx
最近下载
- 英语被动语态(PPT36张).ppt
- F519133【复试】2024年四川大学125100工商管理《复试管理学》考研复试仿真模拟5套卷.pdf VIP
- 2025年中国废旧手机行业市场发展监测及投资潜力预测报告.docx VIP
- 读后续写动作描写六大微技能课件++2023届高考英语作文备考.pptx
- 2025年1月支委会会议记录 .pdf VIP
- 速冻汤圆制造可行性研究报告 .pdf
- 辽宁省名校联盟2023-2024学年高二下学期3月份联合考试化学试卷(无答案).docx VIP
- 《模拟电子技术实验》实践课程大纲.pdf VIP
- 带头严守政治纪律和政治规矩,维护党的团结统一等四个方面存在的问题与整改材料4.docx VIP
- 幼儿园小班数学教案《哪个大、哪个小》.pptx
文档评论(0)