ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Linux设备模型(2)基本概念与模型概述

2021-10-24 15:05:20  阅读:126  来源: 互联网

标签:GPIO 模型 总线 电平 Linux 驱动 基本概念 设备


文章目录

前言

在开发或学习Linux驱动的时候,首先会有两个最基本的认识:设备和驱动,设备一般指我们要控制的外设模块,驱动指我们需要实现控制外设的功能的程序。最简单直接的开发方式是,我们将设备的特性如电平、寄存器地址等在开发驱动的时候在程序中固定,但是这个带来的问题就是驱动程序不具备可移植性。

为了解决上述问题,我们在程序中需要将对设备的描述和对功能的实现分开(即配置和功能分离),必须需要控制GPIO电平,驱动中只需要实现控制电平这个功能即可,具体是高电平还是低电平则是根据设备信息决定。这个设备信息在软件中称为设备,驱动则对应为设备驱动。

在解决完设备与驱动分离的问题,还有一个问题待解决,那就是如何让多个设备同时匹配同一个驱动。比如,我们驱动中实现了控制一个GPIO的电平这个功能,但是有多个GPIO需要控制,每个GPIO所需要的高低电平并不相同,我们不可能有多少GPIO就写多少驱动吧?每个GPIO电平不同的问题可以通过设备信息来解决,而多个设备匹配同一驱动的问题Linux是通过总线这个概念来解决的。

可以说总线是Linux设备模型中最核心的概念,那么总线是什么呢?总线这个概念是来源于硬件,说的是一条线上挂着多个设备,多个设备可以轮流占用这条线进行通信。如下图所示是网络总线。
在这里插入图片描述
设备模型中就借用硬件总线的概念,设置一种类似总线的软件框架可被称为软件总线,在总线上分别挂载驱动和设备,然后按照关键字进行匹配。

四大基本元素

通过前言我们已经知道了设备、驱动、总线,在设备模型中还有个概念类class,是对同一类设备的抽象描述。在这里我们对四个基本元素进行准确的描述。

  • Device 设备:抽象系统中所有的硬件设备,描述它的名字、属性、从属的Bus、从属的Class等信息;
  • Class 类:集合具有相似功能或属性的设备,这样就可以抽象出一套可以在多个设备之间共用的数据结构和接口函数;
  • Device Driver 驱动:实现设备的初始化、提供控制设备的功能接口;
  • Bus 总线:包括实际的总线(USB、i2c、spi等)和虚拟总线platform,但是软件层面的总线是对实际总线的程序抽象,包括驱动和设备匹配和设备信息传递功能。

标签:GPIO,模型,总线,电平,Linux,驱动,基本概念,设备
来源: https://blog.csdn.net/abc4764/article/details/120930964

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有