Linux 设备树 devicetree(DTS)入门

原文约13600字,阅读约需33分钟。发表于:

在过去的ARM Linux中,存在大量的冗余代码。这些设备代码与特定公司的单板启动或运行细节紧密耦合,无法被重用或移植。同时,内核缺乏引导标准,导致代码不断膨胀。最终,由于Tony Lindgren向Linus发送了一封邮件,请求提交OMAP平台代码的修改,并附上了修改内容以及如何解决合并冲突的方法,使得Linus怒不可遏地抱怨道:“该死。伙计们,这整个ARM的事情真是个讨厌的麻烦。”(Linus对ARM的代码肯定已经忍耐了很久了)。

ARM devicetree是为了解决ARM Linux中冗余代码和缺乏引导标准的问题而引入的。它通过使用描述性的数据结构替代将硬件设备配置信息硬编码到内核代码中的方式。DTS描述了设备树的结点和属性,包括CPU、内存、定时器和外设连接等信息。DTS文件可以转换为dtb文件,内核通过解析dtb文件来初始化设备平台。DTS文件中的node节点可以通过compatible属性匹配驱动代码。DTS文件还支持include方式和默认变量配置。

相关推荐 去reddit讨论