zoukankan      html  css  js  c++  java
  • 【Linux操作系统分析】设备驱动处理流程

    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:驱动程序编写基础

  • 相关阅读:
    Redis实战(十)Redis常见问题及解决方案
    小团队构建大网站:中小研发团队架构实践
    Asp.net core 3.0
    图解TCP/IP
    TCP/IP协议
    Grid画边框
    WPF常用方法,事件驱动和控件遍历
    WPF中的画图
    WPF中的常用类汇总:
    WPF中的VisualTreeHelper
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3141101.html
Copyright © 2011-2022 走看看