USB的工作原理

2021-06-27 11:44:13 字數 2827 閱讀 7749

usb的工作原理及資料報格式  一 概述 對於usb的工作我這裡做個比方,主機好比乙個公司,你就是usb裝置,要進入公司首先要面試(列舉),你到了面試現場(第一次插入裝置),面試官首先了解到你的外表,性別已經你要應聘的崗位(裝置描述符),然後給你乙個號,以後就開始按號叫人,當你被叫到就開始問你的專業知識,性格等(配置描述符),如果你比較合適(通過了列舉)你就會錄取了,並且註冊乙個你的資訊到公司(驅動安裝,並且寫入登錄檔)。等你下次來公司,只要把工號(pid,vid)報上,就知道是你來了。 usb的概念歷史啥的這裡就不說了。我們先不管具體的資料報格式,這一節先從整個包的層面上簡單的說,過程是這樣的,  

裝置插入 

1)主機會輪迴查詢各個usb埠,主機檢測到d+與d-之間有電壓差,就認為有新的設定接入。主機等待100ms後發出復位請求。裝置接到復位請求後將產生乙個外部中斷訊號。  

列舉過程 

2)主機這時候只是知道有新的裝置插入了,但是不知道插進來個什麼東西,所以就開始詢問它是什麼裝置,怎麼用,負荷能力怎麼樣。這個時侯就進入了列舉過程。因為剛剛插入的裝置沒有分配位址,就用預設位址0,首先傳送乙個get_descriptor(獲取裝置描述符)指令包,裝置接到包後就開始解析包(其實就是你在韌體程式裡判斷處理) ,然後按固定格式返回自己裝置的裝置描述符,這一步主要是主機知道你的usb裝置的基礎屬性,比如支援的傳輸資料長度,電流負荷多少,支援那個usb版本,以及以後方便電腦找驅動的pid,vid。

4) 給你乙個位址後就開始詢問你的具體配置。首先傳送乙個試探性的裝置配置請求get_configuration(要求固定返回9個裝置配置字),你接到後就開始傳送9位元組的裝置配置字,其中包括你的配置字的總長度,這樣主機就知道你的配置到底有多長,然後再發一次裝置配置請求,這時你就開始上傳所有的配置字。這個時侯主機就已經很明白你的工作方式 和各種特性,然後就可以正常工作了 

5) 如果你在前面的某些配置(以後章節詳細說明)要求要說明自己的名字什麼的,這裡還要上傳字串描述符。

6) 如果是滑鼠或者鍵盤還要上傳報告描述符  正常資料階段 

7) 這個時侯你已經被主機正式接受並且註冊了,你可以通過自己寫測驅動或通用驅動與電腦進行通訊了。   以上是簡單的描述,詳細的後面章節再做介紹,學習乙個東西關鍵是首先要知道這個東西是什麼,簡單的工作原理。 對於usb傳輸大體有個概念,下一步就來看看到底usb上傳的什麼東西,以什麼格式傳資料,先不涉及端點的概念。  usb資料格式 各種匯流排的資料傳輸都是以固定的層次協議進行的,usb當然也不例外。

所謂的層次也只是個抽象的概念罷了,就是表達一種依附關係,上層要依賴與底層,上層以底層為基礎,上層只需要關心自己的東西就行了,如果你還不明白,那就繼續看,學習乙個東西不可能一兩句話說的明白乙個點,需要全面了解後才能清楚各個點。 要實現兩個機器(機器的範圍比較廣,可以是電腦,交換機,微控制器)的通訊總是要有乙個載體才可以,對於機器當然是電平高低為載體,具體的說機器甲要告訴機器乙一件事情(比如說一條指令),那麼機器甲可以通過一根線(序列資料匯流排)連到機器乙的乙個io口上,甲傳送乙個個的高低電平,乙固定時間檢測自己的這個io口,然後逐個記錄下放到自己的緩衝裡,這樣乙就收到甲送的資料了。

