嵌入式Lee

文章数:196 被阅读:578672

账号入驻

Windows下基于MSVC搭建libusb开发环境

最新更新时间:2023-03-23
    阅读数:

准备

官网

https://libusb.info/

源码

git 下载或者官网下载

https://github.com/libusb/libusb.git

API 参考

https://libusb.sourceforge.io/api-1.0/libusb_api.html

WIKI

https://github.com/libusb/libusb/wiki

WINDOWS 下编译好的库

官网下可以直接下载 Windows 下编译好的开发包。

Libusb简介

跨平台建议使用 libusb, 如果仅在 win 下可以使用 libusbk, 实际上 win libusb 也是使用 libusbk 去调用内核驱动 , 综合下表 , 使用 libusb 开发是最合适选择。

Libusb 采用 LGPL 协议 , 对于商业软件中使用其作为第三方库使用 , 不修改其源码是合适的 , 这种情况不需要开源自己的部分。而对于基于此做二次开发修改源码的话 , 则修改后的代码需要继续符合 LGPL v2.1 协议。


平台

链接


状态

libusb

跨平台

https://libusb.info/

libusb没有涉及Windows内核驱动 , 是一个用户空间库 , 支持 以下 内核驱动程序 : 基本都是通过 libusbK.dll 调用内核驱动。

l WinUSB.sys

libusbK.dll : libusb-1.0.dll --> WinUSB.dll --> WinUSB.sys

libusbK.dll 时: libusb-1.0.dll --> libusbK.dll --> WinUSB.dll --> WinUSB.sys

l libusbK.sys 内核驱动

libusb-1.0.dll --> libusbK.dll --> libusbK.sys

l libusb0.sys 内核驱动 ( 不够完善 )

libusb-1.0.dll --> libusbK.dll --> libusb0.sys

l usbdk 驱动 ( 不够完善 )

l HID 驱动 ( 不够完善 ), 使用 HIDAPI 更好

活跃

原始网站 libusb.org 不再使用 ,

libusbx 原先是 libusb 的克隆现在已经合并到 libusb,

libusbx.org 现在和 libusb 没有关系。

libusb-win32

Windows

libusb0.sys (WDM)

libusb0.dll (API)

https://sourceforge.net/p/libusb-win32/wiki/Home/

https://github.com/mcuee/libusb-win32

libusb0.dll (API) 支持 使用 libusb0.sys libusbK.sys.

API libusb-0.1 API 的超集

最后更新 2022

目前只做 bug 修复不再更新 , 跨平台建议使用 libusb, win 下建议使用 libusbk

libusbK

Windows

libusbK.sys (KMDF)

libusbK.dll (API)

https://libusbk.sourceforge.net/UsbK3/index.html

https://github.com/mcuee/libusbk/

libusbK.dll(API) 支持使用 libusbK.sys , libusb0.sys , WinUSB

libusb windows 上即使用该库调用内核驱动。

支持同步传输 , 完全兼容 WinUSB API

活跃

openusb

Solaris

https://sourceforge.net/projects/openusb/

来源于 libusb-1.0

最后更新 2020

usbdk

跨平台

https://github.com/daynix/UsbDk

来源于 libusb-1.0.21

支持同步传输

支持不如 WinUSB/libusbK.sys/libusb0.sys

最后更新 2020

Windows下使用

参考

https://github.com/libusb/libusb/wiki/Windows#How_to_use_libusb_on_Windows

我们这里基于 libusbk

安装 libusbk

https://sourceforge.net/projects/libusbk/

下载到的版本是 libusbK-3.1.0.0-setup.exe

驱动切换

先下载 Zadig 用于切换驱动

https://zadig.akeo.ie/

编译 libusb

https://github.com/libusb/libusb.git 下载最新的代码

进入代码目录双击打开 libusb\msvc \libusb.sln  ( 注我这里试用 MSVC Community 2022)

点击左侧解决方案,菜单栏生成 -> 生成解决方案

生成的动态库 dll 位于 libusb\build\v143\x64\Debug\dll libusb-1.0.dl libusb-1.0.lib

生成的静态库 lib 位于 libusb\build\v143\x64\Debug\lib libusb-1.0.lib

libusb\build\v143\x64\Debug 下的 getopt.lib

libusb\build\v143\x64\Debug 下还生成了很多测试程序 , 比如 .\testlibusb.exe

