linux kernel之设备树

设备树,是一个类似json, yaml的数据结构,内容为系统总线的描述。

被uboot传递给内核之后,内核会读取磁盘文件,然后按照dts文件的元数据来解析磁盘文件,还原到内存中之后写入struct device_node 对象。

以垂直,水平2条链表,构建出树形结构。

检测到硬件插入之后,内核即可以快速遍历设备树中id匹配的节点,根据资源描述来申请系统资源(存储在struct property属性节点中,节点本身是一个kv,节点可以构建为单向无头链表):

硬件适配器,内存,中断,dma等,创建设备,创建驱动,加载驱动模块,生成/导出sysfs目录。 属性到上面的动作的映射,依靠struct fwnode_operations 对象来实现。

用户可以用json、yaml、redis来做配置文件,应用程序启动之后,去固定地址来查询配置文件,解析其中的字段,来影响程序的具体行为。

设备树的作用,正如上面举的例子。

开发者预先把硬件所需的系统资源,写入*.dts配置文件。 由uboot传递给内核,内核启动之后,在内核空间创建设备树,既struct device_node对象链表。

动态硬件热插拔,静态硬件启动时,根据硬件类型,从设备树里面查询预置的配置参数。 用配置参数来给设备创建设备对象、指向驱动对象、适配器对象。

redis 可以动态增删,设备树当然也可以。 开发或运维,通过sysfs导出目录,来查看或增删设备树。 设备树属性更新之后,触发对于的设备、驱动、适配器发生动作。

相关推荐
ltl3 小时前
存储性能建模:IOPS、吞吐与延迟
linux
九硕智慧建筑一体化厂家4 小时前
数字化管控落地,直流照明构筑安全照明体系
运维·人工智能·笔记·安全·智慧城市
波波0074 小时前
C# 15 重磅新特性: 带标签 break 与 continue:重新定义嵌套循环控制流
服务器·前端·c#
刘某的Cloud5 小时前
ceph osd 导入导出 rbd volume 卷
linux·运维·ceph·volume
隔窗听雨眠6 小时前
GBase 8s并发控制深度解析:封锁机制、隔离级别与死锁处理全攻略
服务器·数据库·oracle
酸菜。7 小时前
dw_axi_dmac总结
linux
神奇霸王龙7 小时前
Agent 准入门控屠夫:5 旗舰 4 维度评估
linux·运维·数据库·ai·ai作画·agent·ai编程
鲸采云SRM采购管理系统7 小时前
采购管理系统哪家好?2026最新测评对比
java·服务器·数据库
cfm_29147 小时前
基于Binlog实现不停机数据库平滑迁移技术
运维·数据库·架构
迪康Defender8 小时前
AI 重构终端安全运营:智能分析中枢 AI Insight 模块架构与落地场景深度解析
运维·网络·人工智能·其他·安全·重构·架构