<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 詳解嵌入式Linux的USB驅動(dòng)設計

詳解嵌入式Linux的USB驅動(dòng)設計

作者: 時(shí)間:2014-01-22 來(lái)源:網(wǎng)絡(luò ) 收藏
隨著(zhù)計算機外圍硬件的擴展,各種外圍設備使用不同的總線(xiàn)接口,導致計算機外部各種總線(xiàn)繁多,管理困難,USB總線(xiàn)可以解決這些問(wèn)題,因此而誕生。USB總線(xiàn)提供統一的外設的接口方式,并且支持熱插拔,方便了廠(chǎng)商開(kāi)發(fā)設備和用戶(hù)使用設備。USB(通用串行總線(xiàn))是由Microsft,Compad,Inter和NEC等推出的外圍總線(xiàn)接口,目前已發(fā)展到2.0標準最高支持480Mb/s的速率,最多可以支持127個(gè)外設。

  嵌入式是一款源代碼完全免費的新興操作系統,用戶(hù)可以用戶(hù)可以通過(guò)網(wǎng)絡(luò )等其他途徑免費獲得,并可以任意修改其源代碼,這是其他的操作系統做不到的。正是由于這一點(diǎn),得到了廣泛的應用。

  1 中USB設備驅動(dòng)程序框架及數據結構

  1.1 USB的體系結構

  標準支持外部設備和主機之間進(jìn)行數據傳送。在USB結構中主機頂設各種類(lèi)型外設使用的總線(xiàn)寬度。當外設和主機在運行時(shí),USB總線(xiàn)允許使用,設置,添加和拆除外設。

  在USB體系結構中一個(gè)USB系統可以分成USB設備、USB主機和USB互聯(lián)3個(gè)部分。USB互聯(lián)是USB設備和USB主機之間進(jìn)行連接通信的操作,主要包括:

  1)總線(xiàn)拓撲結構:UsB主機和USB設備之間的連接方式;

  2)數據流模式:描述USB通信系統數據如何從產(chǎn)生方傳遞到使用方;

  3)USB調度:USB總線(xiàn)是一個(gè)共享連接,對可以使用的連按進(jìn)行調度以支持同步數據傳輸,并避免優(yōu)先級判斷的開(kāi)銷(xiāo)。

  USB的物理連接是有層次的星型結構,如圖1所示。

詳解嵌入式Linux的USB驅動(dòng)設計

圖1 USB體系拓撲結構圖

  從圖中可以看出USB集線(xiàn)器在一個(gè)節點(diǎn)上連接多個(gè)設備,每條線(xiàn)段都是點(diǎn)點(diǎn)連接,每個(gè)USB集線(xiàn)器在星形的中心。從主機到設備或者USB集線(xiàn)器,或USB集線(xiàn)器到設備都是點(diǎn)點(diǎn)連接。

  1.2 程序的結構

  USN總線(xiàn)在技術(shù)層面上是非常簡(jiǎn)單的,它是一個(gè)單主方式實(shí)現的,主機輪詢(xún)各種不同的外圍設備,USB另外一個(gè)重要的特性是它只擔當設備和主控制器之間通訊通道的角色,對所發(fā)送的數據沒(méi)有任何特殊的內容和結構上的要求。

  Linux支持兩種類(lèi)型的,宿主系統上的驅動(dòng)程序和設備上的驅動(dòng)程序。宿主程序控制插入其中的USB設備,而USB設備的驅動(dòng)程序控制設備如何作為一個(gè)USB設備和主機通訊。這里主要討論設備驅動(dòng)。

  USB的基本通信的形式基本通過(guò)端點(diǎn)的東西。USB端點(diǎn)只能往一個(gè)方向傳輸數據,從主機到設備或從設備到主機。USB端點(diǎn)分別具有不同的傳輸數據的方式,他們有4種類(lèi)型,分別是:1)控制端點(diǎn)用來(lái)控制對USB設備不同部分的訪(fǎng)問(wèn)。他們用于配置設備,獲取設備信息,獲取設備的狀態(tài)報告,發(fā)送命令到設備。它是一種非周期性的可靠的傳輸。2)中斷端點(diǎn)就是設備傳輸數據時(shí)以一個(gè)固定的速率來(lái)傳輸少量的數據。這些端點(diǎn)是鼠標和USB鍵盤(pán)所使用的主要傳輸方式。它通常用于發(fā)送數據到USB設備以控制設備,一般不用來(lái)傳輸大量數據。USB協(xié)議保證這些傳輸有足夠的保留帶寬來(lái)傳輸數據。3)等時(shí)端點(diǎn)同樣可以傳輸大批量的數據,但數據是否到達沒(méi)有保障,這些端點(diǎn)用于可以應付數據丟失的情況,這類(lèi)設備更注重于保持一定的恒定的數據流,實(shí)時(shí)的數據收集都使用這類(lèi)端點(diǎn)。4)批量端點(diǎn)傳輸大量的數據。這些端點(diǎn)通常比中斷端點(diǎn)大的多他們常用于需要確保沒(méi)有數據丟失的傳輸設備。USB協(xié)議不保證這些傳輸始終可以在特定的時(shí)間內完成。如果總線(xiàn)上的空間不足以發(fā)送整個(gè)批量包。它將被分割為多個(gè)包進(jìn)行傳輸。

  當一個(gè)USB設備連接到主機時(shí),主機會(huì )給這個(gè)設備分配一個(gè)1~127之間的唯一的設備號同時(shí)讀取該設備的描述符,該設備描述符是描述設備信息及其屬性的數據結構,USB以一種層次化的結構定義設備的描述符,設備描述符給出了USB設備的一般信息,包括對設備及所有設備配置起全程作用的信息,一個(gè)USB設備只能有一個(gè)設備描述符,配置描述符中的信息與設備特定的配置相關(guān),一個(gè)USB設備可以有一個(gè)或多個(gè)配置描述符,每一個(gè)配置描述符又由一個(gè)或多個(gè)接口描述符組成,接口描述符的信息是與設備驅動(dòng)程序的開(kāi)發(fā)密切相關(guān),可以一個(gè)接口對應一個(gè)設備驅動(dòng)程序也可以多個(gè)接口對應一個(gè)設備驅動(dòng)程序,接口描述符由零個(gè)或多個(gè)端點(diǎn)描述符組成,端點(diǎn)描述符定義了在一個(gè)給定的設備里實(shí)現的實(shí)際寄存器,這些描述符定義了每個(gè)寄存器的功能和特定的信息如端點(diǎn)要求的傳輸類(lèi)型、傳輸方向、帶寬要求、查詢(xún)間隔等。另外,還有一個(gè)可選的宇符串描述符,它以UNCOND碼的格式給出了一些可讀的信息,這些信息通常是有關(guān)設備生產(chǎn)廠(chǎng)商、設備名設備序列號等,通過(guò)這些不同層次的描述符,主機設備驅動(dòng)程序就可以知道具體設備的相關(guān)信息,從而對設備進(jìn)行相應控制。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

上一頁(yè) 1 2 3 下一頁(yè)

關(guān)鍵詞: USB驅動(dòng) Linux USB接口

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>