分类: LINUX
2026-05-20 11:50:33
为什么用户态需要通过 UIO 驱动(/dev/uioX)去访问这个GPIO呢?直接通过 GPIO 驱动去 read/poll 不行嘛?即通过 /dev/gpiochip0 这样不行嘛?
①/dev/gpiochip0 适合简单 GPIO 操作(读电平、点灯),但处理中断时只能轮询,效率低、延迟高;
②UIO 驱动专为用户态处理硬件中断设计,无轮询、低延迟、低 CPU 占用,且无需编写内核驱动;
/dev/uioX 是 UIO(Userspace I/O)机制在用户态的体现,由内核 generic-uio 驱动创建:专门用于 “把内核态的硬件资源(中断、物理内存)暴露给用户态”,绕开传统内核驱动的开发流程。
通过读取 /sys/class/uio/uioX/ 下的文件,可查看中断号、名称、触发次数等信息。