Linux Device Tree System (简称dts系统)是Linux社区的大牛们参考了PowerPC等体系架构中使用的Flattened Device Tree( FDT )采用Linux Device Tree System结构,许多硬件的细节可以直接透过它传递给Linux,而不再需要在kernel中进行大量的冗余编码。
Linux Device Tree System是一种描述硬件的数据结构,由一系列被命名的节点(node)和属性(property)组成,而结点本身可包含子结点。所谓属性,其实就是成对出现的名称和值,在Linux Device Tree System中,可描述的信息包括:CPU的数量和类别,内存基地址和大小,总线和桥,外设连接,中断控制器和中断使用情况,GPIO控制器和GPIO使用情况,Clock控制器和Clock使用情况。
通常由.dts文件以文本方式对系统设备树进行描述,经过Device Tree Compiler(dtc)将dts文件转换成二进制文件binary device tree blob(dtb),.dtb文件可由Linux内核解析,有了device tree就可以在不改动Linux内核的情况下,对不同的平台实现无差异的支持,只需更换相应的dts文件,即可满足。
基础说明:
1 、节点 Node 、属性 property 后续文字都采用中文描述,有必要代码时才采用英文描述。
2 、设备树结构块是一个线性化的结构体,以节点形式保存了目标单板上的设备信息。
3 、每个dts文件只有一个根节点,但可以 include 其他dtsi文件,dts文件在编译后会展开,同一节点的数据以最后一个定义的为准