Testing the PL IP with Prepared Software - 2023.2 English

Zynq-7000 SoC Embedded Design Tutorial (UG1165)

Document ID
UG1165
Release Date
2024-05-02
Version
2023.2 English
  1. Create a new standalone application for Arm Cortex-A9:

    • Select File → New Component → Application Project.

    • Give the Application Name: hello_pl and click Next.

    • Select the edt_zc702 and click Next.

    • Choose the default domain in the Platform and click Next.

    • Click Finish. The Vitis Unified IDE creates an empty application template called hello_pl.

  2. Import the provided source file to hello_pl project:

    • In Vitis Components view, go to hello_pl → Sources and right-click src and select Import → files.

    • Point to the ref_files/example6 directory of this repository.

    • Select hello_pl.c.

    • Click Finish.

  3. Build the hello_pl project:

    • Highlight the hello_pl Application Component and under FLOW select the hammer icon to build.

  4. Connect the USB cable for JTAG and serial.

  5. Open your preferred serial communication utility with baud rate set to 115200. In this example, we used MobaXterm.

    Note

    This is the baud rate that the UART is programmed to on Zynq devices.

  6. Change boot mode back to JTAG mode (as in Setting Up the Board).

    • Set SW16 to 00000.

  7. Run the project similar to the steps in Set Up Target Connections.

    • Highlight the hello_pl Application Component and under FLOW select Run, and click Open Settings to launch the Launch Configuration.

    • Check the Target Connection is correct for your host to target board connection, and click Run icon.

    Run Configuration

    Run Configuration

Because you updated the hardware specification with the XSA that includes a post-implementation bitstream, the launch configuration sets the bitstream file automatically. If your XSA file does not contain a bitstream, click the Browse button to point to your bitstream.

Note There are two ways to configure the ps7 susbsystem with the settings made in Vivado; using the FSBL or the ps7_init.tcl. When users export the XSA file, this will contain (amongst other files) the ps7_init.c/.h and the ps7_init.tcl. The ps7_init.tcl is a script that will have all the register writes to configure the ps7 subsystem over the debugger. The FSBL will use the ps7_init.c/.h files. Since the debugger will do the register writes sequentially, this could take a long time. The fsbl is deployed on the target, so this is quicker. Therefore, I would recommend using the FSBL.

Note When using the FSBL to configure the ps7 susbsystem, the debugger will set a breakpoint on the exit function of the FSBL. The debugger will wait until this breakpoint is hit, or a timeout occurs. If the timeout occurs, then this could mean that the breakpoint was not hit. This could be due to the symbol info not resolved by the debugger. If users are connecting remotely then a symbol server in the Target Connections can be used to try resolve this issue.

  1. In the system, the AXI GPIO pin is connected to push button SW5 on the board, and the PS section GPIO pin is connected to push button SW7 on the board through an EMIO interface.

  2. Follow the instructions printed on the serial terminal to run the application. See the following figure for the serial output logs.

    UART prints

    UART prints