Linux设备模型(一):kobject

一文讲解Linux 设备模型 kobject,kset 既然我们知道 kobject是一个目录,那么kset是kobject的高级体,那么kset也就是一个目录,这个目录的名字也就是kobject来指定的,而且kset 里面有一个链表,可以看出来,kset就是一个类别的kobject的集合,比如bus目录下面,就全部是bus相关的,i2c是一个Bus,platform也是一个bus,等等。抽象系统中所有的硬件设备,描述它的名字、属性、从属的Bus、从属的Class等信息,我们正常些驱动,还会写上这个设备的一些硬件资源,中断口,复位口,I2C地址等等。 阅读详情

1.引言

1.1文档目的
本文档记录设备模型相关,描述了sysfs、kobject和kset相关知识。
1.2背景
1.3参考资料
名称 类型 作者 备注
Linux设备驱动程序(LDD3) 书籍 第14章
Linux设备驱动开发详解:基于最新的Linux4.0内核 书籍 宋宝华 第5.4.2节
国嵌内核驱动深入班5-2-1(kobject) 视频 谢老师
国嵌内核驱动深入班5-2-2(Kset) 视频 谢老师
http://www.wowotech.net/device_model/kobject.html 博客 wowo
https://blog.youkuaiyun.com/qq_16777851/article/details/81368580 博客

2.设备模型

为了降低设备多样性带来的Linux驱动开发的复杂度,以及设备热拔插处理、电源管理等,Linux内核提出了设备模型(也称作Driver Model)的概念。设备模型将硬件设备归纳、分类,然后抽象出一套标准的数据结构和接口。驱动的开发,就简化为对内核所规定的数据结构的填充和实现。

3.sysfs

Sysfs从2.6内核引入,是设备模型的产物(笨叔叔视频里说的)。所以这里要先理解sysfs这个文件系统。
Sysfs文件系统是一种类似于proc的特殊文件系统,它存在于内存当中,当系统启动时由内核挂载于内存当中。用于将系统中的设备组织成层次结构,并向用户空间程序提供详细的数据结构信息,使其从用户空间可以访问到。
Sysfs被加载到/sys/目录下。它的子目录包括:
Block :块设备信息,每个块设备都有一个子目录,每个子目录又包含一些属性文件,描述了块设备各方面的属性,如:设备大小。
Bus:在内核中注册的每条总线,都有一个子目录。如:pci spi i2c。
每个总线子目录又包含两个子目录device和drivers。
devices目录包含了整个系统中发现的所有属于该总线类型的设备。
drivers目录包含了注册到该总线的所有驱动。
Class:将设备按功能进行分类。如/sys/class/net目录下包含了所有网络接口。
Devices:包含所有的设备。
Kernel: 内核中的配置参数。
Module:系统中所有模块的信息。
Firmware:系统中的固件。
Fs:描述系统中的文件系统。
Power:系统中的电源选项。
举例说明,LDD3下面的图,显示了与USB鼠标相关联的设备模型的一小部分(以简化的形式给出)。一个鼠标设备,有三种不同的划分方法,存在三个目录中bus、devices和class。实际都指向devices里的设备。bus和class都是软链接,链接的位置/sys/devceis/下的设备文件。PS:软链接相当于windows的快捷方式。
在这里插入图片描述
图3.1 设备模型简化图
在这里插入图片描述
为什么有了proc还要sysfs了?
在某些时候,proc确实有点过于混乱,需要一种新方法。相比于 proc 文件系统,使用 sysfs 导出内核数据的方式更为统一,并且组织的方式更好,它的设计从 proc 中吸取了很多教训。

4.kobject

Kobject实现了基本面向对象管理机制,是构成linux2.6设备模型的核心结构。它与sysfs文件系统紧密相连,在内核中注册的每一个kobject对象对应sysfs文件系统中的一个目录。类似于c++中的基类,kobject常被嵌入于其他类型(即:容器)中。如bus,devices,drivers都是典型的容器,这些内容通过kobject连接起来,形成了一个树状结构。一个kobject对自身并不感兴趣,它存在的意义在于把高级对象连接到设备模型上。
kobject 简单来说,是创建sys下面的目录的。对应sys下一个文件夹。attribute 对应kobject目录下一个文件。
kset就是具有相同类型的kobject的集合。kset可以包含目录,kobject本身是目录只能包含文件,不能包含目录。
在linux源码的samples/kobject/下有kobject和kset的例子,还有国嵌的例子,写的比较好便于理解。
Kobject和kset操作中有很多类似的接口。具体看例子就知道了。

