博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android(Java)控制GPIO的方法及耗时分析
阅读量:6610 次
发布时间:2019-06-24

本文共 1464 字,大约阅读时间需要 4 分钟。

  前面两篇分别介绍了通过脚本和C代码读写/sys/class/gpio以控制GPIO。实际项目调试时经常还需要在Java代码里控制GPIO,其实现与C代码类似,唯一不同是Android权限。本文重点介绍Android6.0权限的配置并对在Java层控制GPIO的耗时做简单分析。

  以高通平台为例,权限配置主要修改HLOS/device/qcom/sepolicy/common目录下的file.te、file_contexts和system_app.te三个文件。

  file.te修改如下,

# GPIO accessed by system apptype sysfs_gpio, fs_type, sysfs_type;

  file_contexts修改如下,

/sys/devices/soc/1010000.pinctrl/gpio/gpio62/value           u:object_r:sysfs_gpio:s0/sys/devices/soc/1010000.pinctrl/gpio/gpio63/value           u:object_r:sysfs_gpio:s0

  system_app.te修改如下,

allow system_app sysfs_gpio:file rw_file_perms;

  修改完成后执行make bootimage命令,生成boot.img并使用fastboot烧录。

  Android应用修改AndroidManifest.xml文件,在manifest节点中添加android:sharedUserId="android.uid.system。修改Android.mk文件,添加LOCAL_CERTIFICATE := platform设置签名。Java控制GPIO的示例代码如下,

void IOCtrl(int pin, int level) {        String path;        path = "/sys/class/gpio/gpio" + pin + "/value";        try {            FileOutputStream out = new FileOutputStream(path);            out.write(level);            out.flush();            out.close();        } catch (IOException e) {            e.printStackTrace();            return;        }    }    if (trigger == 0x01) {        trigger = 0x00;        IOCtrl(62, '1');        IOCtrl(63, '1');    } else {        trigger = 0x01;        IOCtrl(62, '0');        IOCtrl(63, '0');    }

  以上代码执行结果如下图所示,可以看到,两个IO被拉高前后相差约2.5ms。

  说明:如果只是做测试,可以使用setenforce 0命令设置SELinux为permissive模式,就可以用Android Studio编译测试应用控制GPIO,更为方便。

转载地址:http://zhsso.baihongyu.com/

你可能感兴趣的文章
深度学习笔记之CNN(卷积神经网络)基础
查看>>
JAVA设计模式之【原型模式】
查看>>
Hadoop 添加删除数据节点(datanode)
查看>>
33.8. slb configuration
查看>>
ext的window如何隐藏水平滚动条
查看>>
71.8. Run level shell script to start Oracle 10g services on RedHat Enterprise Linux (RHAS 4)
查看>>
SAP QM Transfer of Inspection Stock
查看>>
全新视觉| 数治省市:SAP大数据构想一切可能
查看>>
ORACLE expdp备份与ORA-31693、ORA-02354、ORA-02149
查看>>
SAP S/4 HANA新变化-信用管理
查看>>
doc-remote-debugging.html
查看>>
DBMS_STATS.GATHER_TABLE_STATS
查看>>
Java-单机版的书店管理系统(练习设计模块和思想_系列 五 )
查看>>
嵌入式 详解udev
查看>>
《C程序员:从校园到职场》出版预告(2):从“百花齐放”到“一枝独秀”
查看>>
Network Monitor 查询命令和MySQL命令
查看>>
好“戏”刚刚开幕 云计算逐步被认可
查看>>
云安全:这也是需要花大钱去建设的部分
查看>>
以全局产业观领航智慧城市建设
查看>>
5G网络不止能1秒下一部电影,它还能够…
查看>>