标签"intc:"被加到了中断控制器的节点上,这个标签在父节点上创建了一个phandle,这个phandle就是父节点的interrupt-parent。所以这个中断控制器就成了系统所有子节点的默认终端控制器,只有当子节点明确的声明了其interrupt-parent才会被覆盖。
每个设备使用interrupt属性来区分不同的终端输入线。
#interrupt-cells(在interrupt-controller@10140000节点中)的值是2,所以,每个中断说明符由两个cell数据组成。这个例子中用的是最常见的 中断说明符 形式,第一个cell表示中断线的序号,第二个cell表示终端类型的flag(表示高有效,低有效。。。),对于不同的终端控制器,需要阅读对应的binding document来得知其 中断说明符 的格式。
设备特定数据
在常用的属性之外,我们还能为一个节点自行添加属性及子节点。只要是系统需要的任何数据都能被我们按特定的规则来添加。
首先,新设备特定的属性名需要使用 厂商前缀,这样能避免与系统已有的标准属性名称冲突。
第二,每个属性都应该在某个binding文档中有相关的说明,这样驱动作者才能知道如何使用这些属性数据。
第三,将新的binding资料在devicetree-discuss@lists.ozlabs.org中post出来,大家对binding的代码审查将能规避大部分常识性错误。
特殊节点
aliases 节点
这个特殊节点用来引用一个长路径,比如/external-bus/ethernet@0,0,它是长路径的缩写或叫别名。比如:
aliases { ethernet0 = ð0; serial0 = &serial0; };
使用别名来标识一个设备是备受操作系统欢迎的做法。
chosen节点
chosen节点并不代表一个真正的设备,而是用来在Firmware与操作系统间传递数据,如启动参数。
通常chosen节点在dts中被置空。
在我们这个例子中,被添加了如下的启动参数:
chosen { bootargs = "root=/dev/nfs rw nfsroot=192.168.1.1 console=ttyS0,115200";