设备驱动模型与sysfs

原创 2016年08月31日 09:38:59

设备驱动模型与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.为什么要让总线匹配驱动和设备?

这么做是为了让算法和数据分离,驱动源码中不携带数据,只负责算法(对硬件的操作方法);而设备则负责携带硬件信息。这样最大程度保持驱动的独立性和适应性,并且可以实现一个驱动对应多个设备

版权声明:转载需注明出处,若有不足,欢迎指正。

Linux设备驱动模型一 sysfs

1 Linux设备模型 Linux 2.5的内核引入了一种新的设备模型,目的是对计算机上的所有设备进行统一的管理。   它包含以下基础结构: 类型 说明 设备Devices ...
  • xnwyd
  • xnwyd
  • 2015年12月03日 14:18
  • 1342

字符设备驱动、平台设备驱动、设备驱动模型、sysfs的比较和关联

学习Linux设备驱动开发的过程中自然会遇到字符设备驱动、平台设备驱动、设备驱动模型和sysfs等相关概念和技术。对于初学者来说会非常困惑,甚至对Linux有一定基础的工程师而言,能够较好理解这些相关...
  • fivedoumi
  • fivedoumi
  • 2016年03月17日 14:52
  • 2199

建立驱动sysfs接口

原文地址 http://blog.sina.com.cn/s/blog_6a16c0ae0101b93s.html 在调试驱动,或驱动涉及一些参数的输入输出时,难免需要对驱动里的某些变量进行读写,或...
  • lqxandroid2012
  • lqxandroid2012
  • 2015年10月26日 15:22
  • 593

Linux 文件系统与设备文件系统 (二)—— sysfs 文件系统与Linux设备模型

提到 sysfs 文件系统 ,必须先需要了解的是Linux设备模型,什么事Linux设备模型呢? 一、Linux 设备模型 1、设备模型概述      从2.6版本开始,Linux开发团队便为内核建立...
  • zqixiao_09
  • zqixiao_09
  • 2016年03月12日 12:19
  • 2606

用户空间与内核空间的接口:sysfs

在调试驱动,或驱动涉及一些参数的输入输出时,难免需要对驱动里的某些变量或内核参数进行读写,或函数调用。此时sysfs接口就很有用了,它可以使得可以在用户空间直接对驱动的这些变量读写或调用驱动的某些函数...
  • wuyuwei45
  • wuyuwei45
  • 2013年05月27日 10:18
  • 1563

USB和sysfs文件系统

2007年08月31日 星期五 19:32     由于单个USB物理设备的复杂性,设备在sysfs中的表示也非常复杂。无论是物理USB设备(用struct usb_device表示)还是单独的U...
  • shangyaowei
  • shangyaowei
  • 2013年12月19日 20:37
  • 421

字符设备驱动、平台设备驱动、设备驱动模型、sysfs的比较和关联

横向比较关联各个驱动相关的知识点(字符设备驱动、平台设备驱动、设备驱动模型、sysfs)和纵向剖析Linux整个驱动软件层次,对于Linux驱动的理解和开发很有帮助,绝对干货!...
  • yueqian_scut
  • yueqian_scut
  • 2015年10月05日 10:33
  • 2231

sysfs创建led驱动

有了前面两个实验,我们就可以依葫芦画瓢,实现自己想要的驱动了。本实验通过sysfs,即前面的kobject实现LED灯的控制。默认x4412开发板已经将LED驱动集成进去了,但是它使用的linux内核...
  • chuhongcai
  • chuhongcai
  • 2016年07月25日 18:51
  • 396

Linux设备驱动模型一 sysfs

1 Linux设备模型 Linux 2.5的内核引入了一种新的设备模型,目的是对计算机上的所有设备进行统一的管理。   它包含以下基础结构: 类型 说明 设备Devices ...
  • xnwyd
  • xnwyd
  • 2015年12月03日 14:18
  • 1342

Android上层APP利用sysfs调用底层驱动分析

自从移植驱动以来一直对应用层调用底层驱动的过程很感兴趣,每次看到Android的系统架构图时总是会自然的觉得上层APP调用底层驱动的时候使一层一层往下调用,从APP到framwork再到HAL最后到驱...
  • ouchao0727
  • ouchao0727
  • 2016年01月23日 16:07
  • 1859
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:设备驱动模型与sysfs
举报原因:
原因补充:

(最多只允许输入30个字)