Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

The source code for the driver is included with the Vitis Unified Software Platform installation and being available in the Xilinx Github repository. 

Driver Name

Path in Vitis

Path in Github

usbpsu

<Vitis Install Directory>/data/embedded/XilinxProcessorIPLib/drivers/usbpsu

https://github.com/Xilinx/embeddedsw/tree/master/XilinxProcessorIPLib/drivers/usbpsu

Note: To view the sources for a particular release, use the rel-version tag in github.  For example, for the 2020.1 release, the proper version of the code is: https://github.com/Xilinx/embeddedsw/tree/master/XilinxProcessorIPLib/drivers/usbpsu

The driver source code is organized into different folders.  The table below shows the usbpsu driver source organization. 

Directory

Description

doc

Provides the API and data structure details

data

Driver .tcl and .mdd file

examples

Example applications that show how to use the driver features

src

Driver source files

Driver Implementation

For a full list of features supported by this IP,

...

Examples Path:
https://github.com/Xilinx/embeddedsw/tree/master/XilinxProcessorIPLib/drivers/usbpsu/examples

Test Name

Example Source

Description

USB Mass-Storage Gadget - Poll Mode 

xusb_poll_example.c

This example does a basic read and writes test from the USB drive in polled mode.

USB Mass-Storage Gadget - Interrupt Mode

xusb_intr_example.c

This example does a basic read and writes test from the USB drive in interrupt mode.

USB Dfu: Only ZynqMp

xusb_dfu_example.c

This example does firmware download in dfu mode when USB boot mode set. This is a reference example.

USB Composite Gadget

xusb_composite_example.c

This example shows mass storage and hid (keyboard) gadget features in USB composite mode.

Example

Depandent source files (https://github.com/Xilinx/embeddedsw/tree/master/XilinxProcessorIPLib/drivers/usbpsu/examples)

xusb_intr_example.c

xusb_class_storage.c,xusb_class_storage.h,xusb_ch9_storage.c,xusb_ch9_storage.h,xusb_ch9.c,xusb_ch9.h,xusb_wrapper.c,xusb_wrapper.h

xusb_poll_example.c

xusb_class_storage.c,xusb_class_storage.h,xusb_ch9_storage.c,xusb_ch9_storage.h,xusb_ch9.c,xusb_ch9.h,xusb_wrapper.c,xusb_wrapper.h

xusb_dfu_example.c

xusb_class_dfu.c,xusb_class_dfu.h,xusb_ch9_dfu.c,xusb_ch9_dfu.h,xusb_ch9.c,xusb_ch9.h,xusb_wrapper.c,xusb_wrapper.h

xusb_composite_example.c

xusb_ch9_composite.c,xusb_ch9_composite.h,xusb_class_composite.c,xusb_class_composite.h,xusb_ch9.c,xusb_ch9.h,xusb_wrapper.c,xusb_wrapper.h

Example Application Usage

...

Expected Output

Device Log:

USB Composite Device Start...
Keyboard Unknown class request 0x9
Keyboard Unknown class request 0x9

  • Connect the board to a standard host(Windows/Linux) machine USB port.

Host Log (Linux):

[13539.237627] usb 1-3.3: new high-speed USB device number 14 using xhci_hcd
[13539.254059] usb 1-3.3: config 1 contains an unexpected descriptor of type 0x2, skipping
[13539.254085] usb 1-3.3: config 1 interface 2 altsetting 0 has 1 endpoint descriptor, different from the interface descriptor's value: 0
[13539.254571] usb 1-3.3: New USB device found, idVendor=03fd, idProduct=0200
[13539.254585] usb 1-3.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[13539.254594] usb 1-3.3: Product: USB 2.0 COMPOSITE DEVICE
[13539.254603] usb 1-3.3: Manufacturer: XILINX INC
[13539.254612] usb 1-3.3: SerialNumber: 2A49876D9CC1AA4
[13539.256799] usb-storage 1-3.3:1.4: USB Mass Storage device detected
[13539.257130] scsi6 : usb-storage 1-3.3:1.4
[13539.259039] input: XILINX INC USB 2.0 COMPOSITE DEVICE as /devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3.3/1-3.3:1.5/input/input12
[13539.259621] hid-generic 0003:03FD:0200.0002: input,hidraw0: USB HID v10.01 Keyboard [XILINX INC USB 2.0 COMPOSITE DEVICE] on usb-0000:00:14.0-3.3/input5
[13539.317317] usbcore: registered new interface driver snd-usb-audio
[13540.254219] scsi 6:0:0:0: Direct-Access Xilinx PS USB VirtDisk 1.00 PQ: 0 ANSI: 0 CCS
[13540.255509] sd 6:0:0:0: Attached scsi generic sg1 type 0
[13540.255974] sd 6:0:0:0: [sdc] 204800 512-byte logical blocks: (104 MB/100 MiB)
[13540.256155] sd 6:0:0:0: [sdc] Write Protect is off
[13540.256164] sd 6:0:0:0: [sdc] Mode Sense: 03 00 00 00
[13540.256321] sd 6:0:0:0: [sdc] No Caching mode page found
[13540.256336] sd 6:0:0:0: [sdc] Assuming drive cache: write through
[13540.257404] sd 6:0:0:0: [sdc] No Caching mode page found
[13540.257416] sd 6:0:0:0: [sdc] Assuming drive cache: write through
[13540.258264] sdc: unknown partition table
[13540.259277] sd 6:0:0:0: [sdc] No Caching mode page found
[13540.259290] sd 6:0:0:0: [sdc] Assuming drive cache: write through
[13540.259301] sd 6:0:0:0: [sdc] Attached SCSI removable disk

root@xhdbfarmrkx4:/home/piyushm# mkfs.vfat -I /dev/sdc
mkfs.fat 3.0.26 (2014-03-07)

root@xhdbfarmrkx4:/home/piyushm# mount /dev/sdc /mnt/
root@xhdbfarmrkx4:/home/piyushm# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sdc 100M 0 100M 0% /mnt
root@xhdbfarmrkx4:/home/piyushm#

USB DFU Testing

The below gives the testing procedure of zynqmp USB DFU example

...

USB 2.0:

...

USB 3.0:

...

Change Log

2023.2

https://github.com/Xilinx/embeddedsw/blob/xlnx_rel_v2023.2/doc/ChangeLog#L321

2023.1

https://github.com/Xilinx/embeddedsw/blob/xilinx_v2023.1/doc/ChangeLog#L153

...