gpt4 book ai didi

windows - 我是否需要为 CDC 设备编写自己的主机端 USB 驱动程序

转载 作者:可可西里 更新时间:2023-11-01 12:41:31 24 4
gpt4 key购买 nike

这可能不被认为与编程直接相关,但我不知道还有什么地方可以问。我曾尝试查看各种网站,但到目前为止,Google 还不是我的 friend 。

我无法确定是否需要为我正在开发的设备可能连接到的各种 windows/linux/mac 平台编写自己的设备驱动程序,或者功能是否由标准驱动程序提供。

我的设备是 USB CDC(通信设备),显示为 COM: 端口。它还包括一个电池充电器,一旦设备被枚举,该充电器将需要可从 USB 连接器汲取的完整 5 个单位负载 (500mA) 电源电流。我的问题是,如果主机中的 USB 驱动程序决定它无法提供全部电源电流,那么它应该无法枚举设备。

如果作为后备,我提供了第二个配置集,该配置集仅允许设备从接口(interface)连接器汲取 1 个单位负载,那么标准驱动程序将使用此配置枚举设备。

最佳答案

您需要为 Windows 编写一个 .inf 文件,将您的设备 VID 和 PID 与系统 usbser.sys 联系起来。我的看起来像这样(根据需要替换 YourCompany,输入您的 VID 和 PID(十六进制),并将 DriverVer 行更改为您想要的任何日期和版本):

; -----------------------------------------------------------------------------
; XP/2000 USB Comms Port Setup
; -----------------------------------------------------------------------------

[Version]
DriverVer=12/03/2008,1.0.0000.0000
Signature="$Windows NT$"
Class=Ports
ClassGUID={4d36e978-e325-11ce-bfc1-08002be10318}
Provider=%YourCompany%

[DestinationDirs]
DefaultDestDir=10,system32\drivers
DriverCopyFiles=12

[ControlFlags]
ExcludeFromSelect = *

[Manufacturer]
%YourCOmpany%=YourCompanySerialPort

[YourCompanySerialPort]
%YourCompanyUSBSerialPort%=YOURCOMPANYUSB,USB\VID_1234&PID_ABCD

;
; Win 2000/XP
;
[YOURCOMPANYUSB]
Include=mdmcpq.inf
CopyFiles=FakeModemCopyFileSection

[YOURCOMPANYUSB.HW]
AddReg=YOURCOMPANYUSBAddReg.HW

[YOURCOMPANYUSBAddReg.HW]
HKR,,DevLoader,0,*ntkern
HKR,,NTMPDriver,,"usbser.sys"

[YOURCOMPANYUSB.Services]
AddService=usbser, 0x00000002, FuncDrv_Service_Inst

[FuncDrv_Service_Inst]
DisplayName=%USBFilterString%
ServiceType= 1
StartType = 3
ErrorControl = 0
ServiceBinary = %12%\usbser.sys

[Strings]
YourCompany="YourCompany"
YourCompanySerialPort="Your Company USB Serial Port"
USBFilterString = "USB Serial Service"

请注意,这仅适用于 32 位操作系统。它也适用于 Vista,尽管文件头没有这么说!

请注意,某些版本的 usbser.sys 存在重大问题,包括蓝屏,例如在传输恰好为 64 字节倍数的数据包时。如果您使用的是 XP SP2 或更早版本,请安装修补程序 KB943198。 XP SP3 和 Vista 都可以。

对于 Mac,您只需正确报告您的设备类别,驱动程序扫描就会选择正确的驱动程序。 (Windows 忽略设备类,这就是您需要提供 .inf 文件的原因)。

编辑:抱歉,我应该更清楚。如果它不能绘制满负载,这将不会失败枚举 - 我不确定这是否可能。

关于windows - 我是否需要为 CDC 设备编写自己的主机端 USB 驱动程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1176939/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com