USB 端点的定义
                            
                            
                            USB設備中的唯一可尋址部分是設備端點。端點是主機與設備之間通信的目的或來源??刂贫它c可以雙向傳輸數據,而其它端點只能在單方向傳輸數據。主機和設備的通信最終作用于設備上的各個端點,它是主機與設備間通信流的一個邏輯終端。每個USB設備有一個唯一的地址,這個地址是在設備連上主機時,由主機分配的,而設備中的每個端點在設備內部有唯一的端點號。這個端點號是在設計設備時給定的。每個端點都是一個簡單的連接點,或者支持數據流進設備,或者支持其流出設備,兩者不可兼得。基于PnP機制,設備被枚舉時,它必須向主機報告各個端點的特性,包括端點號,通信方向,端點支持的最大包大小,帶寬要求等 (其中端點支持的最大包大小叫做數據有效負載)。每個設備必須有端點0,它用于設備枚舉和對設備進行一些基本的控制功能。除了端點0,其余的端點在設備配置之前不能與主機通信,只有向主機報告這些端點的特性并被確認后才能被激活。
管道是一個USB通信設備上的一個端點和主機上軟件之間的聯系。體現了主機緩存和端點間傳送數據的能力。有流和消息兩種不同且互斥的管道通信格式。流指不具有USB定義格式的數據流。流通道中的數據是流的形式,也就是該數據的內容不具有USB要求的結構。數據從流通道一端流進的順序與它們從流通道另一端流出時的順序是一樣的,流通道中的通信流總是單方向的。對于在流通道中傳送的數據,USB認為它來自同一個客戶。USB系統軟件不能夠提供使用同一流通道的多個客戶的同步控制。在流通道中傳送的數據遵循先進先出原則。流管道只能連到一個固定號碼的端點上,或者流進,或者流出。而具有這個號碼的另一個方向的端點可以被分配給其它流通道。流通道支持同步傳送,中斷傳送和批量傳送;消息指具有某種USB定義的格式的數據流。消息通道與端點的關系同流通道與端點的關系是不同的。首先,主機向USB設備發出一個請求;接著,就是數據的傳送;最后,是一個狀態階段。為了能夠容納請求/數據/狀態的變化,消息通道要求數據有一個格式,此格式保證了命令能夠被可靠地傳送和確認。消息通道允許雙方向的信息流,雖然大多數的通信流是單方向的。特別地,缺省控制通道也是一個消息通道。當客戶程序通過USB管道發送或接收數據時,它首先調用Win32 APl,調用最終將使功能驅動程序收到一個IRP。而驅動程序的工作就是把客戶的請求引導到有正確端點的管道上。它把請求提交到總線驅動程序,總線驅動程序再把請求分解成多個事務,然后這些事務被送往總線。總線上的信息流以每毫秒一幀數據的形式流動。總線驅動程序必須安排好多個事務以使它們能被裝入同一幀中。
                        
                        
                        管道是一個USB通信設備上的一個端點和主機上軟件之間的聯系。體現了主機緩存和端點間傳送數據的能力。有流和消息兩種不同且互斥的管道通信格式。流指不具有USB定義格式的數據流。流通道中的數據是流的形式,也就是該數據的內容不具有USB要求的結構。數據從流通道一端流進的順序與它們從流通道另一端流出時的順序是一樣的,流通道中的通信流總是單方向的。對于在流通道中傳送的數據,USB認為它來自同一個客戶。USB系統軟件不能夠提供使用同一流通道的多個客戶的同步控制。在流通道中傳送的數據遵循先進先出原則。流管道只能連到一個固定號碼的端點上,或者流進,或者流出。而具有這個號碼的另一個方向的端點可以被分配給其它流通道。流通道支持同步傳送,中斷傳送和批量傳送;消息指具有某種USB定義的格式的數據流。消息通道與端點的關系同流通道與端點的關系是不同的。首先,主機向USB設備發出一個請求;接著,就是數據的傳送;最后,是一個狀態階段。為了能夠容納請求/數據/狀態的變化,消息通道要求數據有一個格式,此格式保證了命令能夠被可靠地傳送和確認。消息通道允許雙方向的信息流,雖然大多數的通信流是單方向的。特別地,缺省控制通道也是一個消息通道。當客戶程序通過USB管道發送或接收數據時,它首先調用Win32 APl,調用最終將使功能驅動程序收到一個IRP。而驅動程序的工作就是把客戶的請求引導到有正確端點的管道上。它把請求提交到總線驅動程序,總線驅動程序再把請求分解成多個事務,然后這些事務被送往總線。總線上的信息流以每毫秒一幀數據的形式流動。總線驅動程序必須安排好多個事務以使它們能被裝入同一幀中。
總結
                            
                        - 上一篇: 微信小程序“虚拟支付”问题汇总
 - 下一篇: 软件工程知识点整理