一個解決方案,我已經發現,我認爲可以工作(需進一步測試在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