【Linux操作系统分析】设备驱动处理流程
来源:互联网 发布:淘宝刷钻价格表 编辑:程序博客网 时间:2024/05/22 21:22
1 驱动程序,操作系统,文件系统和应用程序之间的关系
字符设备和块设备映射到操作系统中的文件系统,由文件系统向上提供给应用程序统一的接口用以访问设备。
Linux把设备视为文件,称为设备文件,通过对设备文件的读写操作实现对真实外设的操作。
从驱动程序的角度来从下到上看层次结构,包含了硬件设备,设备驱动程序(中断处理程序,设备服务程序),文件系统和用户进程四个层次:
需要知道的两个概念:
设备号:
- 主设备号:标识同一类设备,对应一个驱动程序
- 从设备号:标识一个设备实例,从设备号使得不同的物理设备使用同一个驱动程序。
设备文件:存在硬盘上的实际存在的文件,包括设备的名字,类型,设备号
需要知道的三个关于驱动操作的数据结构:
- file_operations:文件操作,每个进程对设备的访问都会转换为对file_operations的访问,调用里面的操作函数指针;
- file:打开的文件
- inode:由内核在文件系统中表示文件
2 字符设备的注册
至此,设备驱动注册完成,有相应的设备驱动程序和设备号与之对应。
3 设备的打开
设备注册完成后,可以打开一个设备,这时候调用系统调用open()函数,经过一系列的调用,最后会调用chrdev_open()函数进行实际的打开操作,其主要流程为:
设备注册打开完成后,需要对其进行各种操作,外部设备的操作有一个特点就是操作时间较长,且操作时间不确定。
处理外部设备运作时,主要有两种方式:轮询和中断。
下面主要用介绍用中断的模式等待外设完成操作,其主要流程为:
4 小结
这里简单总结了一下Linux处理外部设备的主要流程,主要包括了外部设备的注册,打开和通常的操作。
需要注意的知识点就是驱动设备模型的概念,在字符设备中位cdev。所有对设备的操作,都是在cdev的ops字段寻找处理程序,之前将cdev映射道inode的i_cedv中,cdev的ops字段映射到设备文件file的f_op字段,这样对设备文件的操作就等同于对设备的操作,这正是本文开头所说明的设备文件映射到文件系统的实质。
在外部设备的操作流程中,涉及到中断处理流程,主要指的是软中断,会在中断一章详细讨论。
参考:
Linux操作系统分析PPT:驱动程序编写基础
- 【Linux操作系统分析】设备驱动处理流程
- Linux设备驱动工作流程
- linux I2C设备驱动流程
- Linux设备驱动开发流程
- Linux设备驱动初始化流程
- 嵌入式学习-驱动开发-lesson3-混杂设备驱动模型与linux中断处理流程
- Linux 设备驱动--- 中断处理
- Linux操作系统基础知识之九:设备驱动
- Linux字符设备驱动分析
- linux input设备驱动分析
- 操作系统大型实验进展(6)-----Linux 内核文件系统与设备操作流程分析
- 【linux驱动分析】misc设备驱动
- Linux设备驱动工作流程转
- Linux设备驱动开发大致流程
- linux设备驱动的大致流程
- 嵌入式Linux设备驱动的大致流程
- Linux字符设备驱动编写流程
- Linux字符设备驱动编写基本流程
- 【iOS/Mac OS】程序崩在objc_msgSend(),怎么办?
- 网卡移植报错
- Java虚拟机类装载:原理、实现与应用
- 第一个arcgis server for flex例子
- Mac OS中SVN工具Versions日期重置脚本
- 【Linux操作系统分析】设备驱动处理流程
- OOAD-005
- C++迭代器
- UIViewController的init方法
- goole map v3 API 在线、离线开发、实现多标注显示、模仿多地址查询显示
- OOAD-006
- c++中箭头操作符(->)和点操作符(.)有什么不同
- rh436 - Facing "Volume group for uuid not found" error while run lvcreate on shared storage
- Flask+uWSGI+Nginx部署过程