掌機 - M22Pro - 如何Extract Device Tree
$ binwalk spi.bin
DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
23824 0x5D10 Android bootimg, kernel size: 1919249152 bytes, kernel addr: 0x5F6C656E, ramdisk size: 1919181921 bytes, ramdisk addr: 0xA78253A, product name: "load boot_image fail"
320452 0x4E3C4 CRC32 polynomial table, little endian
346626 0x54A02 Android bootimg, kernel size: 1836212480 bytes, kernel addr: 0x61003436, ramdisk size: 1711304050 bytes, ramdisk addr: 0x6563726F, product name: "vice"
549560 0x862B8 Flattened device tree, size: 18254 bytes, version: 17
808672 0xC56E0 DES SP1, little endian
808928 0xC57E0 DES SP2, little endian
815632 0xC7210 SHA256 hash constants, little endian
842698 0xCDBCA Unix path: /lib/libtomcrypt/hash.c
843971 0xCE0C3 DES PC1 table
844027 0xCE0FB DES PC2 table
876544 0xD6000 Flattened device tree, size: 60608 bytes, version: 17
1179648 0x120000 Android bootimg, kernel size: 3901168 bytes, kernel addr: 0x40008000, ramdisk size: 12 bytes, ramdisk addr: 0x41000000, product name: "h133-p2nor"
1181696 0x120800 Linux kernel ARM boot executable zImage (little-endian)
1208467 0x127093 gzip compressed data, maximum compression, from Unix, last modified: 1970-01-01 00:00:00 (null date)
5416448 0x52A600 PC bitmap, Windows 3.x format,, 480 x 480 x 24
6346752 0x60D800 Squashfs filesystem, little endian, version 4.0, compression:xz, size: 10060760 bytes, 891 inodes, blocksize: 131072 bytes, created: 2024-11-29 02:25:52
$ dd if=spi.bin of=input.dtb bs=1 skip=876544 count=60608
$ dtc -I dtb -O dts -f input.dtb -o output.dts
$ cat output.dts | head
/dts-v1/;
/memreserve/ 0x0000000041b00000 0x0000000000500000;
/memreserve/ 0x0000000042100000 0x0000000000010000;
/ {
model = "sun8iw20";
compatible = "allwinner,h133", "arm,sun8iw20p1";
interrupt-parent = <0x01>;
#address-cells = <0x02>;
#size-cells = <0x02>;