下面介绍,在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等自启动脚本,即可实现开机自动加载。