The Orin module takes a long time to startup on my carrier board

I design a carrier board for AGX Orin, but the startup time is too long, more than 2minutes ,the log as follows. 
The log shows that after initialized, the system started waiting. About 2 minutes later, the log printed a warning, that is "Test Key is used". I do not know what happened during the waiting time, and how to make the startup process normal.
Please give me some advice, Thanks.

Startup.log (85.5 KB)

Hi AbnerSun,

Have you compared the startup process between your carrier board with the devkit?
First boot should take longer time than normal for configuring board.

Every startup takes more than two minutes, not just the first time.

I compared the startup process log of the two boards.
I found that before " [0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd421]", my board took a long time to perform some things, and I’m not sure what they did because I didn’t see them in the startup log in the devkit. These can be viewed in the attachment log of this topic.

thanks for your suggestion.

Does your custom board have EEPROM as devkit?
If not, you could refer to the following link to modify configuration for EEPROM.
Jetson AGX Orin Platform Adaptation and Bring-Up - Modifying the EEPROM

My board has EEPROM(AT24C32).
Does that conflict with the configuration you said?

The log before kernel started is about UEFI.
You might need to compile UEFI with debug to check what happened inside.
Home · NVIDIA/edk2-nvidia Wiki · GitHub

Hi,I checked my board to make sure there was no EEPROM and NIC.

I’ve already set “cvb_eeprom_read_size = <0x0>”, and I entered boot manage menus and Boot Maintenance manager menu, tried to configure them, but I didn’t know how to do it. I tried to change some configuration, unfortunately, they didn’t work. (⊙︿⊙)

Hi AbnerSun,

Which board config file do you use for your customized board?
You might need to create a new one according to your board design.

Currently, I use “UEFI eMMC device” configuration in Boot Manager Menu.
and:
jetson-agx-orin-devkit.conf → p3737-0000+p3701-0000.conf

Could you please tell me how to create board config file?

Is there other hardware difference from the devkit? (e.g. pinmux)

Please refer to the following link for customized board.
Jetson AGX Orin Platform Adaptation and Bring-Up — Jetson Linux Developer Guide

On the other hand, have you built the UEFI with debug version? (uefi_Jetson_DEBUG.bin)

Hi,
I compiled UEFI debug environment and found that there were two long waits during startup,The serial port had no output during the waiting process.

1.After the second long wait, the serial port outputs::
   /* first long wait */
   SNP:PHY: PhyDxeInitialization () Failed to reset Phy
   DeviceDiscoveryBindingStart, driver returned Device Error to start notification

2.After the second long wait, the serial port outputs:
    DeviceDiscoveryBindingStart, failed to reset moduleDevice Error
    TegraI2cStartRequest: No ACK received
    Failed to read eeprom (No Response)

I checked with the hardware engineer that my board didn't have EEPROM and 10G network connector. Could you tell me how to skip this process?

For 10G network, please disable the ethernet node in the device tree. Kernel device tree has same content as UEFI device tree. But you need full flash to make sure it would take effect.

As for EEPROM, I don’t think that would cause long delay.

1 Like

Thank you.

I checked the burnrootfs.sh file and found that UEFI dtb(TBCDTB file) is still using the devkit version.

By the way, Can I change the path of UEFI dtb after the system is burned? Like kernel dtb, it can be changed by configurating extlinux.conf file in /boot/extlinux/

No, UEFI dtb is decided when flashed.

Hi,
I changed the TBCDTB file and it works. The system skips the long waiting when loading the Ethernet. But at the same time, another error message is shown as fellows.

ConfigureOutputGpios: could not find compatible GPIO node in DT: not on SLT board?
PROGRESS CODE: V03101019 I0
TC: Secondary CPU 1 initializing
I/TC: Secondary CPU 1 switching to normal world boot
I/TC: Secondary CPU 2 initializing
I/TC: Secondary CPU 2 switching to normal world boot
I/TC: Secondary CPU 3 initializing
I/TC: Secondary CPU 3 switching to normal world boot
I/TC: Secondary CPU 4 initializing
I/TC: Secondary CPU 4 switching to normal world boot
I/TC: Secondary CPU 5 initializing
I/TC: Secondary CPU 5 switching to normal world boot
I/TC: Secondary CPU 6 initializing
I/TC: Secondary CPU 6 switching to normal world boot
I/TC: Secondary CPU 7 initializing
I/TC: Secondary CPU 7 switching to normal world boot

When the serial port output the above information, the system starts to wait, it seems that the boot cannot be entered.

Hi,

It is not an error. You can compare it with devkit case.

Hi AbnerSun,

If you could re-build UEFI on your host PC.
Please try to modify the following content in edk2-nvidia/Platform/NVIDIA/NVIDIA.common.dsc.inc to 0
gEfiMdePkgTokenSpaceGuid.PcdPlatformBootTimeOut|L"Timeout"|gEfiGlobalVariableGuid|0x0|5

You would decrease boot time of UEFI for 5s.

1 Like

it works, thank you. ^_^