S5PV210 GPIO驱动及其在android2.3.1下jni调用
1、编写GPIO驱动并编译为模块
完全按照linux驱动的编写方式,封装为标准的linux字符驱动
2、使用C语言编写测试程序
编写、编译一个操作led的程序进行驱动测试
以上两步可参考《s5pv210-gpio》:
s5pv210-gpio.c
s5pv210-gpio.h
s5pv210-gpio_test.c
其编译必须在linux环境下完成,交叉编译测试程序时使用静态编译
3、在eclipose中设计java接口
在eclipose中新建一个android工程用于设计底层jni的操作接口(windows、linux均可)
可参考《s5pv210-gpio》:
s5pv210-gpio\src\com\edu\gpio\s5pv210_gpio_options.java
4、由javah 生成.h文件
我们最终的目的是要实现s5pv210_gpio_options.java中设计的接口
由jdk自带的javah组件生成s5pv210_gpio_options.h文件
打开终端,进入刚才编译的Java程序的目标文件夹(如果是在Eclipse中,则进入工程的bins\classes目录),执行下面的命令:
javah com.edu.gpio.s5pv210_gpio_options
其中,com.edu.gpio.是package的名字,s5pv210_gpio_options是声明了native接口的Java类。
之后,将会生成一个形如com_edu_gpio_s5pv210_gpio_options.h的头文件。
此头文件中便声明了可以被Java调用的C/C++的函数形式。
5、由.h文件设计.c文件接口
自己根据s5pv210_gpio_options.h构建相应的.c文件
复制一个跟s5pv210_gpio_options.h同名的.c文件,将里面的声明全部改为对应的实现
可参考:s5pv210_gpio_options.c
注意java中数据类型与c语言数据类型之间的转换规则
设计.c文件的实现时可参考第2步的测试程序设计
7、编写makefile文件
C程序编写完毕后,在文件夹中创建一个名为Android.mk的文件,文件名不能修改,内容如下:
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES:=com_sapp_gpio.c
LOCAL_C_INCLUDES := $(JNI_H_INCLUDE)
LOCAL_MODULE := libgpio
LOCAL_SHARED_LIBRARIES := libutils
LOCAL_MODULE_TAGS := eng
LOCAL_PRELINK_MODULE := false
include $(BUILD_SHARED_LIBRARY)
其中,LOCAL_SRC_FILES后面的文件是我们的C语言的源程序文件名
LOCAL_MODULE后面的名字是我们将来生成的目标文件名
include $(BUILD_SHARED_LIBRARY)表示将来要生成动态链接库。
OK,写好之后,回到Android源码的根目录,执行:
在android源码目录的external下建立libs5pv210-gpio文件夹
将com_edu_gpio_s5pv210_gpio_options.c
com_edu_gpio_s5pv210_gpio_options.h
Android.mk
libs5pv210-gpio.so
拷到此目录下
回到android源码根目录,执行以下命令make libgpio
其中,libgpio是我们的Android.mk文件中LOCAL_MODULE的名字。
等待编译结束,在out/target/product/generic/system/lib/libgpio.so目录下即可找到编译好的文件。
8、将动态库拷入根文件系统/system/lib文件
9、编写测试程序,下载到开发板中使用
相关代码可在此处下载:http://download.csdn.net/detail/xdw1985829/4390129
转载自:http://blog.csdn.net/xdw1985829/article/details/7687917
S5PV210 GPIO驱动及其在android2.3.1下jni调用相关推荐
- s5pv210_gpio驱动及其在android2.3.1下jni调用~~
1.编写GPIO驱动并编译为模块 完全按照linux驱动的编写方式,封装为标准的linux字符驱动 2.使用C语言编写测试程序 编写.编译一个操作led的程序进行驱动测试 以上两步可参考<s5p ...
- s5pv210_gpio驱动及其在android2.3.1下jni调用
1.编写GPIO驱动并编译为模块 完全按照linux驱动的编写方式,封装为标准的linux字符驱动 2.使用C语言编写测试程序 编写.编译一个操作led的程序进行驱动测试 以上两步可参考<s5p ...
- openharmony GPIO 驱动开发
openharmony GPIO 驱动开发 GPIO 基础知识 GPIO 基础知识--概念 GPIO 基础知识--IO 复用 GPIO 基础知识--GPIO 分组和编号 GPIO 基础知识--用户态测 ...
- 【嵌入式】GPIO驱动LED设计
[嵌入式]GPIO驱动LED设计 1. 操作内容 2. 操作步骤 2.1 编译Linux内核 2.2 编译LED驱动 2.3 运行文件 3. 操作结果 1. 操作内容 掌握嵌入式 GPIO 驱动程序的 ...
- 通用GPIO驱动和apk(含jni),支持所有GPIO,支持LED控制,支持友善6410/210开发板,支持安卓2.3/4.0,内核2.6/3.0
转自:http://www.arm9home.net/read.php?tid-27259.html GPIO Driver and apk(include jni) support All GPIO ...
- 树莓派GPIO驱动原理
1.前言 最近认真学习了树莓派,从浅到深认真分析了wiringPi实现代码,借助树莓派学习linux收获颇丰.深入学习linux一段时间后发现它非常有魅力,一个简单的IO口输出操作尽有那么多的&quo ...
- gpio驱动广播Android,[RK3288][Android6.0] 调试笔记 --- 通用GPIO驱动控制LED【转】
Platform: ROCKCHIP OS: Android 6.0 Kernel: 3.10.92 由于板子没有lcd无法得知sd卡升级是否完成,因此使用LED显示. Recovery中升级完成后控 ...
- 【WinCE】流设备驱动简介及GPIO驱动的实现
流设备驱动实际上就是导出标准的流接口函数的驱动,这是文档上面的定义.在WinCE中,所有的流设备都导出流设备接口,这样WinCE中的Device Manager可以加载和管理这些流设备驱动. 流设备 ...
- 自己动手写TCC7901的GPIO驱动
//===================================================================== //TITLE: // 自己动手写TCC7901的 ...
最新文章
- SQL2K数据库开发二之查看和修改Sample数据库
- 罗田用好“大数据”力促扶贫更精准
- 笔记本电脑打开后不显示桌面_宝骏630打开空调开关后压缩机不工作 - 汽车空调...
- 真实HDFS集群启动后master的jps没有DataNode
- Java技术:Optional 相关用法介绍笔记
- 【转载】define与typedef区别与联系
- 脚本安装Rocky版OpenStack 1控制节点+1计算节点环境部署
- DllMain 参数解释
- Bada学习-(二十九)bada测试服务器
- java筆試題,Java筆試題附答案 | 學步園
- 限流器(一):guava应用级限流器RateLimiter之SmoothBursty
- 微信账单怎么查?微信流水账单怎么打印
- 破解XP系统密码的常用的几种方法
- 发布网站ASP.NET(ASPX)
- intel RDT (Resource Director Technology) 管理LLC和内存带宽
- 物联网平台搭建教程01
- 有关PHP文档生成工具---PHPDocumentor
- ERP仓库管理系统需求
- outlook 2016 邮件怎么显示图片
- 代码保护(二) 通过Java反编译工具测试加密效果