http://blog.csdn.net/sheji105/article/details/75305593
1 ARM设备树起源
LinusTorvalds在2011年3月17日的ARM Linux邮件列表宣称“thiswhole ARM thing is a f*cking pain in the ass”,引发ARM Linux社区的地震,随后ARM社区进行了一系列的重大修正。在过去的ARM Linux中,arch/arm/plat-xxx和arch/arm/mach-xxx中充斥着大量的垃圾代码,相当多数的代码只是在描述板级细节,而这些板级细节对于内核来讲,不过是垃圾,如板上的platform设备、resource、i2c_board_info、spi_board_info以及各种硬件的platform_data。
社区必须改变这种局面,于是PowerPC等其他体系架构下已经使用的FlattenedDevice Tree(FDT)进入ARM社区的视野。DeviceTree是一种描述硬件的数据结构,它起源于OpenFirmware (OF)。在Linux2.6中,ARM架构的板极硬件细节过多地被硬编码在arch/arm/plat-xxx和arch/arm/mach-xxx,采用DeviceTree后,许多硬件的细节可以直接透过它传递给Linux,而不再需要在kernel中进行大量的冗余编码。
Device Tree由一系列被命名的结点(node)和属性(property)组成,而结点本身可包含子结点。所谓属性,其实就是成对出现的name和value。在Device Tree中,可描述的信息包括(原先这些信息大多被硬编码到kernel中)ÿ