上述就是乙個簡單的資料鏈路層(計算機網路裡這麼叫)的描述,這一層要保證的就是甲發的每一位資料,乙都可以正確及時的接受,並且對在傳輸過程中出錯的資料做出反應。其實比資料連路更底層的還有物理層,這就是真正的物理介質,對於機器就是電線了,資料就是電線上傳輸的電壓,usb是用的四線,兩個電源(5v,地線),兩個資料線(d+,d-)。 這裡也打個比方,比如人與人進行交流,我們當然是通過說話了,物理層就是空氣和傳輸的聲波,資料鏈路層就是我們說的每乙個字,物理層就是空氣,負責把我們說的話轉換成 聲波傳給對方,資料鏈路層負責讓對方能正確的聽到每個字,如果聽的不清可以告訴對方重新說一遍。 經過上述的兩個底層,就可以保證每一位資料可以正確的傳到對方那裡去。下一步的工作當然是解析資料代表了什麼,一般來說,資料都是以一串數為單位,一般稱為乙個包,機器間傳輸都是以乙個包為單位傳出,就像人們說話都是以一句話為單位輸出一樣。

每乙個包包含有許多位資料,這些資料又分段表示不同的意義,如圖一,這是乙個usb令牌階段的包,sync是同步資料(相當於說話時先打個招呼,告訴對方要跟他說話了),pid是包標示(告訴對方這個包是幹什麼用的),addr是對方的位址(叫對方的名字),endp是用端點幾通訊(先不介紹這個),crc5是校驗位(判斷這個包是否在傳輸中出錯),eop是包結束。

|   sync  |  pid  |  addr  |  endp  |  crc5  |  eop   | 

圖一 usb的資料報又分為三種,乙個是令牌包,乙個是資料報,另乙個是握手包。每一次的usb通訊事務處理都是以令牌包開頭,告訴對方要跟誰說話,這句話是用來幹嘛的。如果要求有資料傳輸,則下一步就是資料報,另外如果要求對方要有反饋,則會發出握手包。令牌包又簡單的包括out,in,step三種型別,out是用於主機告訴裝置主機要向usb裝置傳送資料,in是用於主機告訴裝置要上傳資料,而steup是用於主機向usb裝置傳送配置資訊,在列舉過程中會用到。另外資料報和握手包的具體格式什麼的,可以參照詳細的協議。 可以看到在所以的通訊過程中,主機都是發起者,不管是主機傳送資料到usb裝置還是usb裝置傳送資料到主機,都必須收主機控制。

圖二為一次事務的過程。       

令牌階段   ——>  資料階段  ——>  握手階段          

圖二 這個過程可以這樣描述,甲和乙對話,甲是老闆,乙是職員。第一節已經講過了,乙面試就是列舉,在這個過程中,甲多段的傳送step令牌包給乙,乙收到後如果要反饋資料,就發資料報給甲,甲正確接收後,跟甲握握手,表示這次對話成功。 乙被正式錄取後,甲會分派任務(out),這時甲對乙說有任務給你(令牌階段),然後乙 就開始聽,甲說你的任務就是記錄資料並且上報(這段話就是資料報),乙說好的(握手包)。 乙開始正式工作,並且記錄資料。過了一段時間,甲開始要求提交資料(in),乙把資料報告給甲(資料階段),甲說好(握手成功)。這裡乙不能主動的去向老闆匯報,只能被動的幹活。

USB工作原理

usb的工作原理及資料報格式 一 概述 對於usb的工作我這裡做個比方,主機好比乙個公司,你就是usb裝置,要進入公司首先要面試 列舉 你到了面試現場 第一次插入裝置 面試官首先了解到你的外表,性別已經你要應聘的崗位 裝置描述符 然後給你乙個號,以後就開始按號叫人,當你被叫到就開始問你的專業知識,性...

usb轉串列埠工作的準備工作

以防忘記,記錄下來,需要用到的東西及技術或環境。1 usb轉串列埠線,剛taobao了乙個,還沒寄來 至於我前面文章提到的有三種模組,以後需要的話再買其他模組的線吧 2 安裝ubuntu系統,暉哥說,要給我個專門的pc機做,周一去搞搞吧,本來想在筆記本上裝的 3 把我的arm板拿公司去,測試時候會用...

簡述hdfs工作原理 HDFS的工作原理

hdfs 的工作原理 hadoop 分布式檔案系統 hdfs 是一種被設計成適合執行在通用硬體上的分布式檔案系統。hdfs 是乙個高度容錯性的系統,適合部署在廉價的 機器上。它能提供高吞吐量的資料訪問,非常適合大規模資料集上的應用。要理解 hdfs 的內部工作原理,首先要理解什麼是分布式 檔案系統。...