打印
[STM32]

发现一篇非常好的讲解libusb、winusb、libusbk关系的**

[复制链接]
11380|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
XIVN1987|  楼主 | 2019-2-27 14:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一直搞不懂libusb、winusb、libusbK、libusb-win32、Zadig、inf-wizard.exe有什么联系和区别,,今天发现一篇文章讲解的非常清晰、易懂,,

原文:http://www.joenchen.com/archives/1360


转载:

刚开始接触USB驱动编程,一般是利用现成的库来做,但是网上一搜索,发现一大堆各种各样的lib把人搞的很头疼,这边总结一下。

== libusb ==
说明:libusb是一个跨平台的usb驱动框架。libusb原始项目在2010年后基本没有更新,曾有libusbx项目2012年从libusb分出来,2014年1月26日又合并回libusb了。当时的libusbx-1.0.18和libusb-1.0.18其实完全一样,相当于libusbx替换了libusb的代码!后续的版本其实都是基于libusbx的代码了!

包含两个主要分支1.x和0.1.x。
1.x和0.1.x并不兼容,可以同时存在,如果要在1.x基础上兼容0.1.x需要libusb-compat转换层。所以0.1.x和libusb-compat不能同时装上!

内核:目前1.x分支的驱动只有用户态,linux下支持usbfs,windows下支持WinUSB.sys。
也可以支持libusbK和libusb-win32(通过libusbK支持)。

工具:通过Zadig支持生成基于libusb0、libusbK、WinUSB的inf文件。
https://github.com/pbatard/libwdi/wiki/Zadig


== libusb-win32 ==
说明:libusb-win32是从libusb-0.1.x分支衍生的,
主要是针对Windows做优化,所以接口风格和libusb-0.1.x一致。

内核:WDM框架的libusb0.sys驱动。

工具:自带inf-wizard.exe生成基于libusb0.sys的inf文件。

注意:目前建议是新的项目尽可能使用libusb,而不是这个libusb-win32了。我在这个上面花了很多时间,一直报错,坑爹了,要注意libusb-win32已经废弃,目前使用的是libusb+Zadig的组合。


== libusbK ==
说明:libusbK主要是想做一个WinUSB接口风格的开源usb库,
支持基于KMDF的libusbK.sys和系统自带的WinUSB.sys。参考libusb-win32做的开发,部分工具是从libusb-win32整合而来的。因为源代码里也包含了libusb0.dll的加载功能和转换层,所以也可以支持WDM框架的libusb0.sys(libusb-win32)。

内核:基于KMDF框架的libusbK.sys、WDM的libusb0.sys、系统的WinUSB.sys

工具:自带libusbK-inf-wizard.exe(基于libusb-win32的工具改的)
生成基于libusb0、libusbK、WinUSB的inf文件。


简单说,就是不要去管libusb-win32和libusbK项目,目前不管是windows还是Linux都是使用libusb项目,主页是libusb.info。

在Windows上使用libusb时是调用微软的WinUSB接口,在Linux上是usbfs。用Zadig工具统一安装驱动,不用理什么inf-wizard.exe。

评论
zhengfish 2020-12-21 21:57 回复TA
学习学习 。。。。。。 
cooldog123pp 2019-2-28 09:08 回复TA
貌似不错的样子,我先收藏一下。 

相关帖子

沙发
linqing171| | 2019-2-27 22:37 | 只看该作者
07年以前做的项目都是用的wdm自己做驱动。有时候懒了一个gaveio也能用。后来用户层的setupdi用烦了,效率太低。
07年以后都是libusb-win32,后来有了inf-wizard。但是win10 x64的签名天天绕,去年统一切换成winusb,不再用libusb系列了。

市面上libusb用的还是挺多的,无论saleae logic,中天ck802仿真器,还是国产viewtool。

文中有一处可能不对,lib usb 1.2.6.0 还是 libusb0.sys;倒数libusb dot net 版本的支持libusb和winusb,同一个固件,驱动换了后,基本无缝切换。除了Device属性里面调用了坑爹的open,在winUSB是独占打开的会报错改一下,其它的都不用动(因为我列举设备的时候使用了device)。

使用特权

评论回复
板凳
一路向北lm| | 2020-12-22 08:31 | 只看该作者
感谢分享

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

49

主题

334

帖子

18

粉丝