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 日 |
543 在 Unix API 中
每月 699 次下载
380KB
8K SLoC
gpiocdev-cli
一个用于访问和控制 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 版 (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证(LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任您选择。
贡献
除非您明确声明,否则任何根据Apache-2.0许可证定义的、有意提交以包含在本作品中的贡献,将按上述方式双许可,没有任何额外的条款或条件。
依赖项
~6–14MB
~163K SLoC