普贤教程 › 包参考
edge 包
第 4 个 stdlib,与 collections/semver/webroute 并列
M60-S3 交付(docs/archive/M60_PLAN.md §三.2)——第 4 个 stdlib,与 collections/semver/webroute 并列
| 项 | 值 |
|---|---|
| 包名 | edge |
| 版本 | 0.1.0 |
| 入口 | edge.px |
| 分类 | 网络与协议 |
| 文件数 / 行数 | 1 / 221 |
安装与引入
bash
pxpkg init # 首次 pxpkg add edge@0.1.0 pxpkg install
px
import edge所属分类教程:网络与协议
其余 22 个 def(内部与辅助,可直接调用但不属稳定接口)
| 函数 | 参数 |
|---|---|
_zeros | n |
_put_u32 | b, off, v |
_put_u64 | b, off, v |
_put_ascii | b, off, s, cap |
_gpio_req_buf | offset, flags, consumer, out_val |
gpio_request | chip, offset, flags, consumer |
gpio_input | chip, offset, consumer |
gpio_output | chip, offset, val, consumer |
gpio_input_edge | chip, offset, edge, consumer |
gpio_read | fd |
gpio_write | fd, v |
gpio_wait | fd, ms |
gpio_event_parse | data |
gpio_event | fd, ms |
i2c_open | bus, addr |
i2c_read_reg | fd, reg, n |
i2c_write_reg | fd, reg, data |
serial_open | path, baud |
_pwm_write | path, content |
pwm_setup | chip, ch, period_ns, duty_ns |
pwm_enable | chip, ch, on |
pwm_set_duty | chip, ch, duty_ns |
包内说明(源码头注释)
text
============================================================ 普贤标准库:std.edge(边缘设备:GPIO V2 line / I2C / 串口 / PWM sysfs) M60-S3 交付(docs/archive/M60_PLAN.md §三.2)——第 4 个 stdlib,与 collections/semver/webroute 并列 依赖 builtin:open/close/read/write/ioctl/os_errno/tty_config/fd_wait/sleep_us/ exists/type/len/str/int_to_bytes/bytes_to_int/bytes_slice/bytes_concat/bytes_set/bytes 用法:import std.edge 失败语义(与 M57 fd 原语一致):设备失败返回 int -1 / false,os_errno() 查询,不杀进程; 参数错误(编程契约)px_error 终止。errno 全局单线程语义:勿跨调用缓存,失败即查。 GPIO 用 V2 uAPI。本文件结构体布局按 2024+ 内核(linux/gpio.h,gpio_v2_line_request = 592B:offsets u32[64]@0 / consumer[32]@256 / config@288 / num_lines@560 / event_buffer_size@564 / fd@588),常量经 C offsetof 实测核对;旧内核(≤6.x 早期, offsets u64 布局)不兼容,需按目标内核头调整 —— 真板回归单独立项兜底。 I2C 寄存器读用「write reg → stop → read n」两笔事务(fd 通道极限;重复起始位 需 I2C_RDWR/SMBUS ioctl 含指针结构体,语言 bytes 无法承载,见 M60-PLAN §3.4)。 ============================================================ ---- 内部工具:零 bytes / 小端写入 / ASCII 拷贝(bytes_set 是函数式 COW,逐次赋回)----