- 1、本文档共40页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
哈尔滨工业大学 电子与信息技术研究院 6.1 Linux设备驱动程序概述 6.2 设备驱动程序的结构 6.3 Linux设备驱动程序的使用方法 6.1 Linux设备驱动程序概述 Linux设备驱动程序的作用: (1) 设备驱动程序屏蔽具体硬件设备的细节; 操作系统机器硬件之间的接口 (2) 驱动是展现硬件所具有的功能,只是个中间环节; 应用程序如何操作硬件? (3) 并发问题:驱动程序有时会被多个进程同时使用,需要调用一些内核的函数使用互斥量和锁等机制。 6.1 概述 6.1.1 设备驱动原理 所有操作系统下设备驱动程序的共同目标是屏蔽具体物理设备的操作细节,实现设备无关性。 原理:在嵌入式操作系统中,设备驱动程序通常是内核的重要部分,运行在内核模式,即设备驱动程序为内核提供了一个I/O接口,用户使用这个接口实现对设备的操作。 6.1.1 设备驱动原理 驱动程序与外界的接口:3个部分 6.1 概述 6.1.2 模块化编程 原因:由于历史原因及出于效率方面的考虑,Linux是一个宏内核。一旦需要在内核的基础上增加一项功能时,就必须重新编译整个内核,这无疑给内核功能的扩充带来了不便。 于是,Linux发展了可安装内核模块的机制——“module”。 6.1.2 模块化编程 从代码特征上来看,模块就是可完成一项独立功能的一组函数的集合; 从使用特征上来看,它在需要时可以随时被安装,而在不需要时又可以随时被卸载。 准确地说,模块就是一个已编译但未连接的可执行文件。利用这种机制,我们可以根据需要,在不重新编译内核的情况下,将编译好的模块动态地插入运行中的内核,或者将内核中已经存在的某个模块移走。 6.1.2 模块化编程 为了增强内核的灵活性和为了方便,设备驱动程度应被设计为可动态安装的内核模块。一个典型的Linux设备驱动程序应包含以下几部分代码: 驱动程序模块的注册与注销函数; 设备的打开、关闭、读、写及需要的其他操作函数; 设备的中断服务程序。 6.1 概述 6.1.3 设备类型 6.1.3 设备类型 6.1.4 设备文件 Linux中硬件设备被抽象出来,所有设备都可看成文件(置于/dev目录)UNIX法則: “Everything is file” 可以使用和操作文件相同的、标准的系统调用接口来完成打开、关闭、读写和I/O控制操作 对用户来说,设备文件与普通文件并无区别。 6.1 概述 6.1.5 设备号 6.1.6 Linux设备驱动的特点 综上所述,Linux中的设备驱动程序有如下特点。 (1)内核代码:设备驱动程序是内核的一部分,如果驱动程序出错,则可能导致系统崩溃。 (2)内核接口:设备驱动程序必须为内核或者其子系统提供一个标准接口。比如,一个终端驱动程序必须为内核提供一个文件I/O 接口;一个SCSI设备驱动程序应该为SCSI子系统提供一个SCSI设备接口,同时SCSI子系统也必须为内核提供文件的I/O 接口及缓冲区。 (3)内核机制和服务:设备驱动程序使用一些标准的内核服务,如内存分配等。 6.1.6 Linux设备驱动的特点 (4)可装载:大多数的Linux 操作系统设备驱动程序都可以在需要时装载进内核,在不需要时从内核中卸载。 (5)可设置:Linux 操作系统设备驱动程序可以集成为内核的一部分,并可以根据需要把其中的某一部分集成到内核中,这只需要在系统编译时进行相应的设置即可。 (6)动态性:在系统启动且各个设备驱动程序初始化后,驱动程序将维护其控制的设备。如果该设备驱动程序控制的设备不存在也不影响系统的运行,那么此时的设备驱动程序只是多占用了一点系统内存罢了。 6.1 Linux设备驱动程序概述 6.2 设备驱动程序的结构 6.3 Linux设备驱动程序的使用方法 设备驱动程序源代码的基本结构 6.1 Linux设备驱动程序概述 6.2 设备驱动程序的结构 6.3 Linux设备驱动程序的使用方法 机制与策略 机制(mechanism) 设备驱动程序所具备的能力 例如:串行设备驱动程序具有设置波特率的能力。 策略(policy) 这些能力如何被使用 例如:根据需要将串口波特率设置成9.6kbps。 设备驱动程序的使用 (1) 驱动程序模块的动态链接和静态链接 (2) 创建设备文件 (3) 使用设备 常用的与模块相关的命令: lsmod 列出当前系统中加载的模块 rmmod 是用于将当前模块卸载 insmod 是用于加载当前模块 mknod是用于创建模块节点 如何向内核注册 驱动程序有一个入口函数,会将驱动程序的file_operations结构,连同其主设备号向内核进行注册。 注册后,用户程序操作设备文件时,Linux系统
您可能关注的文档
- 第2章水和废水监测练习题讲解.ppt
- 第2章-水泥-2讲解.ppt
- 第2章水泥及掺合料讲解.ppt
- 第2章水质与水质标准讲解.ppt
- 第2章塑料成型工艺讲解.ppt
- 第2章天线讲解.ppt
- 第2章通用塑料.1讲解.ppt
- 第2章统计指标设计讲解.ppt
- 第2章投资(财务管理)讲解.ppt
- 第2章土的物理性质及工程分类_华科讲解.ppt
- 浙江省临海市白云高级中学2025届高三历史3月月考试题.doc
- 云南拾谷县第一中学2024_2025学年高二物理上学期10月月考试题.doc
- 2025版高考生物总复习第13讲基因的分离定律教案苏教版.doc
- 湖北省黄石实验高中2024_2025学年高一历史下学期期末考试模拟卷.doc
- 通史版2025版高考历史大一轮复习专题七近代化的曲折发展__中日甲午战争至五四运动前4第4讲从维新思想到新文化运动课后达标检测含解析新人教版.doc
- 2024年高考数学考试大纲解读专题04导数及其应用含解析文.doc
- 河南省许汝平九校联盟2024_2025学年高一语文上学期期末考试试题扫描版无答案.doc
- 江西省吉安市吉水县第二中学2024_2025学年高一历史上学期第二次月考试题.doc
- 北京市平谷区2025届高三政治一模考试试题含解析.doc
- 2025届中考物理第四讲物态变化专项复习测试无答案新人教版.docx
文档评论(0)