【发布时间】:2022-01-26 07:41:56
【问题描述】:
假设我们有这个示例设备树:
我只想知道ranges 使用什么机制以便正确映射到设备节点(ethernet@0,0、i2c@1,0、flash@2,0)。
是否使用:
- “孩子的域地址”(红色)或
- “出现顺序”(紫色)
要正确计算映射?
【问题讨论】:
-
“它是否使用:...来正确计算映射?” -- 两者都不是。 DT 节点的顺序并不重要,通常是为了美观,因此可以立即排除“出现顺序”。看起来 "mechanism" 可能是每个节点的
reg属性的第一个值是内存索引。顺便说一句,设备 I/O 内存的实际映射通常由每个设备驱动程序执行。在reg属性中省略有效的基地址和长度是不寻常的。 -
至少我知道顺序无所谓。
range是一个三元组,包括 (a) 从子节点的角度来看的地址,(b) 从父节点的角度来看的地址和 (c) 该地址段的大小。所以我有两个想法......考虑范围0 0 0x10100000 0x100000- 从子节点的角度来看它的地址是0 0。它可以映射到 A: 子节点的名称ethernet@0,0(注意@0,0)。但不太可能,因为我在某处读到@0,0部分根本没有使用。这是真的? B: 可能使用了reg = <0 0 0x100>的初始部分,即0 0。
标签: device-tree