本文轉自公眾號,歡迎關注
基于DWC2的USB驅動開發-PING協議詳解 (qq.com)
一. 前言
這里先介紹下PING協議的背景和原理,我們不一上來就介紹PING包格式和協議,因為只有知其然知其所以然才能加深理解,任何事務都是有其出現的歷史背景的,不會憑空而生,所以理解背后產生的背景和原理很重要。
全/低速的批量/控制傳輸OUT事務,如果設備沒有就緒,則可以NAK表示端點不接受數據,主機可以稍后重發。以上過程存在一個問題,就是OUT數據之后設備NAK,OUT數據這部分時間會占用總線,如果設備一直未就緒一直NAK,主機一直重發將會大量占用總線。
高速設備旨在提高傳輸帶寬,所以對這種帶寬的浪費是不能容忍的,必須優化。
優化的思想其實很樸素,既然重發浪費帶寬,那么就先“問一下”,先“問一下”設備準備好了沒,只有收到設備回復準備好了再發數據,這樣“問一下”這句話很短占用帶寬不多,浪費較少。這個問一下就對應的PING包。
只在高速設備才支持PING,且只有控制傳輸和批量傳輸支持,且都是針對OUT。
控制傳輸OUT(數據和狀態階段,SETUP階段不支持PING)
批量傳輸OUT的數據階段。
二.PING包格式
Ping包的ID為0100B,和令牌包格式一樣
如下是一個實例
三.PING協議過程和實例
Ping的響應是硬件做的,因為設備需要接收主機連續的PING,如果軟件處理會來不及。
那么硬件怎么知道回主機的PING包回ACK還是NAK呢,這就是看軟件有沒有配置好DMA并設置CTL寄存器的EPena置位,如果軟件已經配置好了則硬件回ACK,并自動接收后面的OUT數據,并通過DMA搬運到用戶空間,反之則NAK。
過程如下:
1.主機OUT數據,設備返回了NAK
2.主機收到NAK,知道設備沒就緒,于是發PING
3.設備收到PING之后如果還未就緒則NAK,否則則ACK
4.主機按照描述符中的bInterval時間間隔重新發PING,直到設備ACK,設備ACK后發數據。
5.設備收到主機OUT的數據如果還可以繼續接收后面的數據則ACK,否則則發NYET。注意雖然前面PING設備ACK了,這里設備還是有可能NAK。
- 主機如果收到設備的ACK則繼續發后面的數據,如果收到NYET則表示本次OUT數據成功,但是設備不能接收后續數據,發后面的數據前重復上面的PING過程,如果主機收到NAK則說明本次數據設備沒有接收,需要重新PING然后重發本次數據。
總結一下就是對于OUT數據設備可能有三種響應
ACK:本次接收了,還可以繼續接收后面的。
NYET:本次接收了,不能繼續接收。
NAK:本次未接收。
上述說明的設備對PING ACK了,但是對后面的數據OUT又NAK了的情況,是不正常的現象,設備都告訴主機準備好了,后面又沒有接收數據。
高速的批量/控制端點在其端點描述符中需要指定其最大NAK速率。每個bInterval 時間間隔內,端點最多允許NAK一次。如果端點的描述符bInterval為0則表示端點從不會NAK。
如果在數據階段之后發生超時,主機必須返回到PING階段。轉回PING狀態不會影響事務數據階段的data toggle 狀態。
以下是一個實例過程
(1)主機OUT數據,設備NAK了,表示設備不能接收
(2)主機看到設備NAK,不能接收,于是進入PING狀態。注意上面主機不會一上來就PING,因為這個時候還不知道設備能不能接收,所以先不管三七二十一發一把再說,萬一設備能接受呢。只有主機確認設備不能接收,即設備NAK之后才會進入PING狀態。
(3)設備一直NAK則主機一直PING
(4)設備終于ACK了主機的PING,表示可以接收數據了。
這里的ACK是設備的硬件做的,所以在此之前設備的軟件配置好了DMA并置位了DOEP的CTL寄存器的EPena位。
(5)主機OUT數據,設備也接受了,回了ACK,至此數據的OUT階段總算成功了。
第(5)步設備實際還有可能回NAK,表示未接收,回NYET表示本包接收但是不能接收下一包。
四. 總結
以上介紹了高速數據階段的PING協議,了解了過程和背景,對于驅動開發人員尤其要了解哪些是硬件做的,哪些是軟件做的,分別在什么階段什么時機做。
審核編輯:湯梓紅
-
usb
+關注
關注
60文章
7936瀏覽量
264473 -
編程
+關注
關注
88文章
3614瀏覽量
93686 -
Ping
+關注
關注
0文章
69瀏覽量
15974 -
開發板
+關注
關注
25文章
5032瀏覽量
97371 -
代碼
+關注
關注
30文章
4779瀏覽量
68521 -
單板計算機
+關注
關注
0文章
74瀏覽量
15627 -
編譯
+關注
關注
0文章
657瀏覽量
32852 -
驅動開發
+關注
關注
0文章
130瀏覽量
12072 -
DWC2
+關注
關注
0文章
35瀏覽量
125
發布評論請先 登錄
相關推薦
評論