Android 添加驱动的两种方式

下面介绍,在Android系统中如何将驱动添加到kernel中。

要求:将驱动queue.c添加kernel中。

方案:下面介绍2种实现方案。2种方案的本质是一样的,区别是一种在menuconfig中单独建立菜单,而另一种则不在menuconfig中单独新建菜单,而是修改已有的配置文件。

1方案一

方案一中,采取的方法是:不新建config菜单,直接将驱动添加到已有的Kconfig中。下面介绍详细步骤。

1.1修改已有配置文件

(1)修改配置文件driver/char/Kconfig,添加如下内容:

config SKYWANG_CQUEUE
    tristate "skywang char queue driver"
    help
        add this to support skywang char queueue 

(2)修改配置文件driver/char/Makefile,添加如下内容:

obj-$(CONFIG_SKYWANG_CQUEUE)   += cqueue.o 

1.2 添加“驱动代码”

添加驱动文件,驱动文件路径如下:

drivers/char/cqueue.c 

1.3 添加驱动

执行make menuconfig打开配置界面,并将驱动cqueue.c添加到kernel中。

如图01,是添加cqueue.c前的选项:

如图02,是添加cqueue.c后的选项:

1.4 验证是否添加成功

查看.config文件,应该有如下配置选项:

CONFIG_SKYWANG_CQUEUE=y

2方案二

方案二中,采取的方法是:新建config菜单,将驱动添加到新建的Kconfig中。下面介绍详细步骤。

2.1修改已有配置文件

(1)修改配置文件driver/char/Kconfig,添加如下内容:

source "drivers/char/skywang/Kconfig"

(2)修改配置文件driver/char/Makefile,添加如下内容:

obj-$(CONFIG_SKYWANG_CQUEUE)   += skywang/

2.2新建“驱动配置”

(1)在driver/char下新建目录,新建后的目录完整路径如下:

driver/char/skywang 

(2)新建drivers/char/skywang/Kconfig文件,内容如下:

menu "skywang test devices"
 

config SKYWANG_CQUEUE
    tristate "skywang char queue driver"
    help
        add this to support skywang char queueue
 
endmenu 

(3)新建drivers/char/skywang/Makefile文件,内容如下:

obj-$(CONFIG_SKYWANG_CQUEUE)   += cqueue.o

2.3 添加“驱动代码”

拷贝驱动文件,拷贝后的文件路径如下:

drivers/char/skywang/cqueue.c

2.4 添加驱动

执行make menuconfig打开配置界面,并将驱动cqueue.c添加到kernel中。

如图03,是添加cqueue.c前的选项:

如图04,是添加cqueue.c后的选项:

如图05,选择“skywang test drivers”后进入的子菜单界面:

通过NDK,使用Android界面的Button点亮LED这4盏灯的方法,必须在adb shell环境下,通过insmod的shell命令预先加载驱动程序。能不能一启动应用程序,就自动加载该驱动程序,开发板一上电,就自动加载该驱动程序 ,方法可将insmod等shell命令加入/etc/profile 或/etc/init.d/rcS等自启动脚本,即可实现开机自动加载。

原文地址:https://www.cnblogs.com/liumin-txgt/p/14611290.html