The kernel-dtb partition update failed by flash.sh in r35.3.1

In r35.3.1, I run the following command to update the modified kernel-dtb. But this command doesn’t work at all. What’s more, I can update the kernel-dtb partition correctly by this command in r32.7.3.

sudo ./flash.sh -r -k kernel-dtb jetson-agx-xavier-devkit mmcblk0p1

After the end of above command I can get the following output:

*** The [kernel-dtb] has been updated successfully. ***

My modified DTB file for AGX Xavier devkit locates at:

/Linux_for_Tegra/kernel/dtb/tegra194-p2888-0001-p2822-0000.dtb

I can only update the dtb file correctly through the following command, but it is too impractical.

sudo ./flash.sh jetson-agx-xavier-devkit mmcblk0p1

So you were able to flash the same customized device tree in r32.7.3, but now it failed in r35.3.1?
Also, what do you mean by saying “this command doesn’t work at all”? Please put the error message as a text file here.

Hi,

Yes!

(1) Generate the dts file and modify it:

dtc -I dtb -O dts -o tegra194-p2888-0001-p2822-0000_test.dts tegra194-p2888-0001-p2822-0000.dtb

Add the following code to the dts file to enable IVC of SPE-FW:

                };
        };

+       aon_echo {
+               compatible = "nvidia,tegra186-aon-ivc-echo";
+               mboxes = <0x924 0>; #&aon = 0x924
+               status = "okay";
+       };
+
        aondbg {
                compatible = "nvidia,tegra186-aondbg";
                mboxes = <0x924 1>;

(2) Re-generate the dtb file:

dtc -I dts -O dtb -o tegra194-p2888-0001-p2822-0000.dtb tegra194-p2888-0001-p2822-0000_test.dts

(3) Run the folloing flash command at Linux_for_Tegra/ :

sudo ./flash.sh -r -k kernel-dtb jetson-agx-xavier-devkit mmcblk0p1

At the end of this command sudo ./flash.sh -r -k kernel-dtb jetson-agx-xavier-devkit mmcblk0p1, I can get the following message:

*** The [kernel-dtb] has been updated successfully. ***

(4) After the Linux kernel boot successfully, I run the following command to send data to SPE-FW:

sudo su -c ‘echo tegra > /sys/devices/platform/aon_echo/data_channel’

Then I get a error:

No such file or directory

This error means I think that the aon_echo channel can not be created.

Then, If I used the fully flash command:

sudo ./flash.sh jetson-agx-xavier-devkit mmcblk0p1

The dtb can be updated successfully. Everything is ok!!!

please read /boot/extlinux/extlinux.conf and you will know the reason of this issue.

1 Like

Hi,
Thanks for your answer.
I have correctly loaded the modified DTB file by modifying extlinux.conf. However, I still have a question. When executing the command sudo ./flash.sh -r -k kernel-dtb jetson-agx-xavier-devkit mmcblk0p1, the modified DTB file should overwrite the previous DTB file, but the fact is that it is still the previous DTB file in the /boot/dtb/. why is that? Why can r32.7.3 do this by sudo ./flash.sh -r -k kernel-dtb jetson-agx-xavier-devkit mmcblk0p1 successfully? Is this caused by the difference between the boot mechanism of Uboot and UEFI?

“kernel-dtb” is a partition. “APP” is another partition.

“APP” partition is where your file system got mounted.

So, when you check “/boot/dtb”, it is under “APP” partition.

But your command “flash -k kernel-dtb” will flash “kernel-dtb” partition.

32.7.3 loads the dtb from kernel-dtb partition.

35.3.1 loads the dtb from APP partition with path /boot/dtb because extlinux.conf tells bootloader to do it.

32.7.3 will have same situation if extlinux has same field too. It was not there, so didn’t happen same situation.

1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.