#linux-gpio #gpio #gpio-pin #linux #command-line #cli #sysfs-gpio

bin+lib gpio-utils

Linux 下与 GPIO 交互的命令行工具。这封装了 sysfs_gpio crate,使其可用于 Rust 应用或任何其他应用。

4 个版本

使用旧的 Rust 2015

0.3.0 2019 年 1 月 28 日
0.1.2 2018 年 4 月 3 日
0.1.1 2017 年 11 月 21 日
0.1.0 2016 年 4 月 25 日

#2010命令行工具

MIT/Apache

49KB
990

Linux GPIO 工具

Build Status Version License

GPIO 工具提供了对 Linux 系统上 GPIO 的便捷访问。该库构建在内核暴露的 sysfs 接口之上,并提供了大多数嵌入式系统所需的必备功能。

安装

要安装 gpio utils 的最新发布版本,请确保您已安装 Rust,然后运行

cargo install gpio-utils

特性

  • 为系统中的 GPIO 提供名称的基础设施,这些名称映射到单个引脚。这些名称(除 GPIO 编号外)还可以与其他命令一起使用。
  • 能够通过 GPIO "友好" 名称导出/取消导出 GPIO 并创建符号链接,使操作更简单。
  • 能够设置每个引脚的输入/输出状态
  • 能够设置每个引脚的激活低电平状态
  • 能够通过引脚编号或名称(包括必要时临时导出)获取/设置 GPIO 值
  • 能够阻塞等待引脚状态变化(带超时)
  • 能够设置已导出 GPIO 的权限

系统集成

GPIO 工具提供了两个主要组件,可集成到最终系统中

  1. gpio 命令。这提供了 GPIO 工具的核心功能,并且本身就是很有用的。
  2. gpio 初始化脚本/systemd 服务。这可以集成到目标系统中,并确保在系统启动时导出已配置的 GPIO(GPIO 命令搜索 /etc/gpio.toml/etc/gpio.d/*.toml 配置)

GPIO 工具库建立在 Rust sysfs-gpio 库之上,该库可以独立于此项目使用。

GPIO 配置文件

GPIO 工具使用 TOML。配置有一定的灵活性,但以下示例展示了如何配置 GPIO 的基本方法。

#
# Example GPIO configuration (e.g. /etc/gpio.toml)
#
# The main configuration consists of zero or more pins, each of which may have
# the following keys:
#
# - `num`: Required.  The GPIO number.
# - `names`: Required.  One or more names for the GPIO
# - `direction`: Default: `"in"`.  Must be either "in" or "out"
# - `active_low`: Default: `false`.  If set to true, the polarity of the pin will
#    be reversed.
# - `export`: Default: `true`.  If true, this GPIO will be automatically
#    exported when `gpio export-all` is run (e.g. by an init script).
# - `user`: User that should own the exported GPIO
# - `group`: Group that should own the exported GPIO
# - `mode`: Mode for exported directory

[[pins]]
num = 73                 # required
names = ["reset_button"] # required (may have multiple)
direction = "in"         # default: in
active_low = false       # default: false (really means invert logic)
export = true            # default: true
user = "root"            # default: (OS Default - root)
group = "gpio"           # default: (OS Default - root)
mode = 0o664             # default: (OS Default - 0o644)

[[pins]]
num = 37
names = ["status_led", "A27", "green_led"]
direction = "out"

# ...

实现说明

与许多其他现有解决方案不同,此项目是用 Rust(一种现代系统编程语言,与 C 的工作级别相同,但具有提供更高生产力和可靠性的类型系统)实现的,并力求以最小的开销运行。

贡献

贡献非常受欢迎。有关如何报告错误、提交更改、测试更改、获取支持等更多信息,请参阅CONTRIBUTING.md

许可协议

根据以下任意一个许可协议授权:

任选其一。

贡献

除非您明确声明,否则根据 Apache-2.0 许可协议定义,您有意提交给作品的所有贡献,都将按照上述方式双重许可,不附加任何额外条款或条件。

行为准则

对本软件包的贡献按照Rust 行为准则进行组织,本软件包的维护者、嵌入式 Linux 团队(Embedded Linux Team)承诺将介入以维护该行为准则。

依赖项

~8–18MB
~241K SLoC