/proc에 있는 장치 트리의 메모리 노드가 dtb와 일치하지 않습니다.

/proc에 있는 장치 트리의 메모리 노드가 dtb와 일치하지 않습니다.

zynqmp zcu102 보드의 장치 트리에서 메모리 노드를 수정하려고 합니다. 그런데 뭔가가 이 노드를 덮고 있는 것 같습니다.

FIT 이미지와 u-boot를 사용하여 부팅합니다. FIT 이미지의 shasum을 통해 올바른 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 노드를 상속한다는 것을 발견했습니다. 이것이 어디에 문서화되어 있는지 확실하지 않으며 실험을 통해 발견했습니다. 이것들을 분리할 수 있는 방법이 있나요?

관련 정보