5.attribute

sysfs中的目录描述了kobject,而kobject是特定数据类型变量(如struct device)的体现。因此kobject的属性,就是这些变量的属性。它可以是任何东西,名称、一个内部变量、一个字符串等等。而attribute,在sysfs文件系统中是以文件的形式提供的,即:kobject的所有属性,都在它对应的sysfs目录下以文件的形式呈现。这些文件一般是可读、写的,而kernel中定义了这些属性的模块,会根据用户空间的读写操作,记录和返回这些attribute的值。
总结一下:所谓的attibute,就是内核空间和用户空间进行信息交互的一种方法,不一定要用ioctl、read和write的方式。例如某个driver定义了一个变量,却希望用户空间程序可以修改该变量,以控制driver的运行行为,那么就可以将该变量以sysfs attribute的形式开放出来。

设备驱动模型 - kobject 目录 一. 设备驱动模型简介 二. kobject简介 2.1 kobject内核数据结构 2.2 kobject操作内核接口 三. kobject实例 3.1 Makefile 3.2 实例1 3.3 实例2 3.4 实例3 一. 设备驱动模型简介 Linux设备模型的核心是使用Bus、Class、Device、Driver四个核心数据结构,将大量的、不同功能的硬... 阅读详情

相关推荐

设备模型-kobject详解

/*整理于2012.11.29于广工大 */   先说说sysfs         sysfs文件系统是一个处于内存中的虚拟文件系统,它为我们提供了kobject对象层次结构的视图。帮助用户可以以一个简单文件系统的方式来观察系统中各种设备的拓扑结构。         借助属性对象,kobject可用导出文件的方式,将内核变量提供给用户读取或写入。

你系得嘎,加油 1628

Linux设备模型-kobject

theme: github 每一个kobject对象都会关联一个sysfs文件目录,本节重点关注如何将kobject对象与sysfs文件系统关联起来,关注kobject对象默认的属性文件操作接口 1.kobject 首先看一下kobject的结构体定义 include/linux/kobject.h struct kobject { const char *name; struct list_head entry; struct kobject *parent; struct kset *k.

weixin_43824344的博客 3952

深信服PT1-AF实验考试

深信服PT1-AF实验考试实验练习可以去深信服的在线实验平台(链接如下):深信服在线实验平台 (sangfor.com.cn)实验考试其实就是把所有的每一部分实验综合了起来以下内容仅做参考,不确保一样。

m0_72019240的博客 7106

Linux设备驱动程序学习(12)

-Linux设备模型(底层原理简介)  以《LDD3》的说法:Linux设备模型这部分内容可以认为是高级教材,对于多数程序作者来说是不必要的。但是我个人认为:对于一个嵌入式Linux的底层程序员来说,这部分内容是很重要的。以我学习的ARM9为例,有很多总线(如SPI、IIC、IIS等等)在Linux下已经被编写成了子系统,无需自己写驱动;而这些总线又不像PCI、USB等在《LD

临时工 Temporary's Space 1万+

ESP32+micro-ROS机器人开发实战:轻量级ROS2嵌入式集成

ROS2是现代机器人软件栈的核心框架,其基于DDS的分布式通信与QoS保障能力为多节点协同提供基础支撑;而micro-ROS作为专为微控制器优化的ROS2兼容中间件,解决了资源受限设备(如ESP32)接入ROS2生态的关键难题。其通过分层架构将DDS通信下沉至上位机Agent,使MCU仅需运行轻量Client,大幅降低内存开销(实测<180KB)并保留标准ROS2接口语义。该方案广泛应用于教育机器人、移动底盘、传感器节点等嵌入式场景,尤其适合基于ESP-IDF开发的Wi-Fi/BLE物联网机器人系统。本文以

weixin_29025501的博客 400

YOLOv11全网首发:注意力独家魔改 | 具有切片操作的SimAM注意力,魔改SimAM助力小目标检测

1)直接作为注意力使用,效果秒杀SimAM;2)高效和卷积结合,代替原始网络的卷积操作;

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 1572

