百度
360搜索
搜狗搜索

linux内核中设备树如何存放详细介绍

在 Linux 内核中,设备树(Device Tree,DT)的存放和组织遵循特定的目录结构和编译规则,以下是详细说明:

一、
源代码中的设备树文件位置

设备树源文件(.dts.dtsi)主要存放在内核源码的 arch/<架构>/boot/dts/ 目录下,按架构和厂商 / 平台分类:
plaintext

arch/

├── arm/boot/dts/ # ARM架构设备树

│ ├── vendor/ # 厂商目录(如freescale、ti、qcom等)

│ ├── platform/ # 平台相关设备树(如通用ARM平台)

│ ├── <具体开发板>.dts # 开发板专属设备树(如imx6ul-evk.dts)

│ └── *.dtsi # 共享头文件(可被多个.dts包含)

├── arm64/boot/dts/ # ARM64架构设备树

├── x86/boot/dts/ # x86架构设备树(主要用于嵌入式x86平台)

└── ... # 其他架构(如powerpc、mips等)

  • .dts 文件:具体开发板或平台的设备树描述,包含硬件节点(如 CPU、外设、总线等)。
  • .dtsi 文件:设备树头文件,用于定义可复用的节点(如公共外设配置、CPU 信息),通过 #include.dts 中引用。

二、
编译后的设备树二进制文件(.dtb

编译内核时,设备树源文件会被编译为二进制格式(DTB,Device Tree Binary),存放位置为:
plaintext

arch/<架构>/boot/dts/<具体.dtb文件>

例如:

  • ARM 架构:arch/arm/boot/dts/imx6ul-evk.dtb
  • ARM64 架构:arch/arm64/boot/dts/rockchip/rk3568.dtb

编译设备树的命令为:
bash

 dtbs 

ARCH架构 dtbs

三、
设备树的核心组件与组织方式

  1. 分层结构

    • 根节点(/):描述整个系统的基本信息(如兼容字符串、型号)。
    • 总线节点(如pci@10000000i2c@12c0000):挂载外设的总线控制器。
    • 外设节点:具体设备(如 GPIO、UART、USB 控制器)的配置,包含属性(如compatible、寄存器地址、中断信息)。

  2. 复用机制

    • 通过 #include "xxx.dtsi" 引用公共头文件,避免重复编写通用配置(如 CPU 型号、总线基地址)。
    • 使用 & 符号引用已定义的节点(如修改现有总线节点的子节点)。

  3. 设备树叠加(Device Tree Overlays)

    • 存放在 arch/<架构>/boot/dts/overlays/ 或自定义目录,用于动态修改设备树(如添加 / 删除外设节点),编译后生成 .dtbo 文件。

四、
内核配置与解析

  1. 内核配置选项

    • 启用设备树支持:需配置 CONFIG_OF(Device Tree Support),相关子选项在 Device Drivers > Device Tree Support 中。
    • 具体架构可能需要额外配置(如CONFIG_ARM_DEVICE_TREE 对 ARM 架构)。

  2. 启动时加载

    • 引导程序(如 U-Boot、GRUB)加载对应的 .dtb 文件,并通过启动参数(如dtb=xxx.dtb)传递给内核。
    • 内核在启动阶段通过 of_init() 解析 DTB,生成设备模型(struct device_node)。

五、
文档与工具

  • 内核文档:设备树详细规范位于 Documentation/devicetree/ 目录,如:
    • bindings/:各外设的设备树绑定规范(如Documentation/devicetree/bindings/gpio/)。
    • devicetree-basics.rst:设备树基础语法和结构。

  • 编译工具dtc(Device Tree Compiler)用于手动编译 .dts.dtb(通常由内核 Makefile 自动调用)。

总结

设备树在 Linux 内核中的存放结构清晰,按架构和厂商分层组织,源码以 .dts/.dtsi 存在,编译后生成 .dtb 供内核加载。通过复用头文件和分层描述,设备树实现了硬件无关性,简化了多平台适配。如需定制设备树,需在对应架构的 arch/<架构>/boot/dts/ 目录下编写或修改文件,并通过内核配置启用支持。

阅读更多 >>>  苹果手机查看定位记录行迹

网站数据信息

"linux内核中设备树如何存放"浏览人数已经达到19次,如你需要查询该站的相关权重信息,可以点击进入"Chinaz数据" 查询。更多网站价值评估因素如:linux内核中设备树如何存放的访问速度、搜索引擎收录以及索引量、用户体验等。 要评估一个站的价值,最主要还是需要根据您自身的需求,如网站IP、PV、跳出率等!