【阿福的隨筆】淺談 USB Bulk 深入淺出 (4) - USB Bulk 傳輸的優缺點總結

1 USB Bulk 是什麼

USB 是即插即用使用差動信號的裝置介面,是以 端點 ( Endpoint ),做為傳輸裝置的輸出入端,透過不同的端點 ( Endpoint ) 和模式,來進行與裝置的溝通,USB Bulk 就是USB 四種傳輸模式之一的批量資料傳輸 ( Bulk ) 的端點傳輸

 
1.1 傳輸方塊圖

USB 傳輸方塊圖,如『圖1.1.1』( 註1 ), 其中 IRP是  I/O Request Packet ,由圖所示Bulk 傳輸是使用 1個或多個的  IN / OUT 資料傳輸 (Transaction ),一個 USB 的資料傳輸通常會有 3 個階段 Token , Data , handshake的封包

  
圖1.1.1( 註1 )

2 USB Bulk 傳輸的優缺點總結

因為目前沒有寫 driver 的資源 ,所以自已寫或請人寫 driver 的這個方式,目前是不考慮的, 所以只能考慮USB to com port 的  USBCDC ,或是需要 File system 的 mass storage ,一般稱為USB 隨身碟 ( U 盤 )

使用 USB Mass storage的缺點是 : 因為不用寫 driver ,是直接使用 windows driver,所以整體的行為會被 windows driver 受限,如傳輸的速度,資料錯誤重送的機制,還會受到系統整體是否忙碌,而影響到傳輸,反正會影響到一般 USB 硬碟傳輸行為的,在模擬的 USB Mass storage 都會遇到。

若是可以使用 Microsoft OS descriptor強制指定 driver 就可以跳過需要自行撰寫的過程,也是另一種特別的方法,但此方式,是裝置第一次插上電腦時,會將相關的 info 註冊,若是第一次沒有成功,則此裝置會在同一台電腦上無法使用,除非將相關的註冊表清除

最後做出來的Bulk傳輸,有兩個大問題 :

(1) 就是有時候 電腦端 會直接傳送空的 package,雖然是無效且會再重傳資料,但程式上就必須要多了一些判斷和整合的機制才行,但是有機會是一開始的檔頭就是失敗的 ( 檔頭也有可能一開始傳送失敗,之後再重傳 ),若是使用 MSD 他是存到相對的 Flash 位置,所以必須等到所有封包含重傳完的封包都存到相對的 Flash 時,整圖檔封包資料才會是完整的,這時抓圖當然沒問題,但若是一邊傳輸圖檔,又一邊要點圖的話,就會有很大的問題,若是有很大的 RAM ,或是真的存到 Flash 內,當然可以全部傳輸完成之後再傳圖到 Panel 端,可是若是真的先存到 Flash , Flash 的擦寫速度也要算在傳輸的時間內,但若是沒檔頭,圖檔的偏移量就不知道,就要將所有的資料先存下來,最後才把圖檔的  Row data 分離出來,做傳輸至 Panel 或是轉換格式後再傳輸至 Panel,其中轉換格式或是搬移大量記憶體都會花費 MCU 大量的處理時間,這點需要注意


(2) 在封包和封包之間的間隔時間,雖然 Firmware 可設定最小間隔時間,但主要的傳輸端是 電腦端的 AP 程式和 driver 控制的,所以說一開始 AP 程式和 driver 未借入或是沒設定 timeout 值時,會發現封包的間隔時間非常的大,與 AP 程式人員討論之後,使用背景模式來一直連續傳送圖片,效果也是只有好一些,主要還是會受限於 windows driver 這裡。但若是 API 程式,設定的間隔時間比實際上封包傳輸的時間還短時,若傳輸的檔名都是同一個,而相對位置也相同的話,有可能封包會被後來的蓋過去也不一定。

使用 NXP RT500 系列的 EVK 做的 USB Bulk 來傳輸圖片,並且將圖片資料直接點 RGB888/RGB565 的Panel,實驗中發現若是把 PC 端 USB 背景傳輸間隔時間放的很小,則 MCU 端有機會造成資料來不及收完就被複蓋的現象,另外會發現到, 24bits 的處理,要比 16 bits 處理上,還要多出 3/2 左右的時間,但畫質上是有差一些,但為了速度考量最後還是使用 RGB565, 並且當初有嘗試了一下格式轉換,發現轉換的時間,還遠大於傳輸的時間,所以格式轉換的部份不太適合放在 MCU 做了,最好要格式轉換的話是放在 PC 端執行好後再將要點圖的 Row data 傳給 MCU


後續會在博文視頻區內,放上請 WPI 同事幫忙撰寫 for Window 的 GUI ,來做一個 Bulk 傳輸,會在視頻中看到若是 USB 傳輸間隔時間設的太小的話,有時候會出現來不及傳輸完圖檔的現象

3 參考資料

註1 : 作者: USB ORG ( Compaq ,Hewlett-Packard ,Intel ,Lucent,Microsoft,NEC,Philips );
出處 : https://www.usb.org/document-library/usb-20-specification

相關影片

【阿福的隨筆】淺談 USB Bulk 深入淺出 (4) - USB Bulk 傳輸的優缺點總結

使用 NXP IMXRT595 EVK 測試 USB Bulk 的影片

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

評論