Newly built DTBs are not getting flashed on target though flashing is successfull

Hi,

I want to know the reason why my latest built DTB files are not getting updated in the target , even though I am using the same build and flash procedure from past 1 month which was working before.

Even though I built the kernel freshly and flashed, the /boot/DTB/ folder is having old dated Nov 9th DTB file. [kernel_tegra194-p2888-0008-p2822-0000]

what might be the issue

Where did you put your new dtb when it is on the host?

flashed to the target using Flash.sh script command.

My question is “where did you put your new kernel dtb on your host”.

What you are doing is I asked “what did you eat for lunch?” and you replied me “I eat”… you totally not replying the question…

In this path:

/home/trident/Downloads/r35_4_1/Jetson_Linux_R35.4.1_aarch64/Linux_for_Tegra/kernel/DTB

we don’t have “DTB” but only “dtb”. Is this just a typo or you really create a folder as “DTB”?

Sorry it was a typo. Its “dtb” folder only, the folder where I copy my 134 dtb files that are built once kernel build process is completed.

ok then the next question is how did you flash your device tree? What flash command in use?

I used the flash command :

$ sudo ./flash.sh -r jetson-agx-xavier-industrial mmcblk0p1

I have attached the flash script and conf file for more information.
jetson-agx-xavier-industrial.txt (3.5 KB)
flash.txt (139.8 KB)

please do not use -r and it shall work.

Thanks. I will try this and let you know.
The help for “-r” says that

" -r -------------------- skip building and reuse existing system.img."

May be my target board was booting from already existing image in its eMMC memory and not taking my new image and DTB files?? Is my understanding correct?

system.img is basically your rootfs image.

When you use “-r”, it will not generate a new system.img based on your new stuff, for example, new dtb in kernel/dtb or new things added to rootfs will not appear. It will just use system.img previously generated in your last flash.

For example, if your last flash time was 11/8/2023, then with -r flash.sh, it will always use 11/8 image and will not create a new one.

If you didn’t flash anything before from this BSP and there is no existing system.img, then running -r flash.sh will report error because there is no previous image.

1 Like

Just a small query for my better understanding.

In the below folder you can see the “rootfs” folder is a seperate folder and “kernel” folder is seperate. Just want to get clarified, that system.img is built from “rootfs” folder as well as taking dtb files/img file present inside my “kernel” folder as well.
pls confirm. Thanks.

yes.

When flashing, some files will be copied to rootfs so that it will appear on your jetson after your flash.

1 Like

you mean files( like dtb files/ img file) copied to “rootfs” from “kernel” folder?

yes. correct.

Original dtb may get signed or something else to become kernel_xxxx.dtb and copied to your rootfs/boot/dtb. That is why you can see dtb under /boot/dtb on your jetson.

1 Like

Thanks a lot. I learnt many things today. I can see my latest built image and master dtb [kernel_xxxx.dtb] file being copied to “roofs/boot” folder as shown below.

1 Like

Then running flash.sh without -r will make it flashed to the board now.

-r is more like a method to save boot time only.

ok fine. Is there any working flash.sh command with parameters passed, you know which will flash only my DTB( kernel_XXX) or only my kernel image ( Image file) so that I can save time each time i flash my target to check my device tree code changes.
Because this full flash command is taking me 30 mins to flash each time.

Thanks.

Hi,

Actually you can just copy your new dtb to device side e.g. through ethernet and replace the old dtb under /boot/dtb and reboot…

More like debug purpose.

1 Like