device tree
디버깅 방법
jsh91
2023. 5. 12. 09:33
1. device tree를 컴파일한 bcm2710-rpi-3-b.dtb를 hexdump를 사용하여 아스키코드로 확인 가능하다
hexdump bcm2710-rpi-3-b.dtb -C
00000000 d0 0d fe ed 00 00 80 ab 00 00 00 48 00 00 73 d4 |...........H..s.|
00000010 00 00 00 28 00 00 00 11 00 00 00 10 00 00 00 00 |...(............|
00000020 00 00 0c d7 00 00 73 8c 00 00 00 00 00 00 00 00 |......s.........|
00000030 00 00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 |................|
00000040 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 |................|
00000050 00 00 00 03 00 00 00 23 00 00 00 00 72 61 73 70 |.......#....rasp|
00000060 62 65 72 72 79 70 69 2c 33 2d 6d 6f 64 65 6c 2d |berrypi,3-model-|
00000070 62 00 62 72 63 6d 2c 62 63 6d 32 38 33 37 00 00 |b.brcm,bcm2837..|
00000080 00 00 00 03 00 00 00 17 00 00 00 0b 52 61 73 70 |............Rasp|
2. decompile을 사용하여 확인 가능하다.
dtc -I dtb -O dts {DTB_FILE.dtb} -o {OUT_PATH}
/memreserve/ 0x0000000000000000 0x0000000000001000;
/ {
compatible = "raspberrypi,3-model-b\0brcm,bcm2837";
model = "Raspberry Pi 3 Model B";
#address-cells = <0x01>;
#size-cells = <0x01>;
interrupt-parent = <0x01>;
aliases {
serial0 = "/soc/serial@7e215040";
serial1 = "/soc/serial@7e201000";
aux = "/soc/aux@7e215000";
sound = "/soc/sound";
soc = "/soc";
dma = "/soc/dma@7e007000";
...
...
...
3. target board에서 dtb를 알아내는 방법
fdtdump -s /sys/firmware/fdt
fdt: found fdt at offset 0
/dts-v1/;
// magic: 0xd00dfeed
// totalsize: 0x8628 (34344)
// off_dt_struct: 0x48
// off_dt_strings: 0x787c
// off_mem_rsvmap: 0x28
// version: 17
// last_comp_version: 16
// boot_cpuid_phys: 0x0
// size_dt_strings: 0xdac
// size_dt_struct: 0x7834
/memreserve/ 0 0x1000;
/ {
memreserve = <0x3b400000 0x04c00000>;
serial-number = "00000000a0be4b55";
compatible = "raspberrypi,3-model-b", "brcm,bcm2837";
model = "Raspberry Pi 3 Model B Rev 1.2";
#address-cells = <0x00000001>;
#size-cells = <0x00000001>;
interrupt-parent = <0x00000001>;
system {
linux,serial = <0x00000000 0xa0be4b55>;
linux,revision = <0x00a22082>;
};
axi {
vc_mem {
reg = <0x3ec00000 0x40000000 0xc0000000>;
};
};
aliases {
display0 = "/chosen/framebuffer@3eaa9000";