
/dts-v1/;/ { model = "MPC8313ERDB"; compatible = "MPC8313ERDB","MPC831xRDB","MPC83xxRDB"; #address-cells = <1>; #size-cells = <1>; aliases { ethernet0 = &enet0; serial0 = &serial0; serial1 = &serial1; pci0 = &pci0; }; 别名的作用是什么?
我的理解如下.
对于ethernet0,我们可以使用enet0.
但为什么serial0 =& serial0?
和serial1 =& serial1
有人可以请一下吗?
谢谢.
解决方法 在DTS的别名部分,我们看到格式的条目
property = &label;
每个条目包括:
一个. property – 此处定义的新属性.
湾& label – 完成标签引用的节点的DTS路径.
它基本上将b的值赋给a.此后,可以使用速记属性访问由标签标识的节点的长名称.
请注意,此分配的RHS使用标签而不是单个节点的短名称.就像C代码中的标签指的是定义它的行上的指令一样,DTS中的标签指的是在该行上定义的单个节点(使用其完整的长路径).
例如,考虑以下DTS,
lxr.free-electrons.com/source/arch/powerpc/boot/dts/mpc8313erdb.dts
其别名部分包含以下内容:
20 aliases { 21 ethernet0 = &enet0; 22 ethernet1 = &enet1; 23 serial0 = &serial0; 24 serial1 = &serial1; 25 pci0 = &pci0; 26 }; 新定义的属性(LHS)
> ethernet0
> ethernet1
> serial0
> serial1
> pci0
参考相应的标签(RHS)
> enet0
> enet1
> serial0
> serial1
> pci0
例如,属性ethernet0现在设置为“/ soc8313 @ e0000000 / ethernet @ 24000”,即在the line where the label enet0 is defined上定义的节点.
更新:
>为什么别名只定义为ethernet0,serial0 ……?
>接下来,开发人员打算在内核源代码中访问这些节点.一旦在DTS中定义了别名,就可以通过在别名部分中搜索它而不是在整个DTS中搜索它来获得它所引用的节点的句柄.
来源:linux内核源代码中的函数find_node_by_alias().
>为什么不在soc8313节点下的pci0节点?
>在MPC8313上,PCI和DMA块通过IO-Sequencer(IOS)连接.因此,与直接连接到系统总线的其他模块(以太网,I2C,UART)相比,可以进行特殊处理.
总结以上是内存溢出为你收集整理的operating-system – DTS文件说明 – 别名全部内容,希望文章能够帮你解决operating-system – DTS文件说明 – 别名所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)