星悬_月 发表于 2016-12-30 15:17:18

安卓APP如何操作Cubieboard2的GPIO口

小弟近日接触Cubieboard2,想编写安卓APP读板子指定GPIO口的状态,遇到如下问题,望大神们解答,感激不尽:

1. “android应用控制GPIO控制LED灯开发实例”的教程中提及的javalib.jar、android_os_Gpio.cpp和Gpio.java文件我在官方提供的android4.2版本的源码中并没有找到,请问能否提供这两个文件或下载地址?
2. 官方提供的通过GPIO调压的源码gpio-ctrl和cb-gpio-beta1.apk的ubuntuone下载链接已失效,请问能否提供这两个文件或下载地址?
3. 据“A20_script和GPIO开发说明书”中所说,sys_config.fex文件是打包到img中的,这是不是意味着,如果我想对某些GPIO口进行单独配置,是不是得在lichee\tools\pack\chips\sun7i\configs\android\sugar-cubiebard2\sys_config.fex修改下的内容,重新编译内核源码,编译安卓源码,重烧安卓镜像至cubieboard2中才能使GPIO配置生效?
4. 我知道有个dragon工具可以读取img文件的配置文件sys_config.fex,我直接在该工具中修改配置并保存是否可行?
5. lichee\tools\linux-3.4\drivers\gpio\gpio-sunxi.c读取的配置文件是不是arch\arm\configs目录下的sun7ismp_defconfig文件?还是说是其他文件?sun7ismp_defconfig、sun7ismp_android_defconfig和cubieboard2_config有何区别?哪个才是配置GPIO的关键?

问题比较多,其实关键还是不知道sys_config.fex的确切路径以及如何让修改后的配置生效。再次感谢!

醉月 发表于 2017-1-1 14:50:34

本帖最后由 醉月 于 2017-1-1 14:51 编辑

不清楚您对 kernel 部分是否熟悉,也不清楚您是否有了解过 hal 的东西。
其实,如果有兴趣,时间也不紧张的话,建议使用以下流程搞:
1. gpio_get_value()   该函数在 kernel 层可以获取 GPIO 的状态;
2. show()/store() 方法,可以将 kernel 层的东西,导出到 /sys/ 目录下,可以参看 kernel/driver/leds/leds-class.c 以及 /sys/class/leds/ 下的东西。
3. open / read / write   /sys/class/leds/ 下的所需要的节点即可
4. c 和 java 之间通过 jni 的方式,注册一批 native 方法,轻松如愿。

这里涉及到 GPIO 子系统、sysfs 系统、jni。

看您的熟悉程度了。



星悬_月 发表于 2017-1-1 22:50:35

醉月 发表于 2017-1-1 14:50 static/image/common/back.gif
不清楚您对 kernel 部分是否熟悉,也不清楚您是否有了解过 hal 的东西。
其实,如果有兴趣,时间也不紧张的 ...

感谢回复,我现在基本上有思路了。我发现gpio_sunxi.ko已经注册,只要修改.fex文件就好了。但是通过dragon工具修改配置后,再使用phoenixsuit烧录固件居然直接挂掉了。使用http://forum.cubietech.com/forum.php?mod=viewthread&tid=7274&extra=page%3D1 提供的方法也没活过来,愁啊!大神知道如何恢复不?

醉月 发表于 2017-1-2 12:49:10

星悬_月 发表于 2017-1-1 22:50 static/image/common/back.gif
感谢回复,我现在基本上有思路了。我发现gpio_sunxi.ko已经注册,只要修改.fex文件就好了。但是通过drago ...

sorry,毕竟cb2是我2013年玩的...后续就未再玩了

星悬_月 发表于 2017-1-2 15:00:27

醉月 发表于 2017-1-2 12:49 static/image/common/back.gif
sorry,毕竟cb2是我2013年玩的...后续就未再玩了

没关系,我自己找到方法救活了。就是镜像中的sys_config.fex不能改,改完再烧到板子里就挂了,又得重烧官方的镜像,郁闷中。。。

醉月 发表于 2017-1-2 20:00:50

星悬_月 发表于 2017-1-2 15:00 static/image/common/back.gif
没关系,我自己找到方法救活了。就是镜像中的sys_config.fex不能改,改完再烧到板子里就挂了,又得重烧官 ...

莫非格式、范围不对?

星悬_月 发表于 2017-1-3 08:36:39

醉月 发表于 2017-1-2 20:00 static/image/common/back.gif
莫非格式、范围不对?

不可能的,我就把leds_para下的led_used改为0,重新保存了一下镜像。奇怪的是镜像大了2M,然后再烧录就不好使了,痛苦中。。。
页: [1]
查看完整版本: 安卓APP如何操作Cubieboard2的GPIO口