0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux驱动框架以及概述

嵌入式开发爱好者 来源:嵌入式开发爱好者 2023-09-10 09:22 次阅读

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

字符设备(Char Device)

块设备(Block Device)

网络设备(Net Device)

二、设备驱动程序功能

对设备初始化和释放

把数据从内核传送到硬件和从硬件读取数据

读取应用程序传送给设备文件的数据和回送应用程序请求的数据

检测和处理设备出现的错误

访问特定硬件:

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

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

静态编译、动态加载

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

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

直接编译到Linux内核,随Linux启动时加载,随时可以使用该驱动程序;

编译成一个可加载和删除的模块,用insmod加载,rmmod删除。

67d6a8b4-4f2a-11ee-a25d-92fbcf53809c.png

四、驱动程序框架

三个主要部分

1、设备初始化/释放

负责对设备进行初始化和释放

初始化检测所要驱动的硬件设备是否存在、能否正常工作。如果设备正常,则对设备及相关驱动程序

需要的软件状态进行配置/初始化。

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

负责:通过文件系统从应用程序读取数据,把数据通过文件系统回送给应用程序(文件系统层<->设备驱动层)

这部分由文件系统相关的系统调用执行,和调用进程属于同一个进程,具有调用进程的运行环境,只是由用户态变成了内核态。

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

负责:把数据从内核传送到硬件,从硬件读取数据到内核(设备驱动曾<->硬件层)

这部分可以通过中断方式实现,对于多数设备可以提高CPU处理效率。

这部分也可以不通过中断方式实现,只要能完成设备驱动层和硬件之间的数据通信即可。

680ae4b2-4f2a-11ee-a25d-92fbcf53809c.png

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

68301afc-4f2a-11ee-a25d-92fbcf53809c.png

2、块设备驱动程序框架

68537f6a-4f2a-11ee-a25d-92fbcf53809c.png

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

686f983a-4f2a-11ee-a25d-92fbcf53809c.png

审核编辑:彭菁

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 模块
    +关注

    关注

    7

    文章

    2674

    浏览量

    47350
  • 数据
    +关注

    关注

    8

    文章

    6909

    浏览量

    88850
  • 操作系统
    +关注

    关注

    37

    文章

    6747

    浏览量

    123204
  • 硬件
    +关注

    关注

    11

    文章

    3260

    浏览量

    66132
  • Linux驱动
    +关注

    关注

    0

    文章

    43

    浏览量

    9951

原文标题:Linux系统中驱动框架基本概述

文章出处:【微信号:嵌入式开发爱好者,微信公众号:嵌入式开发爱好者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Linux之PWM驱动

    本文主要讲述了Linux的PWM驱动框架、实现方法、驱动添加方法和调试方法。
    发表于 05-25 09:19 651次阅读
    <b class='flag-5'>Linux</b>之PWM<b class='flag-5'>驱动</b>

    linux驱动框架是什么

    编写linux驱动先看一下驱动框架是什么样子的。驱动编写和应用层编写有什么区别呢?
    发表于 07-26 08:14

    Linux下的UART驱动框架详解

    Linux下的UART驱动框架
    发表于 12-22 07:18

    Linux 驱动 = 软件框架 + 硬件操作

      Linux 驱动 = 软件框架 + 硬件操作  驱动程序依赖于 Linux 内核,你为开发板 A 开发
    发表于 12-17 07:11

    想要驾驭Linux驱动开发,必须深刻理解Linux总线设备驱动框架

    想要驾驭Linux驱动开发,必须深刻理解Linux总线设备驱动框架。之所以会形成这样的框架,主要
    的头像 发表于 03-22 11:08 1.1w次阅读
    想要驾驭<b class='flag-5'>Linux</b><b class='flag-5'>驱动</b>开发,必须深刻理解<b class='flag-5'>Linux</b>总线设备<b class='flag-5'>驱动</b><b class='flag-5'>框架</b>

    Linux DMA Engine框架的介绍

    此会话描述如何从设备驱动程序在Linux中使用DMA。 这包括内存分配,缓存控制和DMA设备控制。 详细介绍了Linux DMA Engine框架
    的头像 发表于 11-23 06:29 6273次阅读

    你对Linux总线设备驱动框架是否了解

    Linux的设备驱动模型,或者说,Linux的设备驱动框架,都是同一个意思。应该这样理解,(Linux
    发表于 05-05 15:13 729次阅读

    如何使用Linux内核实现USB驱动程序框架

    Linux内核提供了完整的USB驱动程序框架。USB总线采用树形结构,在一条总线上只能有唯一的主机设备。 Linux内核从主机和设备两个角度观察USB总线结构。本节介绍
    发表于 11-06 17:59 20次下载
    如何使用<b class='flag-5'>Linux</b>内核实现USB<b class='flag-5'>驱动</b>程序<b class='flag-5'>框架</b>

    OpenHarmony系统HDF驱动框架概述

    OpenHarmony系统HDF驱动框架概述 OpenAtom OpenHarmony(以下简称“OpenHarmony”)系统 HDF 驱动框架
    的头像 发表于 09-03 09:29 4177次阅读

    OpenHarmony HDF 驱动框架概述及加载过程分析

    OpenHarmony系统 HDF驱动框架概述 OpenAtom OpenHarmony(以下简称“OpenHarmony”)系统 HDF 驱动框架
    的头像 发表于 09-03 09:32 3629次阅读
    OpenHarmony HDF <b class='flag-5'>驱动</b><b class='flag-5'>框架</b><b class='flag-5'>概述</b>及加载过程分析

    嵌入式Linux驱动开发从基础到框架

    想讲好嵌入式Linux驱动开发并不容易,各位业界大神最基础的字符驱动到中断并发再到驱动框架、应用层调用。但是总觉得业界写的书都是点到为止,
    发表于 11-01 16:58 14次下载
    嵌入式<b class='flag-5'>Linux</b><b class='flag-5'>驱动</b>开发从基础到<b class='flag-5'>框架</b>

    看看Linux为相机提供的驱动框架

      V4L2 (Video Linux Two),是为支持Linux内核设计的驱动框架驱动框架
    的头像 发表于 08-07 16:03 3240次阅读
    看看<b class='flag-5'>Linux</b>为相机提供的<b class='flag-5'>驱动</b><b class='flag-5'>框架</b>

    Linux的PWM驱动框架及实现方法

    本文主要讲述了Linux的PWM驱动框架、实现方法、驱动添加方法和调试方法。
    的头像 发表于 05-14 15:24 1402次阅读
    <b class='flag-5'>Linux</b>的PWM<b class='flag-5'>驱动</b><b class='flag-5'>框架</b>及实现方法

    Linux驱动分析之RTC框架

    Linux内核启动时,它会从RTC中读取时间与日期,作为基准值。然后通过软件来维护系统时间和日期。Linux系统中提供了RTC核心层,对于驱动开发者而言,操作起来就变得很简单了。我们来看看整体
    的头像 发表于 05-26 15:12 1010次阅读
    <b class='flag-5'>Linux</b><b class='flag-5'>驱动</b>分析之RTC<b class='flag-5'>框架</b>

    Linux Regmap 驱动框架

    1、regmap 框架结构 regmap 驱动框架如下图所示: regmap 框架分为三层: ①、底层物理总线:regmap 就是对不同的物理总线进行封装,目前 regmap 支持的物
    的头像 发表于 07-06 17:29 1092次阅读
    <b class='flag-5'>Linux</b> Regmap <b class='flag-5'>驱动</b><b class='flag-5'>框架</b>