Lost instance of UART3 in JetPack 6 for the AGX Orin board

Hi everyone,

I am interested in changing the UART debug port for the AGX Orin board. From what I’ve read in the Jetson AGX Orin Product Design Guide and the following Unable to correspond to "func" and "uart_tx" - #3 by KevinFFF Agx orin module can't use uart 3/4/5, the UART3 is the debug port. This port is related to the following information in the device tree for the JetPack 5 sources:

  • UART3(PCC05, PCC06): uartc@c280000 (serial2) - /dev/ttyTCU0

the instance from the serial@c280000 exists in the JetPack 5 sources. However, I did not see any serial@c280000 instance in the JetPack 6 sources.

Furthermore, I got the serial debug log (find attached at the of the post) from an AGX Orin board flashed with JetPack 5 and I noticed the serials ports that I saw in the log are:

[    0.136363] 31d0000.serial: ttyAMA0 at MMIO 0x31d0000 (irq = 118, base_baud = 0) is a SBSA

[    2.031917] serial-tegra 3100000.serial: RX in PIO mode
[    2.031922] serial-tegra 3100000.serial: TX in PIO mode
[    2.032043] 3100000.serial: ttyTHS1 at MMIO 0x3100000 (irq = 112, base_baud = 0) is a TEGRA_UART
[    2.033370] serial-tegra 3110000.serial: RX in PIO mode
[    2.033373] serial-tegra 3110000.serial: TX in PIO mode
[    2.035692] 3110000.serial: ttyTHS2 at MMIO 0x3110000 (irq = 207, base_baud = 0) is a TEGRA_UART

I understood that the serial ports 3100000 and 3110000 are associated with the UART1(uarta) and UART2(uartb). However, there is no reference to the c280000 port, the UART3(uartc) port, which is confusing.

In the JetPack 6 sources, I found that the 3100000 and 3110000 instances are in the following files:

  • For 3100000 UART1(uarta) port → hardware/nvidia/t23x/nv-public/tegra234.dtsi and hardware/nvidia/t23x/nv-public/tegra234-p3737-0000+p3701-0000.dts
  • For 3110000 UART2(uartb) port → hardware/nvidia/t23x/nv-public/nv-platform/tegra234-p3737-0000+p3701-xxxx-nv-common.dtsi and hardware/nvidia/t23x/nv-public/nv-soc/tegra234-soc-overlay.dtsi

but, as I already mentioned, I did not find any instance of the serial@c280000 UART3 port.

Questions for the NVIDIA team

  1. Could you please clarify the instance loss of the serial@c280000 UART 3 port in the JetPack 6 sources?
  2. Could I use the serial@c280000 instance in the soc/t19x/kernel-dts/tegra194-soc/tegra194-soc-uart.dtsi JetPack 5 sources file to enable the UART 3 port in JetPack 6?

I appreciate any help you can provide.
Thanks!

uart_jp5_log.txt (37.2 KB)

Hi EduardoSalazar96,

Jetpack 5 and 6 have different stacks for device tree and we also modify few nodes for serial devices.

Actually, serial@c280000 is used for serial device rather than TCU(Tegra Combined Uart) for debug console.
We don’t want customer use this interface for other use case so that we remove it from device tree.

As I mentioned above, we don’t suggest user using this interface for the purpose other than debug console. Please just keep as it is. In addition, I think you should refer to the t23x for your AGX Orin. (rather than t19x)

Hi @KevinFFF

Thank your reply!

I understood the UART3/C is only for debugging purposes.

In fact, that port is what we are using for. However, we are exploring customizing the debug UART interface at the hardware level from the development kit design found in the NVIDIA Jetson AGX Orin Developer Kit Carrier Board Specification:

uart_development_kit_design

to the following Planned Design:

We already tested the Planned Design, but we got output messages very different from the devkit UART debug port output. That is the reason why we wanted to check the UART3 port instance in the JetPack 6 sources device tree.

Please, check the following debug files so you can see the differences:

serial_port_debug_files.zip (27.5 KB)

Questions for the NVIDIA team

  1. According to the planned design, could we see the same output as when we use the devkit serial port?
  2. I understand that the UART3 device tree instance should not be changed in the device tree, but according to the planned design, should we keep the instance as is too?
  3. Are the Debug MCU and Level Shifters needed? Or could we replace them with the USB to UART FT232RNQ chip and get the same results?

