Jetson/AGX Xavier Tegra Combined UART

The Tegra Combined UART (TCU) is a system that multiplexes debug information from the processors in the CCPLEX cluster with information from other processors. The multiplexing is accomplished in the Sensor Processing Engine (SPE), but involves all of the processors that supply information. And after receiving this message, host can de-multiplex it by a python tool called jetson-demux.

TCU Data Flow
Below is how TCU works on Jetson AGX Xavier. There are six debug stream producers: CCPLEX, BPMP, TZ, SPE, RCE and SCE. They send debug streams to SPE by mailbox. SPE combines received messages and send to UART C. UART C connects with FT4232 USB-to-UART chip, so host will receive combined message by /dev/ttyUSBN. There are two options to use /dev/ttyUSBN. Option 1, using jetson-demux tool to open /dev/ttyUSBN, it will generate six pseudo terminal devices(/dev/pty/...) and user can use these pseudo terminal devices as UARTs to each processor. OPtion 2, using minicom or other tools to open /dev/ttyUSBN directly with 115200 baud rate, in this case, minicom gets mixed debug message, but since only CCPLEX prints at most of time (except booting), it feels CCPLEX owns this uart.

Board Connection
To use TCU on Jetson AGX Xavier, an USB mini port cable is needed. The connection is like below.

jetson-demux
jetson-demux is a python tool runs on a host system and de-multiplexes the debug information multiplexed by the TCU. After connecting the board with USB cable, running below command can get all pseudo terminal devices. And the output is like below. Note: device path /dev/ttyUSB3 and the output may diff.  bash $ jetson-demux -d /dev/ttyUSB3 RCE:   /dev/pts/25 SPE:   /dev/pts/18 BPMP:  /dev/pts/21 SCE:   /dev/pts/22 CCPLEX: /dev/pts/19 TZ:    /dev/pts/24

From to the above output, /dev/pts/19 can be used as UART for CCPLEX. Open it by minicom using below command: minicom -D /dev/pts/19