码峰编程笔记
侧边栏壁纸
博主头像
码峰博主等级

  • 累计撰写 185 篇文章
  • 累计创建 77 个标签
  • 累计收到 18 条评论
  • 栏目
    • 首页
    • 文章
    • 标签
    • 编程语言
    • Linux
      • 给我留言
      • 我的动态
      • 友情链接
标签搜索
  • FreeRTOS
  • Zynq
  • DMA
  • IIS
  • WinUSB
  • nuget
  • 单片机
  • PowerShell
  • gcc
  • pip
  • dpkg
  • Xenomai
  • chatGPT
  • gtest
  • 数字签名
  • Boost
  • 字符串
  • udev
  • 跨平台
  • msys2
  • 内核编程
  • 指针
  • Bash Shell
  • libusb
  • WebAPI
  • git
  • RESTful
  • 实时系统
  • MATLAB
  • 系统信息
  • 代码规范
  • 编程入门
  • Wireshark
  • 开源项目
  • CentOS
  • Makefile
  • python
  • Conda
  • .NET Core
  • 内存泄漏
  • INI文件
  • Ubuntu
  • Docusaurus
  • 进程间通信
  • 运维
  • 编码
  • SEO优化
  • 异步编程
  • github
  • Copilot
  • 银河麒麟
  • SSH
  • PCI/PCIe
  • USB
  • Qt
  • Windows API
  • JSON
  • 多线程
  • Windows BAT
  • 应用工具
  • 控件
  • mysql
  • docker
  • nginx
  • web
  • Node.js
  • 网络通信
  • fpga
  • shell script
  • vmware
  • 网站建设
  • visual studio
  • 驱动
  • linux
  • C#
  • C/C++
  • VSCode

目 录CONTENT

文章目录
通讯协议 USB 驱动相关 Windows驱动

USB设备通用测试工具和万能驱动

码峰
码峰
2023-03-30 / 0 评论 / 1 点赞 / 2,485 阅读 / 1,484 字 / 正在检测是否收录...
广告 广告

概述

对于Windows系统环境而言,要实现一个完整的USB设备功能,通常需要“嵌入式USB设备和对应的USB驱动”,以实现Windows应用与USB设备的交互。因此在涉及USB的嵌入式设备开发工作中,可能对应的USB驱动还没有完整实现,或者还未开发,或者驱动开发工作是另外的部门/公司去完成的。这种情况下,我们需要对嵌入式的USB设备进行自测验证,就需要一个USB通用的测试工具以及对应的万能通用驱动来实现。以下将介绍一种USB设备万能通用测试工具及通用驱动生成方法。

目的

为何需要这样一个通用的测试工具,总结主要有以下几种情况:

  • USB设备是A公司/部门开发的,USB驱动是B公司/部门开发的,两者合作并行开发。A公司/部门USB设备开发,需要USB驱动来配合验证调试通信协议,但此时B公司驱动端还未完成,A公司/部门的调试验证工作被阻塞。
  • USB设备是A公司/部门开发的,USB驱动是B公司/部门开发的。两者开发完成进行联调,发现有问题,相互甩锅,A公司/部门认为驱动端有问题,B公司/部门认为设备端有问题,两者僵持,问题定位困难。
  • 应客户要求,配合客户协议使用端点0的供应商请求类型传输一些简单指令。
    因此,对于USB设备开发方来说,需要一套通用的测试工具和一个通用的驱动来模拟验证通信协议,或者澄清相关问题。

测试工具

工具路径

MDK官方提供了一个USB测试工具WinUSB_Test,这工具是公开源码的,同时也直接提供了编译好的exe文件。安装了MDK软件及开发包(如STM32F4)后安装目录下应该就有了,所在目录参考下图:
image-1680223291631

工具界面

工具的界面主要分为三部分

  1. 需要填入正确的GUID,以选择USB设备。选择设备之后,才能跟对应的设备进行数据传输。
  2. 对USB设备的控制断点0进行控制传输。
  3. 一个USB设备可能存在多个接口,选择对应的接口对IN/OUT断点进行数据传输。
    image-1680223352891

关键问题

要想使用这个软件测试USB设备,一个关键问题在于获得USB设备的GUID,而这个GUID特指的是DeviceInterfaceGUIDs,这个ID通常在驱动的inf文件中进行指定,暂不知其它查询方法。

如STM32F4 官方Pack提供的,winusb_test配套的inf驱动文件,里面有标识DeviceInterfaceGUIDs:
image-1680223383050
image-1680223391488

万能驱动生成

