Hi, I am having trouble understanding the UART layout of Xavier NX in both the hardware and software level.
As per my understanding, there are 3 UARTs available on Xavier NX. According to Figure 11-5 (JetsonXavier NX UART Connections) in NVIDIA Jetson Xavier NX Developer Kit Carrier Board P3509_A01, the 3 UARTs are:
- SoC: UART2 = Jetson: UART0
ttyTHS0
: for internal use, M.2 Key E - SoC: UART1 = Jetson: UART1
ttyTHS1
: for general use, UART General - SoC: UART3 = Jetson: UART2
ttyTHS4
: for debugging, Debug UART
Naturally, I traced UART1_TXD (203) and UART1_RXD (205) to pin8 and pin10 on the Dev Kit’s 40-pin Expansion Header (Figure 3-1) to connect with this other hardware. Additionally, I ensured the connection is correct, i.e. cross-connected between the hardware, and pin8 and pin10 on the Xavier NX - TX to RX and RX to TX, GND to GND. In the system level, I initiated the communication through ttyTHS1
but there is no communication in that port… Then I did a simple loop back test to make sure on the hardware level, pins are working. But the communication was unsuccessful… After that, I decided to try out the other 2 UART ports and ttyTHS0
turned out to be the right port and communication was successful both for the loop back test and communication with the hardware.
While I did not customize the DTS, my assumption is that my default Xavier NX is mapped to be:
- Jetson: UART1
ttyTHS1
: for internal use, M.2 Key E - Jetson: UART0
ttyTHS0
: for general use, UART General - Jetson: UART2
ttyTHS4
: for debugging, Debug UART
However, I am not sure how to confirm this. At least from the trial and error process I just described, I was able to communicate throughttyTHS0
and notttyTHS1
on pin8 and pin10.
Then, I started looking deeper into my Xavier NX port configuration but I didn’t go far as I don’t fully comprehend (hence asking for help here)… Through the developer guide, I found another documentation about Configuring the 40-Pin Expansion Header, and in the Xavier NX terminal I launched the Jetson-IO $ sudo /opt/nvidia/jetson-io/jetson-io.py
. It appears that my header configuration is a bit different from the documentation (find attached photos).
Pin8 and pin10 on my Xavier NX is uarta
but documentation is uartb
. Could this be the root cause of my problem? Additionally, I am not an expert in EE, could someone please explain how is uarta
and uartb
related to the UART on SoC level, Jetson level and IO level. Please advise. Thank you very much.