kobject

转载自:http://www.360doc.com/content/13/0626/15/12892305_295670482.shtml       在linux的驱动表示中,主要有三个基本的结构,分别是kobject,kset,ktype.Kobject,kset,kypte这三个结构是设备模型中的下层架构。模型中的每一个元素都对应一个kobject.kset和ktype可以看成是kobje

漫不经心 6951

微信小程序 - 解决报错 operateAudio:fail audioInstance is not set(wx.getRecorderManager苹果ios真机调试运行,播放音频播放出错解决)

微信小程序,苹果ios系统,真机测试报错,播放音频报错operateAudio:fail audioInstance not exist,errCode: -1,小程序生成音频播放报错errMsg,真机调试报错开发者工具没问题,wx.getRecorderManager,音频实例,InnerAudioContext,各种方法都试了不行,只有ios苹果手机有这个问题,IOS 出现 operateAudio,在iOS无法播放的解决方案,更新到最新版本了还是不行,链接没有特殊字符,微信小程序全局音频设置,手机上播

🏆 前端领域优质创作者 1万+

【linux kernel】 一文总结linux内核中的kobject、kset和ktype

总结linux内核中的kobject、kset和ktype知识点

iriczhao的博客 3523

SOI LDMOS器件的Sentaurus TCAD建模与关键电学特性仿真研究

本文研究了SOI LDMOS器件的TCAD建模与电学特性仿真。通过Sentaurus TCAD平台建立了单RESURF结构的SOI LDMOS模型,详细阐述了器件结构原理和RESURF耐压机制。研究采用SDE进行几何定义和掺杂配置,在Sentaurus Device中构建了完整的物理模型体系,包括迁移率、复合和碰撞电离模型。通过系统仿真提取了器件的转移特性、输出特性和击穿特性等关键参数,分析了各参数对性能的影响规律。研究结果为功率半导体器件的仿真建模提供了规范化参考,有助于优化SOI LDMOS的性能设计。

huanghm88的专栏 134

【第33话:车辆控制】自动驾驶车辆运动学模型推导及详解

自动驾驶车辆的运动学模型以自行车模型为核心,通过状态方程。

一碗白开水一 831

Linux设备驱动模型(kobject、kset、ktype、udev)

Linux设备驱动模型的核心即是kobject,最初设计kobject模型的目的是为了是为了是实现智能电源管理。后来为了管理日益增加的设备,使得设备在底层都具有同一的接口,使其的得以成为设备驱动模型的核心。每个kobject对象都与与sysfs文件系统紧密相连,每个注册的kobject 都对应sysfs文件系统中的一个目录。 首先来分析下kobject ,kobject - kernel obje...

m0_37105371的博客 3159

uniapp(全端兼容)-最新详细实现接入腾讯云IM即时通讯教程,uniapp在安卓苹果app端/小程序/h5移动端等集成使用腾讯云im插件,提供消息列表与聊天对话示例,支持发图片/私聊/实时监听消息

uni-app,腾讯云IM,安卓app,苹果app,微信小程序,移动端,H5网页,手机网站,微信小程序、支付宝小程序,手机app端,nvue,im即时通讯,腾讯云IM详细教程,如何接入腾讯IM即时通讯,使用腾讯im有没有插件,怎么使用腾讯云IM插件,tim-wx-sdk,聊天sdk,即时通讯im uniapp私聊/群聊/聊天室,实现IM即时通讯仿微信聊天功能,对接腾讯云IM+音视频,调用腾讯即时通信IM的示例,卡顿很卡不流畅,音视频,全局监听,仿微信IM,uni-huanxin-im,sdk,实现多端实时通

✅ 精选推荐文章 1万+

【Linux 设备模型框架 kobject 和 kset】

在 Linux 内核中,设备模型是连接硬件和软件的桥梁。理解 kobject 和 kset 这两个核心概念,对于开发高质量的内核驱动至关重要。本文将深入解析这两个概念,并通过实例代码展示如何在内核模块中使用它们。

highersister的博客 1045

ClaudeCode入门01-环境安装(小白入门:手把手教你配置,超简单的一种接入方式)

