/proc 中设备树的内存节点与 dtb 不匹配

/proc 中设备树的内存节点与 dtb 不匹配

我正在尝试修改 zynqmp zcu102 板的设备树中的内存节点。然而,似乎有什么东西以某种方式覆盖了这个节点。

我使用 FIT 映像和 u-boot 启动。我已通过其 shasum 确认 FIT 映像具有正确的 DTB,并且内核通过添加显示在 /proc/device-tree 中的假节点来使用正确的 DTB。但是,由于某种原因,/proc/device-tree 中显示的内存节点与 DTB 不匹配。

这是我的设备树的相关部分:

memory {
    device_type = "memory";
    reg = <0x0 0x0 0x0 0x10000000>;
};
fakenode{
    foo = "bar";
};

这是我在 /proc/device-tree 中的这些节点中看到的内容:

root@zynqmp:/proc/device-tree# hexdump memory/reg
0000000 0000 0000 0000 0000 0000 0000 0080 0000
0000010 0000 0800 0000 0000 0000 0000 0080 0000
0000020
root@zynqmp:/proc/device-tree# hexdump memory/name -C
00000000  6d 65 6d 6f 72 79 00                              |memory.|
00000007
root@zynqmp:/proc/device-tree# hexdump fakenode/name -C
00000000  66 61 6b 65 6e 6f 64 65  00                       |fakenode.|
00000009
root@zynqmp:/proc/device-tree# hexdump fakenode/foo -C
00000000  62 61 72 00                                       |bar.|
00000004

u-boot 或 linux 配置是否可以在启动期间覆盖内存节点?我现在很茫然下一步该做什么。

更新:

我发现linux继承了u-boot自己的设备树中的/memory节点。我不确定这是否在任何地方都有记录,我是通过实验发现的。有没有办法将这些解耦?

相关内容