我用U盤導(dǎo)出數(shù)據(jù),現(xiàn)象是第一次導(dǎo)出成功,不拔出U盤的情況下,直接導(dǎo)出第二次失敗,之后的每一次都失敗。拔出U盤后重新插入,仍是第一次正常,之后每一次失敗。
查到是drv_usbh.c文件中的drv_pipe_xfer()函數(shù),NAK死循環(huán)。
1、增加了NAK后重試的代碼
論壇中其他方法效果不明顯,還是會(huì)NAK。
if (++retry_times >= 100)
{
return -2;
}
continue;
2、增加延時(shí)
打開(kāi)RT_DEBUG_USB后發(fā)現(xiàn),U盤讀寫正常了,但是枚舉有時(shí)不正確,概率大概是插入5次,會(huì)有1次枚舉不成功。
所以在rt_usb_hcd_pipe_xfer()函數(shù)內(nèi)打印處增加延時(shí),關(guān)閉RT_DEBUG_USB后,讀寫、枚舉全部正常。
RT_DEBUG_LOG(RT_DEBUG_USB,("pipe transform remain size,: %dn", remain_size));
if (!RT_DEBUG_USB)
{
rt_thread_mdelay(5);
}
-
USB接口
+關(guān)注
關(guān)注
9文章
707瀏覽量
56995 -
DRV
+關(guān)注
關(guān)注
0文章
18瀏覽量
20822 -
DEBUG
+關(guān)注
關(guān)注
3文章
95瀏覽量
20556 -
RT-Thread
+關(guān)注
關(guān)注
32文章
1409瀏覽量
41958
發(fā)布評(píng)論請(qǐng)先 登錄
USB4和TBT4平臺(tái)的ccg6sf/df配置設(shè)置有何不同?
CYUSB3014在host開(kāi)機(jī)后不識(shí)別是怎么回事?
如何區(qū)分usb-typec是插入電腦還是插入其他電源?
是否可以將PTN3222配置為Host-USB2到eUSB2主機(jī)?
嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-開(kāi)發(fā)板適配之USB_OTG
飛凌嵌入式ElfBoard ELF 1板卡-開(kāi)發(fā)板適配之USB_OTG
不停的malloc程序會(huì)異常嗎
樂(lè)鑫USB方案設(shè)備互聯(lián)傳輸,豐富的外設(shè)支持應(yīng)用

全志T113-S3開(kāi)發(fā)板—USB兩步燒錄固件

評(píng)論