/sys/class/gpio下用文件IO快捷操作GPIO

在嵌入式设备中对GPIO的操作是最基本的操作。在Linux下面有一个通用的GPIO操作接口,利用映射 “/sys/class/gpio” 的方式,快捷操作,特别是在管理某个设备的电源开关时,很方便,这种方法也被用在Android安卓嵌入式设备中。

首先要内核支持这种方式,看看系统中有没有“/sys/class/gpio”这个文件夹。如果没有请在编译内核的时候加入   Device Drivers-> GPIO Support ->/sys/class/gpio/… (sysfs interface),如果有,那就是目前支持,直接继续下边的。

gpio_operation 通过/sys/文件接口操作IO端口 GPIO到文件系统的映射
控制GPIO的目录位于/sys/class/gpio
/sys/class/gpio/export文件用于通知系统需要导出控制的GPIO引脚编号
/sys/class/gpio/unexport 用于通知系统取消导出
/sys/class/gpio/gpiochipX目录保存系统中GPIO寄存器的信息,包括每个寄存器控制引脚的起始编号base,寄存器名称,引脚总数 导出一个引脚的操作步骤
首先计算此引脚编号,引脚编号 = 控制引脚的寄存器基数 + 控制引脚寄存器位数,如GPIOA_8 = GPIO0 + 8;
向/sys/class/gpio/export写入此编号,比如12号引脚,在shell中可以通过以下命令实现,命令成功后生成/sys/class/gpio/gpio12目录,如果没有出现相应的目录,说明此引脚不可导出
direction文件,定义输入输入方向,可以通过下面命令定义为输出。direction接受的参数:in, out, high, low。high/low同时设置方向为输出,并将value设置为相应的1/0
value文件是端口的数值,为1或0

1. 导出

/sys/class/gpio# echo 44 > export
2. 设置方向

/sys/class/gpio/gpio44# echo out > direction
3. 查看方向

/sys/class/gpio/gpio44# cat direction
4. 设置输出

/sys/class/gpio/gpio44# echo 0 > value

/sys/class/gpio/gpio44# echo 1 > value

5. 查看输出值

/sys/class/gpio/gpio44# cat value
6. 取消导出

/sys/class/gpio# echo 44 > unexport

这种操作在Android中也可以适用,先使用adb shell进入文件系统

你可能感兴趣的:(Linux)