CN109901960B - 一种usb从设备驱动加载完整性检测方法 - Google Patents
一种usb从设备驱动加载完整性检测方法 Download PDFInfo
- Publication number
- CN109901960B CN109901960B CN201910149479.8A CN201910149479A CN109901960B CN 109901960 B CN109901960 B CN 109901960B CN 201910149479 A CN201910149479 A CN 201910149479A CN 109901960 B CN109901960 B CN 109901960B
- Authority
- CN
- China
- Prior art keywords
- usb
- control module
- slave device
- usb slave
- equipment
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Information Transfer Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供USB从设备驱动加载完整性检测方法,包括如下步骤a:与USB从设备耦合的控制模块实时检测USB从设备电压或电流,所述控制模块与USB主设备连接;步骤b:控制模块从USB主设备中获取USB从设备在驱动加载过程中的状态数据;步骤c:控制模块响应于USB主设备对USB从设备的二次枚举,根据步骤a中检测到的电流或电压值与预设的参考值和步骤b中的状态数据作出提醒:若步骤a中检测到的电流或电压值与预设的参考值偏差超出阈值,和/或步骤b中的状态数据不符合对应状态的预期,所述控制模块即作出提醒。本发明通过在USB主设备端增加检测指令和USB从设备端增加控制模块,实现驱动故障快速检测,结果准确效率高。
Description
技术领域
本发明属于数据通信领域,涉及一种USB从设备驱动加载完整性检测方法。
背景技术
通常,图书馆、数据中心、多媒体教室、考试中心等需要配备大量计算机以满足用户查阅资料、练习、测试、考试等不同的需求。例如,大型考试中心为满足考试的要求,需要部署经过加密认证的USB-Key、键盘、考试专用耳机等外部I/0设备,这些设备一般通过USB线缆与计算机连接。因计算机运行环境与USB设备的兼容性或用户的误操作而导致外部USB设备的驱动加载不成功、加载异常的情况时有发生。
而驱动加载完整性的故障通常无法通过直接观察来确定。维护人员需要逐个在每一台计算机上的操作系统界面中检查USB设备驱动所加载的信息和/或检查USB从设备的工作状态来确定,这样逐个排查费时费力,效率不高。
特别地,对于一些在特定时间和对计算机可靠性要求高的场合,例如英语听说中考、高考,四六级考试等,外部USB设备出现故障则会影响整个考试的进程。因此快速检测USB设备的驱动是否成功加载或完整加载,对USB从设备的维护和管理具有重要意义。
USB协议中规定了USB线缆连接的一端为主设备(或称USB主设备/主机,USBHost),例如计算机、平板电脑、可穿戴设备或带有USB主控输入输出功能的计算设备;另一端为从设备,如U盘、打印机、键盘、鼠标等,主机负责管理总线上的传输,而从设备响应来自主设备的通信,主设备控制从设备实现数据的读写。端点(endpoint)是设备的缓冲区,用来存储接收到的数据和待发的数据。每个端点拥有特定的编号、传输方向以及在一次事务中端点可发送或接收的最大数据字节量。每个USB传输由一个或多个事务(transaction)组成,这些事务可将数据载入端点或从端点取出。
USB支持4种传输类型:控制传输、批量传输、中断传输以及同步(即等时)传输。在控制传输里,主机会向设备发送定义好的请求。一旦设备连接,主机将使用控制传输来向此设备请求一个被称为“描述字”(又称描述符descriptor)的数据结构。描述字提供了有关设备功能的信息,并帮助主机决定将哪个驱动程序分配给设备。类规范或厂商也可定义请求。控制传输最多有3个阶段,分别为设置阶段、数据阶段(可选)和状态阶段。设置阶段含有请求。存在数据阶段时,此阶段含有从主机或设备发来的数据(视请求的内容而定)。获悉新设备时,主机将向设备所属的集线器发送请求,使集线器建立一个处于主机和设备间的通信路径。然后主机会发布通向此设备、含有标准USB请求的控制传输,以尝试枚举此设备。所有的USB设备必须支持控制传输、标准请求和端点0。对于成功的枚举,设备必须通过返回被请求信息的形式响应请求,并执行其他所请求的动作。
发明内容
为解决USB从设备驱动加载完整性检测的问题,本发明一方面提供了一种USB从设备驱动加载完整性检测方法,包括如下步骤a:与USB从设备耦合的控制模块实时检测USB从设备电压或电流,所述控制模块与USB主设备连接;步骤b:控制模块从USB主设备中获取USB从设备在驱动加载过程中的状态数据;步骤c:控制模块响应于USB主设备对USB从设备的二次枚举,按如下方式作出提醒:若步骤a中检测到的电流或电压值与预设的参考值偏差超出阈值,和/或步骤b中的状态数据不符合对应状态的预期,所述控制模块即作出提醒。
在上述的检测方法中,所述步骤b中的状态数据包括如下任一或其组合:枚举阶段的描述符中状态的字段对应的返回值、类描述符中的自定义字段的返回值、传输阶段的状态码。
为进一步保证控制模块与USB主设备之间通信的安全性,在上述的驱动故障快速检测方法的一些实施例中,所述步骤c还包括:当驱动加载成功后,且USB主设备与USB从设备才开始通信。
在上述USB从设备驱动加载完整性检测方法中,所述控制模块与所述USB主设备通过USB线缆连接。
在上述USB从设备驱动加载完整性检测方法中,所述控制模块耦合在USB从设备的外部或内部。
在上述USB从设备驱动加载完整性检测方法中,所述控制模块为MCU、ASIC、DSP或FPGA。
本发明另一方面提供了一种耳机,包括控制器和存储器,所述控制模块被配置为调用存储器中的指令以执行上述USB从设备驱动加载完整性检测方法。
本发明的另一方面提供一种耳机,包括控制模块和USB从设备,所述控制模块与USB从设备耦合且与USB主设备连接,所述控制模块实时检测USB从设备电压或电流;
所述控制模块从USB主设备中获取USB从设备在驱动加载过程中的状态数据;
所述控制模块响应于USB主设备对USB从设备的二次枚举,按照如下方式作出提醒:
若检测到的电流或电压值与预设的参考值偏差超出阈值,和/或状态数据不符合对应状态的预期,所述控制模块即作出提醒。
本发明的有益效果:
1.高可靠性,控制模块通过实时检测USB从设备的电压或电流值,结合从主设备中获取到的USB从设备的状态数据,比人工检测和判断更快、更准确。
2.控制模块可选择性耦合在USB从设备内部或外部,方便灵活地适应于各种不同场合。
3.方便性。将USB主设备或USB从设备通过有线或无线方式组成局域网,再通过局域网管理软件可批量对USB主设备的进行开关机、休眠、恢复等操作,从而实现大数量USB从设备的故障检测,免去人工在每一台计算机上去检测驱动加载完整性,效率大大提高。
附图说明
图1为本发明的实施例中驱动加载完整性基本检测流程图;
图2为本发明的实施例中驱动加载完整性检测详细流程图;
图3为本发明的实施例中USB从设备与USB主设备连接框图之一;
图4为本发明的实施例中USB从设备与USB主设备连接框图之二。
附图标记
1.USB从设备;2.USB主设备;3.控制模块。
具体实施方式
为了更好的理解本发明所提出的技术方案,下面结合附图1至附图4和具体的实施例对本发明作进一步阐述。
如图1所示,一种USB从设备1驱动加载完整性检测方法,包括如下步骤a:与USB从设备1耦合的控制模块3实时检测USB从设备1电压或电流,所述控制模块3与USB主设备2连接;步骤b:控制模块3从USB主设备2中获取USB从设备1在驱动加载过程中的状态数据;步骤c:控制模块3响应于USB主设备2对USB从设备1的二次枚举,按照如下步骤作出提醒:若步骤a中检测到的电流或电压值与预设的参考值偏差超出阈值,和/或步骤b中的状态数据不符合对应状态的预期,所述控制模块3即作出提醒。
具体流程参考图2,控制模块3实时检测(或采集)USB从设备1的电流或电压值,并保持与USB主设备2的连接。当USB主设备2对USB从设备1进行首次枚举时,USB从设备1响应枚举并应答,USB主设备2收到应答并收集状态数据1,同时,控制模块3向USB主设备2发出获取USB从设备1的状态数据请求,USB主设备2收到请求,将状态数据1发送给控制模块3。
依次类推,当USB主设备2对USB从设备1进行第N(N≥2)次枚举时,USB主设备2收到应答并收集状态数据N。同时,控制模块3收集状态数据N。控制模块3将收集到状态数据N与预存不同状态下的参考值进行对比,若状态数据N不符合预期即作出提醒;或电压或电流值与预设的参考值进行对比,若偏差超过阈值即作出提醒。
如图3和图4所示,为了便于不同场合的检测,在一些实施例中,所述控制模块3耦合在USB从设备1的外部或内部。将控制模块3集成在内部,传输时延低、实时性更强,便于将USB从设备1的故障状态数据更快、更准确的传输给USB主设备2。
在一些实施例中,步骤b中的状态数据包括如下任一或其任意组合:例如控制输入终端数量枚举失败、输出终端数量枚举失败、采样率设置错误、数据端点设置失败、输入终端连接失败、输出终端连接失败等驱动加载故障所定义的描述符的标志编号(取值)。
在一些实施例中,USB协议规范定义了表明是否接受所收到的数据,支持或不支持控制请求、流控制状态以及端点终止状态的联络代码。除等时传输外,联络代码都能表明事务的成功与否。另外,控制传输中,会由状态阶段的联络代码报告整个传输的成功或失败。联络代码会在事务的联络或数据信息包中传输。规范定义的联络代码有ACK、NAK、STALL、NYET和ERR。若USB主机没有收到预期联络代码,则表明传输出现了故障,控制模块3即作出故障提醒。
在一些实施例中,二次枚举是指USB主设备2与USB从设备1在第一次完整加载驱动后的第N次(N≥2)重新上电,USB主设备2对从设备1重新进行枚举,具体包括:当USB主设备2处于挂起状态,睡眠状态、待机状态、锁定或其他挂起状态,然后将USB主设备2唤醒,此时操作系统的内核会重新枚举从设备的信息,控制模块3从主设备获取USB从设备1中的驱动加载过程中的状态数据。例如,当检测到USB从设备1实时电压或电流低于工作值,控制模块3即作出提醒,直至提醒持续时间超过阈值或故障消除时停止提醒。除此之外,控制模块3也可以通过与操作系统内核上层的上位机软件通讯来获取驱动加载过程中的状态数据。常见的USB上位机软件包括USB-Hound、USB-Monitor等。特别地,将USB主设备或USB从设备通过有线或无线方式连接组成局域网,再通过局域网管理软件可批量对USB主设备或USB从设备进行开关机、休眠、恢复等操作。
在一些实施例中,所述USB主设备2为计算机,所述USB从设备1为声卡。在检测过程中,首先计算机操作系统根据设备描述符枚举设备,并寻找合适的驱动程序并加载驱动。当没有找到合适的驱动,则在设定时间内不断尝试重新连接并寻找合适驱动;超时则驱动加载失败。这里以声卡为例,定义枚举过程中枚举失败的自定义标志。
枚举失败 | 标志标号 |
音频控制输入终端数量枚举失败 | 0x01 |
音频控制输出终端数量枚举失败 | 0x02 |
音频流采样频率设置错误 | 0x03 |
音频流数据端点设置失败 | 0x04 |
音频控制输入终端连接单元失败 | 0x05 |
音频控制输出终端连接单元失败 | 0x06 |
其他 | 0xFF |
当声卡驱动加载成功以后,计算机的操作系统发送认证指令到声卡,并与声卡耦合的微控制器进行RSA算法校验。除RSA算法外,还可选用其他像3DES、RC2、IDEA、MD5、PKCS、SSF33、SSF28、SCB2等加密算法。只有当校验成功,微控制器(MCU,Micro Controller Unit)作为控制模块3与计算机握手成功后,USB从设备1与计算机开始通讯。微控制器在上电以后默认开启提醒模块,直到与计算机建立通讯以后才能开始正常使用,此时提醒模块才会关闭。控制模块3可以通过硬件层,将声卡的麦克风输入引脚、左右声道播放音频引脚进行模数转化,根据声卡不同工作状态下标定的模数转化值以及通过向计算机获取设备描述符来判断该声卡的工作状态。
对于声卡使用中出现的静音、录音音量过小、录音音量过大导致截幅、自动增益控制是否开启等情况导致的故障,则由微控制器向计算机操作系统获取Audio ControlFeature Unit Descriptor描述符查看Mute、Volume、Automatic Gain位是否在设定的取值范围内,若不在设定的取值范围内就开启提醒模块,否则,关闭提醒模块。
当计算机处于睡眠状态、待机状态、锁屏状态时,与声卡通信失败。微控制器会检测声卡是否处于正常的工作状态。若声卡发现异常,则在10秒内不断地尝试与计算机发送重新加载驱动的请求并实时检测。在间隔一段时间后,声卡若仍然无法正常工作,则闪烁指示灯,告知维护人员。间隔时间可以根据情况调整。在一些实施例中,控制模块3采用指示灯闪烁的方式提醒,通信失败则指示灯闪烁;反之,则指示灯停止闪烁。
对于人为手动地禁用声卡、卸载声卡、只禁用录音功能或播放功能,导致声卡不能正常工作的,通过微控制器对声卡的输入引脚、左右声道播放音频引脚进行模数转化,通过标定的模数转化值进行判断和定位录音异常、左声道播放异常还是右声道播放异常。另外,通过微控制器向计算机的操作系统获取Audio Control Input Terminal Descriptor描述符查看wTerminalType、wChannelConfig位和Audio Streaming Format Type Descriptor描述符的bNrChannels、bsubframeSize、bBitResolution、bSamFreqType的配置来判断麦克风是否正常工作。
在一些实施例中,所述USB从设备1为耳机,其中耳机包括上述的控制模块3和USB声卡。所述控制模块3被配置为检测USB声卡的电压或电流及USB声卡在加载过程中的状态数据。其中,控制模块3集成在USB声卡内部或外部。控制模块3可以通过MCU、MPU、ASIC、FPGA、SOC的一种或多种的电路组合来实现。
在一些实施例中,所述USB从设备1为USB打印机时,按USB协议中规定的bInterfaceProtocol字段包含了一个为打印机接口命名类型的取值,01h、02h、03h可以定义USB主设备2与打印机之间的数据传输,通过Get_Port_Staus来请求获得打印机的状态数据。
此外,可以根据USB设备中规定的类描述符中的字段和接口函数来实现驱动完整性检测。例如大容量存储类设备中CSW的状态字段bCSWStaus通过接口描述子binterfaceClass的取值以及Get Max Lun来实现状态数据的检测。
在一些实施例中,满足OTG标准的USB主设备2与USB从设备1之间的主从关系相互可以调换,例如智能平板设备与智能手机,智能手机之间,而控制模块3对连接关系的相应的调整,实现上述检测功能的状态数据的方法不变。
在上述实施例中,控制模块还应包括存储器,所述存储器用于存储USB从设备不同状态下电压或电流预设值和定义的状态数据及不同状态下对应的预期值,以及上述实施例中USB从设备驱动加载完整性方法中的控制器执行指令。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (8)
1.一种USB从设备驱动加载完整性检测方法,其特征在于,包括如下步骤:
步骤a:与USB从设备耦合的控制模块实时检测USB从设备电压或电流,所述控制模块与USB主设备连接;
步骤b:控制模块从USB主设备中获取USB从设备在驱动加载过程中的状态数据;
步骤c:控制模块响应于USB主设备对USB从设备的二次枚举,按照如下方式作出提醒:
若步骤a中检测到的电流或电压值与预设的参考值偏差超出阈值,和/或步骤b中的状态数据不符合对应状态的预期,所述控制模块即作出提醒;其中,二次枚举是指USB主设备2与USB从设备1在第一次完整加载驱动后的第N次重新上电,N≥2,USB主设备2对从设备1重新进行枚举。
2.根据权利要求1所述的USB从设备驱动加载完整性检测方法,其特征在于,所述步骤b中的状态数据包括如下任一或其任意组合:枚举阶段的描述符中状态字段对应的返回值、类描述符中的自定义字段的返回值、传输阶段的状态码。
3.根据权利要求1所述的USB从设备驱动加载完整性检测方法,其特征在于,还包括步骤d:当驱动加载成功且所述控制模块与所述USB主设备握手成功后,USB主设备与USB从设备才开始通信。
4.根据权利要求1-3任一所述的USB从设备驱动加载完整性检测方法,所述控制模块与所述USB主设备通过USB线缆连接。
5.根据权利要求1-3任一所述的USB从设备驱动加载完整性检测方法,所述控制模块耦合在USB从设备的外部或内部。
6.根据权利要求1-3任一所述的USB从设备驱动加载完整性检测方法,所述控制模块为MCU、MPU、ASIC、DSP或FPGA。
7.一种耳机,包括控制器和存储器,其特征在于,所述控制器被配置为调用存储器中的指令以执行如权利要求1至3任一所述的USB从设备驱动加载完整性检测方法。
8.一种耳机,包括控制模块和USB从设备,其特征在于,所述控制模块与USB从设备耦合且与USB主设备连接,所述控制模块实时检测USB从设备电压或电流;
所述控制模块从USB主设备中获取USB从设备在驱动加载过程中的状态数据;
所述控制模块响应于USB主设备对USB从设备的二次枚举,其中,二次枚举是指USB主设备2与USB从设备1在第一次完整加载驱动后的第N次重新上电,N≥2,USB主设备2对从设备1重新进行枚举,按照如下方式作出提醒:
若检测到的电流或电压值与预设的参考值偏差超出阈值,和/或状态数据不符合对应状态的预期,所述控制模块即作出提醒。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910149479.8A CN109901960B (zh) | 2019-02-27 | 2019-02-27 | 一种usb从设备驱动加载完整性检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910149479.8A CN109901960B (zh) | 2019-02-27 | 2019-02-27 | 一种usb从设备驱动加载完整性检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109901960A CN109901960A (zh) | 2019-06-18 |
CN109901960B true CN109901960B (zh) | 2023-02-28 |
Family
ID=66945936
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910149479.8A Active CN109901960B (zh) | 2019-02-27 | 2019-02-27 | 一种usb从设备驱动加载完整性检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109901960B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102708218A (zh) * | 2012-04-10 | 2012-10-03 | 广州致远电子股份有限公司 | 一种集成u盘和数据采集模块的usb复合设备 |
CN103309708A (zh) * | 2013-05-31 | 2013-09-18 | 南京熊猫电子股份有限公司 | 一种usb设备在主机自动安装驱动程序的方法 |
CN107525997A (zh) * | 2017-08-29 | 2017-12-29 | 努比亚技术有限公司 | 一种usb充电电路短接检测方法及电源适配器 |
CN109213530A (zh) * | 2018-08-13 | 2019-01-15 | 百富计算机技术(深圳)有限公司 | 一种基于usb的通信连接方法、移动终端及存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102890662B (zh) * | 2012-10-19 | 2016-10-05 | 无锡海森诺科技有限公司 | 通过对usb hid设备进行二次枚举以识别主机操作系统的方法 |
US8954631B2 (en) * | 2013-04-08 | 2015-02-10 | International Business Machines Corporation | Continuously transferring data using a USB mass storage device |
CN107102228A (zh) * | 2017-05-22 | 2017-08-29 | 成都星火聚点科技有限公司 | 一种设备上电自动检测装置 |
-
2019
- 2019-02-27 CN CN201910149479.8A patent/CN109901960B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102708218A (zh) * | 2012-04-10 | 2012-10-03 | 广州致远电子股份有限公司 | 一种集成u盘和数据采集模块的usb复合设备 |
CN103309708A (zh) * | 2013-05-31 | 2013-09-18 | 南京熊猫电子股份有限公司 | 一种usb设备在主机自动安装驱动程序的方法 |
CN107525997A (zh) * | 2017-08-29 | 2017-12-29 | 努比亚技术有限公司 | 一种usb充电电路短接检测方法及电源适配器 |
CN109213530A (zh) * | 2018-08-13 | 2019-01-15 | 百富计算机技术(深圳)有限公司 | 一种基于usb的通信连接方法、移动终端及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109901960A (zh) | 2019-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10846160B2 (en) | System and method for remote system recovery | |
US9846472B2 (en) | Firmware update method and power system thereof | |
US7769836B2 (en) | Method and apparatus for removable device modification of system configuration | |
EP3255527A1 (en) | Remote keyboard-video-mouse technologies | |
US9645954B2 (en) | Embedded microcontroller and buses | |
US6249812B1 (en) | Interactive system support using a system management asic | |
US6895285B2 (en) | Computer system status monitoring | |
JP6864718B2 (ja) | ハイブリッド電源のシステム及び方法 | |
EP2798428B1 (en) | Apparatus and method for managing operation of a mobile device | |
US10824724B2 (en) | Detecting runtime tampering of UEFI images in an information handling system | |
US10869176B1 (en) | Near field communication (NFC) enhanced computing systems | |
US20210048850A1 (en) | Firmware setup menu options for docking stations | |
CN107239372B (zh) | 电子装置及其检测方法 | |
CN109901960B (zh) | 一种usb从设备驱动加载完整性检测方法 | |
CN110532203B (zh) | 一种nand复位方法、装置、电子设备和存储介质 | |
WO2023098680A1 (zh) | 一种认证数据切换方法、耗材芯片和耗材盒 | |
CN116089139A (zh) | 一种串口硬盘故障处理方法、装置、介质 | |
CN116539992A (zh) | 存储设备在位稳定状态检测装置、方法、逻辑模块及介质 | |
US20080127229A1 (en) | Multiple interface standard support for redundant array of independent disks | |
US11226862B1 (en) | System and method for baseboard management controller boot first resiliency | |
US6530048B1 (en) | I2C test single chip | |
CN114553737B (zh) | 一种测试计算机网络唤醒的方法、装置和电子设备 | |
US12066963B2 (en) | USB terminal server | |
CN219978860U (zh) | 终端设备的管控芯片和管控系统、终端设备 | |
KR102222723B1 (ko) | 듀얼 CPU(MPU) 시스템을 활용한 외부 Watchdog 기술 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |