设备树的起源
设备树(Device Tree)是一种描述硬件资源的数据结构,它由 uboot 传递给 Linux 内核,被内核解析,内核根据设备树中的硬件描述信息加载利用相应驱动资源。在引入设备树之前,Linux 内核中充斥着大量的用于描述板级硬件信息的文件,拥有不同硬件资源的板卡 ,都有其对应的板级文件或者冗余文件,随着 Linux 内核支持的板卡越来越多,板级文件也越来越多。Linus Torvalds 在 2011 年 3 月 17 日的 ARMLinux 邮件列表宣称“this whole ARM thing is a fucking pain in the ass”,因此,ARM Linux 社区作出了回应,引入了设备树 Device Tree,这样一来许多硬件的细节可以直接透过设备树传递给 Linux 内核,而不再需要在内核中进行大量的冗余编码来适配不同的板卡。
设备树 设备树 组成和结构及 及 dts 、dtb 、dtsi
设备树 Device Tree 由一系列被命名的节点(node)和属性(property)组成,而节点本身可包含子节点。所谓属性,其实就是成对出现的 name 和 value。在设备树中,可描述的信息包括:
- CPU 的数量和类别
- 内存基地址和大小
- 总线和桥
- 外设连接
- 中断控制器和中断使用情况<