驱动设计ARM(6410)-按键驱动0基础知识点

在Linux的ARM平台上的驱动设计需要遵循一个基本的模式,也就是说在你的驱动设计里面除了有些是关于你的硬件知识,但是有些东西是设计这个驱动的几个必须的模块:

1、内核驱动的加载函数(必须的)

static int  _ _init initialization_function(void)

{

………………………..

}

module_init(initialization_function);但是在2.6的内核中可以用requset_module(module_name)或者request_module(“char-major-%d-%d”,MAJOR(dev),MINOR(dev));

2、内核驱动卸载模块(必须的)

static void _ _exit cleanup_function(void)

{

……………………………

}

module_exit(cleanup_function);

3、内核模块参数(可以选择的)

在这一点上要说清楚,我们可以在加载驱动的时候给我们的驱动传一些参数,这个参数可是单个的也可以说数组,具体的可以按照实际情况。

static char *student_name =”xmphoenix!”;

static int num=9;

module_param(num,int,S_IRUGO);

module_param(student_name,char *p,S_IRUGO);

这样在内核加载的时候就传进去了两个参数,如果你是在命令行加载该驱动的话,那么你可以在命令行后加入该参数的名称=xxx,类似的模式来加载你传入的参数

4、模块许可声明(必须的)

在这个部分由于Linux的版权的问题,你需要在你的驱动模块里面添加一些声明,其实这个模块什么很大的实际意义,对于的编程没有任何的影响,但是必须加上去

5、模块导出符号(可以选择的)

具体的什么意思,不是很清楚也没有用到过,但是估计就是把内核的符号表导出来,可以让其他的模块使用罢了

6、模块的声明与描述

在这个模块主要是描述你些的这个驱动的一些基本信息,版本…….等一系列的信息,具体的参见一般的说明书就可以。

你可能感兴趣的:(ARM)