USB host关于收到STALL处理
前言:stall 仅仅限于device 应答,而host端是不会发送stall握手包的。关于stall 包的场景,usb2.0 spec中有详细的说明。且收到stall后,软件必须做出相应的处理才能使通信恢复正常。
一、STALL包分类:
参看usb2.0 spec,STALL包分为两类,一类是protocol STALL,一类是functional STALL。用通俗的话来说就是,当使用控制端点0时,对应的是使用的protocol STALL(虽然控制端点也可以作为functional STALL,但是spec 2.0 ch8.5.3.4 写了不建议这么做,我们也可以理解一般而言按端点这么划分开来);当使用其他端点时,对应的表示functional STALL。
1.控制端点收到STALL
当使用的是控制传输时,如果device 无法完成host的指令,则返回stall 在控制传输的数据或者状态阶段,但是与第二类functional STALL不同,这种返回stall并不表示设备发生错误。如果当前的端点发送IN或者OUT包,端点在会持续返回STALL,直到收到一个新的SETUP控制传输为止。因此控制通道收到STALL应答的解决方法是重新开启一次控制传输,也就是重新开启一次setup token的传输。一般而言,这种情况下返回STALL表示请求或者参数不能被device识别。 ------ch8.5.3.4
2.数据端点收到STALL
如果是非0端点传输时,设备收到未被支持的或者无效的请求,相应端点设备在数据阶段或者状态阶段返回STALL,则这种情况下这个端点故障。此时,host应该通过控制端点0发送clear feature 指令来清除端点的Halt feature实现重新启用该端点。(halt的理解就可以理解为那些可以打开关闭可通过clear/set feature的端点)。
二、STALL包实例:
在测试usb U盘设备时,有的OUT端点不支持获取格式化容量指令,返回STALL。程序的处理流程为:先通过控制端点0发送clear feature指令重新启用被挂起的设备OUT端点,然后发送获取故障原因指令重新恢复运行。
参考资料:
理解halt:
https://blog.csdn.net/fudan_abc/article/details/1694092
USB host关于收到STALL处理相关推荐
- TI Cortex-M4 USB Host CDC 驱动详解及源代码
1. USB CDC介绍 USB的CDC类是USB通信设备类(Communication Device Class)的简称.CDC类是USB组织定义的一类专门给各种通信设备(电信通信设备和中速网络通信 ...
- 安卓USB开发教程 二 USB Host
USB Host(主机模式) 当 Android 设备处于 USB 主机模式时,它充当 USB 主机,为总线供电,并枚举连接的 USB 设备.Android 3.1 及更高版本支持 USB 主机模式. ...
- 网络摄像头转usb接口_Arduino + USB Host Sheild 实现USB鼠标转PS/2接口
制作缘由 公司内网只有PS/2接口,希望可以使用无线鼠标(貌似没有PS/2接口的).而那种USB转PS/2的转接头只是简单的连线,需要键盘或鼠标本身支持PS/2模式才可以正常工作,现代的USB鼠标接收 ...
- STM32 USB Host 同时连接多个设备样例(如鼠标和键盘)--原创
STM32 USB Host 同时连接多个设备样例(如鼠标和键盘) 在网上搜了很多都是USB Host单独连接鼠标或键盘的样例, 而当前很多无线鼠标键盘都是并到一个USB口上的, 也就是同一个USB有 ...
- USB device和USB host
USB,英文全称:Universal Serial Bus,即通用串行总线. 常常各种USB芯片同时具有host和device两种接口.host就是主的,可以起控制作用:device(slave)就是 ...
- Android usb host
当你的Android主机是处于USB主模式下,它充当USB主机,开启设备并列举出所有已连接的USB设备.这种模式在Android 3.1及以上的版本支持. API预览 在开始开发USB Host之前, ...
- linux usb ehci,linux USB HOST之EHCI和OHCI
1. 主机控制器(Host Controller) • UHCI: Universal Host Controller Interface (通用主机控制接口, USB1.0/1.1) • OHCI: ...
- 翻译Android USB HOST API
翻译Android USB HOST API 源码地址:http://developer.android.com/guide/topics/connectivity/usb/host.html 译者注 ...
- 一步一步解决 kernel 2.6 usb host driver
2.6在s3c2410上usb host不工作的直接结果就是提示110错误: usb 1-1: device descriptor read/64, error -110 追踪错误代码,我们来看看能 ...
最新文章
- [Python爬虫] 之二十二:Selenium +phantomjs 利用 pyquery抓取界面网站数据
- 你还在用Swagger?试试这个神器!
- python基础之数据类型与变量
- 为什么要使用符号作为hash的键
- c 语言练习__去掉多余的空白字符_修正
- velocityjs 动画库 比jquery默认的animate强
- 处理工行b2c上海机构问题反思
- python pca降维_MLK | 机器学习的降维quot;打击quot;
- 配置计算机老是重启,电脑总是自动重启该怎么解决
- c语言期终试卷,谁有c语言的往年期中试卷么
- 机器学习基础(二十二)—— decision tree
- headless-virtualbox
- 恒定湿热试验条件及标准-环境试验中的湿热试验报告
- Inverting Visual Representations with Convolutional Networks论文理解
- tp6 使用 redis
- 拒绝反爬虫!教你搞定爬虫验证码
- 2014年3月21日51CTO微软MVP聚会照片
- 小学生学程序---百变服装
- 矩阵的主元+秩+矩阵等价
- SAP QM 检验批里某检验特性的取样数量跟检验计划设置不符?