问题描述
在 APP_DTQ_RP55x_CPU_v010008_202004161_b4.bin 版本的固件上发现一个现象:使用HUB的时候发现设备是未连接的
当设备直接接在电脑上的时候
设备显示是链接的
- 经过多次降级测试发现:只要是升级到 v0.1.08 就算 升级自己部分升级也是会出现这个问题,但是从 v1.0.8 升级到 v0.7.7 是OK的
就是这个 升级到高版本的过程会把HUB弄死,但是在电脑自身不会死掉
- 测试 2 种类型的HUB都会死掉【那么这个问题就是我们的问题】
问题的分析与解决
还是猜测最近出现的系统兼容问题都是和USB断开延时有关联,于是尝试在USB线程启动之前断开设备
修改如下
/* 启动参数初始化完成之后端口 USB */
USB_DevDisconnect(USB_OTG_HS);
/* set LED0 pin */
rt_pin_mode(APP_LED0_PIN, PIN_MODE_OUTPUT);
rt_pin_mode(APP_LED1_PIN, PIN_MODE_OUTPUT);
rt_pin_write(APP_LED1_PIN, PIN_LOW);
dfu_image_info_read((uint32_t *)(sys_tcb_val.img_name), &img_rlen);
/* 初始化内部参数 */
INIT_DEBUG("> 配置参数 init\n");
ret = fee_system_config_init();
INIT_DEBUG("> 配置参数 %s\n", (ret == 0) ? "OK" : "FAIL");
/* 启动工作线程 */
th_lcd_init();
th_card_init();
th_spi_init();
th_voc_init();
th_wifi_init();
th_dtq_init();
th_swd_init();
th_usb_init();
测试有效
总结
在 USB 的应用中如果程序无法响应USB的上行数据,就一定要断开链接,否则就可能会导致对方出现不可预见的异常