UART Setup

The ZCU104 hardware has a quad USB-UART transceiver. One UART is dedicated to the onboard JTAG interface. The other three are routed to MPSoC pins to be used as serial ports by CPUs.

The USB-UART interface requires the FTDI VCOM driver, included by default on most platforms. Refer to the FT4232HL USB UART Interface section of Xilinx UG1267 for more details on the UART hardware.

UART Interfaces

The Mango 802.11 PetaLinux reference project for ZCU104 uses PSU UART0 (FT4232 channel B) for the Linux console and PSU UART1 (FT4232 channel C) for the RPU stdout. Both UARTs are configured for 115200bps.

Identifying UART Devices

Many operating systems already include the required FTDI Virtual COM Port (VCP) driver. If your PC does not recognize the USB-UART interfaces after connecting the USB cable you may need to install the driver directly. FTDI provides drivers for most operating systems.

On Windows the USB-UART interfaces will enumerate as three “USB Serial Port” devices assigned arbitrary COMx port labels. These COMx port labels are used to open a terminal on the serial port.

On Linux the USB-UART interfaces enumerate as four /dev/ttyUSBx devices. Typically the lowest numbered ttyUSBx device is the JTAG interface and should not be used with a terminal. The next two ttyUSBx devices are typically channels A/B of the FT4232 transceiver (PSU UART0/UART1).

On Linux the USB-UART interfaces enumerate as three devices in /dev/serial/by-id with device names:

where NNNNN will be a serial number unique to each ZCU104 board.

The Mango reference design assigns UARTs as:

  • if01-port0: APU boot console and Linux console
  • if01-port1: RPU output, shows stdout for both R5 CPUs
  • if01-port2: Not used

Terminal Configuration

Any serial terminal can be used with the USB-UART interfaces. Putty is a good option on Windows, picocom is good on Linux.

The 802.11 FPGA Design configures the PS UART peripherals for:

Param Value
Speed 115200 bps
Data bits 8
Stop bits 1
Parity None
Flow Control XON/XOFF

We also recommend enabling “Implicit CR in every LF” in the terminal settings. The Mango team uses a split-pane via tmux to show both UART streams via the picocom options below: