作者| veahow
本次专题主要讲解RTOS如何适配USB Host?SSD22X/SSD21X/SSC9211 RTOS适用。
1.场景描述
适用SDK版本:rtk_0107_2021-11-19-0933-V010
在PC端可以正常UVC出图,但对接一些USB Host的过程中存在一些问题,需要进行适配。
2.实现原理
以PC端的USB交互为参考,查看实际对接USB Host枚举过程中存在哪些差异,修改代码去适配。
3.操作方法
3.1 提高UART任务优先级
默认UART优先级较低,可能导致USB相关打印不全,请参考 RTOS下如何提高默认串口任务的优先级? 的操作,将UART线程任务优先级提高,以便调试。
3.2 开启USB调试
USB基础驱动的代码都在rtk/proj/sc/customer/product/cust/drv/usb_gadget下,修改usb_gadget_dbg.c的debug_level,将其改成DEBUG_LEVEL_DEBUG重新编译再和USB Host进行对接,查看打印的数据情况与PC端进行对比。
4. 举例
4.1 Log报“not find cfg”
出现如下的Log打印:
对比PC端能够发现也是有一模一样的请求但结果不一致,这是USB Host端没有去获取配置描述符导致的问题,Device端未生成配置链表使得无法根据值找到可用的配置,需要增加逻辑:sstar_usbd_set_config时未找到配置则再get_config_descriptor一次,后再查找一次。
4.2 Log报“not find alternate setting”
出现如下的Log打印:
需要对比PC端相关的请求,发现PC端下发的值是1,而对接的USB Host在没有获取Device端信息的情况下直接下发值3,需要在set_interface中将setup->wValue强制改为1即可,但需要注意的是写法上要兼容与PC Host的交互。
4.3 UAC对接Host时Log报“alloc memory failed”
同样的镜像在PC Host上能够正常UAC SPK输出但对接别的Host便出现了Log报“alloc memory failed”,并且一直持续着导致无法播放Host传来的声音。需要在uac.c中的sstar_ep_out_data_handler增加:
这个原因是有些Host会下发数据长度为0的包导致驱动处理有误,因此要在此处增加判断跳过处理以免影响后续的数据处理。
》》原帖地址
End.
往期回顾
星宸科技智能门锁方案介绍
SSD222Q在工业HMI中的新应用
星宸科技智能网关方案介绍
星宸科技智能家居全家桶介绍
扫码进入论坛
原厂答疑|产品选型|官方资源
扫码咨询客服
SDK下载|芯片、开发板购买