1. A20的bsp给应用程序封装了gpio接口,其源码在bsp的位置如下:
frameworks/base/core/java/android/os/Gpio.java
frameworks/base/core/jni/android_os_Gpio.cpp
使用的时候导入javalib.jar即可
2. 下面介绍如何在驱动层操作gpio
通过搜索驱动代码,在init_ctp.c里面发现这一行
__gpio_set_value(config_info.wakeup_gpio_number, 1);
这显然是给一个gpio管脚设置高低电平
那么config_info.wakeup_gpio_number这个一定是此管脚的编号,再查看代码发现
type = script_get_item("ctp_para", "ctp_wakeup", &item);
if(SCIRPT_ITEM_VALUE_TYPE_PIO != type) {
printk("script_get_item ctp_wakeup err\n");
return -1;
}
config_info.wakeup_gpio_number = item.gpio.gpio;
从这几句就可以看出,script_get_item通过sys_config.fex文件的里面配置信息给其分配了一个编号。
那么我们想操作这个gpio,用此编号即可。从代码注释里可以看到这个编号的含义。
在gpio.h里面,u32 gpio; /* gpio global index, must be unique */
也就是说,这样用即可
script_get_item("ctp_para", "ctp_wakeup", &item);
__gpio_set_value(item.gpio.gpio, 1);
这里要注意,__gpio_set_value是两个下划线开头,我用了一个下划线,找了半天才找到问题