Linux 设备树 devicetree(DTS)入门
💡
原文中文,约13600字,阅读约需33分钟。
📝
内容提要
ARM devicetree是为了解决ARM Linux中冗余代码和缺乏引导标准的问题而引入的。它通过使用描述性的数据结构替代将硬件设备配置信息硬编码到内核代码中的方式。DTS描述了设备树的结点和属性,包括CPU、内存、定时器和外设连接等信息。DTS文件可以转换为dtb文件,内核通过解析dtb文件来初始化设备平台。DTS文件中的node节点可以通过compatible属性匹配驱动代码。DTS文件还支持include方式和默认变量配置。
🎯
关键要点
- ARM devicetree是为了解决ARM Linux中冗余代码和缺乏引导标准的问题而引入的。
- DTS描述了设备树的结点和属性,包括CPU、内存、定时器和外设连接等信息。
- DTS文件可以转换为dtb文件,内核通过解析dtb文件来初始化设备平台。
- DTS文件中的node节点可以通过compatible属性匹配驱动代码。
- ARM平台相关代码经过规范化,移除了板级特定代码,由Device Tree机制传递硬件信息。
- DTS文件由一系列被命名的结点和属性组成,属性是成对的name和value。
- 内核在启动过程中解析每个node的硬件配置信息,根据这些信息初始化设备。
- DTS和dtb之间可以通过dtc工具进行转换。
- DTS中每个节点的配置可以根据compatible在Documentation/devicetree中查找说明。
- 内核初始化设备驱动时,根据compatible属性决定是否初始化。
- DTS支持include方式,可以复用描述节点。
- DTS文件中的默认变量配置影响节点的初始化。
- DTS文件中reg和interrupts的数值有具体含义,表示设备的地址和中断配置。
- DTS文件支持多种设备配置,包括CPU、内存、定时器和串口等。
- 通过设备节点可以读取属性值,进行设备初始化和配置。
➡️