一、驱动和层序
驱动程序为driver\gpio\gpiolib-sysfs.c
二、常用的sysfs文件
2.1 有哪些GPIO控制器
在/sys/bus/gpio/devices
目录下,列出了所有的GPIO控制器,总共11个GPIO控制器
root@npi:~# ls /sys/bus/gpio/devices/
gpiochip0 gpiochip1 gpiochip2 gpiochip3 gpiochip4 gpiochip5 gpiochip6
2.2 每个GPIO控制器的详细信息
/sys/class/gpio/gpiochipxxx
下,有这些信息:
root@npi:/sys/class/gpio/gpiochip500# ls -l
total 0
-r--r--r-- 1 root root 4096 Feb 13 16:18 base #GPIO控制器的GPIO编号
lrwxrwxrwx 1 root root 0 Feb 13 16:18 device -> ../../../virtual_gpiocontroller
-r--r--r-- 1 root root 4096 Feb 13 16:18 label #名字
-r--r--r-- 1 root root 4096 Feb 13 16:18 ngpio #引脚个数
drwxr-xr-x 2 root root 0 Feb 13 16:18 power
lrwxrwxrwx 1 root gpio 0 Feb 13 15:59 subsystem -> ../../../../../class/gpio
-rw-r--r-- 1 root root 4096 Feb 13 15:59 uevent
2.3 查看GPIO使用情况
cat /sys/kernel/debug/gpio
2.4 通过sysfs使用GPIO
如果只是简单的引脚控制(比如输出、查询输入值),可以不编写驱动程序。
但是设计中断的话,就需要编写驱动程序了。
2.4.1 驱动GPIO编号
查看每个/sys/bus/gpio/devices/gpiochipXXX
目录下的label,确定你要使用的GPIO控制器,也称GPIO Bank
根据它的名字gpiochipXXX,就知道GPIO的基址时XXX
基址加上引脚offset,就是这个引脚的编号
2.4.2 导出/设置方向/读写值
例子:
echo 509 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio509/direction
echo 1 > /sys/class/gpio/gpio509/value
echo 509 > /sys/class/gpio/unexport
echo 509 > /sys/class/gpio/export
echo in > /sys/class/gpio/gpio509/direction
cat /sys/class/gpio/gpio509/value
echo 509 > /sys/class/gpio/unexport