设备驱动模型与sysfs
来源:互联网 发布:饭店软件系统哪种好 编辑:程序博客网 时间:2024/05/13 14:01
设备驱动模型与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.为什么要让总线匹配驱动和设备?
这么做是为了让算法和数据分离,驱动源码中不携带数据,只负责算法(对硬件的操作方法);而设备则负责携带硬件信息。这样最大程度保持驱动的独立性和适应性,并且可以实现一个驱动对应多个设备
0 0
- 设备驱动模型与sysfs
- Linux设备驱动模型 sysfs
- 初识Linux设备驱动模型与sysfs(1)
- Linux设备驱动模型一 sysfs
- Linux设备驱动模型一 sysfs
- linux设备驱动模型之sysfs
- 设备驱动,字符设备驱动、(总线)设备驱动模型、sysfs文件系统、平台设备驱动
- Sysfs文件系统与Linux设备模型
- Linux-2.6设备模型与sysfs文件系统
- 字符设备驱动、平台设备驱动、设备驱动模型、sysfs的关系
- 字符设备驱动、平台设备驱动、设备驱动模型、sysfs的比较和关联
- 字符设备驱动、平台设备驱动、设备驱动模型、sysfs的比较和关联
- 字符设备驱动、平台设备驱动、设备驱动模型、sysfs的比较和关联
- 字符设备驱动、平台设备驱动、设备驱动模型、sysfs的比较和关联
- 非常重要----1、字符设备驱动、平台设备驱动、设备驱动模型、sysfs的比较和关联
- 字符设备驱动、平台设备驱动、设备驱动模型、sysfs的比较和关联
- 字符设备驱动、平台设备驱动、设备驱动模型、sysfs的比较和关联
- 字符设备驱动,平台设备驱动,设备驱动模型,sysfs的比较
- UIWebView的显示内容的高度
- 菜鸟级Trie树简介与简单实现。。。
- 进程和线程的区别
- Lock and Condition 实现线程同步
- 快速排序的最简易实现(Java+Groovy)
- 设备驱动模型与sysfs
- 零散知识点总结,看到什么写什么
- javascript之日期
- Webview在4.0以前的版本,html页面内跳转不能带参数的BUG
- CentOS下SVN服务器的安装、全量备份、增量备份的配置及分析、数据存储文档
- 100天土鸡饲养计划(41)
- Android Material Design 之 TabLayout学习
- 根据时间获取commit或者查看git log
- Android Studio使用系列——could not resolve junit:junit:4.12.