news 2026/4/23 10:12:38

Linux设备节点与平台总线-设备树

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux设备节点与平台总线-设备树

前提

前面的分析中我们知道,设备树文件最初的目的就是为了代替平台总线中的platform中的device的部份,那么设备树的dts 文件就必须在内核其中后传递给内核,那设备树是如何传递给内核?

 

编译流程

编译:DTC工具将dts 设备树文本文件编译为二进制dtb文件这种二进制文件是机器可读的格式,包含所有硬件信息的结构化数据。

二进制文件被加载到内存

从 .dtb 文件开始,根据不同的系统设计,主要有两种路径将其加载到内存中:

  • • 路径一:将.dtb 文件在构建内核时直接打包进内核镜像文件中。这样,设备树就和内核本身成为一个整体文件。

  • • 路径二:.dtb 文件独立于内核镜像文件存在。这是一种更通用和灵活的方式。

无论采用哪种路径,接下来的关键步骤都由 Bootloader 完成。Bootloader 的职责是将 内核(无论是包含了内嵌DTB的内核,还是独立的内核文件)和 设备树二进制文件(如果是独立存在的) 一同加载到系统内存的特定地址上。Bootloader 会告知内核设备树在内存中的位置。

展开:内核解析并构建设备树

当内核开始初始化时,它会根据 Bootloader 提供的信息,找到内存中的 .dtb 文件。内核会将 .dtb 文件中的二进制数据展开(解析)成其内部可以识别和操作的数据结构

设备节点

设备节点结构体

struct device_node {     const char *name;           /* 节点名,对应设备树中节点名称的第一部分(如 i2c1)*/     const char *type;           /* 设备类型,通常对应设备树中的 device_type 属性 */     phandle phandle;            /* 节点的唯一标识符 */     const char *full_name;      /* 节点全名,如 i2c@40013000 */     struct property *properties; /* 指向属性链表的头指针 */     struct property *deadprops; /* 已删除的属性列表 */     struct device_node *parent; /* 指向父节点的指针 */     struct device_node *child;  /* 指向第一个子节点的指针 */     struct device_node *sibling; /* 指向下一个兄弟节点的指针 */ #if defined(CONFIG_OF_KOBJ)     struct kobject kobj;        /* 内核对象(用于 sysfs) */ #endif     unsigned long _flags;       /* 标志位 */     void *data;                 /* 设备驱动私有数据指针 */ #if defined(CONFIG_SPARC)     /* ... SPARC 架构特定字段 ... */ #endif };

内核在解析 .dtb文件后,所创建的内部数据结构核心就是 struct device_node。每一个设备树节点都会被转换为一个 device_node结构。如上代码结构体。device_node的结构体具体说明位于include/linux/of.h的路径下。其中上面说的到struct property *properties;指向属性链表的头指针 其机构体原型如下

属性结构体

struct property {     char *name;                    /* 属性名称 */     int length;                   /* 属性值的长度(字节数) */     void *value;                  /* 指向属性值数据的指针 */   &nb
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 15:17:46

【重庆交通大学主办,SPIE稳定出版 | 连续4年见刊检索稳定,所录稿件均已EI检索,往届会后3个月EI检索,其中见刊后27天EI检索 | 高录用】第五届遥感与测绘国际学术会议(RSSM 2026)

第五届遥感与测绘国际学术会议(RSSM 2026) 2026 5th International Conference on Remote Sensing, Surveying and Mapping 大会时间地点:2026年1月16-18日丨重庆交通大学(科学城校区)举办 线上线下均可参会&#x…

作者头像 李华
网站建设 2026/4/19 19:34:49

理解SPA测试的核心挑战

单页面应用(Single Page Application)的核心在于,其所有必要的代码(如HTML、JavaScript和CSS)在初始加载时便获取完毕,后续的页面交互通过JavaScript动态更新内容,而无需完整的页面重载。这带来…

作者头像 李华
网站建设 2026/4/21 3:22:52

2025年山东大学计算机考研复试机试真题(附 AC 代码 + 解题思路)

2025年山东大学计算机考研复试机试真题 2025年山东大学计算机考研复试上机真题 历年山东大学计算机考研复试上机真题 历年山东大学计算机考研复试机试真题 更多学校题目开源地址:https://gitcode.com/verticallimit1/noobdream N 诺 DreamJudge 题库&#xff1…

作者头像 李华
网站建设 2026/4/22 19:50:49

如何轻松使用 OCR 和 GPT-4o mini 提取收据信息

原文:towardsdatascience.com/how-to-effortlessly-extract-receipt-information-with-ocr-and-gpt-4o-mini-0825b4ac1fea 在这篇文章中,我将向您展示如何从收据中提取信息,给出一个简单的收据示例。首先,我们将利用 OCR 从收据中…

作者头像 李华
网站建设 2026/4/20 12:43:22

专科生必看!8个高效降AI率工具推荐

专科生必看!8个高效降AI率工具推荐 AI降重工具,让论文更“自然” 随着人工智能技术的快速发展,越来越多的专科生在撰写论文时会借助AI工具进行辅助写作。然而,AI生成的内容往往带有明显的痕迹,不仅容易被查重系统识别为…

作者头像 李华
网站建设 2026/4/18 10:31:52

基于Vue的家教预约系统7fisz(程序 + 源码 + 数据库 + 调试部署 + 开发环境配置),配套论文文档字数达万字以上,文末可获取,系统界面展示置于文末

系统程序文件列表系统功能用户,教师,学级科目,预约教师,教师信息开题报告内容基于Vue的家教预约系统开题报告一、选题背景与意义1. 选题背景随着教育个性化需求增长(2025年K12课外辅导市场规模突破8000亿元),传统家教服务面临以下痛点&#x…

作者头像 李华