简介
GPIO是一种灵活的软件控制数字信号。通用可操作的功能:
- 输出功能
- 输入功能
- 中断功能
在GPIO子系统中,有两种不同的方式来获取和使用gpio:
The descriptor-based interface:gpio操作的首选方式。
The legacy integer-based interface:已弃用(但出于兼容性原因仍然可用),参见:gpio legacy.txt文档
关键词
Open Drain:
CMOS CONFIGURATION ||--- out in ----|| ||--+ | GND
- 在Open Drain配置中,晶体管(或逻辑门)仅在其输出端驱动低电平信号(通常是0V或接近0V的电压)。当晶体管或逻辑门不驱动时,输出端处于高阻态(即“悬浮”或“未连接”状态),不会主动拉高或拉低信号线。
- 为了确保信号线在晶体管不驱动时具有确定的状态,通常会连接一个上拉电阻(pullup resistor)到电源正极(如VCC)。当没有设备驱动信号线为低电平时,上拉电阻会将信号线拉高至高电平状态。
Open Source:
1
2
3
4
5
6TTL CONFIGURATION
+--- out
|/
in ----|
|\
GND
GPIO子系统
驱动结构
名称 | 说明 | 备注 |
---|---|---|
devres.c | managed gpio resources | |
gpiolib-devprop.c | Device property helpers for GPIO chips | |
gpiolib-of.c | OF helpers for the GPIO API | |
gpio-syscon.c | YSCON GPIO driver | |
gpiolib-legacy.c | ||
gpiolib-sysfs.c | 入口sys节点的创建 | |
gpio-useri.c | 控制器驱动 | |
gpiolib.c | gpiolib库 | |
gpio-mmio.c | Generic driver for memory-mapped GPIO controllers |
Pinctrl子系统
参见文档:
[pinctrl文档]: https://www.kernel.org/doc/html/latest/driver-api/pin-control.html?highlight=pinctrl “文档”