USB Debug Guide for Zynq UltraScale+ and Versal Devices
This page demonstrate the overview of how to debug PS USB controller on Versal & ZynqMP platforms.
Table of Contents
- 1 Basic checks before debugging further
- 2 Guidelines on debugging USB runtime failures
- 2.1 USB Hardware Design
- 2.2 USB driver logs
- 2.3 Dynamic debug
- 2.4 Ftrace
- 2.5 Register dump
- 3 Guidelines to Debug USB PHY issues (ULPI PHY validation)
- 4 USB Register Dumps for all the USB modes
- 5 USB Gadget scripts
- 5.1 MASS STORAGE
- 5.2 RNDIS Gadget
- 5.3 HID gadget
- 5.4 UVC GADGET
- 5.5 COMPOSITE GADGET
- 5.6 AUDIO GADGET
- 6 USB compliance mode test procedure
- 6.1 Host mode
- 6.2 Device mode
Basic checks before debugging further
Observing the failure:
Host mode - Run the below command to check whether pendrive detected or not.
lsusb
Device mode - Need to check this below node is created or not
/sys/class/udc/*/uevent
Diagnosis:
Kernel boot log -- Check the kernel boot logs is there any suspicious logs (dumps) are there or not.
Kernel Config -- Check the corresponding kernel configs for USB mode : Versal Linux USB Device Driver Examples
Device Tree -- Check the corresponding Device tree changes for USB mode : Versal Linux USB Device Driver Examples
Check the USB jumper settings -- Check the corresponding USB mode jumper settings : Versal Linux USB Device Driver Examples
Guidelines on debugging USB runtime failures
Check hardware design
USB driver logs
Dynamic debug
ftrace (function tracer)
USB register dump
USB protocol analyzer trace
USB Hardware Design
Review schematics
Review PCB layout - Refer to Xilinx pcb guidelines recommendations