网上有很多相关的文章介绍了如何使用sysfs方式控制io,这里也不赘述了,本章主要介绍如何查看sysfs设置io是否成功以及如何得到sysfs方式的io编号。
Linux下通过sysfs方式控制GPIO(/sys/class/gpio)https://blog.youkuaiyun.com/qq_37858386/article/details/85343380
配置
- 内核打开debugfs支持
Symbol: DEBUG_FS [=y]
Prompt: Debug Filesystem
Defined at lib/Kconfig.debug:77
Depends on: SYSFS
Location:
-> Kernel configuration
-> Kernel hacking
- 挂载debugfs
mount -t debugfs none /sys/kernel/debug
测试
$ cat /sys/kernel/debug/gpio
运行结果如下
gpiochip8: GPIOs 224-255, parent: platform/58222000.gpio, 58222000.gpio:
gpiochip7: GPIOs 256-287, parent: platform/5d0f0000.gpio, 5d0f0000.gpio:
gpiochip6: GPIOs 288-319, parent: platform/5d0e0000.gpio, 5d0e0000.gpio:
gpiochip5: GPIOs 320-351, parent: platform/5d0d0000.gpio, 5d0d0000.gpio:
gpiochip4: GPIOs 352-383, parent: platform/5d0c0000.gpio, 5d0c0000.gpio:
gpio-371 ( |SD1_SPWR ) out lo //由内核设备树设置
gpio-373 ( |wp ) in lo
gpio-374 ( |cd ) in hi IRQ
gpiochip3: GPIOs 384-415, parent: platform/5d0b0000.gpio, 5d0b0000.gpio:
gpio-403 ( |sysfs ) out lo //由sysfs子系统设置
gpio-406 ( |sysfs ) out lo
gpiochip2: GPIOs 416-447, parent: platform/5d0a0000.gpio, 5d0a0000.gpio:
gpiochip1: GPIOs 448-479, parent: platform/5d090000.gpio, 5d090000.gpio:
gpio-449 ( |? ) out hi
gpiochip0: GPIOs 480-511, parent: platform/5d080000.gpio, 5d080000.gpio:
有一些有用的信息:
1)GPIOs后面跟着的就是sysfs 使用的io编号
2)表是这个io由什么系统控制,sysfs标识由sysfs子系统控制,有名字的一般是设备树定义的io。 有时候我们的sysfs io失败时,可以通过这个查看是否已经有其他模块占用了这个io。
3)指定电平状态,输入或输出,输出高还是低,输入是否带中断模式。