Share via


USB OTG Driver Development Concepts (Windows Embedded CE 6.0)

1/6/2010

Prior to the introduction of universal serial bus (USB) On-The-Go (OTG), implementing the functionality of USB host and USB function required two separate ports. The USB function controller driver handled communication between the USB function client driver and the USB function hardware. The USB host controller driver handled communication between the USB host client driver and the USB host hardware.

With a model that requires two separate ports, the USB host controller driver and the USB function controller driver cannot communicate. Only one mode can be active at a time. There is no support for dynamic switching between modes.

The following diagram illustrates the model.

Ee486488.d6f23cc6-d062-4e6a-97e3-961beb30d986(en-US,WinEmbedded.60).gif

USB OTG introduces a different model for USB communication and functionality. USB OTG allows a device to dynamically switch, on the same port, between operating as a USB host and a USB function. You can implement this technology by creating a platform dependent driver (PDD) to complement the USB OTG model device driver (MDD). For more information on the provided MDD, see USB OTG Driver Samples. The provided MDD supports some standard bus IOCTLs, USB OTG specific bus IOCTLs, and loads the appropriate client drivers based on registry settings. For more information about supported IOCTLS and registry settings, see USB OTG Driver Registry Settings and USB OTG Driver Reference. When combined, the MDD and PDD form the USB OTG controller driver, which exposes a bus interface that is completely implemented in the MDD. This driver handles communication between the controller drivers and the USB OTG hardware. The USB OTG controller driver uses the Host Negotiation Protocol (HNP) to handle dynamic role switching. The following diagram illustrates this model.

Ee486488.dc2d9b9f-f569-4988-aef4-c606ab977b1c(en-US,WinEmbedded.60).gif

See Also

Concepts

USB Function Controller Drivers
USB Host Client Drivers

Other Resources

USB OTG Drivers
USB Function Client Drivers
USB Host Controller Drivers