歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android驅動使用JNI調用

學習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鏡像文件

Copyright © Linux教程網 All Rights Reserved