Devicetree(设备树)是用来描述系统硬件信息的树模型,其旨在unify内核。通过bootloader将devicetree的信息传给kernel,然后kernel根据这些设备描述初始化相应的板级驱动,达到一个内核多个平台共享的目的。
Devicetree主要为描述不可插拔(非动态)设备的板级硬件信息而设计的。它由分层的描述设备信息的节点(node)组成树结构。每个node包含的内容通过property/value对来表示。除root节点外,每个节点都有parent。如图所示:
除root节点名用'/'表示外,其余节点都由node-name@unit-address
来命名,且同一层级必须是唯一的。
表示一个节点的完整路径(full path)。型如:
每个节点包含的主要内容就是这个所描述的设备的属性信息,由name和value组成:
描述中断的属性有4个:
Example
所有的设备树都必须有一个root节点,且root节点下必须包含一个cpus节点和至少一个memory节点。
更多具体设备具体类别的描述信息:内核源代码/Documentation/devicetree/bindings。
DTS是描述devicetree的源文本文件,它通过内核中的DTC(Devicetree Compiler)编译后生成相应平台可烧写的二进制DTB。
DTB又称Flattened Devicetree(FDT),在内存中的结构如下图所示:
大端字节序结构体:
Devicetree结构体存放的位置。由一行行“token+内容”片段线性组成。
Version 1 DTS files have the overall layout: