设备驱动模型与sysfs
设备驱动模型与sysfs
Linux在2.6版本引入了设备驱动模型,设备驱动模型负责统一实现和维护一些特性,诸如:热插拔、对象生命周期、用户空间和驱动空间的交互等基础设施
1.设备驱动模型基本概念
设备驱动模型主要包含:类(class)、总线(bus)、设备(device)、驱动(driver),它们的本质都是内核中的几种数据结构的“实例”
类的本质是class结构体类型,各种不同的类其实就是class的各种实例
总线的本质是bus_type结构体类型,各种不同的总线其实就是bus_type的各种实例
设备的本质是device结构体类型,各种不同的设备其实就是device的各种实例
驱动的本质是device_driver结构体类型,各种不同的驱动其实就是device_driver的各种实例
2.sysfs基本概念
sysfs其实就是/sys目录,其主要作用就是:展示设备驱动模型中各组件的层次关系,并将各组件的本体——内核中的数据结构以文件形式呈现,方便用户层查看及操作
3./sys目录结构与设备驱动模型
/sys目录结构很好的展示了驱动设备模型,如图:
注意:同一个设备可能在/sys中存在多个设备文件,比如一颗led的设备文件可能在/sys/bus/platform/devices/led1,同时还有一个在/sys/class/leds/led1。虽然他们都是同一颗led的设备文件,但是他们的来源、机制、原理都是不同的,不能混为一谈
4.各组件的特性与联系
kobject:设备驱动模型各实例的最基本单元,提供一些公用型服务如: 提供该实例在sysfs中的操作方法(show和store);提供在sysfs中以文件形式存在的属性,其实就是应用接口;提供各个实例的层次架构,让sysfs中弄出目录结构。设备驱动模型中每个实例内部都会包含一个kobject
总线、设备、驱动,这三者有着密切的联系。在内核中,设备和驱动是分开注册的,注册 设备的时候,并不需要驱动已经存在,而驱动被注册的时候,也不需要对应的设备已经被注册。而总线就是连接设备和驱动之间的纽带,如图:
5.为什么要让总线匹配驱动和设备?
这么做是为了让算法和数据分离,驱动源码中不携带数据,只负责算法(对硬件的操作方法);而设备则负责携带硬件信息。这样最大程度保持驱动的独立性和适应性,并且可以实现一个驱动对应多个设备
设备驱动模型与sysfs相关推荐
- 设备驱动,字符设备驱动、(总线)设备驱动模型、sysfs文件系统、平台设备驱动
以下内容转载于微信公众号:嵌入式企鹅圈.如有侵权,请告知删除. 学习Linux设备驱动开发的过程中自然会遇到字符设备驱动.平台设备驱动.设备驱动模型和sysfs等相关概念和技术. 对于初学者来说会非常 ...
- Linux设备驱动模型一 sysfs
Linux设备驱动模型一 sysfs 1 Linux设备模型 Linux 2.5的内核引入了一种新的设备模型,目的是对计算机上的所有设备进行统一的管理. 它包含以下基础结构: 类型 说明 设备Devi ...
- 字符设备驱动、平台设备驱动、设备驱动模型、sysfs的比较和关联
参考原文:https://www.kancloud.cn/yueqian_scut/emlinux/106829 对原文笔误地方做了修改.重新排版 目录 字符设备驱动.平台设备驱动.设备驱动模型.sy ...
- Linux中kobject的作用,Linux设备驱动模型-- 数据结构Kset/KObject
前言 Kset和kobject是Linux设备驱动模型中的核心数据结构,其主要作用是将系统中的设备抽象出来,以树状结构组织,方便系统统一管理. 而这个统一管理的地方,就是sysfs,先放一张示例图,阐 ...
- linux 统一设备模型 pci,Linux设备驱动模型摘抄
Linux设备驱动模型摘抄Linux设备驱动模型摘抄Linux设备驱动模型摘抄Linux设备驱动模型摘抄Linux设备驱动模型摘抄 Linux设备驱动模型摘抄(1) Linux统一设备模型 简介 Li ...
- linux内核组件分析之--设备驱动模型之bus
前面我们分析了设备驱动模型中的device和driver,device和driver本来是不相关的东西,只因为bus的存在,才被联系到了一起.本节就来看看设备驱动模型中起枢纽作用的bus.本节的头文件 ...
- linux内核部件分析之——设备驱动模型之class
前面看过了设备驱动模型中的bus.device.driver,这三种都是有迹可循的.其中bus代表实际的总线,device代表实际的设备和接口,而driver则对应存在的驱动.但本节要介绍的class ...
- 设备驱动模型之device-driver
前面我们分析了device.driver.bus三种类型,主要是三者的注册与注销,在sysfs中的目录与属性文件创建等内容.本节就来详细分析下,在设备注册到总线上时,总线是如何为其寻找对应的驱动的:在 ...
- linux i2c adapter 增加设备_LINUX设备驱动模型分析之四 设备模块相关(DEVICE)接口分析...
本系列前几篇文章链接如下: <LINUX设备驱动模型分析之一 总体概念说明> <LINUX设备驱动模型分析之二 总线(BUS)接口分析> <LINUX设备驱动模型分析之三 ...
最新文章
- 通过Navicat for MySQL远程连接的时候报错mysql 1130的解决方法
- java读取本地文件下载_java 读取本地的json文件
- redis有几种数据类型
- 八. 输入输出(IO)操作3.面向字符的输出流
- 全球及中国天然气市场产销规模及十四五投资价值分析报告2021年版
- 【NLP】竞赛中的文本相似性!
- python中add_Python add()函数是如何使用呢?
- python花萼长度表_python描述性统计实践
- VS2013+VSVIM
- pkcs1转pkcs8 php,openssl RSA密钥格式PKCS1和PKCS8相互转换
- 生信宝典被分享最多的15篇文章
- 安装node.js,CoffeeScript,Express.js,mysql,jade
- Spring Boot 之注解@Component @ConfigurationProperties(prefix = sms)
- 教你给视频画面打马赛克
- java调用webservice接口 几种方法
- html egg mac os 10.7,10.7、10.8 MAC OS原版通用安装教程
- 小米10周年发布会后,我路转粉了!
- origin画图---学习时遇到的画图记录
- c语言iota怎么用,IOTA(埃欧塔)钱包使用教程
- 如何下载沪深300历史数据
热门文章
- phinx数据库脚本迁移工具
- 京东金融创新”ABS云平台” 大数据提升直接融资效率
- LSTM网络(Long Short-Term Memory )
- webkit内核的浏览器
- myeclipse/eclipse方法和类的自动注解
- MySQL 死锁专题问题处理
- c++11新特性的使用---可变模板参数、type_traits、function综合使用
- python匿名函数就是没有名字的函数_python 之 匿名函数
- 向上造型和向下造型_动漫美少年漫画造型-仰视、俯视、情感表现
- java后台返回html_SpringMvc返回html页面字符串