1. 程式人生 > >USB匯流排學習心得及資料

USB匯流排學習心得及資料

看了一下usb協議資料,對usb原理有了一個簡單的瞭解。

usb匯流排和pci匯流排一樣,匯流排的作用都是提供通道,各種裝置利用匯流排通道來實現自己的功能。

  • usb匯流排的主要特點:是一個星形的共享性匯流排,匯流排控制器逐個的詢問總線上的裝置是否需要資料收發,如果有資料需要傳輸則賦予裝置操作匯流排的令牌。

  • usb匯流排的星形拓撲結構:

這裡寫圖片描述

  • usb裝置的組織結構:星形總線上的每個usb裝置都有一個自己的device address來標示自己,以區分出host是在和誰通訊。device內部進一步細分為多個端點(endpoint),usb通訊的基本單位就是端點,0號端點是控制用的,其他還有哪些端點是從0號端點中讀出的配置資訊知曉的。

  • usb裝置的內部邏輯:一組端點(endpoint)可以組成一個介面(interface),每個介面需要一個配置一個(configuration),多個介面可能共一個配置,所以一個配置可以對應多個介面,每個裝置有一個描述符(descriptor)。

  • usb的匯流排列舉和配置過程:usb host需要給總線上的裝置分配不同的地址才不會衝突,usb的星形拓撲連線裝置都是通過hub的埠連結到總線上的。匯流排初始化列舉裝置時,usb裝置的地址都是預設地址0,但是hub的埠都是關閉的所以並不產生裝置衝突,host逐個開啟hub的埠,逐個利用開啟埠上裝置的預設地址0來配置裝置,給其分配新的地址,從endpoint 0中讀出裝置的配置並設定。在執行過程中usb裝置的熱插拔也是和這類似的。

  • usb的驅動結構層次:最底層是usb控制器驅動HCD(Host Controller Driver),負責操作usb host;中間一層是usb核心層,usb根據hcd提供的介面實現usb匯流排通用層,向下配置初始化裝置,向上提供endpoint等級的操作介面;最上一層是usb功能性驅動,根據usb匯流排層提供的endpoint通訊能力,實現具體的業務,比如usb磁碟驅動、usb音效卡驅動、usb網絡卡驅動等等。

這裡寫圖片描述

  • usb的規格和速率:
USB 3.0 超高速SuperSpeed 5Gbps 約500MB/S(5000 Mbit/s)
USB 2.0 高速Hi-Speed 480Mbps 約60MB/S(60,000KB/S)
USB 1.1 全速Full Speed 12Mbps 約1.5MB/S(1,500KB/S)
USB 1.0 低速Low Speed 1.5Mbps 187.5KB/S(192000Bytes/S)
  • usb host控制器分類:

usb1.0有兩種控制器標準:OHCI康柏的開放主機控制器介面,UHCI Intel的通用主機控制器介面。它們的主要區別是UHCI更加依賴軟體驅動,因此對CPU要求更高,但是自身的硬體會更廉價。
usb2.0只有一種控制器標準:EHCI。因為EHCI只支援高速傳輸,所以EHCI控制器包括四個虛擬的全速或者慢速控制器。

  • 參考資料:

附件: usb匯流排協議.rar
附件: usb匯流排控制器.rar
附件: usb網上相關資料.rar

相關推薦

USB匯流排學習心得資料

看了一下usb協議資料,對usb原理有了一個簡單的瞭解。 usb匯流排和pci匯流排一樣,匯流排的作用都是提供通道,各種裝置利用匯流排通道來實現自己的功能。 usb匯流排的主要特點:是一個星形的共享性匯流排,匯流排控制器逐個的詢問總線上的裝置是否需要資料收

FPGA學習心得(flash讀寫,+lwip+資料傳送等問題)

前段時間應老闆的專案需求,對硬體絲毫不懂得我開始接觸edk硬體程式設計,感覺這段時間跟硬體打交道,自己都老了不少。首先,硬體程式設計編譯很慢,編譯一次有時候得10-20分鐘,尤其是用verilog寫得程式比較大的時候。其次,除錯非常麻煩,不能像利用c或者c#那樣斷點除錯了,

20165221 JAVA第一周學習心得體會

文件中 其中 代碼 簡易 碼雲 不常用 應用 標準 www. JAVA入門的理論學習 在JAVA2使用教程的網課學中,分為以下幾個模塊講解的 JAVA的地位 JAVA的特點 安裝JDK(Java Develepement Kit) Java程序的開發步驟 簡單的Java應

Linux基礎入門---學習心得資料學習|小白學習資料需要滿足這六個條件你就能學好大資料

有很多學習大資料的朋友,在初期學習時,通常會對如何學習而感到迷茫。我經常收到零基礎的朋友關於如何入門、如何規劃學習大資料、大資料的學習流程是什麼的一些問題。今天我就粗淺的總結幾點學習大資料方法。 一、興趣建立 興趣是可以讓一個人持續關注一個事物的核心動力,那麼興趣的培養就非常重要了。如果你把寫程式單純作為

