linux 驱动 --- GPIO的读写
读GPIO状态
cat /sys/kernel/debug/gpio
控制GPIO方式
内核版本<4.8
sysfs (/sys/class/gpio)
操作步骤
导出GPIO:
echo <gpio_number> > /sys/class/gpio/export
设置方向(输入/输出):
echo "in" > /sys/class/gpio/gpio<number>/direction echo "out" > /sys/class/gpio/gpio<number>/direction
读写值:
echo 1 > /sys/class/gpio/gpio<number>/value # 输出高电平 cat /sys/class/gpio/gpio<number>/value # 读取输入值
简单易用,但性能较低
/sys/class/gpio/ 是内核通过 sysfs 虚拟文件系统 暴露的接口,所有操作均需通过文件读写完成。每次读写需经历:
- 用户态到内核态的上下文切换(系统调用开销);
- 文件路径解析与权限检查;
- 内核缓冲区与用户缓冲区数据拷贝(如
read()/write())。
对比字符设备:现代 libgpiod 通过 /dev/gpiochipX 字符设备直接交互,减少文件系统层级,数据传输路径更短。
内核版本>=4.8
gpio-cdev (/dev/gpiochipN)

浙公网安备 33010602011771号