(1)Platform xavier, replace Linux_for_Tegra\kernel\dtb\tegra194-p2888-0001-p2822-0000.dtb with the one compiled from the source.
(2)Then execute the command:
sudo ./flash.sh -r -k kernel-dtb jetson-xavier mmcblk0p1
After reboot, the device tree is still the old one.
Please share the uart log.
flash-dtb-uart-log.TXT (81.7 KB)
The attachment is uart log.
Please check /boot/extlinux/extlinux.conf and see if there is any device tree indicated inside.
This is /boot/extlinux/extlinux.conf on target device.
extlinux.conf (1.0 KB)
It indicate “FDT /boot/dtb/kernel_tegra194-p2888-0001-p2822-0000.dtb”. But /boot/dtb/kernel_tegra194-p2888-0001-p2822-0000.dtb is not the one I flashed just now.
Remove that one. This one has higher priority than what you flashed to the partition.
Do you mean deleting FDT /boot/dtb/kernel_tegra194-p2888-0001-p2822-0000.dtb in the /boot/extlinux/extlinux.conf file on target device?
Just deleting that line in extlinux.conf.
Which extlinux.conf? The extlinux.conf in target or in host Linux_for_tegra/rootfs/boot/extLinux ?
You can think about it by yourself first… I don’t think I need to guide you to so much for current situation…
I don’t think I should change target file /boot/extlinux/extlinux.conf, because target linux is not running during flashing. But I really did have a test to change the extlinux.conf in the xavier target. The result is that the dtb was not changed.
Then I have tried to change the host file Linux_for_Tegra\rootfs\boot\extlinux, delete that line in extlinux.conf, this method had no effect either.
Again, share your boot log and dmesg.
Also, are you still using emmc to boot up?
Just make this more easier to understand, this thing is same even in jetpack4.x.
Bootloader will read extlinux.conf during boot, if there is a “FDT” telling bootloader “load the device tree from this path”, then it will not care about what you “flash” to the partition. It will read the device tree from that specific path. Generally, in the file system.
What you flash by using “flash.sh -k balabala” is to put the file into a partition “kernel-dtb”.
I’m trying to test JP5 DP on Xavier NX and having a similar question. In JP4.x, I was using
flash.sh -k kernel-dtb to just flash dtb during development as well.
Am I correct that, with JP5 DP, we can just copy the newly built dtb file to the target device (Xavier NX) and modify the
/boot/extlinux/extlinux.conf to point to the newly built dtb to FDT?
The dtb file in
/boot/dtb comes with
kernel_ prefix. Is this file same as the built dtb by
nvbuild.sh. Namely, is
/boot/dtb/kernel_tegra194-p3668-0000-p3509-0000.dtb same as
The Kernel Customization Session for JP5DP didn’t mention copy dtb files as before, could you please help us clarify the process a little bit.
Thanks in advance!
“flash.sh -k kernel-dtb” is not equal to “FDT”.
These two are different methods. When “FDT” got no result, then it will fallback to the use the dtb from “flash -k kernel-dtb”.
This does not matter which jetpack version. This mechanism is same in jp4.x and jp5.0DP.
FDT loads dtb from file system.
flash.sh -k kernel-dtb is flashing the dtb to a partition which is not in the filesystem.
You can use FDT to load your dtb but it is actually escaping from the original case. If this does not matter to you, then it is fine.
Got it. Remove that FDT line from the
extlinux.conf and then everything same as jp4.x.
Or keep that line and point it to and dtb file in the filename for easier debug.
I was doing as you mentioned in your earlier comment.
- remove the line contains FDT (
FDT /boot/dtb/kernel_tegra194-p3668-0000-p3509-0000.dtb for Xavier NX) in the
/boot/extlinux/extlinux.conf file on device.
- Build the kernel and dtb from the modified the source using nvbuild.sh.
- Then copy all files in
$L4T/kernel/dtb, and also copy the
nvgpu.ko to the L4T folder.
- Then run
sudo ./flash.sh -k kernel-dtb jetson-xavier-nx-devkit mmcblk0p1.
After that, the device will boot up with the modified dtbs.