“GPIO使用指南”的版本间的差异

来自弘迪在线
跳转至: 导航搜索
(创建页面,内容为“对于A33/A40i平台,原厂并实现标准的GPIO子系统界面,所以须按下列步骤进行操作: 1. 在FEX文件中添加要生成的GPIO节点: [gpio…”)
 
第1行: 第1行:
 +
==操作GPIO==
 +
Linux环境中操作GPIO为文件读写方式,即open并read/write相应的文件节点即可。参考资料:[https://blog.csdn.net/lell3538/article/details/51277870 《Linux操作GPIO(文件IO方式)》]
 +
 +
==Android APP控制GPIO==
 +
与Linux下操作GPIO的区别:
 +
 +
1. Android下读写GPIO节点需将APP打包为系统应用,或在已Root的系统上临时获取Root权限;
 +
 +
2. 通过File对象读写相应的文件节点,或调用JNI代码实现读写相应的文件节点;
 +
 +
3. 需要SELinux权限设置(修改system_app.te等相关文件,若打包为系统应用后仍报EACCES错误可尝试此步骤);
 +
 +
参考资料:[https://blog.csdn.net/weixin_44008788/article/details/114103422 《Android系统APK操作GPIO读写及添加权限》]
 +
 +
==sunxi GPIO驱动==
 
对于A33/A40i平台,原厂并实现标准的GPIO子系统界面,所以须按下列步骤进行操作:
 
对于A33/A40i平台,原厂并实现标准的GPIO子系统界面,所以须按下列步骤进行操作:
  
 
1. 在FEX文件中添加要生成的GPIO节点:
 
1. 在FEX文件中添加要生成的GPIO节点:
 +
 
[gpio_para]
 
[gpio_para]
 +
 
gpio_used  = 6
 
gpio_used  = 6
 +
 
gpio_pin_1 = port:PL02<0><default><default><default>
 
gpio_pin_1 = port:PL02<0><default><default><default>
 +
 
gpio_pin_2 = port:PL03<0><default><default><default>
 
gpio_pin_2 = port:PL03<0><default><default><default>
 +
 
gpio_pin_3 = port:PL06<0><default><default><default>
 
gpio_pin_3 = port:PL06<0><default><default><default>
 +
 
gpio_pin_4 = port:PL07<1><default><default><0>
 
gpio_pin_4 = port:PL07<1><default><default><0>
 +
 
gpio_pin_5 = port:PL09<1><default><default><0>
 
gpio_pin_5 = port:PL09<1><default><default><0>
 +
 
gpio_pin_6 = port:PL10<1><default><default><0>
 
gpio_pin_6 = port:PL10<1><default><default><0>
  
 
gpio_used为要导出的GPIO数量,若不使用GPIO则写0;后面按顺序填写gpio_pin_x的引脚定义,后面的<>定义分别是复用功能/上下拉/驱动能力/默认状态,具体可参考FEX文件头部的注释。
 
gpio_used为要导出的GPIO数量,若不使用GPIO则写0;后面按顺序填写gpio_pin_x的引脚定义,后面的<>定义分别是复用功能/上下拉/驱动能力/默认状态,具体可参考FEX文件头部的注释。
  
2. 在init.rc(Android)或rcS(Linux)中添加加载gpio_sunxi.ko驱动模块;
+
2. 内核中开启CONFIG_GPIO_SUNXI=m,编译生成gpio_sunxi.ko驱动模块;
 +
 
 +
3. 在init.rc(Android)或rcS(Linux)中insmod加载gpio_sunxi.ko驱动模块;
  
3. 驱动加载后会在/sys/class/gpio_sw下生成对应的引脚目录,在下级目录中的data节点为GPIO状态,例如/sys/class/gpio_sw/PL02/data,使用read/write方法读取(输入状态)或写值(输出状态)即可。
+
4. 驱动加载后会在/sys/class/gpio_sw下生成对应的引脚目录,在下级目录中的data节点为GPIO状态,例如/sys/class/gpio_sw/PL02/data,使用read/write方法读取(输入状态)或写值(输出状态)即可。

2021年12月9日 (四) 15:30的版本

操作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方法读取(输入状态)或写值(输出状态)即可。