Linux gpiomon 命令 - 监控 GPIO 引脚的状态变化
介绍
gpiomon 命令用于等待指定 GPIO line 上的事件,或指定要监视的事件。
gpiomon 命令由 libgpiod 软件包提供,在 Debian/Ubuntu 系统上可以使用如下命令进行安装。
sudo apt install gpiod
实际上,从 Linux 4.8 开始,不再推荐使用 sysfs 接口(/sys/class/gpio)操作 GPIO,而是建议在用户空间使用字符设备进行操作,libgpiod 就是一个用于操作 GPIO 字符设备的库,同时提供了一些工具,方便开发者进行调试。
libgpiod 包含一系列命令,除了 gpiomon,还有 gpiodetect、gpioinfo、gpioget、gpioset 和 gpiofind 命令。
语法:
gpiomon [OPTIONS] <chip name/number> <offset 1> <offset 2> ...
选项:
-l
,--active-low
:设置低电平为有效电平-B
,--bias=[as-is|disable|pull-down|pull-up]
:设置 bias(默认使用as-is
)-n
,--num-events=NUM
:处理完NUM
个事件后退出-s
,--silent
:不打印事件信息-r
,--rising-edge
:只处理上升沿事件-f
,--falling-edge
:只处理下降沿事件-b
,--line-buffered
:将标准输出设置为行缓冲-F
,--format=FMT
:指定输出格式(%o
为 GPIO 行内偏移量,%e
为事件类型,%s
为事件时间戳秒数部分,%n
为事件时间戳纳秒部分)-h
,--help
:查看帮助并退出-v
,--version
:查看版本信息并退出
示例
等待三次 GPIO(gpiochip0 line1)的上升沿事件,然后退出(非 root 用户需添加 sudo)
$ sudo gpiomon --num-events=3 --rising-edge gpiochip0 1
event: RISING EDGE offset: 3 timestamp: [ 1151.814356387]
event: RISING EDGE offset: 3 timestamp: [ 1151.815449803]
event: RISING EDGE offset: 3 timestamp: [ 1152.091556803]
等待单次下降沿事件,并按指定格式输出
$ sudo gpiomon --format="%e %o %s %n" --falling-edge gpiochip0 1
0 1 1156 615459801
同时等待多个 line 上的事件,并在处理完第一个事件后退出
$ sudo gpiomon --silent --num-events=1 gpiochip0 2 3 5