1 个不稳定版本
使用旧的 Rust 2015
0.3.0 | 2024年1月20日 |
---|
#1692 在 命令行工具
50KB
990 行
Linux GPIO 工具
GPIO 工具提供了方便访问 Linux 系统中 GPIO 的接口。该库基于内核暴露的 sysfs 接口构建,并为大多数嵌入式系统提供所需的基本功能。
安装
要安装 gpio 工具的最新发布版本,请确保已安装 Rust,然后运行
cargo install gpio-utils
功能
- 提供系统 GPIO 命名的基础设施,提供映射到单个引脚的名称。这些名称(除 GPIO 编号外)可用于其他命令。
- 能够以更简单的“GPIO 友好”名称导出/取消导出 GPIO 并创建符号链接。
- 能够在每个引脚上设置输入/输出状态
- 能够在每个引脚上设置低电平有效状态
- 能够通过引脚号或名称(包括必要的临时导出)获取/设置 GPIO 值
- 能够阻塞等待引脚状态变化(带有超时)
- 能够设置导出 GPIO 的权限
系统集成
GPIO 工具提供两个主要组件,可以将其集成到最终系统中
gpio
命令。这提供了 GPIO 工具的核心功能,并且其本身也很有用。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语言处于同一级别的现代系统编程语言,但具有提供更高生产率和可靠性的类型系统)实现,并力求以最小的开销运行。
最低支持的Rust版本(MSRV)
本软件包保证在稳定版Rust 1.26.2及更高版本上编译。它可能可以在较旧版本上编译,但在任何新的补丁版本中可能会发生变化。
贡献
非常欢迎贡献。有关如何报告错误、提交更改、测试更改、获取支持等更多信息,请参阅CONTRIBUTING.md。
许可证
以下任一许可证下授权
- Apache License,版本2.0(LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可证(LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
贡献
除非您明确表示,否则根据Apache-2.0许可证定义的您提交的任何有意包含在本作品中的贡献,均应如上所述双授权,不附加任何额外条款或条件。
行为准则
对本软件包的贡献是在Rust行为准则的条款下组织的,本软件包的维护者、嵌入式Linux团队承诺将介入以维护该行为准则。
依赖项
~8–18MB
~238K SLoC