一个解决方案,我已经发现,我认为可以工作(需进一步测试在Windows上):
请在为Mac的工作方式的设备枚举:
- 制作它是“通信”类(class = 2,sub-class = 0,protocol = 0),不是复合设备。
- 删除IAD。
在这个配置中,设备应该在Mac和最近的Linux上“正常工作”。 (对于Linux,使用Ubuntu测试,我发现这与Ubuntu Linux内核2.6.35-28或更新版本一起工作,使用较早的内核,只有第一个串行端口起作用)。
然后,对于Windows,修改INF文件,以明确加载复合设备驱动程序usbccgp.sys
。我与Windows INF文件是新手,但这里有从我能想出到目前为止相关的片段:
[CCGPDriverInstall.NT]
Include=usb.inf
Needs=Composite.Dev.NT
AddReg=CCGPDriverInstall.AddReg
[CCGPDriverInstall.NT.Services]
Include=usb.inf
Needs=Composite.Dev.NT.Services
[CCGPDriverInstall.AddReg]
HKR,,EnumeratorClass, 0x00000001,02,00,00
...
[DeviceList]
%DESCRIPTION_DEVICE%=CCGPDriverInstall, USB\VID_FFFF&PID_0001
%DESCRIPTION_AT%=DriverInstall, USB\VID_FFFF&PID_0001&MI_00
%DESCRIPTION_MENU%=DriverInstall, USB\VID_FFFF&PID_0001&MI_02
[DeviceList.NTamd64]
%DESCRIPTION_DEVICE%=CCGPDriverInstall, USB\VID_FFFF&PID_0001
%DESCRIPTION_AT%=DriverInstall, USB\VID_FFFF&PID_0001&MI_00
%DESCRIPTION_MENU%=DriverInstall, USB\VID_FFFF&PID_0001&MI_02
[DeviceList.NTx86...1]
%DESCRIPTION_DEVICE%=CCGPDriverInstall, USB\VID_FFFF&PID_0001
%DESCRIPTION_AT%=DriverInstall, USB\VID_FFFF&PID_0001&MI_00
%DESCRIPTION_MENU%=DriverInstall, USB\VID_FFFF&PID_0001&MI_02
随着INF文件明确的加载usbccgp.sys
驱动程序,两个USB串行端口在Windows XP SP3 32位上为我工作。
我已经做了有限的测试,到目前为止,所以我很想听听如何工作的,或不为别人着想。
感谢您的选择“框外”。这对嵌入式设备来说是一个更大的实现负担,但是在PC上肯定会顺利运行。 – 2011-04-06 07:56:40