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导出目录,来查看或增删设备树。 设备树属性更新之后,触发对于的设备、驱动、适配器发生动作。

相关推荐
智象科技9 小时前
智能运维(AIOps),正在改变IT行业格局
运维·人工智能·运维开发·devops·智能运维
黄筱筱筱筱筱筱筱9 小时前
RHCE---web服务器①
linux·运维·服务器
上海云盾安全满满9 小时前
服务器被攻击了,更换IP是否有用吗
服务器·网络·tcp/ip
AC赳赳老秦9 小时前
全链路自动化巡检:用 OpenClaw 实现服务器 - 应用 - 数据库全链路巡检,自动生成报告与整改建议
服务器·数据库·人工智能·深度学习·自动化·deepseek·openclaw
流浪00110 小时前
Linux基础篇(三)轻松拿捏入门级指令
linux·运维·服务器
weixin_5142531810 小时前
511-opencua-best_patch
服务器
Waay10 小时前
Linux Shell 知识点考评(三):awk文本分析(附答案)
linux·服务器·编辑器
爱喝水的鱼丶10 小时前
SAP-ABAP:ABAP Development Tools(ADT)安装配置学习分享教程(四篇连载) 第二篇:ADT客户端完整安装与初始配置教程
运维·开发语言·学习·sap·abap
其实防守也摸鱼10 小时前
Upload-labs:部署靶场及Pass-01实战解析
服务器·网络·安全·web安全·教程·文件上传·工具
xlq2232210 小时前
53.tcp socket
linux·服务器·开发语言·网络·网络协议·tcp/ip