linux平台驱动运行空间,UIO(linux Userspace I/O子系统)用户空间设备驱动I/O技术介绍...
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技术介绍...相关推荐
- linux平台编译运行c++程序
linux平台编译运行c++程序 引言 嵌入式开发的火热引发了不少程序员对Linux的兴趣.那么如何在Linux平台编译并运行c++程序呢? 正文 Linux平台开发运行C++程序大体流程与Windo ...
- 使用pinctrl 和 gpio 子系统的字符设备驱动
pinctrl 和 gpio 子系统的字符设备驱动 一. 修改设备树文件 二. LED 灯驱动程序编写 三.makefile 四.应用层代码 运行测试 一. 修改设备树文件 打开 imx6ull-al ...
- Linux学习笔记(22.1)——基于SPI + Regmap + IIO的ICM20608设备驱动
Regmap API 简介 regmap API的引入 Linux 下大部分设备的驱动开发都是操作其内部寄存器,比如 I2C/SPI 设备的本质都是一样的,通过 I2C/SPI 接口读写芯片内部寄 ...
- linux的v4l2运行源码,linux v4l2摄像头应用层编程介绍
一.前言 最近项目需要做一个工业条形读码器,在底层应该会适配linux v4l2框架,就自己研究了一下在应用层怎么使用v4l2进行编程,查阅了相关资料,主要是网上的博客资料,有: https://ww ...
- linux平台调试终端,10款Linux平台上优秀的调试器,总有一款适合你!
前言 调试器对于检测程序中的 bug 是必不可少的.有很多优秀的 Linux 调试器,可以很容易地找到应用程序中的错误.我们将在本文中介绍几款好用的调试器. 1. GNU Debugger (GDB) ...
- Linux I2C子系统分析-I2C设备驱动
接下来以一个实际的例子来看I2C设备驱动,就以drivers/i2c/i2c-dev.c为例. 先看它的初始化和注销函数 [cpp] view plaincopy static int __init ...
- linux下能运行python,(转)Linux下运行python
原文: http://blog.csdn.net/jackywgw/article/details/48847187 在linux命令行下运行python,可以直接输出hello world jack ...
- linux 开机自动运行命令_如何在Linux终端同时运行多个Linux命令
在一行中运行两个或多个命令可以节省大量时间,并在Linux中提高效率.在Linux中,有三种方法可以在一行中运行多个命令: ; Command 1 ; Command 2 首先运行Command1,然 ...
- linux asp可以运行吗,宝塔linux面板可以搭建运行asp网站程序吗
宝塔linux面板可以搭建运行asp网站程序吗?宝塔linux面板怎么支持asp?下面由宝塔教程栏目为大家详细介绍! 首先登录到宝塔 Linux 面板 >> 软件管理 >> 运 ...
- 【Linux】Shell运行原理及Linux权限的概念
文章目录 一.Shell运行原理 二.Linux权限的概念 1)Linux中的用户 2)Linux权限管理 1.文件访问者的分类(人) 2.文件的权限(事物属性) ① 文件类型 ② 文件基本权限 ④ ...
最新文章
- 【Django】@login_required用法简介
- hadoop3: mkdir: cannot create directory `/usr/local/hadoop/bin/../logs’: Permission denied
- 企业是否应该实现对客户需求的快速响应_CRM系统给企业带来的创新有哪些?如何让销售爱用CRM系统?...
- [html] 渐进式渲染是什么?
- 标榜 AI 的百度又玩区块链,跟风布局“加密猫”?
- 8、技术分析fastJson使用
- 故障处理,no space left on device!几种可能性?
- buuctf-变异凯撒
- GPS从入门到放弃(十九) --- 精密星历
- InstallShield 软件打包完整教程
- 浙江大学2019年数学分析考研试题
- 邮件发回软件错误信息
- 今有物不知其数三三数之JAVA_课后练习:今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问几何?...
- Win10开电脑热点以后手机连接会IP配置失败或者一直显示获取IP中
- python如何与access配合使用_使用Python对Access读写操作方法详解
- JS中attr和prop区别
- 构建一个代号为1的聊天应用程序4
- 中文解释“GetLastError()返回值”---错误码大全
- What's the differece between high price houses and low price houses of airbnb?
- 两位图灵奖得主万字长文:新计算机架构,黄金十年爆发!
热门文章
- ps 2c语言程序,C语言基础(二)
- 灰度值取值范围_一幅灰度图像,用8bit量化,取值范围为[0,255],其中0表示(),255表示()。...
- mysql参数文件选项组_选项文件(Option Files)/配置文件(Configuration Files)的使用
- 低代码可视化报表开源工具,只要在线拖拽就能做出复杂数据报表
- 11月数据库排行:PostgreSQL起飞、三巨头分数持续低迷
- 后端进阶,要搞懂哪几块?
- LinkedList 真的是查找慢增删快?
- 面试:Java反射到底慢在哪?
- 京东技术主导:全新架构的分布式事务Hmily 2.1.1发布
- 手把手教你定制标准 Spring Boot starter