Linux设备树的用法(6)

标签"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 = &eth0;

        serial0 = &serial0;

    };

 

使用别名来标识一个设备是备受操作系统欢迎的做法。

 

chosen节点

chosen节点并不代表一个真正的设备,而是用来在Firmware与操作系统间传递数据,如启动参数。

通常chosen节点在dts中被置空。

在我们这个例子中,被添加了如下的启动参数:

 chosen {

        bootargs = "root=/dev/nfs rw nfsroot=192.168.1.1 console=ttyS0,115200";

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/6c0fc219b0ea511bacee7c6ba4b1058e.html