Maybe you should share the schematic for our HW team to review if they are good to use.

As I stated before, we don’t suggest customer modify the architecture or any configurations in device tree for UART3. Just keep it working as debug UART with default configurations.

Same as above, please share the schematic for our HW team to review.

C> Task 0x0 failed (err: 0x1f1e050d)
E> Top caller module: I2C_DEV, error module: I2C, reason: 0x0d, aux_info: 0x05
I> Busy Sp▒n
▒▒
[0000.064] I> MB1 (version: 1.4.0.1-t234-54845784-08e631ca)

From your Custom_AGX_SerialCOM_20240603_163014.rtf, it seems boot failed in MB2 with above errors so that it reset the board.
Do you have EEPROM on your custom board?

Hi @KevinFFF

Thank you for your reply!

I will share the schematics in a couple of days

Thank you in advance!

Hi @KevinFFF

Here is the information we can provide.

The following image is a very high-level drawing, but it at least shows the basic connection to UART3:

The architecture changes are in the experimentation and testing stages, so the hardware team uses an Adafruit 954 UART to USB adapter cable and a level shifter to go from 3.3V to 1.8V logic for the Orin. Here is the datasheet for the cable: https://mm.digikey.com/Volume0/opasdata/d220001/medias/docus/2285/954_Web.pdf?_gl=1*[…]XMCVtEhHt7MFVG7hrM-DaAJ4wsZInkRjjHirPFpWoxKfkNpMaAvb6EALw_wcB

The part number and a datasheet for the level shifter board can be found in the following link: TXB0104 Bi-Directional Level Shifter [TXB0104] : ID 1875 : Adafruit Industries, Unique & fun DIY electronics and kits

Here is a PDF that shows how the connections are made:
NM-040-PCBA_Housing_for_UART_Level_Shifter.pdf (489.5 KB)

Yes, there is 24AA024HT EEPROM on I2C1.

Your connection should be fine.

Is your current issue about the boot failed?

Hi @KevinFFF

Thank you for your reply!

However, even if the connection should be fine, we do see weird symbols from the custom AGX board that I shared at Lost instance of UART3 in JetPack 6 for the AGX Orin board - #5 by EduardoSalazar96. So when comparing the devkit UART port debug message with the custom AGX board UART messages what we can read is not the same from what we read from the devkit board. We were reading the UART messages at 115200 bps from the terminal.

Questions for the NVIDIA team

  1. With this connection should we get the same messages that we do read in the Orin devkit board?
  2. Or are the weird symbols and messages that differ from the Orin devkit board expected with this connection?

Thank you in advance!

I think you should get the same messages since you are outputting message from the exact same UART port(just converting it to USB).

I’ve seems some garbled messages(weird symbols!?) but not sure if they may be caused from electric interference due to your design.

Hi @KevinFFF

Yes, it seems to be an issue about the boot failed. We are going to try to debug that.

I will be back with further questions if any.

Thank you!

Hi @KevinFFF

We continue working on this. We did a couple of modifications to some source files and reflashed the board. The modifications are:

  1. Change the cvb_eeprom_read_size value to <0x0> in the Linux_for_Tegra/bootloader/tegra234-mb2-bct-common.dtsi MB2 BCT file.
  2. After applying the change 1., we encountered the following error messages:
▒▒ERROR: camera-ip/isp5/isp5.c:2031 [isp5_pm_init] "ERROR: Failed to turn isp1 power on"
BUG: core/init/init.c:86 [init_all] "*** FIRMWARE INIT FAILED AT LEVEL 95 

Since we are not using the MGBE port and it seems the CVB board is not using it, we changed the ODMDATA before flashing. We followed the Jetson AGX Orin Platform Adaptation and Bring-Up — Jetson Linux<br/>Developer Guide 34.1 documentation instructions, so we did:

— p3701.conf.common
+++ p3701.conf.common

-ODMDATA=“gbe-uphy-config-22,hsstp-lane-map-3,nvhs-uphy-config-0,hsio-uphy-config-0,gbe0-enable-10g”;
+ODMDATA=“gbe-uphy-config-0,hsstp-lane-map-3,nvhs-uphy-config-0,hsio-uphy-config-0”;

