Porting a USB Function Controller Driver (Windows CE 5.0)
To port a USB function controller driver, select a driver for a USB function controller that is most similar to your function controller. The USB function controller drivers utilize the bus agnostic driver framework to retrieve information from the registry. For more information, see Bus Agnostic Drivers.
Porting the Net2280 USB Function Controller Driver PDD
The Net2280 USB function controller driver is in %_WINCEROOT%\Public\Common\OAK\Drivers\USBFN. Its registry keys are in %_WINCEROOT%\Public\Common\OAK\Files\Common.reg, under the HKEY_LOCAL_MACHINE\Drivers\BuiltIn\PCI\Template\NET2280 registry key.
This is the most fully featured USB function controller driver, and it is hardware platform independent. This driver takes advantage of the bus agnostic driver framework, and by default, runs on the PCI bus. The driver uses the bus agnostic driver framework to retrieve resource information from the registry. The driver retrieves this registry information through the PCI bus driver. Because this driver takes advantage of the bus agnostic driver framework, porting may be simpler because the driver does not contain any code that is specific to a hardware platform or system bus. Investigate porting this driver to your USB function controller. For information about the bus agnostic driver framework, see Bus Agnostic Drivers. Porting this driver to your USB function controller is similar to porting any other PCI device driver. For information about PCI bus drivers, see PCI Bus Driver and PCI Bus Driver Registry Settings.
Porting the PXA27X USB Function Controller Driver PDD
The PXA27X USB function controller driver is in %_WINCEROOT%\Public\Common\OAK\CSP\ARM\Intel\PXA27X\USBFN. The driver is implemented as a base class. To port this driver to a specific hardware platform, inherit data and functions from the base class and use the inherited data and functions to implement functionality that is specific to your hardware platform. The Intel Mainstone II development platform inherits from the PXA27X USB function controller driver and then implements any hardware platform specific functionality. The Intel Mainstone II USB function controller driver is in %_WINCEROOT%\Platform\Mainstoneii\Src\Drivers\USBFN. Any hardware platform can inherit from the PXA27X USB function controller driver base class.
This driver uses the bus agnostic driver framework to retrieve information from the registry. For an example of hardware platform specific registry keys, see %_WINCEROOT%\Platform\Mainstoneii\Files\Platform.reg. For more information, see Bus Agnostic Drivers.
Porting the PXA25X USB Function Controller Driver PDD
The PXA25X USB function controller driver is in %_WINCEROOT%\Public\Common\OAK\CSP\ARM\Intel\PXA25X\USB\Function\PDD. This driver's implementation is similar to the PXA27X USB function controller driver's implementation because there is a PDD that implements the functionality of the PXA27X USB function controller that is not specific to a hardware platform. This PDD calls out to a library for functionality that is specific to a hardware platform. A sample stub library is in %_WINCEROOT%\Public\Common\OAK\CSP\ARM\Intel\PXA25X\USB\Function\Lib. The header file for the library is %_WINCEROOT%\Public\Common\OAK\CSP\ARM\Intel\PXA25X\Inc\_pxa255_ufnlib.h.
Porting the S3C2410 USB Function Controller Driver PDD
The S3C2410 USB function controller driver PDD is in %_WINCEROOT%\Public\Common\OAK\Drivers\CSP\ARM\Samsung\S3C2410X\USB\Function. The registry settings are in %_WINCEROOT%\Platform\SMDK2410\Files\Platform.reg, under the HKEY_LOCAL_MACHINE\Drivers\BuiltIn\SC2410USBFN registry key. This USB function controller has very little hardware platform specific functionality. The registry stores the hardware platform specific information.
See Also
Optimizing a USB Function Driver Stack | USB Function Client Drivers | PCI Bus Driver | PCI Bus Driver Registry Settings
Send Feedback on this topic to the authors