PS C:\Users\qinyunti\OneDrive\wuqi\usb\libusb\build\v143\x64\Debug> .\testlibusb.exe
Dev (bus 2, device 5): 0BDA - 4853 speed: 12M
Dev (bus 2, device 0): 8086 - 51ED speed: 5G
Dev (bus 2, device 12): 15BA - 002A speed: 480M
Dev (bus 2, device 6): 046D - C542 speed: 12M
Manufacturer: Logitech
Product: Wireless Receiver
Dev (bus 2, device 4): 174F - 1811 speed: 480M
Manufacturer:
Product: Integrated Camera
Dev (bus 2, device 2): 05E3 - 0612 speed: 5G
Dev (bus 2, device 14): 0403 - 6001 speed: 12M
Dev (bus 2, device 16): 16C0 - 05DC speed: 5G
Manufacturer: tusb.org
Product: USB Packet Viewer
Dev (bus 2, device 8): 0B95 - 1790 speed: 5G
Dev (bus 2, device 3): 05E3 - 0610 speed: 480M
Dev (bus 1, device 0): 8086 - 461E speed: 5G
Dev (bus 2, device 15): 0403 - 6001 speed: 12M
Dev (bus 2, device 11): 1A40 - 0101 speed: 480M
Dev (bus 2, device 13): 0403 - 6010 speed: 480M
PS C:\Users\qinyunti\OneDrive\wuqi\usb\libusb\build\v143\x64\Debug>

直接下载 libusb

可以从官网 https://libusb.info/

菜单栏

Downloads->Latest windows Binaries 下载

我这里下载的是最新版 libusb-1.0.26-binaries.7z

解压

动态链接库 libusb-1.0.26-binaries\VS2015-x64\dll 下的 libusb-1.0.dll libusb-1.0.lib

静态链接库 libusb-1.0.26-binaries\VS2015-x64\lib 下的 getopt.lib libusb-1.0.lib

在自己的工程中使用

工程配置

这里使用我们从源码构建的动态链接库的形式 , 静态链接库一样。

在自己的工程目录中创建 libusb 目录

创建 inc lib 子目录

复制 libusb\libusb 下所有头文件到自己工程 libusb 下的 inc 目录下

复制 libusb\build\v143\x64\Debug\dll 下的 libusb-1.0.dl libusb-1.0.lib, libusb\build\v143\x64\Debug 下的 getopt.lib

自己工程 libusb 下的 lib 目录下

右键点击工程名 -> 属性

设置头文件包含路径

$(MSBuildProjectDirectory)\Src\libusb\inc;

设置库文件包含路径

$(MSBuildProjectDirectory)\Src\libusb\lib;

设置要包含的库 getopt.lib;libusb-1.0.lib;

测试

复制 libusb\examples 下的 testlibusb.c 到自己的工程目录 , 添加到工程。

生成解决方案

libusb-1.0.dll 复制到 exe 文件所在目录 , 然后运行

.\USB.exe -v 

可以查看设备的相关信息。

Dev (bus 2, device 13): 0403 - 6010 speed: 480M
Configuration:
wTotalLength: 55
bNumInterfaces: 2
bConfigurationValue: 1
iConfiguration: 0
bmAttributes: 80h
MaxPower: 50
Interface:
bInterfaceNumber: 0
bAlternateSetting: 0
bNumEndpoints: 2
bInterfaceClass: 255
bInterfaceSubClass: 255
bInterfaceProtocol: 255
iInterface: 2
Endpoint:
bEndpointAddress: 81h
bmAttributes: 02h
wMaxPacketSize: 512
bInterval: 0
bRefresh: 0
bSynchAddress: 0
Endpoint:
bEndpointAddress: 02h
bmAttributes: 02h
wMaxPacketSize: 512
bInterval: 0
bRefresh: 0
bSynchAddress: 0
Interface:
bInterfaceNumber: 1
bAlternateSetting: 0
bNumEndpoints: 2
bInterfaceClass: 255
bInterfaceSubClass: 255
bInterfaceProtocol: 255
iInterface: 2
Endpoint:
bEndpointAddress: 83h
bmAttributes: 02h
wMaxPacketSize: 512
bInterval: 0
bRefresh: 0
bSynchAddress: 0
Endpoint:
bEndpointAddress: 04h
bmAttributes: 02h
wMaxPacketSize: 512
bInterval: 0
bRefresh: 0
bSynchAddress: 0


最新有关嵌入式Lee的文章

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: TI培训

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved