Jetson TX2i boots from USB drive but changes made to dts file doesn't reflect

Hi,
We have designed a carrier card around the Jetson TX2i module. The system is able to boot from a USB drive but changes made to the dts file doesn’t reflect when we copy the Image, dtb files and lib modules in the rootfs placed inside the USB drive.
Do we need to copy some more files to reflect the changes made into dts file. Any help will be greatly appreciated.

Thanks
Parashuram

Hi,

Image is by default read from rootfs but dtb is not. DTB is flashed into kernel-dtb partition.

So what you should try is put your new dtb to Linux_for_Tegra/kernel/dtb on your host and run command

sudo ./flash.sh -r -k kernel-dtb board_config boot_device.

Hi Wayne,

Unfortunately, In our custom board we don’t have the OTG mode. So every time we cannot flash. One time I can flash that is also changing the nvidia module to dev kit (EVM)and flashing with sda1 and copying roots to USB Drive and booting.

So every time I will make changes in dtb and image. So how to copy or is there any method to do.
Can you help me out?

Regards,
Parashuram

2 methods remained

  1. Use dd command to write the signed dtb to the partition directly.

  2. Add FDT field in extlinux.conf to point to your device tree in rootfs.
    Take an example from TX2

    LABEL primary
    MENU LABEL primary kernel
    LINUX /boot/Image
    INITRD /boot/initrd
    FDT /boot/tegra186-quill-p3310-1000-c03-00-base.dtb
    APPEND {cbootargs} quiet root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 console=ttyS0,115200n8 console=tty0 fbcon=map:0 net.ifnames=0 isolcpus=1-2 nvidia@nvidia-desktop:/boot

Hi Wayne,

I had followed your steps but changes are not reflecting.
followed steps are below

  • Made changes in extlinux.conf file
    TIMEOUT 60
    DEFAULT usb

MENU TITLE L4T boot options

LABEL usb
MENU LABEL USB
FDT /boot/tegra186-quill-p3489-1000-a00-00-ucm1.dtb
LINUX /boot/Image
INITRD /boot/initrd
APPEND ${cbootargs} root=/dev/sda1 rw rootwait

LABEL primary
MENU LABEL primary kernel
LINUX /boot/Image
INITRD /boot/initrd
APPEND ${cbootargs} quiet

  • Flashed with sda1
    sudo ./flash jetson-tx2i sda1
  • copied rootfs to USB drive using this commands sudo rsync -av --progess rootfs/ /media/parashuram/mydrive/
    but changes are not reflecting.
    Above steps are correct or mistake?
    please help me out.

Thanks,
Parashuram

Hi,

I forgot to explain this.

Booting “rootfs” from usb means only the rootfs is on the usb drive, but other components are still in the emmc.

Thus, the real boot flow is

Cboot -> uboot -> uboot searches the extlinux.conf, kernel image and dtb “on emmc” -> Use usb driver in kernel to mount the rootfs on usb drive.

Thus, the file you need to modify is on emmc but not usb.

Can you explore on this more like steps or flow? I’m not understood. Is it possible to boot it from a USB Drive with an updated dtb and image?

Thanks,
Parashuram

Hi,

Did the Image change in /boot/Image take effect?

Anyway, if you cannot understand what is the real boot flow of your device, just put it back to nv devkit and flash with the kernel-dtb partition directly.

Hi Wayne,

I understood the boot flow it is reading from internal emmc Image and dtb (Path is /media/parashuram/boot/).
Once the board booted up then need copy image and dtb to internal emmc. then restart, the board is booted up successfully with our changes are reflected.
Thanks for your support, Wayne.

Regards,
Parashuram

1 Like