问题一:为什么需要设备树?
在目前广泛使用的Linux kernel 2.6.x版本中,对于不同平台、不同硬件,往往存在着大量的不同的、移植性差的板级描述代码,以达到对这些不同平台和不同硬件特殊适配的
需求。但是过多的平台、过的的不同硬件导致了这样的代码越来越多,比如arch/arm/plat-xxx和arch/arm/mach-xxx中充斥着大量的垃圾代码, platform设备、resource、
i2c_board_info、spi_board_info以及各种硬件的platform_data。在一些常见的芯片如s3c2410、s3c6410等板级目录,代码量在数万行。最终引发了Linux创始人Linus的不满,以
及强烈呼吁改变。
Devicetree基本数据格式:
Devicetree是一个树状结构,由节点(node)和属性(properties)构成,而属性就是成对出现的名字(key)和值(value),每个节点除了属性还可能有若干子节点如:
/ {
node1 {
a-string-property = "A string";
a-string-list-property = "first string", "second string";
a-byte-data-property = [0x01 0x23 0x34 0x56];
&