<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主/從設備之間的三種通信方式

基于Linux的USB主/從設備之間的三種通信方式

作者: 時(shí)間:2013-10-26 來(lái)源:網(wǎng)絡(luò ) 收藏

  隨著(zhù)簡(jiǎn)單易用的接口日益流行,在嵌入式系統中添加對接口的支持已成為大勢所趨。本文通過(guò)介紹中支持的各種模塊和庫,分析了在上利用USB實(shí)現高速串口和以太網(wǎng)連接等的具體方法。

本文引用地址:http://dyxdggzs.com/article/237696.htm

  通用串行總線(xiàn)(USB,Universal Serial Bus)是一種非常實(shí)用的通信接口,其應用日益廣泛。有三種方法可以使運行操作系統的嵌入式系統支持USB接口,本文將對這三種方法逐一進(jìn)行介紹。

  基于Linux的USB設備與USB主機一般有以下三種:1.一些功能最完備結構也最復雜的設備采用用戶(hù)定制內核模塊來(lái)實(shí)現在標準USB總線(xiàn)上運行復雜的高級協(xié)議,而由USB主機上相應的用戶(hù)驅動(dòng)程序和應用來(lái)完成連接。2.另一些基于Linux的USB設備則利用USB總線(xiàn)來(lái)實(shí)現與主機上所運行的某個(gè)應用的簡(jiǎn)單的點(diǎn)對點(diǎn)串行連接。主機上的應用雖然利用了主操作系統所提供的USB編程接口,但表面看來(lái)卻似乎是在通過(guò)一個(gè)典型的串口進(jìn)行通信。3.最后,還有些設備以主計算機作為網(wǎng)關(guān),將USB設備連接到辦公局域網(wǎng)或互聯(lián)網(wǎng)上,從而使USB設備看起仿佛構成了一個(gè)以太網(wǎng)。這種方法專(zhuān)業(yè)性較強,但通??尚?,是主機驅動(dòng)程序使該方法成為可能。

  在這三種方法中,您可以根據預留給開(kāi)發(fā)的時(shí)間長(cháng)短和期望USB接口在嵌入式應用中所扮演的角色來(lái)決定選用那一種方法比較恰當。為了幫助您做出正確的選擇,下一節將向您介紹這三種方法分別應用于基于Linux的USB設備時(shí)的情況,但首先讓我們對USB接口做一個(gè)大致介紹。

USB概述

  USB是一種方便快捷的接口,可用于為計算機工作站連接一些小配件。根據USB規范的定義,鼠標、鍵盤(pán)、音頻播放和錄音設備、照相機、大容量存儲設備以及許多其他設備均可以通過(guò)USB接口,以高達480Mbps的速度連接到一臺主計算機。協(xié)議定制者對USB上運行的這種復雜的主從式協(xié)議做出了仔細的說(shuō)明,這就幫助保證了所有這些設備之間具備互操作性和兼容性。例如,該協(xié)議規定,USB設備只有在被詢(xún)問(wèn)時(shí)才可以回答,并且USB主機會(huì )根據所連接的USB設備類(lèi)型的不同,采用某些特定的格式,在某些特定的時(shí)間段從不同的設備獲取數據。

  USB 設備和主機之間通常通過(guò)專(zhuān)用的總線(xiàn)控制芯片建立連接。在USB主機上,名為UHCI或OHCI等的控制芯片通過(guò)插卡形式加入主機或直接集成到工作站的主板上。在主機一端的總線(xiàn)控制驅動(dòng)程序管理著(zhù)主機控制芯片,它同時(shí)還跟蹤監視著(zhù)主機目前連接的是哪些USB設備,從而決定應如何與它們通信。

  可用于連接照相機和鼠標之類(lèi)USB設備的總線(xiàn)控制器有很多種。其中的一種就在一塊芯片上同時(shí)集成了USB接口以及另一端的串口、I2C接口或并口。USB控制器(包括主機上的和USB設備上的控制器)也可能集成到英特爾StrongARM或 Hitachi H8之類(lèi)的微控制器中去。這些芯片及其外圍部件有點(diǎn)類(lèi)似以太網(wǎng)和CAN控制器,不同的是他們用于連接USB設備,并運行USB協(xié)議。

  很多人都知道Linux操作系統中包含了USB主機控制器的驅動(dòng)程序,因而USB鍵盤(pán)、數碼相機以及其他一些USB設備都可以在一個(gè)運行Linux操作系統的桌面工作站上使用。但很少有人知道Linux中還包含了一組USB設備控制器的驅動(dòng)程序,尤其是集成到StrongARM SA1110處理器中的控制器。有了這些控制器驅動(dòng)程序,基于Linux的嵌入式系統就能利用USB接口來(lái)與主計算機(運行Linux或其他操作系統)通信。大多數USB通信的實(shí)現過(guò)程都是雙端的。主機利用一個(gè)內核模塊或驅動(dòng)程序來(lái)與USB設備通信,而USB設備則通過(guò)其自身的驅動(dòng)程序來(lái)與主機通信。根據主機和USB設備所采用的通信風(fēng)格的不同,驅動(dòng)程序可以很簡(jiǎn)單明白,也可以很復雜,很具挑戰性。本文主要關(guān)注USB設備端的通信過(guò)程,但也在適當的地方包含了關(guān)于主機端通信過(guò)程實(shí)現的信息。

  以下討論的技術(shù)應當引起讀者的注意。本文的目的是介紹如何在數碼相機和PDA等基于Linux的 USB設備上使用Linux。此處所指的USB設備是嚴格意義上的USB設備,即帶正方形連接器的完整的設備,而不是哪些連接器形狀為扁平矩形的設備。此外,USB連接的另一端(通常是一臺PC工作站),應該是一臺USB主機。

  關(guān)于USB信息包的格式和通信參數的詳細信息,見(jiàn)本文的參考文獻。

通過(guò)編寫(xiě)內核模塊添加USB接口

1. USB設備端通信過(guò)程

  向一個(gè)基于Linux的設備中添加USB接口的第一種方法是編寫(xiě)一個(gè)用戶(hù)定制的Linux內核模塊,這也是可實(shí)現最完備功能的一種做法。采用這種方法時(shí)通常需要針對主機的操作系統(Windows, Linux等)開(kāi)發(fā)相應的驅動(dòng)程序。  

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

linux相關(guān)文章:linux教程



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

關(guān)鍵詞: 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>