Linux 设备树: 了解设备树 dtb 文件的构成

自己不倒,别人推不倒。自己不想站起来,别人扶也扶不起来。

前言

  • 当前新版本的 Linux 内核 设备驱动框架,与设备树(Device Tree)结合密切,整体 设备树的设备驱动框架,比较的庞大,但又非常的经典。

  • 一个个的 设备树解析函数,都是前人【智慧】的结晶,了解 设备树的实现,了解设备树的解析,对Linux 设备驱动开发非常有利,并且可以大大提高开发编码能力

  • 虽然Linux 内核庞大、开源,但是Linux 内核各个模块的实现都是经典,非常适合学习深造

设备树 dtb 文件

  • 设备树 dtb 文件,由 设备树 源文件 (dts) 与 设备树头文件(dtsi,其实还有 dt-bindings 中的类似于 C 语言的设备树头文件 .h)通过 dtc 工具 生成的。

  • 设备树相关的规范:设备树并不是Linux 专用的,因为这是一个规范,只要符合规范,其他的系统,依旧可以使用 设备树。Linux 上设备树是当前比较完整的,并且开源、免费使用。

  • 设备树规范可以通过 https://github.com/devicetree-org/devicetree-specification 获取到,当前版本是 devicetree-specification-v0.4.pdf

  • 设备树 dtb 的文件组织构成

在这里插入图片描述

  • 一个生成好的设备树 dtb,文件的头部内容,就是 struct fdt_header,定义如下

  • Linux 内核 scripts\dtc\libfdt\fdt.h -> struct fdt_header

在这里插入图片描述

  • 这里可以知道, dtb 文件 的头部,前四个字节,应该是 FDT_MAGIC 0xd00dfeed

  • 通过二进制查看或者编辑 软件,查看一个设备树 dtb 文件,当前使用 EmEditor

在这里插入图片描述

  • 这里还有设备树 dtb 文件的总大小,也就是 设备树 dtb 文件 第二个 32位(5-8字节)

在这里插入图片描述

  • 设备树的其他信息,可以通过代码与 设备树规范、具体设备树 dtb 文件、设备树 源文件,查看对于,发现是一致的。这里就不再深入的分析

小结

  • 本篇主要是需要了解一下 设备树 dtb 文件,因为这个文件有 bootloader u-boot 载入了内存,当然可以有系统直接读取 设备树 dtb 文件并解析,也就是操作系统的设备树,需要载入 设备树 dtb 文件

  • 设备树 dtb 文件可以认为是 【扁平的】flat,如果需要方便的解析,需要【反扁平化】unflatten 操作,这个在 Linux 内核中,通过 unflatten_device_tree 进行设备树的展开操作,也就是把扁平的生成一个树形结构的设备树组织(内存中)

在这里插入图片描述

  • 了解设备树 dtb (扁平设备树)的构成,可以对了解设备树加载、反扁平化 unflatten、解析等操作有利。

相关推荐

  1. 设备dtbdtbo区别

    2024-03-24 18:02:01       33 阅读
  2. Linux设备

    2024-03-24 18:02:01       48 阅读
  3. Linux Driver | 设备开发之初识设备

    2024-03-24 18:02:01       63 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-24 18:02:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-24 18:02:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-24 18:02:01       82 阅读
  4. Python语言-面向对象

    2024-03-24 18:02:01       91 阅读

热门阅读

  1. 《PHP 魔法之旅续:探索高级技术与优化技巧》

    2024-03-24 18:02:01       37 阅读
  2. c++结束输入

    2024-03-24 18:02:01       33 阅读
  3. MongoDB优化

    2024-03-24 18:02:01       41 阅读
  4. 数仓,大数据平台,数据中台,数据湖

    2024-03-24 18:02:01       31 阅读
  5. 基础时间线柱状图绘制

    2024-03-24 18:02:01       37 阅读
  6. docker小白采坑---启动失败---空间不足

    2024-03-24 18:02:01       37 阅读
  7. Docker Compose 中spring boot服务连接 mysql

    2024-03-24 18:02:01       40 阅读
  8. 数据结构奇妙旅程之链表

    2024-03-24 18:02:01       43 阅读
  9. c语言函数大全(D开头)

    2024-03-24 18:02:01       35 阅读
  10. 美国硅谷大带宽服务器怎么样

    2024-03-24 18:02:01       35 阅读