Linux 设备驱动程序ppt课件.ppt

Linux 设备驱动程序ppt课件.ppt

ID:59416619

大小:316.00 KB

页数:28页

时间:2020-09-19

Linux 设备驱动程序ppt课件.ppt_第1页
Linux 设备驱动程序ppt课件.ppt_第2页
Linux 设备驱动程序ppt课件.ppt_第3页
Linux 设备驱动程序ppt课件.ppt_第4页
Linux 设备驱动程序ppt课件.ppt_第5页
资源描述:

《Linux 设备驱动程序ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Linux设备驱动程序 开发基础主讲人:TonyShen课程目标Linux设备驱动程序开发简介Linux设备驱动程序结构Linux设备驱动程序加载方式实验:编写一个字符设备驱动程序(LED或蜂鸣器)分别用静态编译,模块动态加载方法实现加入内核设备驱动程序应用程序驱动程序设备writereadioctlioctl设备驱动程序特点⑴核心代码:设备驱动程序是核心的一部分,像核心中其他的代码一样,出错将导致系统的严重损伤。一个编写不当的设备驱动程序甚至能够使系统崩溃导致文件系统的破坏和数据的丢失;⑵标准接口:设备驱动程序

2、必须为Linux核心或者其从属的子系统提供一个标准的接口;⑶核心机制:设备驱动程序可以使用标准的核心服务比如内存分配、中断发送和等待对列等;⑷动态可加载:多数的Linux设备驱动程序可以在核心模块发出加载请求时进行加载,同时在不使用设备时进行卸载,这样核心可以有效地利用系统的资源⑸可配置:Linux设备驱动属于核心的一部分,用户可以根据自己的需要进行配置来选择适合自己的驱动用户态与内核态Linux运转在两种模式下,一种是用户态,另一种是内核态。内核态有较高的权限,可以控制处理器内存的映射和分配方式,访问外设空间和

3、处理器状态寄存器,控制中断等。用户态只能运行系统上的应用程序。驱动程序作为系统内核的一部分,工作在内核态。通过get_userput_usercopy_from_usercopy_to_user等函数实现应用程序和驱动程序之间传送数据(指针)。Linux设备的分类字符设备以字节为单位逐个进行I/O操作字符设备中的缓存是可有可无不支持随机访问如串口设备块设备块设备的存取是通过buffer、cache来进行可以进行随机访问例如IDE硬盘设备可以支持可安装文件系统网络设备通过BSD套接口访问设备文件Linux抽象了对硬

4、件的处理,所有的硬件设备都可以作为普通文件一样来看待可以使用和操作文件相同的、标准的系统调用接口来完成打开、关闭、读写和I/O控制操作对用户来说,设备文件与普通文件并无区别字符设备和块设备是通过文件节点访问的。在Linux的文件系统中,可以找到(或者使用mknod创建)设备对应的文件名,称这种文件为设备文件。设备文件命令ls–l/dev可列出系统的设备文件主设备号和次设备号主设备号:标识该设备的种类,也标识了该设备所使用的驱动程序主设备号的范围只能是1-255Linux内核支持动态分配主设备号次设备号:标识使用同

5、一设备驱动程序的不同硬件设备?同一个驱动程序可以管理多个设备,它们依靠次设备号来区别。次设备号只在驱动程序内部使用,系统内核直接把次设备号传递给驱动程序,由驱动程序去管理。设备文件系统Linux内核自己管理设备文件,完成设备文件节点的创建、删除。(devfs,devicefilesystem)在linux2.4/2.6内核中,设备文件系统可在配置内核时定制。linux2.4内核配置层次Filesystems->/devfilesystemsupportlinux2.6内核配置层次Filesystems->Pseu

6、dofilesystem->/devfilesystemsupport系统驱动程序通过CONFIG_DEVFS_FS宏定义判断系统是否有对设备文件系统的支持。配置设备文件系统Linux设备驱动程序结构Linux设备驱动程序的代码结构大致可以分为如下几个部分:驱动程序的注册与注销、设备的打开与释放、设备的读写操作、设备的控制操作、设备的中断和轮询处理。一个最简单字符驱动程序,由下面5个函数和1个结构体就可组成。staticintmy_open(structinode*inode,structfile*filp){设

7、备打开时的操作…}staticintmy_release(structinode*inode,structfile*filp){设备关闭时的操作…}staticintmy_write(structfile*file,constchar*buffer,size_tcount,loff_t*ppos){设备写入时的操作…}驱动程序结构staticstructfile_operationsmy_fops={对文件操作结构体成员定义初始值…}staticint__initmy_init(void){初始化硬件,注册设备,

8、创建设备节点…}staticvoid__exitmy_exit(void){删除设备节点,注销设备…}头文件与系统定义#include#include#include#include#include#inc

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。