|  | 
 
| 控制一个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文件
 
 
 | 
 |