Jetson hangs at UEFI firmware stage after successful flashing

Description:
I am trying to extend 2-camera (IMX-219) to support 4-camera. I am able to build kernel with device-tree changes.
However after flashing, the jetson is not booting after uefi. I have attached serial-console log.
“Jetson UEFI firmware (version 3.1-32827747 built on 2023-03-19T14:56:32+00:00)”

It gives error

ASSERT [DxeCore] /out/nvidia/bootloader/uefi/Jetson_RELEASE/edk2/MdeModulePkg/Core/Dxe/DxeMain/DxeMain.c(562): !(((INTN)(RETURN_STATUS)(Status)) < 0)

Resetting the system in 5 seconds.
Shutdown state requested 1
Rebooting system …

For this I have made changes to following files and build the kernel.

  1. hardware\nvidia\platform\t23x\p3768\kernel-dts\Makefile
  2. hardware\nvidia\platform\t23x\p3768\kernel-dts\tegra234-p3767-camera-p3768-imx219-quad.dts
  3. dtsi files : extended *imx219-dual.dtsi to *imax219-quad.dtsi, as follows

tegra234-p3767-0000-p3509-a02.dts
|—> tegra234-p3767-camera-p3768-imx219-quad.dts
|—> tegra234-p3509-a02.dtsi
|—> tegra234-p3768-camera-rbpcv2-imx219-quad.dtsi
|—> tegra234-camera-rbpcv2-imx219-quad.dtsi

Steps to build: all of these were successful

$ make ARCH=arm64 LOCALVERSION=-tegra CROSS_COMPILE=/aarch64–glibc–stable-2020.08-1/bin/aarch64-buildroot-linux-gnu- O=/public_sources/Linux_for_Tegra/source/public/kernel_out defconfig
$ make ARCH=arm64 LOCALVERSION=-tegra CROSS_COMPILE=/aarch64–glibc–stable-2020.08-1/bin/aarch64-buildroot-linux-gnu- O=/public_sources/Linux_for_Tegra/source/public/kernel_out Image
$ make ARCH=arm64 LOCALVERSION=-tegra CROSS_COMPILE=/aarch64–glibc–stable-2020.08-1/bin/aarch64-buildroot-linux-gnu- O=/public_sources/Linux_for_Tegra/source/public/kernel_out dtbs
$ make ARCH=arm64 LOCALVERSION=-tegra CROSS_COMPILE=/aarch64–glibc–stable-2020.08-1/bin/aarch64-buildroot-linux-gnu- O=/public_sources/Linux_for_Tegra/source/public/kernel_out modules

$ sudo ./apply_binaries.sh

$ sudo tools/l4t_create_default_user.sh -u nvidia -p nvidia -a -n nvidia-desktop --accept-license

Image copy

$ cp -rfv /public_sources/Linux_for_Tegra/source/public/kernel_out/arch/arm64/boot/Image kernel/

device-tree copy

$ cp -rfv /public_sources/Linux_for_Tegra/source/public/kernel_out/arch/arm64/boot/dts/nvidia/* kernel/dtb/

Install modules

$ sudo rsync -azPu /public_sources/Linux_for_Tegra/source/public/modules_out/lib/modules/ rootfs/lib/modules/

Flash the system to the NVMe SSD to dev kit and also custom board (derived from dev-kit).

$ sudo ./tools/kernel_flash/l4t_initrd_flash.sh --external-device nvme0n1p1 -c tools/kernel_flash/flash_l4t_external.xml -p “-c bootloader/t186ref/cfg/flash_t234_qspi.xml” --showlogs --network usb0 p3509-a02+p3767-0000 internal

I have tried to use flash.sh , but it did not work. It resulted in busy-spin.
$ sudo ./flash.sh p3509-a02+p3767-0000 nvme0n1p1

Attachments:

  1. Jetson_serial_console_uefi_debug_bin.log
  2. Jetson_serial_contol_uefi_release_bin.log
  3. flash_3-4_0_20240825-153946.log (initrdlog)
  4. flash_success.log (screen capture)

Any guidance or suggestion will be highly helpful.
Jetson_serial_console_uefi_debug_bin.log (302.2 KB)
flash_success.log (306.6 KB)
flash_3-4_0_20240825-153946.log (41.6 KB)
Jetson_serial_contol_uefi_release_bin.log (164.9 KB)

Hi b3204sunil,

Are you using Jetson Orin Nano or Jetson Nano?
Your topic is in category of Jetson Nano but there’s no UEFI.

If you have both devkit and the custom board, let us check the issue on the devkit first.

Are you using a board which has similar design as p3509 since it has HDMI output?

Could you boot the board successfully before modifying the device tree?

HI @KevinFFF ,
Thank you for your input.

I am using Orin Nano NX 16GB.

Yes, will do. I am planning to test it on devkit first.

Our custom board has HDMI output. It is similar to p3509 board. We have been able to connect HDMI monitor to custom board and also to devkit.

We have been able to boot with same kernel image (i.e. using SSD in fact) on both boards, Devkit and custom carrier board. This is before modifying the device-tree.

Will just flashing device-tree on the top of working image help ? (avoid flashing entire kernel image, bootloader)

Another point was about extlinux.conf. Here is the extlinux.conf. Hope it is ok. Though I do not see the folder “boot/dtb”, is it created by flashing script during flashing process?

MENU TITLE L4T boot options

LABEL primary
MENU LABEL primary kernel
LINUX /boot/Image
FDT /boot/dtb/kernel_tegra234-p3767-0000-p3509-a02.dtb
INITRD /boot/initrd
APPEND ${cbootargs}

/boot/dtb is the directory in your device.

Yes, you can also try this since UEFI would use the similar dtb as kernel dtb.
I believe assertion issue is caused from some nodes in DTB has been changed.
Please help to find out which modification in DTB causing this issue.

Finally the problem was in version of the os-modules that was loaded in rootfs/lib/modules/5.10.104-tegra.
This directory “5.10.104-tegra” was not created during DEPMOD. Instead it was 5.10.120-tegra, which caused UEFI to report driver discovered but not loaded. Now the Jetson is booting with device tree changes.

sudo make ARCH=arm64 LOCALVERSION=-tegra -j6 O=/public_sources/Linux_for_Tegra/source/public/kernel_out --output-sync modules_install INSTALL_MOD_PATH=/public_sources/Linux_for_Tegra/source/public/modules_out

make[1]: Entering directory ‘/public_sources/Linux_for_Tegra/source/public/kernel_out’

DEPMOD 5.10.104-tegra

make[1]: Leaving directory ‘/public_sources/Linux_for_Tegra/source/public/kernel_out’


Driver C3C0ECB7-F1AD-400B-A279-65E2A8578C79 was discovered but not loaded!!
ERROR: C80000002:V03041000 I0 D6A2CB7F-6A18-4E2F-B43B-9920A733700A

Look at version report by

$ cat ./public_sources/Linux_for_Tegra/source/public/kernel_out/include/config/kernel.release

1 Like

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