學習筆記之——基於pytorch的SFTGAN(xintao程式碼學習資料處理部分的學習

程式碼的框架仍然是——《https://github.com/xinntao/BasicSR》 給出SFTGAN的論文《Recovering Realistic Texture in Image Super-resolution by Deep Spatial Feature Transfo

springMVC學習心得手寫springMVC簡單實現

springMVC學習心得及手寫springMVC簡單實現 Spring 是一個企業級開發框架,為解決企業級專案開發過於複雜而建立的,框架的主要優勢之一就是分層架構,允許開發者自主選擇元件。 Spring 的兩大核心機制是 IoC(控制反轉)和 AOP(面向切面程式設計),從開發的角度

小程式學習心得資料繫結技巧

1 在template中可以通過物件的賦值形式來對template中的data傳值 <template is="starsTemplate" data="{{stars:stars, score: average}}" /> 2 …的運用

SVM的一些學習心得案例(Python程式碼)實現

1、基本概念 向量的內積即一個向量在另一個向量上的投影乘上被投影向量的模,上圖不管是a投影在b上,還是b投影在a上,其結果是一樣的,原理參照 B站上 a∙b = (a1e1 + a2e2)∙(b1e1 + b2e2)            = a1b1e1e1 

qt學習心得總結

其實自己在用qtcreator開發有很久了,只知道怎麼去使用deisgner設計介面,怎樣用assistant手冊查詢自己需要的知識解決專案上需要完成的問題,並沒有去真正的去了解這個qt底層是呼叫什麼;在window和linux、android、ios等作業系統都可用他開發

結對學習心得感想創意照

領導 隊友 成員 href 心得 兩個人 div -m 約束 一、基於軟件工程講義 3 兩人合作(2) 要會做漢堡包和現代軟件工程講義 3 結對編程和兩人合作的一點感想——如何和隊友配合好,結對學習共同進步? 1、不同的學習夥伴,不同的交流方法 在鄒欣老師的博客裏,提到了結

學習心得之Zblog選擇數據庫版本Sql server2012數據庫自增量跳躍1000問題

Sql server2012 數據庫 ZBLOG 博客 學習心得讀書筆記:今天我學習的是關於ZBLOGASP2.2版本程序搭載數據庫的事項,因為最近幾年一直在寫博客,因此對於這套系統的的早期版本還是比較熟悉的,但是對於新版本和新數據庫就沒怎麽了解了。尤其是搭載MS-SQL數據庫或者PHP程序配

【知識小結】Git 個人學習筆記心得

art over round TP 緩存 PE QQ 的區別 rda https://mp.weixin.qq.com/s/D96dXYfu3XAA4ac456qo0g git架構 工作區:就是你在電腦裏能看到的目錄。 版本庫:工作區有一個隱藏目錄.git,,而是

廖雪峰JavaScript學習筆記(基礎資料型別、變數)

先睹為快 alert('我要學JavaScript!'); Run: 基本語法: 1.每個語句以;結束,不強制 2.語句塊用{...} 3.//單行註釋,/*...*/ 多行註釋 資料型別: 1.不區分整數,浮點數,統一用number~ 以下也屬於number型別~ NaN;

【2】Caffe學習系列:資料引數

要執行caffe,需要先建立一個模型(model),如比較常用的Lenet,Alex等, 而一個模型由多個屋(layer)構成,每一屋又由許多引數組成。所有的引數都定義在caffe.proto這個檔案中。要熟練使用caffe,最重要的就是學會配置檔案(prototxt)的編寫。 層有很多種型別,

javascript學習01——javascript變數資料型別

1.變數命名規則: 變數必須以字母開頭 變數也能以 $ 和 _ 符號開頭(不過我們不推薦這麼做) 變數名稱對大小寫敏感(y 和 Y 是不同的變數) 提示:JavaScript 語句和 JavaScript 變數都對大小寫敏感。 向變數分配文字值時,應該用雙

IDEA JSP專案構建學習心得

  近期學習的東西比較雜亂,導致了很多東西都有些忘卻。在這裡記錄一份心得。 簡而言之JSP也就是Java程式碼在頁面上的一種呈現方式,用於Web專案的前臺展示。 在這裡不做過多的闡述。 MVC設計模式,Servlet充當的是控制器,控制專案的顯示  M 模型 V 檢視。 專案暫時

學習Python的入門建議資料分享

以前好多人使用matlab(octave)做機器學習的,吳恩達老師以前在機器學習課也是用matlab(octave),但近幾年,python已經成為機器學習熱門的工具,吳恩達老師的深度學習課程已經用python3.6了,時代在進步,識時務者為俊傑,為了理解和應用機器學習技術,以及進行資料分析,你需要

C++基礎教程面向物件學習筆記心得感悟[圖]

C++基礎教程面向物件學習筆記及心得感悟[圖] 使用友元函式過載算術運算子: C ++中一些最常用的運算子是算術運算子 - 即加號運算子(+),減運算子( - ),乘法運算子(*)和除法運算子(/)。請注意,所有算術運算子都是二元運算子 - 這意味著它們需要兩個運算元 - 運算子的每一側都有一個運算

分享雲人工智慧的一些學習資源和學習心得

    很久沒寫新的東西了。這段時間除了適應新的工作,其他時間都獻給了各種學習~ 在這個提倡終身學習的年代,面對急劇更新的IT行業,不學點雲端計算和人工智慧啥的,總感覺會被時代拋棄。     所以,終於找到個空閒時間,在有WiFi的“復興號”上開始一

先看題後學習之JavaScript的記憶體空間資料型別

  看到這道題時候你會想到什麼? 好多賦值啊~~~~ 從哪裡入手啊!別怕,開始compiling 思考: 當看到這個題的時候,我們需要考慮到這個考察重點是哪方面,如這道題,從這5行中,大致可能想到:JS變數、賦值、資料型別 前兩行中進行變數賦值,這就可以聯想到js的資