學習Android驅動是一個漫長的過程,當然你也可以說有了Linux設備驅動開發經驗學習Android驅動是很簡單的,呵呵,的卻如此,畢竟Android內核是跑在linux內核上,Android的應用調用的其實是linux驅動。Android Application調用Linux驅動可以這麼說有兩種方法,也就是兩種處理的流程。
Android應用層調用Linux驅動的方式:
第一,通過在Android內核源碼(不是linux內核源碼)中添加HAL層、JNI層、開啟系統服務,這是一個比較復雜的過程,很多標准的設備都采用這種方式設計,比如說wifi、gps、sensor等,這種調用過程看起來比較標准,但是如果作為第三方開發就會很麻煩,HAL層、JNI層,系統服務層,每層都需要編譯Android內核源碼,這樣就會延長了產品的開發周期;第二,通過配置NDK環境,在NDK環境中直接編寫JNI層,然後在Android應用層中添加類,加載JNI庫即可調用設備的驅動。
現在我們以Tiny210上的LED驅動作為例子講解如何使用NDK環境編寫JNI庫來調用設備的驅動程序。
一、首先是編寫linux驅動程序,:
1、源碼:linux-2.6.36-android\drivers\char\tiny210_leds.c
2、修改當前目錄(linux-2.6.36-android\drivers\char)的kconfig,添加如下內容:
config TINY210_LEDS
tristate "LED Support for Tiny210 GPIO LEDs"
depends on CPU S5PV210
default y
help
This option enables support for LEDs connected to GPIO lines
on Tiny210 boards.
3、修改當前目錄(linux-2.6.36-android\drivers\char)下的makefile文件,添加如下內容:
obj-$(CONFIG_TINY210_LEDS) += tiny210_leds.o
4、到源碼目錄執行make menuconfig 配置LED驅動編譯進內核,系統起來就加載驅動
5、執行 make 生成zImage鏡像文件