composite
USB Composite Device Commands
This logic adds a NSH command to control a USB composite device. The only
supported devices in the composite are CDC/ACM serial and a USB mass storage
device. Which devices are enclosed in a composite device is configured with an
array of configuration-structs, handed over to the function
composite_initialize()
.
Required overall configuration:
Enable the USB Support of your Hardware / Processor e.g. SAMV7_USBDEVHS=y
CONFIG_USBDEV=y
– USB device support.CONFIG_USBDEV_COMPOSITE=y
– USB composite device support.CONFIG_COMPOSITE_IAD=y
– Interface associate descriptor needed.CONFIG_CDCACM=y
– USB CDC/ACM serial device support.CONFIG_CDCACM_COMPOSITE=y
– USB CDC/ACM serial composite device support.
The interface-, string-descriptor- and endpoint-numbers are configured via the configuration-structs as noted above. The CDC/ACM serial device needs three endpoints; one interrupt-driven and two bulk endpoints.
CONFIG_USBMSC=y
– USB mass storage device support.CONFIG_USBMSC_COMPOSITE=y
– USB mass storage composite device support.
Like the configuration for the CDC/ACM, the descriptor- and endpoint-numbers are configured via the configuration struct.
Depending on the configuration struct you need to configure different vendor-
and product-IDs. Each VID
/PID
is unique to a device and thus to a dedicated
configuration.
Linux tries to detect the device types and installs default drivers if the
VID
/PID
pair is unknown.
Windows insists on a known and installed configuration. With an Atmel hardware and Atmel-Studio or the Atmel-USB-drivers installed, you can test your configuration with Atmel Example Vendor- and Product-IDs.
If you have a USBMSC and a CDC/ACM configured in your combo, then you can try to use
VID = 0x03EB
(ATMEL)PID = 0x2424
(ASF Example with MSC and CDC)
If for example you try to test a configuration with up to seven CDCs, then
VID = 0x03EB
(ATMEL)PID = 0x2426
(ASF Example with up to seven CDCs)
This add-on can be built as two NSH “built-in” commands:
CONFIG_NSH_BUILTIN_APPS
– if this option is selected:conn
will connect the USB composite device;disconn
will disconnect the USB composite device.
Configuration options unique to this add-on:
CONFIG_SYSTEM_COMPOSITE_DEBUGMM
– Enables some debug tests to check for memory usage and memory leaks.
If CONFIG_USBDEV_TRACE
is enabled (or CONFIG_DEBUG_FEATURES
and
CONFIG_DEBUG_USB
), then the add-on code will also manage the USB trace output.
The amount of trace output can be controlled using:
CONFIG_SYSTEM_COMPOSITE_TRACEINIT
– Show initialization events.CONFIG_SYSTEM_COMPOSITE_TRACECLASS
– Show class driver events.CONFIG_SYSTEM_COMPOSITE_TRACETRANSFERS
– Show data transfer events.CONFIG_SYSTEM_COMPOSITE_TRACECONTROLLER
– Show controller events.CONFIG_SYSTEM_COMPOSITE_TRACEINTERRUPTS
– Show interrupt-related events.