gpt4 book ai didi

operating-system - DTS 文件说明 - 别名

转载 作者:行者123 更新时间:2023-12-04 08:36:31 25 4
gpt4 key购买 nike

我试图从 DTS 文件中理解以下代码段。

/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
有人可以简要介绍一下吗?

谢谢。

最佳答案

aliases DTS 的部分,我们看到格式的条目

property = &label;



每个条目包括:
一种。 property -- 一个新的 房产 在这里定义。
湾。 &label -- 完整的 DTS 路径 nodelabel 引用.

它基本上分配了 的值b 一个 .此后, label 标识的节点的长名称可以使用简写 property 访问.

请注意,此作业的 RHS 使用 label不是 各个节点的简称。就像 label在 C 代码中是指定义它的行上的一条指令, label在 DTS 中是指在该行上定义的单个节点(使用其完整的长路径)。

例如,考虑以下 DTS,
lxr.free-electrons.com/source/arch/powerpc/boot/dts/mpc8313erdb.dts

谁的 aliases部分包括以下内容:
 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 中定义,一个 指向它所指节点的句柄只需在 aliases 中搜索即可获得部分而不是在整个 DTS 中搜索它。

    来源:函数 find_node_by_alias() 在 Linux 内核源代码中。
  • 为什么pci0 中的节点不是 soc8313节点?
  • 在 MPC8313 上, PCI DMA block 通过 IO-Sequencer(IOS) 连接。因此,与直接连接到系统总线的其他模块(以太网、I2C、UART)相比,需要进行特殊处理。
  • 关于operating-system - DTS 文件说明 - 别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17738709/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com