查看: 2525|回复: 0

[技术讨论] linux和android下配置gpio方法

[复制链接]
support_lyl 发表于 2017-5-8 15:13:41 | 显示全部楼层 |阅读模式
控制一个gpio可以通过两个步骤实现,以下通过讲解imx6下控制gpio 1_0开始介绍
步骤一:
修改内核将管脚配置成gpio模式.
linux 3.0.35:
修改arch/arm/mach-mx6/board-mx6q_sabresd.h文件,在结构体iomux_v3_cfg_t mx6q_sabresd_pads[]中添加MX6Q_PAD_GPIO_0__GPIO_1_0,
linux 4.1:
修改arch/arm/boot/dts/imx6qdl-sabresd.dtsi文件,在imx6qdl-sabresd下面的pinctrl_hog: hoggrp 中添加MX6QDL_PAD_GPIO_0__GPIO1_IO00 0x80000000,
ps:关于为什么使用MX6Q_PAD_GPIO_0__GPIO_1_0和MX6QDL_PAD_GPIO_0__GPIO1_IO00会在最后说明.

步骤二:
在用户层控制gpio.
在命令行:
echo 0 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio0/direction    //设置为输出
echo 1 > /sys/class/gpio/gpio0/value     //输出高电平
echo 0 > /sys/class/gpio/gpio0/value    //输出低电平
echo in  > /sys/class/gpio/gpio0/direction    //设置为输入
cat /sys/class/gpio/gpio0/value     //读取电平值
在linux程序中:
int fd = open("/sys/class/gpio/export",O_RDWR);
write(fd,'0',1);
close(fd);
....        //后面的参考在命令行的
在android程序中:
很多人以为在android下控制gpio需要自己写jni(大神除外),其实可以不用,android下也有和linux类似的读写文件的方法,下面的就是android下我使用的读写函数,然后其他的参考linux程序的步骤:
写函数:
File file = new File(name);
FileOutputStream output = new FileOutputStream(file, false);
output.write(content.getBytes());
output.close();

读函数:
File file = new File(filename);
FileInputStream input = null;
input = new FileInputStream(file);
while ((len = input.read(temp)) > 0) {

注:关于为什么使用MX6Q_PAD_GPIO_0__GPIO_1_0和MX6QDL_PAD_GPIO_0__GPIO1_IO00.
在linux 3.0.35中io管脚的配置模式的宏定义可以查看arch/arm/plat-mxc/include/mach/iomux-mx6q.h文件
在linux 4.1中可以查看arch/arm/boot/dts/imx6q-pinfunc.h文件

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|天嵌计算机科技 ( 粤ICP备11094220号 )

GMT+8, 2019-10-22 18:59 , Processed in 0.250817 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表