#linux-gpio #gpio #命令行 #linux #gpio 引脚 #命令行工具 #访问控制

app gpiocdev-cli

一个用于通过 GPIO 字符设备访问 Linux 上 GPIO 线的工具

11 个版本

0.5.4 2024 年 5 月 23 日
0.5.3 2024 年 2 月 20 日
0.5.2 2023 年 8 月 11 日
0.5.1 2023 年 7 月 18 日
0.4.0 2022 年 11 月 24 日

543Unix API

Download history 117/week @ 2024-05-21 3/week @ 2024-06-04 3/week @ 2024-06-11

每月 699 次下载

Apache-2.0 OR MIT

380KB
8K SLoC

gpiocdev-cli

Build Status github crate LICENSE

一个用于访问和控制 Linux 上 GPIO 线的命令行工具。

这与 libgpiod 提供的工具等效,合成为一个单一工具。

$ gpiocdev -h
A utility to control GPIO lines on Linux using GPIO character devices.

Usage: gpiocdev [OPTIONS] <COMMAND>

Commands:
  chip      Get information about GPIO chips
  edges     Monitor GPIO lines for edge events
  get       Read the levels of GPIO lines
  line      Get information about GPIO lines (everything but levels)
  notify    Monitor lines for requests and changes to configuration state
  platform  Get information about the platform GPIO uAPI support
  set       Set the levels of GPIO lines
  help      Print this message or the help of the given subcommand(s)

Options:
  -v, --verbose  Provide more detailed error messages
  -h, --help     Print help
  -V, --version  Print version

请参阅各个子命令的帮助信息以获取更多详细信息。

示例用法

chip

$ gpiocdev chip
gpiochip0 [pinctrl-bcm2711] (58 lines)
gpiochip1 [raspberrypi-exp-gpio] (8 lines)

line

$ gpiocdev line -c 1
gpiochip1 - 8 lines:
	line   0:	BT_ON         	output
	line   1:	WL_ON         	output
	line   2:	PWR_LED_OFF   	output active-low consumer=led1
	line   3:	GLOBAL_RESET  	output
	line   4:	VDD_SD_IO_SEL 	output consumer=vdd-sd-io
	line   5:	CAM_GPIO      	output consumer=cam1_regulator
	line   6:	SD_PWR_ON     	output consumer=sd_vcc_reg
	line   7:	SD_OC_N       	input

$ gpiocdev line RXD0 GPIO22 WL_ON
gpiochip0 22	GPIO22        	input
gpiochip0 33	RXD0          	input
gpiochip1 1	WL_ON         	output

get

$ gpiocdev get RXD0 GPIO22
RXD0=active GPIO22=inactive

$ gpiocdev get --quoted RXD0 GPIO22
"RXD0"=active "GPIO22"=inactive

$ gpiocdev get --numeric RXD0 GPIO22
1 0

set

$ gpiocdev set GPIO22=active

$ gpiocdev set GPIO17=1

交互模式

$ gpiocdev set -i GPIO23=1 GPIO24=0
gpiocdev-set> get
GPIO23=active GPIO24=inactive
gpiocdev-set> toggle 
gpiocdev-set> get
GPIO23=inactive GPIO24=active
gpiocdev-set> toggle GPIO23
gpiocdev-set> get
GPIO23=active GPIO24=active
gpiocdev-set> set GPIO24=0
gpiocdev-set> get
GPIO23=active GPIO24=inactive
gpiocdev-set> exit

edges

$ gpiocdev edges GPIO22
264.429997058	rising	GPIO22
270.948800095	falling	GPIO22
279.482197087	rising	GPIO22

$ gpiocdev edges --localtime GPIO22
2022-10-10T08:01:59.078908766	falling	GPIO22
2022-10-10T08:01:59.810733200	rising	GPIO22
2022-10-10T08:02:00.497461672	falling	GPIO22

notify

$ gpiocdev notify GPIO23
390.467444514	requested	GPIO23
390.467655548	released	GPIO23
391.701420722	requested	GPIO23
391.701624886	released	GPIO23

$ gpiocdev notify --localtime GPIO23
2022-10-10T08:03:35.365989261	requested	GPIO23
2022-10-10T08:03:35.366200648	released	GPIO23
2022-10-10T08:03:35.884780936	requested	GPIO23
2022-10-10T08:03:35.884881408	released	GPIO23

platform

$ gpiocdev platform
Kernel 5.4.237-yocto-standard
uAPI ABI v1 is supported.
uAPI ABI v2 is not supported by the kernel.
$ gpiocdev platform -v
Kernel 5.15.0-72-generic
Kernel does not support HTE (added in 5.19).
uAPI ABI v1 is supported.
uAPI ABI v2 is supported.

ABI 兼容性

该命令行支持 GPIO uAPI v1 和 v2。

需要 v2 的选项(如 debounce)如果应用于只支持 v1 的内核将失败。

可以在一个可执行文件中支持任一或两个 uAPI 版本。默认情况下,两者都受支持,由内核支持的最新 ABI 被使用。可以使用 --abi-version 选项强制使用特定的 ABI。

libgpiod 兼容性

这些工具与 libgpiod v2 工具具有插件兼容性,但与那些不同,也可以与 GPIO uAPI v1 和 v2 一起工作。

子命令映射到 libgpiod 工具如下

子命令 libgpiod 工具 别名
chip gpiodetect detect
edges gpiomon mon
get gpioget -
line gpioinfo info
notify gpionotify -
platform - -
set gpioset -

子命令别名提供了一种从 libgpiod 工具名称中排除 gpio 前缀的替代方案。例如

gpiocdev detect

相当于

gpiocdev chip

libgpiod v1 的 gpiofind 工具已被 line 子命令取代。

许可证

许可协议为以下之一

任您选择。

贡献

除非您明确声明,否则任何根据Apache-2.0许可证定义的、有意提交以包含在本作品中的贡献,将按上述方式双许可,没有任何额外的条款或条件。

依赖项

~6–14MB
~163K SLoC