UIO(linux Userspace I/O子系统)用户空间设备驱动I/O技术介绍(由搜集整理)

UIO(Userspace I/O)是运行在用户空间的I/O技术。Linux系统中一般的驱动设备都是运行在内核空间,而在用户空间用应用程序调用即可,而UIO则是将驱动的很少一部分运行在内核空间,而在用户空间实现驱动的绝大多数功能!使用UIO可以避免设备的驱动程序需要随着内核的更新而更新的问题.通过UIO的运行原理图可以看出,用户空间下的驱动程序比运行在内核空间的驱动要多得多,UIO框架下运行在内核空间的驱动程序所做的工作很简单,常做的只有两个:分配和记录设备需要的资源和注册uio设备和必须在内核空间实现的小部分中断应答函数,经过实践表明后面的工作也是可以省略的!我们认为uio内核空间的程序所做的越少越好,在用户空间能完成的我们就不需要放在内核空间做(比如说响应中断),这样假如内核有变化,uio框架中的驱动维护也是比较简单。

Linux UIO 驱动模型(图)

uio驱动的内核部分,用户空间部分,和uio 框架以及内核内部函数的关系图

uio驱动重要的数据结构:

UIO的内核部分和用户空间的工作

内核空间

UIO的少量运行在内核空间的驱动所做的工作有哪些呢?

(1)分配和记录设备需要的资源和注册uio设备

在设备的探测函数中:

- 使能PCI 设备

- 申请资源

- 读取并记录配置信息

- 注册uio设备// uio_register_device()

// uio_8139d_pci_probe & uio_8139d_handler

(2)必须*在内核空间实现的小部分中断应答函数

用户空间的关键操作

1关键操作

2.响应硬件中断

linux平台驱动运行空间,UIO(linux Userspace I/O子系统)用户空间设备驱动I/O技术介绍...相关推荐

  1. linux平台编译运行c++程序

    linux平台编译运行c++程序 引言 嵌入式开发的火热引发了不少程序员对Linux的兴趣.那么如何在Linux平台编译并运行c++程序呢? 正文 Linux平台开发运行C++程序大体流程与Windo ...

  2. 使用pinctrl 和 gpio 子系统的字符设备驱动

    pinctrl 和 gpio 子系统的字符设备驱动 一. 修改设备树文件 二. LED 灯驱动程序编写 三.makefile 四.应用层代码 运行测试 一. 修改设备树文件 打开 imx6ull-al ...

  3. Linux学习笔记(22.1)——基于SPI + Regmap + IIO的ICM20608设备驱动

    Regmap API 简介 regmap API的引入 ​ Linux 下大部分设备的驱动开发都是操作其内部寄存器,比如 I2C/SPI 设备的本质都是一样的,通过 I2C/SPI 接口读写芯片内部寄 ...

  4. linux的v4l2运行源码,linux v4l2摄像头应用层编程介绍

    一.前言 最近项目需要做一个工业条形读码器,在底层应该会适配linux v4l2框架,就自己研究了一下在应用层怎么使用v4l2进行编程,查阅了相关资料,主要是网上的博客资料,有: https://ww ...

  5. linux平台调试终端,10款Linux平台上优秀的调试器,总有一款适合你!

    前言 调试器对于检测程序中的 bug 是必不可少的.有很多优秀的 Linux 调试器,可以很容易地找到应用程序中的错误.我们将在本文中介绍几款好用的调试器. 1. GNU Debugger (GDB) ...

  6. Linux I2C子系统分析-I2C设备驱动

    接下来以一个实际的例子来看I2C设备驱动,就以drivers/i2c/i2c-dev.c为例. 先看它的初始化和注销函数 [cpp] view plaincopy static int __init  ...

  7. linux下能运行python,(转)Linux下运行python

    原文: http://blog.csdn.net/jackywgw/article/details/48847187 在linux命令行下运行python,可以直接输出hello world jack ...

  8. linux 开机自动运行命令_如何在Linux终端同时运行多个Linux命令

    在一行中运行两个或多个命令可以节省大量时间,并在Linux中提高效率.在Linux中,有三种方法可以在一行中运行多个命令: ; Command 1 ; Command 2 首先运行Command1,然 ...

  9. linux asp可以运行吗,宝塔linux面板可以搭建运行asp网站程序吗

    宝塔linux面板可以搭建运行asp网站程序吗?宝塔linux面板怎么支持asp?下面由宝塔教程栏目为大家详细介绍! 首先登录到宝塔 Linux 面板 >> 软件管理 >> 运 ...

  10. 【Linux】Shell运行原理及Linux权限的概念

    文章目录 一.Shell运行原理 二.Linux权限的概念 1)Linux中的用户 2)Linux权限管理 1.文件访问者的分类(人) 2.文件的权限(事物属性) ① 文件类型 ② 文件基本权限 ④ ...

最新文章

  1. 【Django】@login_required用法简介
  2. hadoop3: mkdir: cannot create directory `/usr/local/hadoop/bin/../logs’: Permission denied
  3. 企业是否应该实现对客户需求的快速响应_CRM系统给企业带来的创新有哪些?如何让销售爱用CRM系统?...
  4. [html] 渐进式渲染是什么?
  5. 标榜 AI 的百度又玩区块链,跟风布局“加密猫”?
  6. 8、技术分析fastJson使用
  7. 故障处理,no space left on device!几种可能性?
  8. buuctf-变异凯撒
  9. GPS从入门到放弃(十九) --- 精密星历
  10. InstallShield 软件打包完整教程
  11. 浙江大学2019年数学分析考研试题
  12. 邮件发回软件错误信息
  13. 今有物不知其数三三数之JAVA_课后练习:今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问几何?...
  14. Win10开电脑热点以后手机连接会IP配置失败或者一直显示获取IP中
  15. python如何与access配合使用_使用Python对Access读写操作方法详解
  16. JS中attr和prop区别
  17. 构建一个代号为1的聊天应用程序4
  18. 中文解释“GetLastError()返回值”---错误码大全
  19. What's the differece between high price houses and low price houses of airbnb?
  20. 两位图灵奖得主万字长文:新计算机架构,黄金十年爆发!

热门文章

  1. ps 2c语言程序,C语言基础(二)
  2. 灰度值取值范围_一幅灰度图像,用8bit量化,取值范围为[0,255],其中0表示(),255表示()。...
  3. mysql参数文件选项组_选项文件(Option Files)/配置文件(Configuration Files)的使用
  4. 低代码可视化报表开源工具,只要在线拖拽就能做出复杂数据报表
  5. 11月数据库排行:PostgreSQL起飞、三巨头分数持续低迷
  6. 后端进阶,要搞懂哪几块?
  7. LinkedList 真的是查找慢增删快?
  8. 面试:Java反射到底慢在哪?
  9. 京东技术主导:全新架构的分布式事务Hmily 2.1.1发布
  10. 手把手教你定制标准 Spring Boot starter