Here are the log messages that we get from the UART serial debug port:
custom_board_boot_2024-07-24_0.log (73.7 KB)

The logs show that the custom board tries to boot a couple of times after reaching Jetson UEFI firmware. The kernel messages do not show up and there are no error messages.

Questions for the NVIDIA team

  1. Is there a possibility that the board is booting propertly but the UART does not show the kernel messages? The DisplayPort is not currently connected to this custom board.
  2. Could you provide any comments on the steps that we followed and the log messages?

Thank you in advance!

I can not find these messages in the log you shared( custom_board_boot_2024-07-24_0.log).

Is it the log before you apply the change for ODMDATA?

Do you want to remove the framebuffer feature on the display?

From the log you shared, it seems failed in UEFI and you have to update debug UEFI binary to get more logs.

Hi @KevinFFF

Thank you for your reply!

In my last reply, I briefly explained how we got the previous log I shared. So we solved the

ERROR: camera-ip/isp5/isp5.c:2031 [isp5_pm_init] "ERROR: Failed to turn isp1 power on"
BUG: core/init/init.c:86 [init_all] "*** FIRMWARE INIT FAILED AT LEVEL 95 

message by applying the change for the ODMDATA.

No, it is not. The log is after we apply the change for ODMDATA.

Not right now, the board has a micro-HDMI instead of the DisplayPort.

I updated the debug UEFI binary by following the instructions in Build with docker · NVIDIA/edk2-nvidia Wiki · GitHub. I replaced the <Custom BSP package>/bootloader/uefi_jetson.bin with the /build/nvidia-uefi/images/uefi_Jetson_DEBUG.bin binary and reflash the board. Just to give more information about the UEFI build, I cloned the edkrepo as:

edk2_docker edkrepo clone nvidia-uefi NVIDIA-Platforms main

Here is the log file for you to check:
Custom_boot_2024-07-30_0.log (91.0 KB)

Thank you in advance!

Please use the following command to clone the source for R36.3 instead.

$ edk2_docker edkrepo clone nvidia-uefi-r36.3.0 NVIDIA-Platforms r36.3.0

Hi @KevinFFF

We reflashed the board using the r36.3.0 combo. I checked, and it is similar to the one I shared previously.

Here is the log file for you to check:
Custom_boot_UEFI_DEBUG_2024-08-05.log (138.4 KB)

Thank you in advance!

Hi @KevinFFF
Here are some hardware details that the Hardware team shared with us to debug if any hardware components may be affecting the boot process.

Feature Orin Eval Kit Description Custom AGX Description Orin Eval Kit Custom AGX Orin Pins affected
Button MCU PushButton switches, much of this feeds into the DEBUG MCU FPGA handles the PB switch functionality Si Labs 8-bit MCU controlled FPGA POWER_BTN(L61), MODULE_POWER_ON(L54)
DEBUG MCU, USB Type C port controller, USB PD controller DEBUG port USB connector connects to MCU UART2, UART7, MCU_I2C, NVJTAG_SEL, NVDBG_SEL not supported, SYS_RESET_N, FORCE_RECOVERY_N handled by FPGA Microchip 32-bit MCU No DEBUG port, No USB PD support, No USB 3.0, FPGA SYS_RESET_N(L60), FORCE_RECOVERY_N(L10), MCU_I2C[I2C2](J61,K61), UART2(C56,C57), UART7(B48,B49), UART3_DEBUG(H60,H62), NVJTAG_SEL(H59), NVDBG_SEL(G60)
ID EEPROM ID EEPROM @ address 0x56 EEPROM @ address 0x50 – can be changed if necessary ID EEPROM @ 0x56 General purpose EEPROM @ 0x50 I2C1(K5,L8)
PCIe PCIe
10GBE 10GBE 10GB Ethernet 1GB Ethernet with mez board for dev only
CAMERA Connector
M.2 M.2 M.2
M.2 KEY M
CODEC (I2S1) NOT implemented
USB3.1 GEN2
HUB x4 Ports
DeviceDiscoveryStart, failed to reset moduleDevice Error

Is your current issue about the boot failed in UEFI?

For the boot issue, I would suggest you open another topic for tracking.

Hi @KevinFFF

Here is the new top Orin custom board fails to boot using JetPack 6

Thank you in advance!

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