eric2013 发表于 2020-9-2 11:36:39

RL-USB应用到CMSIS-DAP V2中的WinUSB模式实现Win8,Win10免驱的关键说明,Win7联网也可以免驱



配置USB,直接使用MDK的RTE开发环境配置即可,简单易用。

HID模式是配的CMSIS-DAP V1版,免驱
WinUSB模式是配的CMSIS-DAP V2版,需要一个inf驱动文件,Win10可以免驱。

USB配置注意事项
usb_config_0.c文件:
USB Device 0 - High-speed:使能高速还是全速
Update Device Settings - Vendor ID厂商ID
Update Device Settings - Product ID 专供Debug Unit调试单元
Update Device Settings - Device Release Number更新版本
Update String Settings- Manufacturer String反映Debug Unit调试单元的厂家,必须与Vendor ID匹配
Update String Settings- Product String指示调试单元,请注意,“ CMSIS-DAP”必须是该字符串的一部分,以允许调试器进行标识(或USB复合设备的接口字符串的一部分)。

可选配置,每个调试单元可以提供唯一的序列号字符串 Serial Number String。如果未提供“ String Settings - Serial Number String”,则由于无法识别多个调试单元,因此只能将一个调试单元同时连接到主机。

强调一下:
1、固件配置时,USB设备设置高速/全速USB必须反映在DAP_config.h文件中。
2、String Settings - Product String 必须包含字符串“CMSIS-DAP”。调试器使用它来标识连接到主机的CMSIS-DAP兼容调试单元。

https://img.anfulai.cn/dz/attachment/forum/202009/01/121732b1lxeg4vo70vee61.png

http://www.armbbs.cn/static/image/hrline/4.gif

CMSIS-DAP V2使用WinUSB,速度更快。通过附加的USB端点可以支持SWO跟踪流。WinUSB配置要求 interface setting – Class Code: 0xFF (Vendor specific), Subclass: 0x00, Protocol code: 0x00 。根据配置,它使用以下USB端点,这些USB端点应按以下顺序在接口描述符中进行配置:

端点1:批量输出–用于从主机PC接收的命令。
端点2:批量输入-用于将响应发送到主机PC。
端点3:批量输入(可选)–用于流式传输SWO跟踪(如果启用了SWO_STREAM)。
要通过调试器识别CMSIS-DAP V2配置,必须使用以下WinUSB GUID:

{CDB3B5AD-293B-4663-AA36-1AAE46463776}

下图显示了USB自定义类的配置

https://img.anfulai.cn/dz/attachment/forum/202009/02/112534m0mzn7m08nnnathl.png

USB的inf驱动文件:

Windows 8和Windows 10不需要WinUSB驱动程序,前提是USB协议堆栈支持Microsoft描述符。CMSIS-DAP v2设备应配置为WCID(Windows兼容ID)设备,该设备向Windows系统提供额外的信息以促进自动驱动程序的安装。

对于Windows 7,如果PC连接到Internet,并且PC的“设备安装设置”设置为自动下载和安装设备的驱动程序,则CMSIS-DAP v2设备将自动安装。自动安装的设备将在“设备管理器”中的“通用串行总线”设备下显示为WinUsb设备。

如果没有可用的Internet连接,或者您希望设备在“设备管理器”下显示为不同的名称,则应提供一个.inf文件并对其进行签名以生成.cat文件。可从Microsoft下的主题为“设备驱动程序包的签名步骤”获得更多信息。

Windows 7主机提供以下CMSIS_DAP_v2.inf文件。


Signature = "$Windows NT$"
Class   = USBDevice
ClassGUID = {88BAE032-5A81-49f0-BC3D-A4FF138216D6}
Provider= %ManufacturerName%
DriverVer = 04/13/2016, 1.0.0.0
CatalogFile.nt      = CMSIS_DAP_v2_x86.cat
CatalogFile.ntx86   = CMSIS_DAP_v2_x86.cat
CatalogFile.ntamd64 = CMSIS_DAP_v2_amd64.cat

; ========== Manufacturer/Models sections ===========


%ManufacturerName% = Devices, NTx86, NTamd64


%DeviceName% = USB_Install, USB\VID_c251&PID_f000


%DeviceName% = USB_Install, USB\VID_c251&PID_f000

; ========== Class definition ===========


AddReg = ClassInstall_AddReg


HKR,,,,%ClassName%
HKR,,NoInstallClass,,1
HKR,,IconPath,0x10000,"%%SystemRoot%%\System32\setupapi.dll,-20"
HKR,,LowerLogoVersion,,5.2

; =================== Installation ===================


Include = winusb.inf
Needs   = WINUSB.NT


Include = winusb.inf
Needs   = WINUSB.NT.Services


AddReg= Dev_AddReg


HKR,,DeviceInterfaceGUIDs,0x10000,"{CDB3B5AD-293B-4663-AA36-1AAE46463776}"

; =================== Strings ===================


ClassName      = "Universal Serial Bus devices"
ManufacturerName = "KEIL - Tools By ARM"
DeviceName       = "CMSIS-DAP v2"

missfox 发表于 2020-9-2 12:10:17

终于可以嫖免驱了:lol

he2002512 发表于 2020-9-2 12:32:02

点1:批量输出–用于从主机PC接收的命令。
端点2:批量输入-用于将响应发送到主机PC。
端点3:批量输入(可选)–用于流式传输SWO跟踪(如果启用了SWO_STREAM)。


以前看到的端点的输入输出应该是交替出现,端点号的bit0代表输入输出,2和3可以同为输入吗?还是我看的资料有问题?

eric2013 发表于 2020-9-2 14:38:42

he2002512 发表于 2020-9-2 12:32
点1:批量输出–用于从主机PC接收的命令。
端点2:批量输入-用于将响应发送到主机PC。
端点3:批量输入( ...

你说的貌似不是这个,

这个是USB的硬件端点。

pjzmj2012 发表于 2024-1-31 09:26:06

装不上, 指定的文件夹没有包含设备的兼容软件驱动程序.
页: [1]
查看完整版本: RL-USB应用到CMSIS-DAP V2中的WinUSB模式实现Win8,Win10免驱的关键说明,Win7联网也可以免驱