下面介紹,在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等自啟動腳本,即可實現開機自動加載。