无线USB转换器TOS-WLink USB总线错误码说明

        TOS-WLink 的USB使用CherryUSB开源库;以下是错误码;需要了解的可以下载CherryUSB代码查看分析:

usb_errno.h

#define USB_ERR_NOMEM    1
#define USB_ERR_INVAL    2
#define USB_ERR_NODEV    3
#define USB_ERR_NOTCONN  4
#define USB_ERR_NOTSUPP  5
#define USB_ERR_BUSY     6
#define USB_ERR_RANGE    7
#define USB_ERR_STALL    8
#define USB_ERR_BABBLE   9
#define USB_ERR_NAK      10
#define USB_ERR_DT       11
#define USB_ERR_IO       12
#define USB_ERR_SHUTDOWN 13
#define USB_ERR_TIMEOUT  14

1~5, 字面意思理解就好,类似防御性编程;

        需要注意这个错误码对应用调用者友好;不能完全指向底层的USB IP核的硬件错误;需要切实了解底层的硬件错误原因,最好去自己的USB IP核查看,这些错误码有些是多个硬件错误码出来的置位的;

6号USB_ERR_BUSY错误,创建URB之前的状态字会置为6,注意下次创建该端点的URB前最好手动清除它,你不能保证底层确实清除了它;否则就是urb没创建就已退出;它并不直接指向具体硬件错误,当然URB执行没错误它会被清除;但是有时候底层USB并不是致命错误,比如toogle翻转下,不要因为下一次就总线会恢复的错误导致提前就函数退出了,而且是不断电上电,一直认为自己错了;

7号错误是msc, 优盘类存储的block专属,不介绍了

8号错误:STALL,在USB通信中常常发生,对发生该故障的端点Clear Feture通常可以恢复该错误;打个比方,你和兄弟打台球,突然你不小心撮到他了一下,没错,他就是矫情,你道个歉,他就和你继续玩,当然有时候也不顶事;那就容易进入道歉死循环;

9号,packet数据超出了长度的,在STM32数组越界,应该进入xxxx_fault中断了吧,好多年不写STM32,Cortex-Mx的代码了,记不清了;

10 字面意思理解就好,可查USB总线术语像极了已读不回的女友;

11 当前版本没有用到

12 致命错误,传输错误,覆盖9号 + 10号;TOS无线USB助手日志看到这个(-12)基本需要复位了;

13 不能完全算错误,常用于端点初始状态,或者拔出了USB;

14 严重的错误,超时,比如设置500ms发送,500ms到了,发送还是没有完成;这里需要去看底层的urb的quenue等资源了,是不是又什么BUG;卡住了队列;当然最好情况是设置超时时间小了,加大就行;

 总结:TOS无线USB助手日志可能会给出:

        -12 错误,致命错误;

        -8 如果在枚举阶段多次也是致命的;

        -6 和 -14也有可能;

        不要害怕修改底层,寄存器相关的底层开源软件,很多时候还是需要你自己对照USB IP核寄存器去修改甚至全部改写成自己项目需要的;

        TOS-WLink底层USB IP核的手册,被我翻烂了都,而且是骂骂咧咧的,当然真遇到底层问题,有经验的攻城狮懂得,卡你个7 * 7 = 49天,你还一点办法都没有;只能狂掉头发;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值