如果USB设备驱动是客户的,或者在inf文件中没有指定该DeviceInterfaceGUIDs,那我们则可以自己生成一个通用的万能驱动,以便我们测试。

驱动生成工具zadig

zadig是一款开源的winusb通用驱动生成工具,官网介绍,在以下几种情况下它特别适用:

  • 如果你想使用一个libusb-based的应用访问一个USB设备
  • 如果你想升级一个通用的驱动
  • 如果你想使用WinUSB访问一个USB设备

实例演示

下面,我以常用的CP2102 USB转串口这个设备来介绍生成万能通用驱动以及使用WinUSB_Test软件进行测试的方法。

安装原始驱动

image-1680228014769
这个原始驱动不需要可以正常工作,它的目的是枚举出USB设备的所有接口及端点,以便让zadig软件可以根据其完整描述符为其生成驱动。

可以使用usbview软件查看该USB设备的接口及端点信息。
image-1680228063075

可以看到该USB转串口设备只有一个接口,接口下有两个BULK端点分别对应IN/OUT,我们目的要使用WinUSB_Test工具对这两个端点进行发送接收测试。

Zadig生成通用驱动

  • 打开软件,先List All Device
    image-1680228087484
  • 要想指定生成驱动文件的路径,则需要打开Advance Mode,然后会在Extract Files后面出现选择生成路径的按钮
    image-1680228102649
    image-1680228108131

获得设备的GUID

从生成的通用驱动inf中,我们可以找到DeviceInterfaceGUIDs
image-1680228125753
image-1680228131913
可以发现,它DeviceInterfaceGUIDs使用的就是DeviceGUID,文件中找到DeviceGUID的具体值既可
image-1680228144744

安装生成的通用驱动

卸载原有驱动,并选择删除此设备的驱动程序
image-1680228157990
image-1680228176870

安装新生成的驱动

image-1680228217903

使用WinUSB_Test软件进行测试

打开软件,填入前面获得GUID,既可出现对应的USB设备
image-1680228233437
然后开启对应的接口和端口,既可进行数据收发测试了
image-1680228245649

小结与不足

本文介绍了一种使用通用工具和驱动,对嵌入式USB设备进行端点通信测试的方法,它可以很方便的用于USB设备开发的自测验证。但WinUSB_Test软件的功能较为简洁,因此如果要进行一些较为复杂的压力测试,目前的软件可能还无法达到要求。好在该软件开放了源码,未来可以根据需求,基于此软件开发更多功能,我想这工作量不会太大。

1
广告 广告
驱动 USB WinUSB
  • 1

评论区

博主栏壁纸
31 分类数
185 文章数
18 评论数

文章目录

相关文章
  • Zynq中使用FreeRTOS和USB遇到系统Tick不递增的问题
  • STM32CubeMx生成的USB CDC代码修改为WINUSB设备
  • 使用STM32 USB转串口功能(自发自收回环测试、USB转TTL串口)
标签云
FreeRTOS Zynq DMA IIS WinUSB nuget 单片机 PowerShell gcc pip dpkg Xenomai chatGPT gtest 数字签名 Boost 字符串 udev 跨平台 msys2 内核编程 指针 Bash Shell libusb WebAPI git RESTful 实时系统 MATLAB 系统信息 代码规范 编程入门 Wireshark 开源项目 CentOS Makefile python Conda .NET Core 内存泄漏 INI文件 Ubuntu Docusaurus 进程间通信 运维 编码 SEO优化 异步编程 github Copilot

玻璃钢生产厂家玻璃钢喷漆雕塑河北玻璃钢雕塑模具制造普洱玻璃钢雕塑设计要多少钱广东定制玻璃钢雕塑销售电话怀集玻璃钢花盆花器商场美陈互动游戏周口玻璃钢智能雕塑扬州黑色玻璃钢花盆具有价值的玻璃钢雕塑沈阳公园玻璃钢雕塑生产厂家茂名玻璃钢主题雕塑实用的玻璃钢雕塑第一座玻璃钢雕塑作品人物玻璃钢雕塑批发珠海玻璃钢园林雕塑国内著名玻璃钢雕塑企业山东户外商场美陈赣州玻璃钢雕塑价位临沂玻璃钢雕塑加工厂家电话无锡商场春节美陈广东玻璃钢透光雕塑制作公园摆件玻璃钢雕塑批量定制永州玻璃钢景观雕塑玻璃钢经典日漫雕塑大型玻璃钢雕塑公司方案焦作公园玻璃钢景观雕塑生产玻璃钢雕塑哪里有名将军马玻璃钢雕塑玻璃钢音符雕塑的制作模压型玻璃钢花盆香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化