2023-10-23 19:21:37 +02:00
|
|
|
|
====================================
|
2023-10-21 12:24:43 +02:00
|
|
|
|
``usbserial`` USB Serial Hello World
|
|
|
|
|
====================================
|
|
|
|
|
|
|
|
|
|
Target configuration
|
|
|
|
|
--------------------
|
|
|
|
|
|
|
|
|
|
This is another implementation of "Hello, World" but this one uses a USB serial
|
|
|
|
|
driver. Configuration options can be used to simply the test. These options
|
|
|
|
|
include:
|
|
|
|
|
|
|
|
|
|
- ``CONFIG_EXAMPLES_USBSERIAL_INONLY`` – Only verify IN (device-to-host) data
|
|
|
|
|
transfers. Default: both.
|
|
|
|
|
- ``CONFIG_EXAMPLES_USBSERIAL_OUTONLY`` – Only verify OUT (host-to-device) data
|
|
|
|
|
transfers. Default: both.
|
|
|
|
|
- ``CONFIG_EXAMPLES_USBSERIAL_ONLYSMALL`` – Send only small, single packet
|
|
|
|
|
messages. Default: Send large and small.
|
|
|
|
|
- ``CONFIG_EXAMPLES_USBSERIAL_ONLYBIG`` – Send only large, multi-packet messages.
|
|
|
|
|
Default: Send large and small.
|
|
|
|
|
|
|
|
|
|
If ``CONFIG_USBDEV_TRACE`` is enabled (or ``CONFIG_DEBUG_FEATURES`` and
|
|
|
|
|
``CONFIG_DEBUG_USB``), then the example code will also manage the USB trace
|
|
|
|
|
output. The amount of trace output can be controlled using:
|
|
|
|
|
|
|
|
|
|
- ``CONFIG_EXAMPLES_USBSERIAL_TRACEINIT`` – Show initialization events.
|
|
|
|
|
- ``CONFIG_EXAMPLES_USBSERIAL_TRACECLASS`` – Show class driver events.
|
|
|
|
|
- ``CONFIG_EXAMPLES_USBSERIAL_TRACETRANSFERS`` – Show data transfer events.
|
|
|
|
|
- ``CONFIG_EXAMPLES_USBSERIAL_TRACECONTROLLER`` – Show controller events.
|
|
|
|
|
- ``CONFIG_EXAMPLES_USBSERIAL_TRACEINTERRUPTS`` – Show interrupt-related events.
|
|
|
|
|
|
|
|
|
|
Error results are always shown in the trace output.
|
|
|
|
|
|
|
|
|
|
Host-side test program
|
|
|
|
|
----------------------
|
|
|
|
|
|
|
|
|
|
In additional to the target device-side example, there is also a host-side
|
|
|
|
|
application in this directory. This host side application must be executed on a
|
|
|
|
|
Linux host in order to perform the ``USBSERIAL`` test. The host application can be
|
|
|
|
|
compiled under Linux (or Cygwin?) as follows::
|
|
|
|
|
|
|
|
|
|
cd examples/usbserial
|
|
|
|
|
make -f Makefile.host TOPDIR=<nuttx-directory>
|
|
|
|
|
|
|
|
|
|
Running the test
|
|
|
|
|
----------------
|
|
|
|
|
|
|
|
|
|
This will generate a small program called ``host``. Usage:
|
|
|
|
|
|
|
|
|
|
1. Build the ``examples/usbserial`` target program and start the target.
|
|
|
|
|
|
|
|
|
|
2. Wait a bit, then do enter::
|
|
|
|
|
|
|
|
|
|
dmesg
|
|
|
|
|
|
|
|
|
|
At the end of the dmesg output, you should see the serial device was
|
|
|
|
|
successfully idenfied and assigned to a tty device, probably ``/dev/ttyUSB0``
|
|
|
|
|
or ``/dev/ttyACM0`` (depending on the configured USB serial driver).
|
|
|
|
|
|
|
|
|
|
3. Then start the host application::
|
|
|
|
|
|
|
|
|
|
./host [<tty-dev>]
|
|
|
|
|
|
|
|
|
|
Where:
|
|
|
|
|
|
|
|
|
|
- ``<tty-dev>`` is the USB TTY device to use. The default is ``/dev/ttyUSB0``
|
|
|
|
|
(for the PL2303 emulation) or ``/dev/ttyACM0`` (for the CDC/ACM serial
|
|
|
|
|
device).
|
|
|
|
|
|
|
|
|
|
The host and target will exchange are variety of very small and very large
|
|
|
|
|
serial messages.
|