我正在尝试修改 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节点。我不确定这是否在任何地方都有记录,我是通过实验发现的。有没有办法将这些解耦?