首页 > 系统相关 >Linux系统中驱动框架基本概述

Linux系统中驱动框架基本概述

时间:2023-10-03 10:02:20浏览次数:63  
标签:驱动程序 框架 应用程序 硬件 概述 内核 Linux 设备


大家好,今天跟大家简单聊聊Linux驱动框架以及概述。

一、驱动程序三种基本类型

  1. 字符设备(Char Device)
  2. 块设备(Block Device)
  3. 网络设备(Net Device)

二、设备驱动程序功能

  1. 对设备初始化和释放
  2. 把数据从内核传送到硬件和从硬件读取数据
  3. 读取应用程序传送给设备文件的数据和回送应用程序请求的数据
  4. 检测和处理设备出现的错误

访问特定硬件:

访问特定硬件就是访问物理地址(如处理器内设备的寄存器、外设的地址映射)。然而由于MMU的内存映射以及对操作系统的保护,运行在用户态的应用程序一般不能直接访问硬件地址。因此需要驱动程序作为应用程序和访问硬件之间的媒介。

三、驱动程序的内核模块机制(开发模式)

静态编译、动态加载

Linux提供了一种内核模块机制。一个模块被编译成单独的内核模块后,一开始可以不编译到整个内核中,当内核需要加入该模块的时候,不需要重新编译整个内核,只需要将该内核模块插入(加载)到正在运行的内核中。同样,也可以从正在运行的内核中卸载。

Linux设备驱动可以使用两种方式被编译和加载:

  1. 直接编译到Linux内核,随Linux启动时加载,随时可以使用该驱动程序;
  2. 编译成一个可加载和删除的模块,用insmod加载,rmmod删除。

Linux系统中驱动框架基本概述_文件系统

四、驱动程序框架

三个主要部分

1、设备初始化/释放

  • 负责对设备进行初始化和释放
  • 初始化检测所要驱动的硬件设备是否存在、能否正常工作。如果设备正常,则对设备及相关驱动程序
  • 需要的软件状态进行配置/初始化。

2、上半部分:服务于文件系统I/O

  • 负责:通过文件系统从应用程序读取数据,把数据通过文件系统回送给应用程序(文件系统层<->设备驱动层)
  • 这部分由文件系统相关的系统调用执行,和调用进程属于同一个进程,具有调用进程的运行环境,只是由用户态变成了内核态。

3、下半部分:服务于硬件设备的I/O

  • 负责:把数据从内核传送到硬件,从硬件读取数据到内核(设备驱动曾<->硬件层)
  • 这部分可以通过中断方式实现,对于多数设备可以提高CPU处理效率。
  • 这部分也可以不通过中断方式实现,只要能完成设备驱动层和硬件之间的数据通信即可。

Linux系统中驱动框架基本概述_驱动程序_02

1、字符设备驱动程序框架

Linux系统中驱动框架基本概述_文件系统_03

2、块设备驱动程序框架

Linux系统中驱动框架基本概述_驱动程序_04

3、网络设备驱动程序框架

Linux系统中驱动框架基本概述_驱动程序_05

标签:驱动程序,框架,应用程序,硬件,概述,内核,Linux,设备
From: https://blog.51cto.com/u_11947739/7689665

相关文章

  • linux系统中rootfs根文件系统制作及挂载基本操作
    今天给大家介绍一下rootfs根文件系统制作和挂载方式,希望这篇文章对大家有所帮助。本章主要是对rootfs根文件系统制作和挂载方式进行详细讲解。Linux“三巨头”已经完成了2个了,就剩最后一个rootfs(根文件系统)了,本章我们就来学习一下根文件系统的组成以及如何构建根文件系统。这是......
  • linux系统中固化和更新uboot、zImage和dtb方法(经典)
      大家好,今天给大家介绍一下imx6ull固化和更新uboot、zImage和dtb方法总结,希望这篇文章对大家有所帮助。进行固化和更新的前提,uboot.imx、zImage、imx6ull.dtb和rootfs已经编译好,并且能成功启动和挂载。在讲解imx6ull固化和更新uboot、zImage和dtb方法之前,先带大家了解一些imx6u......
  • linux系统中驱动框架基本分析
    大家好,今天分享一篇Linux驱动软件设计思想的文章。由于文章较长,可以先收藏后再慢慢看。一、Linux驱动的软件架构1.1出发点为适应多种体系架构的硬件,增强系统的可重用和跨平台能力。1.2分离思想为达到一个驱动最好一行都不改就可以适用任何硬件平台的目的,将驱动与设备分离开来,驱动......
  • linux系统中u-boot命令的EMMC和SD卡操作命令分析
    今天给大家详细的介绍一下u-boot命令之EMMC和SD卡操作的mmc命令使用。希望这篇文章对大家有所帮助。uboot支持EMMC和SD卡,因此也要提供EMMC和SD卡的操作命令。一般认为EMMC和SD卡是同一个东西,所以没有特殊说明,统一使用MMC来代指EMMC和SD卡。uboot中常用于操作MM......
  • Linux(CentOS7)定时执行任务Crond详细说明&操作图解
    一、Cron服务1)概念介绍cron是服务名称。crond是后台进程,用来执行脚本,在系统中一直会运行。crontab是一个工具,用来管理定时任务列表,定制好的计划任务,需要启动crond服务(系统默认安装),crond服务是通过crontab命令实现。2)crontab工作运行linux后,开机自启动crond任务,系统会每分钟......
  • openGauss学习笔记-87 openGauss 数据库管理-内存优化表MOT管理-内存表特性-使用MOT-M
    openGauss学习笔记-87openGauss数据库管理-内存优化表MOT管理-内存表特性-使用MOT-MOT使用简单概述使用MOT非常简单,以下几个小节将会进行描述。openGauss允许应用程序使用MOT和基于标准磁盘的表。MOT适用于最活跃、高竞争和对吞吐量敏感的应用程序表,也可用于所有应用程序的表。......
  • 通过linux0.11学习操作系统原理--Apple的学习笔记
    一,前言最近在断断续续的看linux0.11的源码介绍,主要是了解linux操作系统的原理,之前已经了解了进程的切换主要是cpu上下文切换+虚拟内存切换。今天我主要看了下改开始linux启动的进程0,1,2。二,分析先回顾了之前的问题LDT和GDT的区别?   GDT用作内核态的代码和数据段,LDT用作用户进......
  • vue框架
    1、vue框架vue框架的简单使用如下所示,并且是双向数据绑定的:<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>测试四</title><!--引入vue框架--><scriptsrc="../js/vue.js">......
  • linux使用glibc版本安装mysql8.0.12
    1、前言使用yum安装虽然很方便,但是如果要是在没有公网的环境下,是没有办法使用yum源的。所以我们可以使用mysql提供的glibc版本的安装包,进行安装。但是在安装之前,一定要将以前的版本删除,包括/etc/my.cnf和/etc/my.cnf.d一类的文件全部删除,否则在启动的时候会导致混乱。从而报错。软......
  • Linux centos 安装 mysql 5.6.43
    一、mysql下载1、方式一(简单粗暴)直接在linux 目录下wget https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.43-linux-glibc2.12-x86_64.tar.gz2、方式二(官方下载)浏览器打开网址:https://www.mysql.com如下图依次点击1、2、3、4步如下图设置对应版本点击Downloa......