93 lines
3.6 KiB
ReStructuredText
93 lines
3.6 KiB
ReStructuredText
.. zephyr:code-sample:: testusb-app
|
|
:name: USB testing application
|
|
:relevant-api: _usb_device_core_api
|
|
|
|
Test USB device drivers using a loopback function.
|
|
|
|
This sample implements a loopback function that can be used
|
|
to test USB device drivers and the device stack connected to a Linux host
|
|
and has a similar interface to "Gadget Zero" of the Linux kernel.
|
|
The userspace tool ``testusb`` is needed to start the tests.
|
|
|
|
Building and flashing
|
|
*********************
|
|
|
|
Follow the general procedure for building and flashing Zephyr device.
|
|
|
|
Testing
|
|
*******
|
|
|
|
To run USB tests:
|
|
|
|
#. Load the ``usbtest`` Linux kernel module on the Linux Host.
|
|
|
|
.. code-block:: console
|
|
|
|
$ sudo modprobe usbtest vendor=0x2fe3 product=0x0009
|
|
|
|
The ``usbtest`` module should claim the device:
|
|
|
|
.. code-block:: console
|
|
|
|
[21746.128743] usb 9-1: new full-speed USB device number 16 using uhci_hcd
|
|
[21746.303051] usb 9-1: New USB device found, idVendor=2fe3, idProduct=0009, bcdDevice= 2.03
|
|
[21746.303055] usb 9-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
|
|
[21746.303058] usb 9-1: Product: Zephyr testusb sample
|
|
[21746.303060] usb 9-1: Manufacturer: ZEPHYR
|
|
[21746.303063] usb 9-1: SerialNumber: 86FE679A598AC47A
|
|
[21746.306149] usbtest 9-1:1.0: matched module params, vend=0x2fe3 prod=0x0009
|
|
[21746.306153] usbtest 9-1:1.0: Generic USB device
|
|
[21746.306156] usbtest 9-1:1.0: full-speed {control} tests
|
|
|
|
#. Use the ``testusb`` tool in ``linux/tools/usb`` inside Linux kernel source directory
|
|
to start the tests.
|
|
|
|
.. code-block:: console
|
|
|
|
$ sudo ./testusb -D /dev/bus/usb/009/016
|
|
/dev/bus/usb/009/016 test 0, 0.000007 secs
|
|
/dev/bus/usb/009/016 test 9, 4.994475 secs
|
|
/dev/bus/usb/009/016 test 10, 11.990054 secs
|
|
|
|
#. To run all the tests the Zephyr's VID / PID should be inserted to USB
|
|
driver id table. The method for loading the ``usbtest`` driver for our
|
|
device is described here: https://lwn.net/Articles/160944/.
|
|
|
|
Since we use the "Gadget Zero" interface we specify reference device
|
|
``0525:a4a0``.
|
|
|
|
.. code-block:: console
|
|
|
|
$ sudo sh -c "echo 0x2fe3 0x0009 0 0x0525 0xa4a0 > /sys/bus/usb/drivers/usbtest/new_id"
|
|
|
|
#. Use the ``testusb`` tool in ``linux/tools/usb`` inside Linux kernel source directory
|
|
to start the tests.
|
|
|
|
.. code-block:: console
|
|
|
|
$ sudo ./testusb -v 512 -D /dev/bus/usb/009/016
|
|
/dev/bus/usb/009/017 test 0, 0.000008 secs
|
|
/dev/bus/usb/009/017 test 1, 2.000001 secs
|
|
/dev/bus/usb/009/017 test 2, 2.003058 secs
|
|
/dev/bus/usb/009/017 test 3, 1.054082 secs
|
|
/dev/bus/usb/009/017 test 4, 1.001010 secs
|
|
/dev/bus/usb/009/017 test 5, 57.962142 secs
|
|
/dev/bus/usb/009/017 test 6, 35.000096 secs
|
|
/dev/bus/usb/009/017 test 7, 30.000063 secs
|
|
/dev/bus/usb/009/017 test 8, 18.000159 secs
|
|
/dev/bus/usb/009/017 test 9, 4.984975 secs
|
|
/dev/bus/usb/009/017 test 10, 11.991022 secs
|
|
/dev/bus/usb/009/017 test 11, 17.030996 secs
|
|
/dev/bus/usb/009/017 test 12, 17.103034 secs
|
|
/dev/bus/usb/009/017 test 13, 18.022084 secs
|
|
/dev/bus/usb/009/017 test 14, 2.458976 secs
|
|
/dev/bus/usb/009/017 test 17, 2.001089 secs
|
|
/dev/bus/usb/009/017 test 18, 1.998975 secs
|
|
/dev/bus/usb/009/017 test 19, 2.010055 secs
|
|
/dev/bus/usb/009/017 test 20, 1.999911 secs
|
|
/dev/bus/usb/009/017 test 21, 2.440972 secs
|
|
/dev/bus/usb/009/017 test 24, 55.112078 secs
|
|
/dev/bus/usb/009/017 test 27, 56.911052 secs
|
|
/dev/bus/usb/009/017 test 28, 34.163089 secs
|
|
/dev/bus/usb/009/017 test 29, 3.983999 secs
|