欢迎来到天天文库
浏览记录
ID:44673211
大小:310.00 KB
页数:28页
时间:2019-10-24
《Linux+设备驱动程序》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Linux设备驱动程序开发基础主讲人:TonyShen课程目标Linux设备驱动程序开发简介Linux设备驱动程序结构Linux设备驱动程序加载方式实验:编写一个字符设备驱动程序(LED或蜂鸣器)分别用静态编译,模块动态加载方法实现加入内核设备驱动程序应用程序驱动程序设备writereadioctlioctl设备驱动程序特点⑴核心代码:设备驱动程序是核心的一部分,像核心中其他的代码一样,出错将导致系统的严重损伤。一个编写不当的设备驱动程序甚至能够使系统崩溃导致文件系统的破坏和数据的丢失;⑵标准接口:设备驱动程序必须为Linux核心或者其从属的
2、子系统提供一个标准的接口;⑶核心机制:设备驱动程序可以使用标准的核心服务比如内存分配、中断发送和等待对列等;⑷动态可加载:多数的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->Pseudofilesystem->/devfilesystemsupport系统驱动程序通过CONFIG_DEVFS_FS宏定义判断系统是否有对设备文件系统的支持。配
6、置设备文件系统Linux设备驱动程序结构Linux设备驱动程序的代码结构大致可以分为如下几个部分:驱动程序的注册与注销、设备的打开与释放、设备的读写操作、设备的控制操作、设备的中断和轮询处理。一个最简单字符驱动程序,由下面5个函数和1个结构体就可组成。staticintmy_open(structinode*inode,structfile*filp){设备打开时的操作…}staticintmy_release(structinode*inode,structfile*filp){设备关闭时的操作…}staticintmy_write(stru
7、ctfile*file,constchar*buffer,size_tcount,loff_t*ppos){设备写入时的操作…}驱动程序结构staticstructfile_operationsmy_fops={对文件操作结构体成员定义初始值…}staticint__initmy_init(void){初始化硬件,注册设备,创建设备节点…}staticvoid__exitmy_exit(void){删除设备节点,注销设备…}头文件与系统定义#include#include#incl
8、ude#include#include#inc
此文档下载收益归作者所有