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)

 

posted @ 2024-08-22 21:05  流水灯  阅读(285)  评论(0)    收藏  举报