我們用CH569W開發(fā)大容量存儲設(shè)備,有些SCSI命令不支持時,需要返回STALL。這樣調(diào)用USB30_IN_Set(ENDP_2, DISABLE, STALL, 0, 0);將IN端口設(shè)置為STALL,此時主機返回了C0000011錯誤,并產(chǎn)生RESET,出現(xiàn)掉盤,這與預(yù)期不符。設(shè)想應(yīng)該返回USTS c0000004 stall pid錯誤代碼,而且不能RESET。這個是什么原因?怎么調(diào)用才能返回STALL而不產(chǎn)生復(fù)位?
用這個例程測試,其中USB函數(shù)庫已經(jīng)更新
使用以上EXAM中的庫,仍然無法返回上傳端點STALL狀態(tài)。
還是這樣調(diào)用:USB30_IN_Set(ENDP_2, DISABLE, STALL, 0, 0);
主機端返回了命令超時或C0000011錯誤
這個CH569的USB3資料有點少啊,不管是芯片手冊還是庫都沒有詳細(xì)文檔,在調(diào)試遇到問題時候有點無從下手。有沒有詳細(xì)點的資料啊?
現(xiàn)在用的這個USB3的庫版本號讀出來是32
上傳端點STALL狀態(tài)設(shè)置不成功的問題,把代碼中的printf輸出全部注釋掉就好了(這個原因比較奇怪)。
現(xiàn)在又有新問題,IN端點(ENDP_2)返回STALL成功以后,收到USB_CLEAR_FEATURE,將IN端點(ENDP_2)恢復(fù)為ACK狀態(tài)。不知什么原因主機又返回了C0000011。
希望能夠看到USB3處理端點STALL狀態(tài)的例程參考,謝謝!
收到,預(yù)計本周提供包括端點0、非0端點響應(yīng)stall的示例代碼。到時候更新至該帖中:
http://m.findthetime.net/bbs/thread-91615-1.html
謝謝!還有一個很奇怪的現(xiàn)象,設(shè)備收到USB_SET_FEATURE(00 03 30 00 00 00 00 00),在處理USB_SET_FEATURE的地方稍有延時,就會導(dǎo)致通信卡頓8s左右才恢復(fù)正常。這里僅僅只有兩條if判斷,而且都不符合進入條件。
把這兩條if注釋掉就沒這個現(xiàn)象了。
試過在這里只有printf輸出一點信息,也會導(dǎo)致通信卡頓現(xiàn)象。
@TECH5?"預(yù)計本周提供包括端點0、非0端點響應(yīng)stall的示例代碼。"麻煩問一下,這個示例代碼有了嗎?
您好,留一個郵箱,這邊郵件發(fā)送給你。
因為是測試代碼,不具備完整功能,不便直接貼到帖子里,避免給別人造成誤解。感謝。
@TECH5?我的郵箱是這個:個人信息保護,已隱藏,感謝!
郵件已發(fā)送,請注意查收。
通常一個stall的處理包含很多步驟。
1、端點傳輸事務(wù)上應(yīng)答stall狀態(tài)。
2、可能存在clear feature請求的發(fā)生,用于復(fù)位端點狀態(tài),這取決于主機行為。
3、如果stall行為發(fā)生于某一個 類協(xié)議 的基礎(chǔ)上,可能還需要在后面針對 類協(xié)議 進行后續(xù)的處理。
單純的端點應(yīng)答stall的代碼實現(xiàn):