本帖最后由 技术学习 于 2016-10-24 09:26 编辑
方法一:采用iomux的方法 在设备树中iomux中添加复用gpio引脚如下:
for i in /sys/class/gpio/* ; do cat $i/label; cat $i/base; echo; done 查询gpio的base
一般可以这样计算GPIOn_IOx = (n-1)*32 + x
此时可以使用echo命令进行控制: 命令为: echo $i > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio$i/direction 或echo "in" > /sys/class/gpio/gpio$i/direction
echo "1" > /sys/class/gpio/gpio$i/value echo "0" > /sys/class/gpio/gpio$i/value
echo $i > /sys/class/gpio/unexport 或者使用 open("/sys/class/gpio/export", O_WRONLY); write函数进行控制。参考test.c。
方法二:创建dev/gpio节点。
添加driver/misc/gpio/gpio-user.c,修改Makefile文件编译。 修改 driver/misc/Makefile 添加: obj-y += gpio/ 在linux_imx6ul_config中添加: CONFIG_GPIO_USER_INTF=y 编译之后。在dev下有gpio节点。 采用gpio-test.c为用户测试程序。编译为gpio-test。
使用gpio-test in 2测试DI。 使用gpio-test out 9 1 测试DO 输出为高电平。 使用gpio-test out 9 0 测试DO 输出为低电平。
|