通过前面的学习,大家应该对USB固件程序结构有了比较深的认识,现在再来详细说说固件里决定设备识别成厂商自定义USB设备的地方有哪些,或者说厂商自定义USB设备的固件特性有哪些. 之前不止一次说过学习USB固件编程的要点是要学会各种描述符及主机命令以及设备的枚举过程,理解设备枚举过程是主线,在这一过程中需要掌握主机各种命令及USB相关描述符(本站<USB命令请求及描述符详解(速查手册)>和<用USB Monitor监视USB枚举(配置.识别)过程(USB枚举过程分析)>对此进行了总结…
USB协会将常用具有相同/相似功能的设备归为一类,并制定了相关的设备类规范,这样就能保障只要依照同样的规范标准,即使不同的厂商开发的USB设备也可以使用同样的驱动程序,而且操作系统中无须为每种设备提供独立的设备驱动程序,也就是说设备端的开发中不需要花费开发软件驱动的精力.这些标准的设备类包括:音频设备.人机接口设备(HID).存储设备.打印机设备等. 但是这些标准的设备规范并不能完全涵盖所有的电子设备,市场上也有很多非标准类型的USB设备,这时就要求厂商提供单独的客户端驱动程序,这种设备就厂商自…
源:基于libUSB的USB设备固件更新程序(下载数据) 本文紧接上一篇日志:基于libUSB-Win32的USB设备固件更新程序(前言),相关背景以及起因等,此处不再赘述,如感兴趣请移步. libUSB-Win32给出的example里面,有一个bulk.c文件,分析其关键代码,结合libusb官方文档,摘出其关键代码如下: int main(void) { usb_dev_handle *dev = NULL; /* the device handle */ usb_init(); /* i…
我们做USB通信时,通信成功后,往往要检测USB设备的拔插状态,这里就USB拔插进行一下说明. 参考:https://www.imooc.com/article/17438 先说明一下,我这里只是用C#写上位机的自定义USB设备的检测,是调用window的DLL来实现USB设备通信的,具体通信过程说明,我会在后期补上. 要实现USB插拔检测,就不得不说到WM_DEVICECHANGE 消息了,当设备被插入/拔出的时候,WINDOWS会向每个窗体发送WM_DEVICECHANGE 消息,而WM_D…
在之前的博客中已经讲过,驱动程序最核心的两个文件,一个是xxx.sys文件,一个是xxx.inf文件,主机是寻找xxx.inf文件. 在下面的文件中有相关关于USB驱动的说明.对于用户来说,xxx.sys文件 可以不用修改,用户可以对xxx.inf文件的内容进行相应的修改即可. 下图是<cy_usb>应用手册的名字,可以找到下图手册,查看关于USB驱动相关的内容 下图是当前驱动支持的系统. 下图是支持的VID&PID对,且注意,如果用户修改cyUSB3.inf文件,并加入自己的VID&…
因为以前没用过USB,对USB也不了解,于是上网查了很多资料,不过网上的资料都是零零散散,不清不楚的,于是我自己总结了一下,下面几个链接是网上这么多零散资料里,我觉得比较有参考意义的. USB设备连接思路参考:https://www.cnblogs.com/xyzyx/articles/2959610.html#undefined 代码参考:http://www.cnblogs.com/xidongs/archive/2011/11/28/2266100.html# 收发数据参考:https:/…
/* ---------------------------------------------------------- 文件名称:WMIUsbQuery.cs 作者:秦建辉 MSN:splashcn@msn.com QQ:36748897 博客:http://blog.csdn.net/jhqin 开发环境: Visual Studio V2010 .NET Framework 4 Client Profile 版本历史: V1.3 2011年09月08日 代码优化 V1.2 2011年09…
假设android系统中的API或者apk无法读写usb设备.可能是没有加入读写usb的权限,须要依照例如以下方法进行设置: 1. 在android.hardware.usb.host.xml文件里加入例如以下内容 <permissions> <featurename="android.hardware.usb.host"/> </permissions> 2. 在tablet_core_hardware.xml文件里加入例如以下内容 <fea…
测试环境:Win7(其他Windows系统环境,也可参考) 总结办法来源,https://bbs.csdn.net/topics/392297251?page=1文章中热心网友的评论指引 1. 控制面板--管理工具--性能监视器--性能--打开资源监视器 2. 资源监视器窗口,点击切换到CPU页 在“关联的句柄”搜索框内输入盘符+冒号(如h:),就可以查看有哪些进程在占用usb设备.把这些进程在任务管理器里结束掉,然后可正常安全地弹出usb设备 如果占用移动设备的进程是explorer(资源管理…
在终端用户看来,USB设备为主机提供了多种多样的附加功能,如文件传输,声音播放等,但对USB主机来说,它与所有USB设备的接口都是一致的.一个USB设备由3个功能模块组成:USB总线接口.USB逻辑设备和功能单元.这里的USB总线接口指的是USB设备中的串行接口引擎(SIE):USB逻辑设备被USB系统软件看作是一个端点的集合:功能单元被客户软件看作是一个接口的集合.SIE.端点和接口都是USB设备的组成单元. 为了更好地描述USB设备的特征,USB提出了设备架构的概念.从这个角度来看,可以认为…