Linux设备驱动程序开发基础(PPT).ppt
《Linux设备驱动程序开发基础(PPT).ppt》由会员分享,可在线阅读,更多相关《Linux设备驱动程序开发基础(PPT).ppt(28页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1TMCIDDCCIDDC Linux设备驱动程序设备驱动程序开发基础开发基础主讲人主讲人:TonyShen:TonyShen2TMCIDDC2Linux 驱 动 程 序 开 发 基 础课程目标课程目标nLinux设备驱动程序开发简介设备驱动程序开发简介nLinux设备驱动程序结构设备驱动程序结构nLinux设备驱动程序加载方式设备驱动程序加载方式n实验实验:编写一个字符设备驱动程序编写一个字符设备驱动程序(LED或蜂鸣器或蜂鸣器)分别用静态编译分别用静态编译,模块动态加载方法实现加入内核模块动态加载方法实现加入内核3TMCIDDC3Linux 驱 动 程 序 开 发 基 础设备驱动程序设备驱
2、动程序应应用用程程序序驱驱动动程程序序设设备备writereadioctlioctl4TMCIDDC4Linux 驱 动 程 序 开 发 基 础设备驱动程序特点设备驱动程序特点n核心代码:核心代码:设备驱动程序是核心的一部分,像核心中其他的代码一样,出错将导致系统的严重损伤。一个编写不当的设备驱动程序甚至能够使系统崩溃导致文件系统的破坏和数据的丢失;n标准接口:标准接口:设备驱动程序必须为Linux核心或者其从属的子系统提供一个标准的接口;n核心机制:核心机制:设备驱动程序可以使用标准的核心服务比如内存分配、中断发送和等待对列等;n动态可加载:动态可加载:多数的Linux设备驱动程序可以在核心
3、模块发出加载请求时进行加载,同时在不使用设备时进行卸载,这样核心可以有效地利用系统的资源n可配置:可配置:Linux设备驱动属于核心的一部分,用户可以根据自己的需要进行配置来选择适合自己的驱动5TMCIDDC5Linux 驱 动 程 序 开 发 基 础用户态与内核态用户态与内核态nLinux运转在两种模式下,一种是用户态,另一种是内核态。运转在两种模式下,一种是用户态,另一种是内核态。n内核态有较高的权限,可以控制处理器内存的映射和分配方内核态有较高的权限,可以控制处理器内存的映射和分配方式,访问外设空间和处理器状态寄存器,控制中断等。式,访问外设空间和处理器状态寄存器,控制中断等。n用户态只
4、能运行系统上的应用程序。用户态只能运行系统上的应用程序。n驱动程序作为系统内核的一部分,工作在内核态。驱动程序作为系统内核的一部分,工作在内核态。n通过通过get_user put_user copy_from_user copy_to_user等函数实现应用程序和驱动程序之间传送数据(指针)。等函数实现应用程序和驱动程序之间传送数据(指针)。6TMCIDDC6Linux 驱 动 程 序 开 发 基 础Linux设备的分类设备的分类n字符设备字符设备n以字节为单位逐个进行以字节为单位逐个进行I/O操作操作n字符设备中的缓存是可有可无字符设备中的缓存是可有可无n不支持随机访问不支持随机访问n如串
5、口设备如串口设备n块设备块设备n块设备的存取是通过块设备的存取是通过buffer、cache来进行来进行n可以进行随机访问可以进行随机访问n例如例如IDE硬盘设备硬盘设备n可以支持可安装文件系统可以支持可安装文件系统n网络设备网络设备n通过通过BSD套接口访问套接口访问7TMCIDDC7Linux 驱 动 程 序 开 发 基 础设备文件设备文件nLinux抽象了对硬件的处理,所有的硬件设备都可以作为普抽象了对硬件的处理,所有的硬件设备都可以作为普通文件一样来看待通文件一样来看待n可以使用和操作文件相同的、标准的系统调用接口来完成打可以使用和操作文件相同的、标准的系统调用接口来完成打开、关闭、读
6、写和开、关闭、读写和I/O控制操作控制操作n对用户来说,设备文件与普通文件并无区别对用户来说,设备文件与普通文件并无区别n字符设备和块设备是通过文件节点访问的。在字符设备和块设备是通过文件节点访问的。在Linux的文件的文件系统中,可以找到(或者使用系统中,可以找到(或者使用mknod创建)设备对应的文件创建)设备对应的文件名,称这种文件为设备文件名,称这种文件为设备文件。8TMCIDDC8Linux 驱 动 程 序 开 发 基 础设备文件设备文件n命令命令 ls l/dev 可列出系统的设备文件可列出系统的设备文件9TMCIDDC9Linux 驱 动 程 序 开 发 基 础主设备号和次设备号
7、主设备号和次设备号n主设备号:标识该设备的种类,也标识了该设备所使用的驱主设备号:标识该设备的种类,也标识了该设备所使用的驱动程序动程序n主设备号的范围只能是1-255nLinux内核支持动态分配主设备号n次设备号:标识使用同一设备驱动程序的不同硬件设备次设备号:标识使用同一设备驱动程序的不同硬件设备 n同一个驱动程序可以管理多个设备,它们依靠次设备号来区同一个驱动程序可以管理多个设备,它们依靠次设备号来区别。次设备号只在驱动程序内部使用,系统内核直接把次设别。次设备号只在驱动程序内部使用,系统内核直接把次设备号传递给驱动程序,由驱动程序去管理。备号传递给驱动程序,由驱动程序去管理。10TMC
8、IDDC10Linux 驱 动 程 序 开 发 基 础设备文件系统设备文件系统nLinux内核自己管理设备文件,完成设备文件节点的创建、内核自己管理设备文件,完成设备文件节点的创建、删除。(删除。(devfs,device file system)n在在linux2.4/2.6内核中,设备文件系统可在配置内核时定制。内核中,设备文件系统可在配置内核时定制。nlinux2.4内核配置层次n File systems-/dev file system supportnlinux2.6内核配置层次 nFile systems-Pseudo file system-/dev file system s
9、upportn系统驱动程序通过系统驱动程序通过CONFIG_DEVFS_FS宏定义判断系统是宏定义判断系统是否有对设备文件系统的支持。否有对设备文件系统的支持。11TMCIDDC11Linux 驱 动 程 序 开 发 基 础配置设备文件系统配置设备文件系统12TMCIDDC12Linux 驱 动 程 序 开 发 基 础Linux设备驱动程序结构设备驱动程序结构nLinux设备驱动程序的代码结构大致可以分为如下几个部分:设备驱动程序的代码结构大致可以分为如下几个部分:n驱动程序的注册与注销、设备的打开与释放、设备的读写操作、设驱动程序的注册与注销、设备的打开与释放、设备的读写操作、设备的控制操作
10、、设备的中断和轮询处理。备的控制操作、设备的中断和轮询处理。n一个最简单字符驱动程序,由下面一个最简单字符驱动程序,由下面5个函数和个函数和1个结构体就可组成。个结构体就可组成。static int my_open(struct inode*inode,struct file*filp)设备打开时的操作设备打开时的操作 static int my_release(struct inode*inode,struct file*filp)设备关闭时的操作设备关闭时的操作 static int my_write(struct file*file,const char*buffer,size_t co
11、unt,loff_t*ppos)设备写入时的操作设备写入时的操作 13TMCIDDC13Linux 驱 动 程 序 开 发 基 础驱动程序结构驱动程序结构static struct file_operations my_fops=对文件操作结构体成员定义初始值对文件操作结构体成员定义初始值static int _init my_init(void)初始化硬件,注册设备,创建设备节点初始化硬件,注册设备,创建设备节点 static void _exit my_exit(void)删除设备节点,注销设备删除设备节点,注销设备 14TMCIDDC14Linux 驱 动 程 序 开 发 基 础头文件与
12、系统定义头文件与系统定义#include#include#include#include#include#include#include#include 9200.h“#ifndef _KERNEL_#define _KERNEL_#endif#ifndef MODULE#define MODULE#endif#define LED AT91C_PIO_PB11static AT91PS_SYS AT91_SYS1=(AT91PS_SYS)AT91C_VA_BASE_SYS;#define DEVICE_NAME=“my_led”static int Led_Major=0;#ifdef CO
13、NFIG_DEVFS_FSstatic devfs_handle_t Devfs_Led_Dir,Devfs_Led_Raw;#endif15TMCIDDC15Linux 驱 动 程 序 开 发 基 础打开和关闭操作打开和关闭操作nmy_open和和my_release函数会在设备打开和关闭时被调用,其工作很简单,仅函数会在设备打开和关闭时被调用,其工作很简单,仅仅执行两个宏:仅执行两个宏:”MOD_INC_USE_COUNT”,”MOD_DEC_USE_COUNT”。这两个宏负。这两个宏负责记录(增加或者减少)设备模块被使用的情况,防止当有应用程序使用驱动程责记录(增加或者减少)设备模块被使
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux 设备 驱动程序 开发 基础 PPT
限制150内