Hello,
I am working on boot time optimization of Jetson Orin NX 16GB with 128GB Nvme. I faced a number of issues as you can see from title, all related to uefi and kernel customization for boot time optimization in one way or another.
Initially, the device was taking around 40 seconds from plugging in to main screen. I went through different forum threads and the chapters on UEFI Adaptation, Kernel Customization and Boot Time Optimization, compiled the UEFI and replaced uefi_jetson.bin and BOOTAA64.efi in Linux_for_Tegra/bootloader, compiled the kernel, in-tree modules and external modules, replaced the new Image with the original at Linux_for_Tegra/kernel/Image, installed the modules in Linux_for_Tegra/rootfs/, compiled and copied the dtb from nvidia-oot to kernel/dtb/. Lastly, I flashed the board with
sudo ./tools/kernel_flash/l4t_initrd_flash.sh --external-device nvme0n1p1 \
-c tools/kernel_flash/flash_l4t_t234_nvme.xml -p "-c bootloader/generic/cfg/flash_t234_qspi.xml" \
--showlogs --network usb0 jetson-orin-nano-devkit internal
The flash was successful and the device now boots up in about 20 to 25 seconds.
However,
-
I had changed the nvidia logo files with custom image at nvidia-uefi/edk2-nvidia/Silicon/NVIDIA/Assets/ and their names in the corresponding file, but it does not appear. The screen remains blank until the last moment when the nvidia logo is shown for a second before the main screen appears.
-
I had disabled the compiling of imx219 and other cam drivers from the Makefile at Linux_for_Tegra/source/nvidia-oot/drivers/media/i2c as shown in the following
ifdef CONFIG_MEDIA_SUPPORT
obj-m += ar1335_common.o
# obj-m += lt6911uxc.o
# obj-m += nv_imx185.o
# obj-m += nv_imx219.o
# obj-m += nv_imx274.o
# obj-m += nv_imx318.o
# obj-m += nv_imx390.o
# obj-m += nv_imx477.o
# obj-m += nv_ov5693.o
# obj-m += nv_ar0234.o
obj-m += nv_hawk_owl.o
endif
and correspondingly disabled all the camera dtbo files in Linux_for_Tegra/source/hardware/nvidia/t23x/nv-public/overlay/Makefile
, reason being that I had enabled a video decoder driver in drivers/media/i2c/adv7180.c. I had also included the custom device tree for adv7180 at nv-public/overlay/ and compiled it, copied it to Linux_for_Tegra/kernel/dtb/ alongwith other dtbos. AFter the flash, I can locate the module driver at /lib/modules/…/media/i2c/adv7180.ko, but cannot find its dtbo at /boot/dtb/, why would it happen?
- Another reason to disable imx219 driver and camera dtbo files from compiling was to disable the probe of imx219 at boot-up. But since it still probes for it, let me ask what’s the actual way to disable imx219 probe either completely, or instead of imx219, make the jetson probe for some other cam device on csi connectors at boot-up?
I have doubts that some of my issues are related to the flash command that I used. Is the command that I listed above is correct for the full flash of customized kernel, dtb and bootloader, or there should be other parameters included in it? Also, how would I edit the command to only flash the Uefi on the jetson orin nx device?
Lastly, how much is the lowest boot time that I can achieve on Jetson Orin NX 16GB with Nvme SSD and Jetson Orin Nano 8GB with Nvme SSD as well, both with JP 6?
Although I have listed multiple issues in this message, all are related to customization for boot time optimization. I’m hoping to hear from you soon.
Thank you.