PS GTR 1000BaseX ZCU102
In this demo we shall show how to demo the PS GTR using 1000BaseX on the zcu102, and how to debug.
loopback
Since the ZCU102 cannot fully support the 1000Base X, we will place the GT into loopback mode so we can create a test environment that is as close as possible to 1000BaseX
Create the HW:
Here, I used Vivado 2018.1. The PCW can be seen below:
Clocking:
Generate Output Products, Create Wrapper, Generate Bitstream, and Export to SDK (to create the HDF)
Create Linux Image:
- petalinux-create –t project –template zynqMP –n gt_loopback
- cd gt loopback
- petalinux-config –get-hw-description=<path to HDF>
- Update GEM nodes for Fixed link (see appendix A)
- Update Linux Kernel recipe to add patch to disable AN (See appendix B)
- petalinux-build
- cd images/linux
- petalinux-package --boot --fpga system.bit --u-boot
Or, use the BSP I created here
- petalinux-create -t project -s <path to bsp>.bsp
Testing on HW:
Place the Boot.bin, and image.ub onto an SD card and boot to u-boot:
Place the PS-GTR into loopback, and boot:
Bring the eth1 up (I didn’t add this to the alias in the DT. So, I needed to add this manually):
As you can see I need to read the pcs_status twice to see the link_status go high.
pcs_select (bit 11 in the network_config) is set too.
Resetting the GTR:
In the UG1085 V 1.8 page 800 there is a *note* about GTR reset is performed by a controller reset
The GEM reset can be seen here:
Register 0xFF5E0230 (CRL_APB)
Note: These registers are seen here
https://www.xilinx.com/html_docs/registers/ug1087/ug1087-zynq-ultrascale-registers.html
So this should be a good reference for debugging:
/include/ "system-conf.dtsi" / { chosen { bootargs = "earlycon clk_ignore_unused cpuidle.off=1"; stdout-path = "serial0:115200n8"; }; }; &gem2 { is-internal-pcspma; phy-mode = "moca"; fixed-link { speed = <1000>; full-duplex; }; }; &gem3 { is-internal-pcspma; phy-mode = "moca"; fixed-link { speed = <1000>; full-duplex; }; };
Appendix A: Patching Linux Kernel:
Create the folder structure as shown below:
Copy the linux kernel patch to linux-xlnx
Update the linux-xlnx_%.bbappend as shown below:
SRC_URI_append = " file://0001_disable_an_linux.patch" FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
The patch can be seen here 0001_disable_an_linux.patch
version
This patch has only been tested on the xilinx-v2018.1 branch of the linux-xlnx, and is not supported by Xilinx WTS
© Copyright 2019 - 2022 Xilinx Inc. Privacy Policy