五.linux设备驱动模型

站在设备驱动这个角度分析,设备驱动模型是如何构建出来,起到什么作用,认识它并在写驱动的时候去利用设备驱动模型

 

目录

一.linux 设备驱动模型简介

1.1、 什么是设备驱动模型

1.2、 为什么需要设备驱动模型

1.3、 驱动开发的2个点

二.设备驱动模型的底层架构

2.1、kobject结构体

2.2、kobj_type结构体

2.3、kset结构体

三.总线式设备驱动组织方式

3.1、总线

3.2、设备

3.3、驱动

3.4、类

3.5、总结


一.linux 设备驱动模型简介

1.1、 什么是设备驱动模型

  1. ( 1) 类 class、 总线 bus、 设备 device、 驱动 driver

四个词并非四个简单概念,还是linux驱动的四个结构体,也可以理解为linux设备驱动模型的四个框架。
分别对应我们源代码的四个结构体。
    class :例如class_create
    bus   :例如USB总线,SPI总线
    device:设备
    driver:驱动
为何需要这四个结构体-----生产这些结构体类型的变量,每一个结构体变量就代表一个实例

  1. ( 2) kobject 和对象生命周期

kobject 是一种数据结构, 定义在 kernel\include\linux\kobject.h 中, 详细分析见后面。

linux内核源代码里面的一个结构体,k是kernel object物体,kobject就是内核的一个东西。一个高度抽象的结构体,表示内核里面的一个对象,就是内核里面的所有对象抽象出来的一个总类。所以说linux内核是面向对象编程。这个kobject就类似于面向对象体系的一个总的基类,总的父类

 

对象生命周期,例如某一个驱动,insmod诞生,rmmod消亡。如何管理这个对象的生命周期?在kobject有一种机制,能够让每一个对象具有自我管理生命周期的特性,即自己管理自己,当自身不被需要的时候就自己释放。比如为A malloc 申请一段内存,当不需要的时候不用去free A,它自己会自己free掉。如何知道自己没用了呢?肯定需要一种方法

  1. ( 3)sysfs的文件结构

block:块设备
bus:系统中的总线
class: 设备类型,比如输入设备
dev:系统中已注册的设备节点的视图,有两个子目录char和block。
devices:系统中所有设备拓扑结构视图
fireware:固件
fs:文件系统
kernel:内核配置选项和状态信息
module:模块
power:系统的电源管理数据
在 sysfs 中出现的每个对象都对应一个 kobject。

  1. ( 4) udev。

Linux 用户空间设备管理(Linux userspace device management), 在kernel 2.6.13后被使用, 动态提供了在系统中实际存在的设备节点。udev 是一个为你的计算机提供设备事件的 Linux 子系统。 通俗来讲就是, 为了实现内核空间和用户空间的信息的一个同步

1.2、 为什么需要设备驱动模型

( 1) 早期内核( 2.4 之前) 没有统一的设备驱动模型, 但照样可以用。

( 2) 2.6 版本中正式引入设备驱动模型, 目的是在设备越来越多, 功耗要求等新特性要求的情况下让驱动体系更易用、 更优秀。



  • 4
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值