"generic-uio" && /dev/uioX

0阅读 0评论2026-05-20 帮我Q下
分类:LINUX

.dtsi 中的定义:compatible = "generic-uio"
//告诉内核:用 UIO 通用驱动管理这个设备。
// UIO(Userspace I/O) 用于暴露 HW interrupt/memory 给用户态(/dev/uioX),用户态即可通过 read()/poll() 获得事件。

为什么用户态需要通过 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/ 下的文件,可查看中断号、名称、触发次数等信息。

上一篇:I2C/I3C device detected/mounted 问题的定位顺序
下一篇:git reset -- 和 git restore --staged 【三】 git checkout -> git switch