@Brahner
пример распаковки multi-dtb в Linux, нужны device-tree-compiler (DTC), за ранее скомпилированый dtbTool, hexdump
1. Узнаем смещение, по которому хранятся отдельные dts
hexdump _aml_dtb.PARTITION | grep '0dd0 edfe'
я получил следущее
0000800 0dd0 edfe 0000 77e0 0000 3800 0000 38c8
000f000 0dd0 edfe 0000 77e0 0000 3800 0000 38c8
где 0dd0 edfe (d00d feed это header_magic single dtb, hexdump его отображает немного наоборот), 0х00000800 смещение 1-го dts,
0x0000f000 смещение 2-го dts.
0х00000800=2048byte (размер aml_dt_header multi dtb)
0x0000f000=61440byte
2. Теперь сама разборка/отжатие dts
dd if=_aml_dtb.PARTITION of=meson0.dtb bs=61440 && dd if=meson0.dtb skip=1 bs=2048 > gxm_q201_2g.dtb; rm meson0.dtb
dd if=_aml_dtb.PARTITION skip=1 bs=61440 > gxm_q201_3g.dtb
dtc -I dtb gxm_q201_2g.dtb > gxm_q201_2g.dts && dtc -I dtb gxm_q201_3g.dtb > gxm_q201_3g.dts
3. Редактируем dts
4. Удаляем старые бинарики, иначе dtbTool соберёт как старые, так и новые воедино
5. Собираем dts в single dtb и конвертируем в multi-dtb
dtc -I dts -O dtb -o dtb_0.dtb gxm_q201_2g.dts && dtc -I dts -O dtb -o dtb_1.dtb gxm_q201_3g.dts
rm _arm_dtb.PARTITION && ./dtbTool -o _aml_dtb.PARTITION -s 2048
Сообщение отредактировал toxtarparavos - 08.09.20, 13:03Причина редактирования: поправка описания