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镜像文件

  • 1
  • 2
  • 3
  • 下一页

相关内容