和菜鳥一起學linux匯流排驅動之初識USB系統結構

2021-06-08 21:00:47 字數 1064 閱讀 6672

主機host控制器和乙個根hub,然後下面可以接很多的裝置,也可以繼續接hub,然後hub下面還可以接裝置,接下乙個hub,一直往下。對於usb匯流排,最多只能接127個裝置。

usb的主控制器主要負責處理主機和裝置之間的電氣和協議層的互聯。主要有ohci、uhci(usb1.0)、hci(usb2.0)。

usb的集線器就是hub,主機就有乙個自帶的hub,這個稱為根hub,而根hub可以接很多裝置,也可以接子hub。

usb裝置就是我們常說的u盤啊,usb滑鼠之類的了。

usb裝置的邏輯結構由4個層次組成,分別是裝置,配置,介面和端點。裝置通常有乙個或多個配置,配置通常有乙個或多個介面,介面有零或多個端點。

在usb裝置中,每個裝置都可以包含乙個或者多個配置,不同的配置使裝置表現出不同的功能組合,配置由多個介面組成。介面由多個端點組成,代表乙個基本的功能,是usb裝置驅動程式控制的物件,乙個功能複雜的usb裝置可以具有多個介面,而介面是端點的匯集。

usb裝置中的唯一可以定址的部分那便是裝置端點了,她是位於usb裝置或主機上的乙個資料緩衝區,用來存放和傳送usb的各種資料。主機和裝置的通訊最終作用於裝置上的各個端點,她是主機和裝置間通訊流的乙個邏輯終端。

每個usb裝置有乙個唯一的位址,這個位址是在裝置連上主機時,由主機分配的,而裝置中的每個端點在裝置內部有唯一的端點號,這個端點號是在設計裝置時給定的。每個端點都是乙個簡單的連線點,或者支援資料流裝置,或者支援其流出裝置。

在裝置被列舉的時候,她必須向主機報告各個端點的特性,包括端點號,通訊方向,端點支援的最大包大小,頻寬要求。每個裝置必須有端點0,她是用來裝置列舉和對裝置進行一些基本的控制功能的。除了端點0,其餘的端點在裝置配置之前不能與主機通訊,只有向主機報告這些端點的特性並被確認後才能啟用。

有人把usb匯流排比喻為高速公路,收發的資料就像汽車一樣,來來往往,而usb的端點,就是高速公路收費口的入口或者出口。

和菜鳥一起學linux匯流排驅動之初識USB裝置列舉

每次當插上滑鼠或者u盤的時候,電腦是怎麼知道是什麼裝置的呢?那就需要列舉了,列舉,其實就是讓host認識這個usb涉筆,並且為該裝置準備資源,建立好主機和裝置之間的資料傳遞機制。usb裝置列舉過程可以分為8個部分 1 獲取裝置描述符 2 復位 3 設定位址 4 再次獲取裝置描述符 5 獲取配置描述符...

和菜鳥一起學linux之本地git中心倉庫建立

昨天把gpio模擬spi控制wm8768 codec實現了,於是要提交 也終於知道了怎麼簡單用git倉庫了,以前一直是叫同事幫忙的,總覺得自己也得好好學一下啊。上傳了 之後就覺得其實也不是很難的嘛。早上在老薑的指導下,終於知道了怎麼在本地建立乙個git中心倉庫,用來管理 好了,下面把所學的分享下,也...

和菜鳥一起學linux之本地git中心倉庫建立

1 首先建立乙個資料夾用以測試 2 在test中寫入乙個main.c的檔案 其內容如下 3 然後就建立乙個git倉庫了 4 然後就是把內容加進去了,上傳上去 5 然後我們看下git log的資訊 6 有東西了吧?說明上傳好了。然後就是要在建立乙個git中心倉庫repos了。他是clone了剛剛那個g...