- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
驱动 驱动程序的地位 ??? ??应用程序 ??应系统调用 ??内核 ??驱动 ??硬件 计算机 驱使硬件设备行动 系统调用是操作系统内核和应用程序之间的接口,设备驱动程序是操作系统内核和机器硬件之间的接口。设备驱动程序为应用程序屏蔽了硬件的细节,在应用程序看来,硬件设备只是一个设备文件,应用程序可以象操作普通文件一样对硬件设备进行操作。 驱动分类 字符设备:按照字符流串行顺序依次进行访问的设备,如触摸屏,鼠标等。 块设备:按照任意顺序进行访问,以块为单位进行操作,硬盘,光驱等。 网络设备:面向数据包的接收和发送。如网卡。 驱动程序的功能 设备驱动程序是内核的一部分,它完成以下的功能: 1.对设备初始化和释放。 2.把数据从内核传送到硬件和从硬件读取数据。 3.检测和处理设备出现的错误。 注意: 在用户进程调用驱动程序时,系统进入核心态,这时不再是抢占式 调度。也就是说,系统必须在驱动程序的子函数返回后才能进行其他的工作。如果驱动程序陷入死循环,只有重新启动机器了。 加载驱动程序 方法一:把驱动程序编译到linux内核里面。 缺点: 内核过于庞大。 如果添加新功能或删除旧功能,需要重新编译内核。 方法二:把驱动程序编译成内核模块,然后挂载到内核里面。 特点: 模块可以不被编译到内核映像,控制了内核大小。 模块可以方便的加载,卸载。 内核模块相关操作命令 lsmod lsmod显示当前加载的所有模块,相当于cat /proc/modules。 modinfo 用于查看模块的详细信息 insmod 加载模块至内存空间。(加载成功后,可以用命令 cat /proc/devices 查看加载的虚拟设备) modprobe? 加载模块,不过modprobe能够处理 module 载入的相依问题。 比如要载入 a module,但是 a module 要求系统先载入 b module 时,直接用insmod挂入通常都会出现错误讯息,modprobe 能够 知道先载入b module后才载入a module,如此相依性就会满足。 modprobe之所以会知道模块之间的相依性,是通过读取 /lib/modules/`uname -r`/modules.dep得知的。 rmmod 删除模块。(删除的模块名与加载的模块名相同,注意此处不是 设备名) 主/次设备号 用户进程是通过设备文件来与实际的硬件打交道。每个设备文件都有其文件属性(c/b),表示是字符设备还是块设备。另外每个文件都有两个设备号,第一个是主设备号,标识驱动程序,第二个是从设备号,标识使用同一个设备驱动程序的不同的硬件设备,比如有两个软盘,就可以用从设备号来区分他们。 在内核中,dev_t类型用来保存设备编号(包括主设备号和次设备号),dev_t是一个32位的无符号长整型数,12位表示主设备号,20位表示次设备号。 (1)主设备号?= MAJOR(dev_t dev) (2)次设备号?= MINOR(dev_t dev) (3)设备编号?= MKDEV(int major,int minor) 字符设备驱动程序编写过程 字符设备驱动程序共分为三部分: 实现操作设备函数的代码: 完成对设备的读写等操作,读写等操作函数需要自己编写,通过 struct file_operations结构体完成内核对设备读写操作的映射。 模块初始化代码: 在初始化代码 中主要完成向内核注册设备功能,通过函数 register_chrdev()(老版本)或者register_chrdev_region()(新版本)函数 实现。 卸载模块代码: 完成模块的卸载,通过unregister_chrdev()函数实现。 实现操作设备函数 struct file_operations{ struct module *owner;//拥有该模块的指针,一般THIS_MODULE loff_t (*llseek) (struct file*, loff_t,int);//修改文件当前的读写位置 ssize_t (*read)(struct file *,char *, size_t, loff_t *);//从设备读取数据 ssize_t (*write)(struct file *,const char *, size_t, loff_t *);//向设备发送数据 int (*open) (struct ino
您可能关注的文档
- 自考)中国近现代史纲要复习报告.doc
- 自考《当代中国政治制度》第四讲报告.ppt
- 自考《英语》(二)实践考核作业报告.doc
- 自考《中国近代史纲要》全部节复习重点报告.doc
- 自考《中国近现代史纲要》(第一)报告.ppt
- 自考《中国近现代史纲要》各节重点内容汇总报告.doc
- 自考《中国近现代史纲要》知识点提纲图表报告.doc
- 自考CADCAM阶段测验题及答案报告.doc
- 自考本科毕业论文报告.doc
- 自考本科人力资源管理毕业论文报告.doc
- 2026秋季中国工商银行集约运营中心(佛山)校园招聘20人备考题库含答案详解(培优).docx
- 中国农业银行宁波市分行2026年度校园招聘214人备考题库附答案详解(夺分金卷).docx
- “梦工场”招商银行长沙分行2026寒假实习生招聘备考题库附答案详解(轻巧夺冠).docx
- 2026贵州省公共资源交易中心定向部分高校选调优秀毕业生专业技术职位考试备考题库完整参考答案详解.docx
- 中国建设银行建信金融资产投资有限公司2026年度校园招聘8人备考题库含答案详解(a卷).docx
- 中国农业银行宁夏回族自治区分行2026年度校园招聘146人备考题库及一套参考答案详解.docx
- 门头沟区青少年事务社工招聘1人备考题库附答案详解(模拟题).docx
- 中国建设银行运营数据中心2026年度校园招聘20人备考题库含答案详解ab卷.docx
- 中国建设银行建银工程咨询有限责任公司2026年度校园招聘9人备考题库及答案详解(有一套).docx
- 2026秋季中国工商银行重庆市分行校园招聘270人备考题库含答案详解(完整版).docx
最近下载
- 弱电机房数据中心的选址及现场勘察表格.docx VIP
- 分子生物学智慧树知到课后章节答案2023年下温州医科大学.docx VIP
- 17J008 挡土墙(重力式、衡重式、悬臂式)(最新).pdf VIP
- 基恩士PLC编程手册.pdf VIP
- 电网侧独立储能电站项目经济效益和社会效益分析报告.docx
- 2025年6月福建省普通高中学生学业基础会考历史试卷(含答案) .pdf VIP
- 上汽荣威2017款Ei6 维修手册03-2发动机机械系统-1.0T.pdf
- GB_T 43439-2023 信息技术服务 数字化转型 成熟度模型与评估.pdf VIP
- (新课标)三年级上册第六单元测试A卷(含答案).pdf VIP
- 烟草专卖局培训课件:打击互联网涉烟违法犯罪.ppt
原创力文档


文档评论(0)