当前位置:文档之家› linux驱动程序相关头文件简单介绍

linux驱动程序相关头文件简单介绍

LED驱动程序相关头文件简单介绍
分类:linux驱动开发2011-10-25 21:53 3455人阅读评论(1) 收藏举报cstructoutputmoduletypesfile
[cpp]view plaincopy
在解读OK6410官方提供的LED驱动程序源码的过程中,发现很多没见过的宏和函数。

例如S3C64XX_GPM(0)、
S3C64XX_GPM_OUTPUT(0)、__raw_writel(tmp,S3C64XX_GPMPUD)、__raw_writel(tmp,S3C64XX_GPMCON)等。

而这些都包含在一些头文件里面。

另一方面,我们自己动手编写LED的驱动程序也必须知道相关的头文件有哪些,对我们有哪些用。

因此,我觉得在自己动手编写LED驱动程序之前对相关头文件进行简单的分析是非常有必要的。

以下是我自己结合源码分析得出的一些结论,如有不正确的地方,希望能够得到指正。

OK6410官方提供的LED驱动程序源码:
[cpp]view plaincopy
一、模块相关头文件:
1、#include <linux/module.h>:在编写任何模块都需要包含此头文件。

该头文件自动包含了<linux/version.h>头文件,该头文件包含了宏MODULE_LICENSE("GPL")的定义。

2、#include <linux/init.h>:此头文件也是必须的,module_init()与module_exit()宏就是定义在它里面的。

而且正是这个头文件定义了初始化函数加__init和推出函数加__exit的作用(static int __init s3c6410_leds_init(void)和static void
__exit s3c6410_leds_exit(void))
3、#include <linux/kernel.h>:此头文件也是常用头文件,如果需要使用printk函数,则必须包含此头文件。

另外该头文件还包含了<types.h>头文件,而这个头文件定义许多常用的数据类型,其中就包括设备号类型dev_t。

如下:
[cpp]view plaincopy
二、字符设备驱动相关头文件:
1、#include <linux/fs.h>:该头文件包含了常用的数据结构,当然也包括三种最重要的:struct file、struct file_operation、struct inode。

另外该头文件还包含了<linux/ioctl.h>头文件。

2、#include <linux/cdev.h>:该头文件定义了struct cdev数据结构,也包含了字符设备操作的相关函数:
[cpp]view plaincopy
3、<linux/device.h>:包含自动创建设备文件的相关函数的申明:原函数中-class_create(THIS_MODULE,"my_class")、device_create(my_class,NULL,MKDEV(LED_MAJOR,0),NULL,DEVICE_NAME)。

三、s3c64xx GPIO操作相关头文件:
1、#include <mach/gpio.h>:此头文件包含了对S3C64xx 各个GPIO的宏定义,并包含了各个端口的读写函数,如下:[cpp]view plaincopy
上面的头文件包含了<asm-generic/gpio.h>头文件,该头文件包含了GPIO的数据读写函数,如下:[cpp]view plaincopy
2、#include <plat/regs-gpio.h>:定义了GPIO相关的数据宏:
[cpp]view plaincopy
由上可知此头文件包含了<plat/gpio-bank-a.h>-------><plat/gpio-bank-q.h>系列头文件,而这些头文件里面定义了对应GPIO的一系列数据宏,例如<plat/gpio-bank-m.h>里面定义的是led程序中用到的GPM端口相关的数据宏,如下:
[cpp]view plaincopy
3、#include <plat/gpio-cfg.h>:此头文件包含了GPIO的各种配置函数,例如设置输入输出方式,上拉电阻使能等等:[cpp]view plaincopy。

相关主题