文手把手教你从零搭建 Claude Code 开发环境。针对国内网络现状,我们采用 OpenRouter + Claude Code Router 的方案,支持支付宝/微信充值,无需科学上网即可完成配置。内容涵盖 Node.js 安装(macOS/Windows/Linux)、OpenRouter 注册与充值、Claude Code 和 Router 安装配置,以及一键启动脚本的编写。跟着截图一步步操作,10分钟搞定全部环境!

yueyeguzhuo的专栏 280

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Linux设备模型之Kobject

Linux设备模型之Kobject

多云转晴,适合debug的博客 870

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Linux设备模型之kobject

Linux设备模型是从linux内核2.6版本开始引进,sysfs实现了设备模型的管理,这是一个虚拟文件系统,以一个树状结构呈现出对系统中所有的设备管理。

sxw1002的专栏 1198

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Linux驱动开发—设备模型框架 kset和 kobject 详解

设备模型(Device Model)是 Linux 内核中的一个抽象层,用于统一管理和组织系统中的各种硬件设备及其驱动程序。它为设备、驱动、总线和电源管理等提供了一个统一的接口和结构,使得内核能够更加高效和一致地管理系统中的硬件资源。

weixin_46999174的博客 1629

Linux设备模型(2) — Kobject

本文转自 wowo tech 感谢作者的无私分享 目录 1、前言 2、基本概念 3、代码解析 3.1、在 Linux Kernel source code 中的位置 3.2、主要的数据结构 3.2.1、Kobject 3.2.2、Kset 3.2.3、Ktype 3.3、功能分析 3.3.1、Kobject 使用流程 3.3.2、Kobject 的分配和释放 3.3.3、...

StephenZhou 1908

Linux 设备模型

提示:不用读系列Linux 设备模型可能是学习 Linux 驱动最基础的概念了。但是设备模型润物细无声,平时开发驱动或看驱动程序时很少与驱动模型直接接触,这导致我只知道设备模型的概念,没有很清晰的理解,简单的说我并没有完全掌握 Linux 设备模型。逼迫自己深入:网上关于设备模型的文章太多了,不乏有很多优秀的文章,但是看人家的文章总是得过且过。如果我自己要写一篇博文就不得不逼自己深入探索每个细节。向互联网输出:虽然关于设备模型的文章已经很多了,但是每个人思考的角度和深度不同。

jfjijuih的博客 1942

结合代码实例深入理解linux设备模型(kobject)一

综合上述,简单的介绍了一下linux设备模型为什么被设计,以及其在内核中所涉及的几个比较关键的数据结构。只到这里我认为是远远不够的,我相信没有谁能够只通过对几个关键数据结构的认识就能想象出整个设备模型的工作机制。为了较为深刻的理解kobject 的工作机制,后面我们从内核中具体的代码逻辑出发,建立对其真正的认知。

weixin_55153415的博客 1020

Linux 设备模型解析:从 kobject 到 Platform 总线实战

本文解析Linux设备模型核心原理与实战应用,围绕`kobject`、`kset`、`kobj_type`等基础组件,讲解引用计数管理、sysfs属性文件读写及多属性配置的实现逻辑,结合Platform总线阐述“总线-设备-驱动”匹配机制,提供可直接编译的驱动代码示例。

分享一些嵌入式Linux学习笔记和工具使用 1179

Linux 设备模型学习笔记(2)之 kobject

本文深入探讨了Linux驱动模型中的核心概念kobject及其相关机制。文章首先解析了kobject作为内核对象基类的本质,指出其通过嵌入式继承方式为各类设备提供引用计数、sysfs接口等共性功能。随后详细分析了ktype如何控制kobject的生命周期管理(通过release回调)和sysfs行为(通过sysfs_ops),以及kset如何组织kobject形成层级结构并处理热插拔事件。作者结合Linux 6.14内核源码和实际测试程序,揭示了驱动模型中这些抽象组件协同工作的内在逻辑,为理解Linux设备

分享一些嵌入式Linux相关知识 1429

linux设备模型之 kobject原理与实例分析

<!-- @page {margin:2cm} p {margin-bottom:0.21cm} --> 1、Sysfs文件系统            "sysfsis a ram-based filesystem initially based on ramfs. It provides ameans to export kernel data structur

3814

设备模型管理对象kobject分析

Linux内核

to_be_better_wen的博客 971
上一篇: Linux下对IO内存的访问
Linuxxulin
博客等级 码龄16年 41粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值