Any easy method for merging my custom dtb with jetson-io touched dtb

Hi,

I have one question about finding more easy, more efficient method than the following my approach.

At JetPack 4.2.2 we modified usb and audio related dtsi file and flashed one compiled dtb file to kernel-dtb region by using the following command.
(We have our target board which uses three I2S channels all.)

sudo ./flash.sh -r -k kernel-dtb jetson-xavier mmcblk0p1 ------ flashing command 1

There has been no problem with this usage.

However lately when we upgraded to JetPack 4.3, we met the one problem that I2S2 port is set as gpio at default.
After some time, I found that the problem can be cured by jetson-io tool, but
jetson-io tool seems to make from /boot/dtb/tegra194-p2888-0001-p2822-0000.dtb to /boot/tegra194-p2888-0001-p2822-0000-user-custom.dtb file.

Disappointedly, according to experiment the flashing command 1 (above) does not update /boot/dtb/~.dtb into my custom dtb file.
It seems that /boot/dtb/~.dtb is replaced by kernel flashing command (sudo ./flash.sh jetson-xavier mmcblk0p1).

After flashing kernel, all sdk component (cuda, ai, etc) is erased, so I must install them again, including my work codes as well.

By any chance, is there any easier and more efficent method for changing dtb file when using my custom dtb and jetson-io touched dtb together?

BR,
Johnny Jeong

hello lunalovre,

it’ll overwrite your rootfs if you’re using whole flash, i.e. $ sudo ./flash.sh jetson-xavier mmcblk0p1
please using -k kernel-dtb option to have partial update, it only writes device tree binary into its partitions,

there should be two ways to generate your customize dtb file,

  1. you access L4T sources and include all necessary dtsi updates. you should compile your own device tree files for your customize board.
  2. you may disassembler the dtb file into text file for edit. for example, $ dtc -I dtb -O dts -o results.dts tegra.dtb
    after that, convert the DTS into a new DTB files, dtc -I dts -O dtb -o output.dtb results.dts

please also check bootloader documentation, CBoot; and you should check the details of [Kernel Boot Sequence Using extlinux.conf] session.
there is no FDT entry with default extlinux.conf file, so the the device tree binary is loaded from the kernel-dtb partition. thanks

Hello JerryChang,

Thanks for reply.

I have been making my dtb file out of L4T sources and using -k kernel-dtb method for JetPack 4.2.2.
But at JetPack 4.3 we should use Jetson-io tool to change I2S2 pinmux, and if I use Jetson-io tool, my dtb file is not applied to target by the method any more.

Perhaps should I use pinmux changing method instead of Jetson-io tool?
I have not used pinmux changing method but I think I’ll try.

Thanks.

BR,
Johnny Jeong