新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 嵌入式Linux的USB驅動設計

        嵌入式Linux的USB驅動設計

        作者: 時間:2012-02-09 來源:網絡 收藏

        摘要:本文主要介紹了平臺的設備開發的一般步驟方法和技巧,通過詳細介紹的相關概念和設備程序的數據結構,框架和步驟,并通過和實現一個的實例,總結了USB驅動的一般方法和技巧。
        關鍵詞:USB ;設備驅動程序;系統

        隨著計算機外圍硬件的擴展,各種外圍設備使用不同的總線接口,導致計算機外部各種總線繁多,管理困難,USB總線可以解決這些問題,因此而誕生。USB總線提供統一的外設的接口方式,并且支持熱插拔,方便了廠商開發設備和用戶使用設備。USB(通用串行總線)是由Microsft,Compad,Inter和NEC等推出的外圍總線接口,目前已發展到2.0標準最高支持480Mb/s的速率,最多可以支持127個外設。
        Linux是一款源代碼完全免費的新興操作系統,用戶可以用戶可以通過網絡等其他途徑免費獲得,并可以任意修改其源代碼,這是其他的操作系統做不到的。正是由于這一點,Linux得到了廣泛的應用。

        1 Linux中USB設備驅動程序框架及數據結構
        1.1 USB的體系結構
        USB接口標準支持外部設備和主機之間進行數據傳送。在USB結構中主機頂設各種類型外設使用的總線寬度。當外設和主機在運行時,USB總線允許使用,設置,添加和拆除外設。
        在USB體系結構中一個USB系統可以分成USB設備、USB主機和USB互聯3個部分。USB互聯是USB設備和USB主機之間進行連接通信的操作,主要包括:
        1)總線拓撲結構:UsB主機和USB設備之間的連接方式;
        2)數據流模式:描述USB通信系統數據如何從產生方傳遞到使用方;
        3)USB調度:USB總線是一個共享連接,對可以使用的連按進行調度以支持同步數據傳輸,并避免優先級判斷的開銷。
        USB的物理連接是有層次的星型結構,如圖1所示。

        本文引用地址:http://www.104case.com/article/149731.htm

        a.jpg


        從圖中可以看出USB集線器在一個節點上連接多個設備,每條線段都是點點連接,每個USB集線器在星形的中心。從主機到設備或者USB集線器,或USB集線器到設備都是點點連接。
        1.2 USB驅動程序的結構
        USN總線在技術層面上是非常簡單的,它是一個單主方式實現的,主機輪詢各種不同的外圍設備,USB另外一個重要的特性是它只擔當設備和主控制器之間通訊通道的角色,對所發送的數據沒有任何特殊的內容和結構上的要求。
        Linux支持兩種類型的USB驅動,宿主系統上的驅動程序和設備上的驅動程序。宿主USB驅動程序控制插入其中的USB設備,而USB設備的驅動程序控制設備如何作為一個USB設備和主機通訊。這里主要討論設備驅動。

        b.jpg


        USB的基本通信的形式基本通過端點的東西。USB端點只能往一個方向傳輸數據,從主機到設備或從設備到主機。USB端點分別具有不同的傳輸數據的方式,他們有4種類型,分別是:1)控制端點用來控制對USB設備不同部分的訪問。他們用于配置設備,獲取設備信息,獲取設備的狀態報告,發送命令到設備。它是一種非周期性的可靠的傳輸。2)中斷端點就是設備傳輸數據時以一個固定的速率來傳輸少量的數據。這些端點是鼠標和USB鍵盤所使用的主要傳輸方式。它通常用于發送數據到USB設備以控制設備,一般不用來傳輸大量數據。USB協議保證這些傳輸有足夠的保留帶寬來傳輸數據。3)等時端點同樣可以傳輸大批量的數據,但數據是否到達沒有保障,這些端點用于可以應付數據丟失的情況,這類設備更注重于保持一定的恒定的數據流,實時的數據收集都使用這類端點。4)批量端點傳輸大量的數據。這些端點通常比中斷端點大的多他們常用于需要確保沒有數據丟失的傳輸設備。USB協議不保證這些傳輸始終可以在特定的時間內完成。如果總線上的空間不足以發送整個批量包。它將被分割為多個包進行傳輸。
        當一個USB設備連接到主機時,主機會給這個設備分配一個1~127之間的唯一的設備號同時讀取該設備的描述符,該設備描述符是描述設備信息及其屬性的數據結構,USB以一種層次化的結構定義設備的描述符,設備描述符給出了USB設備的一般信息,包括對設備及所有設備配置起全程作用的信息,一個USB設備只能有一個設備描述符,配置描述符中的信息與設備特定的配置相關,一個USB設備可以有一個或多個配置描述符,每一個配置描述符又由一個或多個接口描述符組成,接口描述符的信息是與設備驅動程序的開發密切相關,可以一個接口對應一個設備驅動程序也可以多個接口對應一個設備驅動程序,接口描述符由零個或多個端點描述符組成,端點描述符定義了在一個給定的設備里實現的實際寄存器,這些描述符定義了每個寄存器的功能和特定的信息如端點要求的傳輸類型、傳輸方向、帶寬要求、查詢間隔等。另外,還有一個可選的宇符串描述符,它以UNCOND碼的格式給出了一些可讀的信息,這些信息通常是有關設備生產廠商、設備名設備序列號等,通過這些不同層次的描述符,主機設備驅動程序就可以知道具體設備的相關信息,從而對設備進行相應控制。

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

        上一頁 1 2 3 4 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 宾川县| 资兴市| 五家渠市| 洪雅县| 三明市| 屯门区| 乐安县| 松滋市| 吴旗县| 石林| 西乡县| 股票| 梨树县| 亳州市| 信丰县| 从江县| 梧州市| 金阳县| 清流县| 柳林县| 当雄县| 平顶山市| 社旗县| 姜堰市| 商都县| 若尔盖县| 安溪县| 闵行区| 安康市| 武川县| 宾阳县| 静海县| 孝感市| 蓬溪县| 印江| 屏边| 鄂托克前旗| 灌阳县| 金堂县| 剑川县| 铜梁县|