GPIO使用指南

来自弘迪在线
Hdadmin讨论 | 贡献2021年12月11日 (六) 14:39的版本
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航搜索

操作GPIO

Linux环境中操作GPIO为文件读写方式,即open并read/write相应的文件节点即可。参考资料:《Linux操作GPIO(文件IO方式)》

Android APP控制GPIO

与Linux下操作GPIO的区别:

1. Android下读写GPIO节点需将APP打包为系统应用,或在已Root的系统上临时获取Root权限;

2. 通过File对象读写相应的文件节点,或调用JNI代码实现读写相应的文件节点;

3. 需要SELinux权限设置(修改system_app.te等相关文件,若打包为系统应用后仍报EACCES错误可尝试此步骤);

参考资料:《Android系统APK操作GPIO读写及添加权限》

sunxi GPIO驱动

对于A33/A40i平台,原厂并实现标准的GPIO子系统界面,所以须按下列步骤进行操作:

1. 在FEX文件中添加要生成的GPIO节点:

[gpio_para]

gpio_used = 6

gpio_pin_1 = port:PL02<0><default><default><default>

gpio_pin_2 = port:PL03<0><default><default><default>

gpio_pin_3 = port:PL06<0><default><default><default>

gpio_pin_4 = port:PL07<1><default><default><0>

gpio_pin_5 = port:PL09<1><default><default><0>

gpio_pin_6 = port:PL10<1><default><default><0>

gpio_used为要导出的GPIO数量,若不使用GPIO则写0;后面按顺序填写gpio_pin_x的引脚定义,后面的<>定义分别是复用功能/上下拉/驱动能力/默认状态,具体可参考FEX文件头部的注释。

2. 内核中开启CONFIG_GPIO_SUNXI=m,编译生成gpio_sunxi.ko驱动模块;

3. 在init.rc(Android)或rcS(Linux)中insmod加载gpio_sunxi.ko驱动模块;

4. 驱动加载后会在/sys/class/gpio_sw下生成对应的引脚目录,在下级目录中的data节点为GPIO状态,例如/sys/class/gpio_sw/PL02/data,使用read/write方法读取(输入状态)或写值(输出状态)即可。