Devicetree - "ranges" 如何映射到设备节点?
Devicetree - how are "ranges" mmapped to device nodes?
假设我们有这个示例设备树:
我只想知道 ranges
使用什么机制才能正确映射到设备节点(ethernet@0,0
、i2c@1,0
、flash@2,0
)。
是否使用:
- child的域地址(红色)或
- “出现顺序”(紫色)
正确找出映射?
Does it use:
...
to properly figure out mapping?
DT 节点的顺序并不重要,通常是为了美观,因此可以立即排除“出现顺序”。参见
range
属性 应该是 、 和 值的三元组。
但是,#address-cells
属性(属于 external-bus)指定(外部总线) 值将由 two 值组成。此“double-length”仅应用于 ,而 是每个父项的 #address-cells
属性 的单个 值节点。
#size-cells
属性 指定 值将由单个 值组成。
因此,rangle
属性 显然在您的示例中包含由 4 个值组成的“三元组”,前两个为 ,下一个为 ,最后一个是 .
reg
属性 应该是一对
和 值。
由于 external-bus #address-cells
属性 指定(and/or 默认值为 2) 值将由 two values ,并且 #size-cells
属性 指定 值将由单个 值组成, reg
属性 将在您的示例中由一个由 3 个值组成的“对”组成,前两个为 ,最后一个为 。
注意DT规范要求reg
属性中的
必须匹配节点名中的“@”。 中额外的“,0”就是你猜的,每个reg
.中的后半部分
所以你的问题的答案是,它与筹码select值有关。
但是,设备节点中的显着链接 "mechanism" 不是引用节点名称中的 而是 reg
中的 属性.
假设我们有这个示例设备树:
我只想知道 ranges
使用什么机制才能正确映射到设备节点(ethernet@0,0
、i2c@1,0
、flash@2,0
)。
是否使用:
- child的域地址(红色)或
- “出现顺序”(紫色)
正确找出映射?
Does it use:
...
to properly figure out mapping?
DT 节点的顺序并不重要,通常是为了美观,因此可以立即排除“出现顺序”。参见
range
属性 应该是
但是,#address-cells
属性(属于 external-bus)指定(外部总线) 值将由 two #address-cells
属性 的单个 #size-cells
属性 指定
因此,rangle
属性 显然在您的示例中包含由 4 个值组成的“三元组”,前两个为
reg
属性 应该是一对
由于 external-bus
#address-cells
属性 指定(and/or 默认值为 2) 值将由 two #size-cells
属性 指定 reg
属性 将在您的示例中由一个由 3 个值组成的“对”组成,前两个为 ,最后一个为 注意DT规范要求reg
属性中的
reg
.中的后半部分
所以你的问题的答案是
但是,设备节点中的显着链接 "mechanism" 不是引用节点名称中的 reg
中的 属性.