Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1785846
  • 博文数量: 147
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1497
  • 用 户 组: 普通用户
  • 注册时间: 2016-08-23 11:14
文章分类

全部博文(147)

文章存档

2026年(4)

2022年(3)

2021年(13)

2020年(21)

2019年(8)

2018年(28)

2017年(7)

2016年(63)

我的朋友

分类: LINUX

2026-05-20 11:50:33

.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/ 下的文件,可查看中断号、名称、触发次数等信息。

阅读(14) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~