Linux系统中,设备驱动程序是操作系统内核的重要组成部分,在与硬件设备之间建立了标准的抽象接口。通过这个接口,用户可以像处理普通文件一样,对硬件设备进行打开(open)、关闭(close)、读写(read/write)等操作。通过分析和设计设备驱动程序,可以深入理解Linux系统和进行系统开发。本文通过一个简单的例子来说明设备驱动程序的设计。
在我们看到实例之前先了解一下驱动程序的接口流程图
->应用程序
->调用标准的read()、write()、ioctl()、opent()、close()等函数
->File_operation数据结构
->驱动程序中对应硬件设备实际device_read()、device_write()、device_ioctl()、device_open()、
device_close()等函数
->硬件设备
1、嵌入式Linux驱动程序常用的头文件:
#include <linux/config.h> //Linux内核编译时的配置文件,文件里面指向另一个由
//make menuconfig 自动生成的文件 autoconf.h
#include <linux/kernel.h>//最基本的内核模块头文件
#include <linux/module.h>//关于模块驱动程序的头文件
#include <linux/fs.h> //文件系统所必需的头文件
#include <linux/interrupt.h> //for interrupt
#include <linux/init.h>
#include <linux/delay.h> //for delay
#include <linux/sched.h> //这里包含了进行正确性检查的宏
#include <linux/modversions.h>
#include <linux/version.h> //定义了Linux内核版本,用于版本检查
#include <asm/io.h> //I/O头文件,以宏的嵌入汇编程序形式定义对I/O端口操作的函数
#include <as