![usb設備的從動端分析與應用設計—固件程序設計_第1頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/20/c5fdef1c-e800-475f-8a12-478256b95298/c5fdef1c-e800-475f-8a12-478256b952981.gif)
![usb設備的從動端分析與應用設計—固件程序設計_第2頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/20/c5fdef1c-e800-475f-8a12-478256b95298/c5fdef1c-e800-475f-8a12-478256b952982.gif)
![usb設備的從動端分析與應用設計—固件程序設計_第3頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/20/c5fdef1c-e800-475f-8a12-478256b95298/c5fdef1c-e800-475f-8a12-478256b952983.gif)
![usb設備的從動端分析與應用設計—固件程序設計_第4頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/20/c5fdef1c-e800-475f-8a12-478256b95298/c5fdef1c-e800-475f-8a12-478256b952984.gif)
![usb設備的從動端分析與應用設計—固件程序設計_第5頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/20/c5fdef1c-e800-475f-8a12-478256b95298/c5fdef1c-e800-475f-8a12-478256b952985.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、usb設備的從動端分析與應用設計固件程序設計usb設備的從動端分析與應用設計固件程序設計usb設備的從動端分析與應用設計固件程序設計畢業(yè)論文論文題目: USB設備的從動端分析與應用設計 固件程序設計 學 院: 計算機科學技術學院 摘 要 USB(Universal Serial Bus通用串行總線)是計算機領域中一種全新的工業(yè)標準,其技術和產品正在迅猛的發(fā)展中。因此,研究USB總線的體系架構和開發(fā)技術很有必要。本文在實驗室現有硬件和軟件基礎上,研究了USB的接口規(guī)范和軟硬件開發(fā)方法,并應用于實際,設計出了用USB實現的溫度采集系統(tǒng)。 本文圍繞設計目標,在簡要敘述USB1.1總線協議的基礎上,主
2、要論述了兩個方面的內容:固件程序的開發(fā)和DS1620的使用方法。設備以AT89S52單片機作為控制器,Philips公司的PDIUSBD12作USB收發(fā)器,用DALLAS公司的DS1620進行溫度采集,采用中斷數據傳輸方式實現數據傳輸。關 鍵 詞USB;WDM; PDIUSBD12;溫度采集; DS1620 ABSTRACTUSB(Universal Serial Bus) is a completely new industry standard in the field of computer. Its technology and product are tremendously dev
3、eloping. Therefore, It is necessary to research the frame and developing technology of USB. Based on the hardware and software that our laboratory is having, this paper researches the interface standard and software-hardware developing methods of USB, apply it into the actual environment, and design
4、ed the temperature collection system.Centering on the designing object, outlining the USB 1.1 protocol, this paper mainly expound two aspects of content: the developing of firmware program and employment of DS1620. Using AT89S52 as control appliance, PDIUSBD12 of Philips Corp. as USB receiving-trans
5、mitting appliance, the device collect temperature with DS1620 of DALLAS Corp., and adopt interrupt data transmitting to realize data transition. Key wordsUSB;WDM; PDIUSBD12;temperature collection; DS1620目 錄摘 要iABSTRACTii前 言1一、 本文研究的主要內容1二、 USB發(fā)展情況1三、 USB的設計目標2四、 USB的性能特點2四、 USB系統(tǒng)組成3(一) USB的互連3(二) US
6、B設備4(三) USB主機5第一章 USB數據傳輸協議6一、 USB電氣特征及電平信號6二、 USB數據流模型7(一) USB主機/設備分層模型7(二) 端點8(三) 管道9(三) 傳輸類型9三、 USB協議層11(一) 字段格式11(二) 包格式14(三) 事務格式15第二章 USB驅動程序概述17一、 WDM驅動程序模型簡介17二、 USB主機驅動程序體系結構19(一) 主機控制器驅動程序(HCD)19(二) USB總線驅動程序(USBD)20第三章 USB設備簡介22一、 硬件結構22(一) 帶USB接口的單片機23二、 PDIUSBD12通用USB收發(fā)器24(一) PDIUSBD12的
7、性能特點24(二) PDIUSBD12的功能框圖24(三) D12引腳配置及說明26三、 D12 USB固件編程概要26(一) 各端點在固件中的使用26(二) USB設備枚舉的數據傳輸過程28第四章 DS1620數字式溫度傳感器30一、 特性30二、 DS1620的3線通信模式30第五章 固件程序設計32一、 設計思路32二、 固件編程的實現概括和流程圖34(一) 硬件提取層EPPHAL.C35(二)PDIUSBD12命令接口D12CI.C35(三) 中斷服務程序ISR.C35(四) 協議層CHAP_9.C,PROTODMA.C39(五) 標準設備請求處理CHAP_9.C39(六) 廠商請求處
8、理PROTODMA.C41(七) 主循環(huán)MAINLOOP.C42結 論43致 謝44參考文獻45前 言一、 本文研究的主要內容 USB總線在各個領域中迅速得到應用,以取代老式的RS-232以及EPP并口等總線,研究USB總線有重要的實用價值。 然而,接口的簡單意味著協議的復雜,怎樣在現有的實驗條件下快速的使用USB總線開發(fā)應用設備便成了我們的研究目標。 在仔細分析了現有設備和源代碼的基礎上,我們設計實現了一個采用USB總線實現的溫度采集設備, 在下位機我們使用了DS1620數字式溫度傳感器,并在上位機設計了客戶服務程序,DS1620定時對室溫進行采集,可以實時監(jiān)視室內溫度。關鍵的一點是,其接口
9、使用了USB進行實現,可以適應未來機器多使用USB總線的需求。 由于本系統(tǒng)對數據傳輸的速度沒有太過苛刻的要求,因此我們使用了USB總線的控制傳輸方式。二、 USB發(fā)展情況 USB全稱為Universal Serial Bus(通用串行總線),是1994年底由IBM、Intel、Compaq、DEC、Microsoft、NEC和Northern Telecom共同開發(fā)的PC外設接口標準,由于其具有使用方便及成本低廉等優(yōu)點,迅速得到業(yè)界的強力支持,目前己經成為主流的總線標準,2001年USB設備出貨量已超過3億臺。 USB廣泛應用于傳統(tǒng)PC外設,如鼠標、鍵盤、顯示器等,移動存儲設備如移動硬盤、閃存
10、盤等,以及新興的消費類電子,如MP3播放器、數碼相機、移動電話等。同時其應用范圍也在不斷擴大,工業(yè)自動化儀器儀表正在成為USB應用的熱點之一。 USB最初推出的是1.X版本,其總線傳輸速度較低,為12Mbps,1998年推出了USB2.0,將數據傳輸速度提高到了480Mbps,在保持了USBI .1的優(yōu)點的基礎上,保證了向下兼容性,可以完全支持各種USB 1.x的產品。USB2.O滿足了高端應用對總線帶寬的需求,從2002年下半年起,采用USB2.O的設備開始大規(guī)模出現,預計2004年USB2.O整體出貨量將超過3億臺,超過USB1.1的出貨量。 隨著USB設備的迅速增加,設備與設備之間的直接
11、數據傳輸變得越來越迫切,USB OTG(ON THE GO)技術應運而生了,它于2001年12月底制定,賦予了設備雙重身份,即既可以作為主機,又可以作為設備,其實質是在設備中增加了一個嵌入式計算機來執(zhí)行主機任務。這一技術使USB設備擺脫了對PC的依賴,大大擴展了USB的應用范圍,并結合USB2.0高速傳輸技術,嚴重威脅到IEEE1394的市場。三、 USB的設計目標 USB的設計有三大目標: (1)計算機與電話之間的連接:對聲音音頻和壓縮視頻等實時數據給予充分支持,可以廣泛地連接計算機和電話,這一應用目標到目前為完全實現。 (2)易用性:強調即插即用、總線供電等特性,以方便用戶使用。 (3)端
12、口擴充:提供快速、雙向、統(tǒng)一且價格低廉的串行接口,可以滿足PC機發(fā)展的現在和未來的需要。 從中我們可以看出,USB標準的制定從市場出發(fā),立足于滿足用戶的實際應用需求,盡管它的性能指標并不突出,但正是這一點使得它獲得了極大的成功。四、 USB的性能特點(1) 終端用戶的易用性: ·為連接電纜和連接頭提供了單一模型; ·電氣特性與用戶無關; ·自我檢測外設,自動地進行設備驅動設置; ·可動態(tài)連接,動態(tài)重置外設。 (2) 廣泛的應用性: ·適應不同設備,提供低速傳輸(1.5Mbps)和全速傳輸(12Mbps ); ·支持對多個設備的同時操作
13、; ·可同時操作127個物理設備; ·在主機和設備之間可以傳輸多個數據和信息流; ·支持多功能的設備; ·利用低層協議,提高了總線利用率。 (3) 同步傳輸帶寬: ·確定的帶寬和低延遲適合電話系統(tǒng)和音頻的應用; ·同步工作可以利用整個總線帶寬。 (4) 靈活性: ·可以選擇一系列大小的數據包,允許對設備緩沖器大小進行選擇; ·通過指定數據緩沖區(qū)大小和執(zhí)行時間,支持各種數據傳輸率; ·通過協議對數據流進行緩沖處理。 (5) 健壯性: ·出錯處理/差錯恢復機制在協議中使用; ·對用戶的感覺
14、而言,熱插拔是完全實時的; ·可以對有缺陷設備進行認定。 (6) 與PC產業(yè)的一致性: ·協議的易實現性和完整性; ·與PC機的即插即用的體系結構的一致; ·對現存操作系統(tǒng)接口的良好銜接。 (7) 成本低廉 ·以低廉的價格提供1.5兆比特率的子通道設施; ·將外設和主機硬件進行了最優(yōu)化的集成; ·促進了低價格的外設的發(fā)展; ·廉價的電纜和連接頭; ·運用了商業(yè)技術。四、 USB系統(tǒng)組成一個USB系統(tǒng)被定義為三個部分:USB的互連、USB設備和USB主機。(一) USB的互連 USB的互連是指USB設備與主
15、機之間進行連接和通信的操作,主要包括以下幾方面: · 總線的拓撲結構:指明了USB設備與主機之間的連接方式; · 數據流模式:描述了數據在系統(tǒng)中通過USB從產生到使用方的流動方式; · USB的調度:USB提供多個設備共享的連接,對USB設備必須進行調度以分配帶寬。圖1(a) USB物理連接邏輯設備 主機邏輯設備 邏輯設備邏輯設備 邏輯設備圖1(b) USB邏輯連接USB物理互連方式如圖1(a) 所示,是一種星形級連結構。集線器(Hub)位于每級星形的中心。這種集線器級連的方式使得外設的擴展很容易(USB協議規(guī)定最多允許5級集線器進行級連;USB邏輯互連方式如圖1
16、(b)所示,各個設備好象是與主機直接相連的,它們之間的通信不用關心物理連接方式。 數據流模式對于USB設備的實現是最關鍵的,我們將在下一章對其單獨進行描述。USB的調度是針對多個設備互連的,不屬于功能設備開發(fā)者需要關心的內容,在此不作描述。(二) USB設備 USB設備包括USB集線器和功能設備(Function)兩大類。它們都必須有標準的USB接口,符合USB協議,支持標準的USB操作(如配置,復位等)。它們的描述信息也必須具有USB協議定義的標準格式。集線器為USB總線提供擴展和連接;功能設備是具有一定特殊應用功能的設備,它能發(fā)送數據到主機,也可以接收來自主機的數據和控制信息。(三) US
17、B主機USB主機是USB系統(tǒng)的核心。在一個USB系統(tǒng)中只有一臺主機。主機的USB接口稱為USB控制器,通過它主機和外圍USB設備進行通信。在主機中還集成了一個根集線器(Root Hub)用于直接與外設相連或與一般USB Hub級連。主機所具有的功能包括:檢測USB設備的插入和拔出;管理主機與設備之間的數據流,對設備進行必要的控制;收集各種狀態(tài)信息;對插入的設備供電。第一章 USB數據傳輸協議一、 USB電氣特征及電平信號 USB采用四線電纜,由電源線(Vbus )、地線(GND)和兩根數據線(D和D)組成,如圖1-1所示。數據線傳輸差模信號,以降低噪聲干擾??梢钥闯?,任何時刻USB總線上最多只
18、能有一位數據在傳輸,所以USB是一種完全按照時序進行控制和數據傳輸的總線。圖1-1 USB電纜結構USB具有差分NRZI(不歸零倒置)代碼格式。在這種NRZI波形中,d (n-1)位和d (n)位之間如果有狀態(tài)變化(稱為過渡),就被解碼為一個二進制b(n) =0的數據位,沒有過渡就被解碼為一個二進制b (n) =1的數據位,如圖1-2所示。圖12 NRZI數據編碼 為了確保信號發(fā)送的準確性,當在USB上發(fā)送一個包時,傳輸設備就要進行位插入操作。所謂位插入操作是指在數據被編碼前,在數據流中每六個連續(xù)的 1后插入一個0,從而強迫NRZI碼發(fā)生變化,位插入操作由傳輸端強制執(zhí)行,任何數據都將被執(zhí)行位插
19、入操作,如圖1-3所示。接收端必須能對NRZI數據進行解碼,識別插入位并去掉它們。 圖13 位插入數據編碼序列 原始數據 位插入數據 同步塊 數據包NRZI編碼后的數據位插入 在全速傳輸中,數據K態(tài)表示差分1,數據J態(tài)表示差分O,而在低速傳輸中則正好相反。二、 USB數據流模型 本數據流模型完全引自參考文獻,以下不再標注。(一) USB主機/設備分層模型 數據流發(fā)生在主機和USB設備之間,我們以常用的分層模型介紹USB系統(tǒng)的數據流,如圖14所示。它能使不同層次的實現者只關心USB相關層次的特定功能細節(jié),而不必掌握從硬件結構到軟件系統(tǒng)的所有細節(jié),因此,不同層次的實現者其開發(fā)工作量將會有極大的不同
20、。 主機分客戶軟件層,USB系統(tǒng)軟件層和USB主機控制器。設備分USB總線接口層,USB設備層和功能層。USB系統(tǒng)軟件是指在某一操作系統(tǒng)上支持USB的軟件,它獨立于USB設備和客戶軟件;USB主機控制器是主機方的USB接口,它是軟硬件的總和。從圖14上我們可以看出,USB總線接口層提供主機和設備之間物理的連接,而從邏輯上看,USB設備層與USB系統(tǒng)軟件層對應,它們完成USB設備一些基本的、共有的工作;功能層和客戶軟件層通信,它們實現單個USB設備特有的功能。在編程時,客戶軟件通過USB系統(tǒng)軟件提供的編程接口操作對應的設備,而不是直接通過操作內存或I/O口來實現,這一點是USB和PCI總線的顯著
21、差異。所有USB設備只有在被主機承認并配置后才可進入系統(tǒng)工作,它們實現的功能不同,但對主機都提供一個同樣的接口。 在系統(tǒng)軟件層和USB設備層之間有一條缺省管道,主機與設備的端點O通信,用于實現一些USB設備的基本控制功能。在客戶軟件層和功能層有多組通信管道,它們實現USB設備的特定通信功能。我們所述的這些通信都是從邏輯上分析的,實際的信號的物理流程如圖14所示,以信號從主機流向設備為例:客戶軟件經USBD傳輸給系統(tǒng)軟件的數據是不具有USB通信格式的數據。系統(tǒng)軟件對這些數據分幀,實現帶寬分配策略,然后交給USB主機控制器。主機控制器對數據按USB格式打包,實現傳輸事務,再經串行接口引擎(SIE)
22、后將數據最終轉化為符合USB電氣特征的差分碼從USB電纜發(fā)往設備。數據到達設備后是一個逆過程,在設備層中將數據解碼,發(fā)往不同端點的數據包被分開并正確排列,幀結構被拆除,數據成為非USB格式的,最后數據送往各端點,完成通訊。在主機方我們還發(fā)現有HCD和USBD兩個接口層。HCD的全稱為主機控制驅動(Host Control Driver),它是對主機控制器硬件的一個抽象,提供和USB系統(tǒng)軟件之間的軟件接口。不同種PC的主機控制器硬件實現并不一樣,但有了HCD,USB系統(tǒng)軟件就可以不必理會各種HCD具有何種資源,數據如何打包等問題。尤其是HCD隱藏了怎樣實現根集線器的細節(jié),這有利于USBD的簡化。
23、(二) 端點端點在硬件上就是一個有一定深度的先入先出堆棧(FIFO)。主機和設備的通信最終作用于設備上的各個端點。每一個USB設備都有一組互相獨立的端點。每一個設備都有一個由主機分配的唯一的地址,而各個設備上的端點都有由設備確定的端點號(Endpoint Number)和通信方向。每個端點只支持單向通信:它要么是輸入(Input)端點,數據流方向從設備到主機;要么是輸出(Output)端點,數據流方向從主機到設備。設備地址、端點號和通信方向三者結合起來就唯一確定了一個端點。在設備配置時,它必須報告主機它的各個端點的特性,包括端點號,通信方向,端點支持的最大包大小,帶寬要求以及支持的通信方式等。
24、其中端點支持的最大包大小稱為數據有效負載,是個重要的概念。端點O比較特殊,它實際是由輸入和輸出兩個端點組成。每個設備都必須有端點0,主機和它建立缺省控制管道,用于設備枚舉和實現對設備的一些基本的控制功能。除了端點0,其余的端點在設備配置之前是不能和主機通信的。只有設備在它的配置描述符中向主機報告了這些端點及其特性,并由主機確認后,這些端點才被激活。(三) 管道 管道(Pipe)是設備上端點和主機上的客戶軟件的連接。因此,每條管道和端點的特性有直接關系,它只能支持一種通信方式??蛻糗浖ǔMㄟ^向主機的操作系統(tǒng)發(fā)I/O請求包(IRP)來要求和某一條管道進行數據傳輸,而后它進行等待,直到系統(tǒng)通知它傳
25、輸成功或失敗。USB協議規(guī)定了流管道(Stream Pipe)和消息管道(Message Pipe)兩種管道,其中消息管道有定義的結構。缺省控制管道屬于消息管道。1 流管道流管道中的數據是流的形式,也就是該數據的內容不具有USB要求的結構。數據從流管道一端流進的順序與它們從流管道另一端流出時的順序是一樣的,流管道中的信息流總是單方向的,或者流進,或者流出。流管道支持同步傳輸,中斷傳輸和批傳輸,這些在稍后將作進一步解釋。2 消息管道 消息管道與端點的關系同流管道不同,它的數據格式由USB協議規(guī)定。首先,主機向USB設備發(fā)出一個請求;接著,就是數據的傳輸;最后,是一個狀態(tài)階段。為了能夠容納請求/數
26、據/狀態(tài)的變化,消息管道要求數據有一個格式(該格式將在第三節(jié)中詳細介紹),此格式保證了命令能夠被可靠地傳輸和確認。消息管道需要雙方向的信息流,所以有兩個相同號碼的端點,一個用于輸入,一個用于輸出。兩個號碼必須相同。缺省控制管道就是一個消息管道。消息管道僅支持控制傳輸。(三) 傳輸類型 USB定義了4種傳輸類型:控制傳輸、批傳輸、等時傳輸和中斷傳輸。由于我們的應用只涉及控制傳輸,故只對這種傳輸類型作進一步的描述。 控制傳輸用于支持在客戶軟件和它的應用之間傳輸設置信息、命令信息、狀態(tài)信息等。它由以下三個事務組成: ·建立事務:建立聯系,把請求信息從主機傳到它的應用設備; ·零個
27、或多個數據傳輸事務:按照上一事務中指明的方向傳輸數據;·狀態(tài)事務:將傳輸狀態(tài)信息從應用設備傳回到主機。圖14 USB主機/設備數據流通信模型 USB設備必須實現缺省控制管道,并將它設置成一個消息管道。這個管道由USB系統(tǒng)軟件使用。USB設備的確認信息、狀態(tài)信息以及控制信息由該管道傳輸。 USB設備框架定義了標準的,設備級的或由銷售商提供的請求,這些請求可操作設備的狀態(tài)。USB設備框架又定義了一些描述符(Descriptor),用于存放USB設備的各種信息??刂茩C制提供訪問設備描述器和請求操作設備的機制,所以使用控制傳輸的數據必須具有USB定義的數據格式。 應用層和相應的客戶軟件不能為
28、控制傳輸指定總線訪問頻率和帶寬。這由USB系統(tǒng)軟件從全局優(yōu)化角度加以決定。但不管有沒有控制傳輸發(fā)生,系統(tǒng)軟件至少需要將10%的帶寬留給控制傳輸。 控制傳輸使用的是消息管道上的雙向信息流。所以,一旦一個控制管道被建立之后,這個管道就使用具有某個端點號的兩個端點,一個輸入,一個輸出??刂苽鬏數臄祿袷綄⒃诘谌?jié)中作詳細描述。 USB規(guī)定了控制傳輸所能接收或發(fā)送的最大數據凈負荷區(qū)長度。高速設備定義的最大數據凈負荷區(qū)長度為8、16、32或64字節(jié),控制傳輸端點必須支持規(guī)定的最大長度中的一個,設備在自己的設置信息中報告該端點允許的最大凈負荷區(qū)長度;低速設備的數據凈負荷區(qū)的長度只能是8字節(jié)。這個規(guī)定是針對
29、這些數據包中的數據凈負荷區(qū)的,不包括包中的協議要求的額外信息。 當端點做了以下兩件事時,控制傳輸的數據階段可被認為結束: ·已傳了由建立階段指定的數據量。 ·傳了一個數據包,它的長度為O或它的數據區(qū)長度小于最大長度。三、 USB協議層USB協議層描述了USB主機與USB設備交互時的語法和協議,從中定義了字段、包、事務和傳輸的結構,以及由字段到包、由包到事務、由事務到傳輸所組成的組織層次關系。本節(jié)中我們將從底向上展示USB的數據結構。(一) 字段格式 數據位被發(fā)送到總線的時候,首先是最低有效位(LSB),跟著是下一個最低有效位,最后是最高有效位(MSB)。在本文以下描述中,數
30、據均以下列形式給出:包中單個的位和字段從左到右的順序就是它們通過總線的順序。1 . 同步字段任何包都是從同步(SYNC)字段開始的,同步字段是產生最大的過渡密度的編碼序列。同步字段作為空閑狀態(tài)出現在總線上,后面跟著以NRZI編碼的二進制串“KJKJKJKK”。通過被定義為8位長的二進制串,輸入電路以本地時鐘對齊輸入數據。同步字段里的最后兩位是同步字段結束的記號,并且標志了包標識符(PID)的開始。2 包標識符字段 所有包的同步字段后都緊跟著包標識符(PID)。如圖15所示,包標識符由4位的包類型字段和其后的4位的校驗字段構成。包標識符指出了包的類型。包標識符的4位的校驗字段可以保證包標識符譯碼
31、的可靠性,這樣包的余項也就能被正確地解釋。包標識符的校驗字段是通過對包類型字段的二進制的求反碼產生的,如果4個PID檢驗位不是它們的各自的包標識符位的補,則說明存在PID錯。 圖15 包標識符格式包標識符被分為4個編碼組:標記,數據,握手和專用。如表11所示,包標識符傳輸的前2位(PID<O:1>)指出了其屬于哪個組。設備通過對包標識符譯碼來確定包的類型。3 地址字段 設備端口使用2個字段;設備地址字段和端口字段。設備對地址和端口字段都需要進行譯碼。任何一個字段不匹配,此標記都必須被忽略。另外,對未初始化的端口的訪問將使得標記被忽略。設備地址(ADDR)字段通過其地址指定設備,如圖
32、16所示,ADDR<6:O>指定了總共128個地址。由定義可知,每個ADDR值都定義了單一的設備。設備在剛一復位(Reset)和加電(Powerup)的時候,其地址默認值為零,并且必須由主機在枚舉過程(Enumeration Process)中編程。設備地址零被用作為缺省地址,不可被分配作任何別的用途。如圖17所示,在設備擁有多個端口的時候通過附加的4位端口(ENDP)字段對端口進行尋址。除了端口地址0之外,端口個數是由設備決定的。所有的設備都必須在端口O提供一個控制管道(缺省控制管道)。對于低速設備,每個設備最多提供3個管道:在端口0的控制管道加上2個附加管道(或是2個控制管道,
33、或是1個控制管道和1個中斷端口,或是2個中斷端口)。全速設備可以支持最多可達16個的任何類型的端口。圖16 地址字段圖17 端口字段表1-1 PID 類型PID 類型PID 名PID3:0描述標記Token輸出(OUT)輸入(IN)幀開始(SOF)建立(SETUP)0001B1001B0101B1101B在主機到功能部件的事務中有地址+端口號在功能部件到主機的事務中有地址+端口號幀開始標記和幀號在主機到功能部件建立一個控制管道的事務中有地址+端口號數據DATA數據0(DATA0)數據1(DATA1)0011B1011B偶數據包PID奇數據包PID握手Handshake確認(ACK)不確認(NA
34、K)停止(STALL)0010B1010B1110B接收器收到無措數據包;接收設備部不能接收數據,或發(fā)送設備不能發(fā)送數據;端口掛起,或一個控制管道請求不被支持。專用Special前同步(PRE)1100B主機發(fā)送的前同步字。打開到低速設備的下行總線通信。4 幀號字段幀號字段是一個11位的字段,主機每過一幀就將其內容加一。幀號字段達到其最大值7FFH時歸零,且它僅每個幀最初時刻在SOF標記中被發(fā)送,可以用來統(tǒng)計數據傳輸情況。 5 數據字段 包含數據字段的數據包大小隨著傳輸類型而變化,但所包含的數據必須是整數個字節(jié)。圖18為多字節(jié)顯示格式。每個字節(jié)的范圍內的數據位移出時都是最低位(LSB)在前。圖
35、18 數據字段格式6 循環(huán)冗余校驗循環(huán)冗余校驗(CRC)被用來在標記和數據包中保護所有的非PID字段。(二) 包格式1 標記包 圖19顯示了標記包的字段格式。標記由PID,ADDR和ENDP構成,其中PID指定了包是輸入,輸出還是建立類型,輸入PID定義了從設備到主機的數據事務,輸出和建立PID定義了從主機到設備的數據事務;對于輸出和建立事務,地址和端口字段唯一地確定了接下來將收到數據包的端口,對于輸入事務的,這些字段唯一地確定了哪個端口應該傳輸數據包。只有主機能發(fā)出標記包。圖19 標記包格式 如圖19所示,標記包包括了覆蓋地址和端口字段的5位CRC。CRC并不覆蓋PID,因為它有自己的校驗字
36、段。標記和幀開始(SOF)包是由3個字節(jié)的包字段數據后面的包結束(EOP,End of Packet)界定的。如果包被譯碼為合法標記或SOF,但卻沒有在3個字節(jié)之后以EOP終止,則它被認為是無效的,并被接收器忽略。 2 幀開始(SOF)包主機以每毫秒一次的額定速率發(fā)出幀開始(SOF)包。如圖110中所示,SOF包是由指示包類型的PID和其后的11位的幀號字段構成。圖110 幀開始包 3 數據包 如圖111所示,數據包由PID,包括至少O個字節(jié)數據的數據區(qū)和CRC構成。有兩種類型的數據包,根據不同的PID:DATA0和DATA1來識別。兩種數據包PID是為了支持數據切換同步而定義的。數據必須以整
37、數的字節(jié)數發(fā)出。數據CRC僅通過對包中的數據字段計算而得到,而不包括PID,它有自己的校驗字段。圖111 數據包格式4 握手包 如圖112所示,握手包僅由PID構成,用來報告數據事務的狀態(tài),以及在數據事務中表示數據成功接收,命令的接收或拒絕,流控制和停止條件。只有支持流控制的事務類型才能返回握手信號。握手總是在事務的握手階段中被返回,也可在數據階段代替數據被返回。握手包由1個字節(jié)的包字段后的EOP確定界限。圖112 握手包(三) 事務格式 事務格式根據端口類型而變化。有4種端口類型:批處理(Bulk)、控制(Control)、中斷(Interrupt)和同步(Isochronous)。本文僅描
38、述應用所涉及到的控制端口類型。 一個典型的控制傳輸需要3種不同的事務:建立、數據和狀態(tài)事務。圖115顯示了三種不同的控制傳輸事務序列,控制讀和寫相似,由建立、數據和狀態(tài)事務組成。在某些情況下,也可以有無數據事務階段的控制傳輸,它僅由建立和狀態(tài)階段構成。圖115 控制傳輸事務序列 建立事務用于向功能部件的控制端口傳輸信息。圖116說明了建立事務的格式。建立包總是在建立事務的數據階段上使用DATA0 PID。收到建立包的設備必須接收建立數據并用ACK應答,如果數據被損壞,則丟棄數據且不返回握手。 控制傳輸的數據事務發(fā)生在建立事務階段之后,由一個以上的輸入或輸出事務構成。所有的數據事務階段里的事務都
39、必須有相同的方向(即全部輸入或者全部輸出)。在數據階段中要發(fā)送的數據的數量和其方向在建立事務里被指定。如果數據的數量超過了先前確定的數據包大小,數據在支持最大的包大小的多個事務中被發(fā)送(輸入或者輸出)。任何剩下的數據都作為剩余在最后的事務中被發(fā)送。狀態(tài)事務是控制傳輸的最后一個事務階段,報告整個控制傳輸的結果是成功還是失敗。如果成功,則狀態(tài)事務中返回零長度數據包(即只有PID和CRC校驗位);如果失敗,則對于控制寫,設備在數據包階段就返回NAK或者STALL,此時主機不再返回交換包;對于控制讀,主機依然發(fā)送一個零長度數據包,設備返回NAK或者STALL。狀態(tài)事務的方向是以相對前面的事務階段的數據
40、流方向來確定的,并且總是使用DATA1 PID。圖116 建立事務結構第二章 USB驅動程序概述本章首先簡要介紹了USB驅動程序的Win32程序模型(WDM),然后介紹了USB主機體系結構,最后詳細介紹了本設計的驅動程序及應用程序的編寫。一、 WDM驅動程序模型簡介 隨著Windows98和Windows20OO成為主流操作系統(tǒng),windows驅動程序模型(WDM)取代了原先的VxD技術,成為設備驅動程序的主流模式。WDM提供靈活的方式,簡化了驅動程序的開發(fā),并能夠對USB、IEEE 1394、PCI等新硬件標準提供充分支持,并增強了驅動程序的可靠性和可維護性。 WDM有兩種運行模式,即內核(
41、Kernel)模式和用戶(User)模式。在內核模式下,程序的運行不受操作系統(tǒng)的任何限制,對I/O設備有完全的訪問權,能夠訪問任何虛地址和控制虛擬內存硬件;在用戶模式下,操作系統(tǒng)提供某種機制,可以限制程序的各種I/O操作,硬件也可以防止特權指令的執(zhí)行,并進行內存和I/O空間檢查(關于這兩種模式的運行過程涉及到操作系統(tǒng)核心和微處理器構架,是一個大得多的話題,在此不作討論)。 WDM驅動程序模型分兩個方面,除了核心模式描述設備驅動程序的標準結構外,WDM還為常見類型的設備實現了一個模塊化的、分層次類型的總線驅動程序和類驅動程序。總線驅動程序實現了支持USB、IEEE1394協議等。類驅動程序是為實
42、現標準Windows功能提供條件。WDM對標準類接口的支持減少了Windows 98和Windows NT所需的設備驅動程序的數量和復雜性。 以往在Windows98和Windows NT兩個平臺上分別運行時需要為同一個設備編寫兩個截然不同的驅動程序,但WDM是跨平臺的,因而只需要編寫一個WDM驅動程序就可以了。 WDM驅動程序是分層的,即不同層上的驅動程序有著不同的優(yōu)先級,這使得I/0請求進程更加明了,而Windows 9x下的VxD則沒有此結構(如圖2l所示)。 WDM引入了功能設備對象FDO(Functional Device Object)與物理設備對象PDO(Physical Dev
43、ice Object)兩個新類來描述硬件,一個PDO對應一個實際硬件。一個硬件只允許有一個PDO,卻可以擁有多個FDO,在驅動程序中直接操作的不是硬件而是相應的PDO與FDO。在用戶態(tài)和內核態(tài)通信方面,系統(tǒng)為每一個用戶請求打包形成一個IRP結構,將其發(fā)送至驅動程序,并通過識別IRP中的PDO來區(qū)別是發(fā)送給哪一個設備的。另外,在驅動程序的加載方面,WDM不通過驅動程序名稱識別,而是通過一個128位的全局唯一標識符GUID來實現驅動程序的識別。FIDOFDOFIDOPDO上層過濾器驅動程序功能驅動程序下層過濾器驅動程序總線驅動程序IRP圖21 WDM中設備對象和驅動程序的層次結構 在WDM驅動程序
44、的工作方式和其他模式的驅動程序模型有很多差別。在WDM驅動程序中,即插即用(PnP)管理器告知何時向操作系統(tǒng)添加或刪除一個設備。它使用操作系統(tǒng)安裝的INF文件查找新設備的正確驅動程序,并按照驅動程序的要求創(chuàng)建設備對象堆棧,而其它模式驅動程序必須發(fā)現它自己的設備,使用專門的安裝程序安裝;另外在細節(jié)上也存在很多區(qū)別,其它模式驅動程序參數一般由注冊表提供,在DriverEntry里調用讀注冊表的函數,然后根據注冊表再調用CreateDevice創(chuàng)建設備,但是WDM一般不是這樣,在加載的時候PnP管理器調用AddDevice入口點創(chuàng)建設備,一般在DriverEntry里創(chuàng)建的是一個與設備或者對象毫無關
45、系的虛擬設備,用于管理與Win32的通訊;另外整個設備驅動樹也發(fā)生了改變,從而使安裝程序發(fā)生了很大的改變。WDM本身的PnP管理器被抽象地提升到了ROOT的地位,負責所有的總線驅動程序的加載??偩€驅動程序則負責遍歷所有位于總線上的設備,并且為每個設備創(chuàng)建相應的設備對象。 一個完整的驅動程序要完成以下工作:初始化、創(chuàng)建與刪除設備、處理應用層程序的打開和關閉句柄的請求、處理應用層程序的輸入/輸出請求、串行化對設備的訪問、訪問硬件、調用其他驅動程序、取消I/O請求、超時I/O請求、處理可熱插拔設備的加入和刪除事件、電源管理和WMI。二、 USB主機驅動程序體系結構 作為一種符合WDM的驅動程序,US
46、B總線驅動程序軟件堆棧內的層間通信也使用IRP(l/O請求包)的機制。但實際的USB驅動程序使用URB(USB請求塊)結構向其硬件設備發(fā)送請求。USB驅動程序高度依賴其總線驅動程序(USBD.SYS),而不直接使用硬件抽象層(HAL)函數與硬件通信,這是USB驅動程序的顯著特點,它提高了系統(tǒng)的可靠性和可維護性。 USB總線主機通過主機控制器與USB設備進行交互。Windows對構成一個USB總線主機的不同軟件部分進行了明確的劃分,如圖22所示,其中USB客戶軟件包含了不同總線設備的設各驅動程序,它通過Windows提供的USB總線接口與根集線器驅動程序進行通信,而根集線器驅動程序則要通過通用串
47、行總線驅動程序接口(USBDI)來實現與通用串行總線驅動程序(USBD)的通信(客戶也可以通過USBDI直接同USBD交互)。然后,USBD會選擇兩種主控制器驅動(HCD)方式之一來同其下方的主控制器通信。最后,主控制器會直接實現對USB物理層總線的訪問。HCD與USBD提供了基于不同抽象層次的USB軟件接口,它們協同工作,共同完成USB總線系統(tǒng)能夠的功能。HCD提供抽象的主機控制器,對主機控制器所見到的USB總線系統(tǒng)的數據傳輸進行了抽象:USBD提供抽象的設備,對USB客戶軟件和總線外部設備之間的數據傳輸進行了抽象。USB總線系統(tǒng)模型簡化了USBD客戶和與USB總線設備之間的數據傳輸過程,并
48、且該模型可以看作是面向USB總線接口對USB總線設備進行控制的入口。它們均由操作系統(tǒng)提供并維護,對于客戶軟件是不透明的。(一) 主機控制器驅動程序(HCD) HCD提供軟件界面HCDI(HCD Interface)對主機控制器實現必要的抽象,以隱藏主機控制器硬件的實現細節(jié),為上層的USB驅動程序提供統(tǒng)一的接口。HCD是USB總線的最底層,USBD將客戶的請求映射到相關的HCD,由HCD轉交給主機控制器硬件執(zhí)行。主機控制器提供一條高速的數據存取物理總線,它負責所有USB物理層的總線操作,主要有:狀態(tài)控制、串行化和反串行化、幀產生、差錯控制和數據傳輸等。圖22 USB驅動程序體系結構 如圖22所示
49、,UHCD和OpenHCI是為不同的USB總線設備供應商提出的用于管理系統(tǒng)中的USB總線主控制器的兩種接口,Windows提供了對這兩種接口的支持,設備供應商可以根據情況選擇實現其中的一種,Windows在USB總線和主機控制器之間放置了一個PCI總線枚舉器,它負責在檢測到系統(tǒng)中存在一個通用串行總線時,裝載適當的USB總線系統(tǒng)軟件。(二) USB總線驅動程序(USBD) 正如我們前面介紹的,USBD是USB系統(tǒng)軟件中最關鍵的一層,它負責控制全部USB協議的操作和中斷處理控制。主要功能有:設備設置、資源管理、數據傳輸(管道層次)以及公共數據定義等。 USBD為客戶軟件(設備驅動程序)提供了訪問設
50、備的一組接口,客戶軟件只能通過它來訪問USB總線,對客戶軟件而言,它就是USB總線的底層。USBD的具體實現基于不同的操作系統(tǒng)會有所不同,圖23給出了USBD的總體框架。 USBD的客戶直接對設備發(fā)出命令或從管道直接輸入輸出數據流,USBD為客戶提供兩種機制:命令機制和管道機制。命令機制允許客戶設置和控制USBD的操作以及USB總線設備,并提供對設備標準管道的所有訪問。管道機制則允許USBD客戶管理特定設備的數據和控制數據的傳輸。1 USBD管道機制 管道是設備和主機之間的邏輯連接,一個管道屬于且只屬于一個客戶,在USBD中,管道有兩種:標準管道和客戶管道。標準管道用于完成一些客戶通過命令接口
51、所傳遞的請求,如設置設備的地址等,但USBD不允許客戶直接訪問設備的標準管道??蛻艄艿绖t由客戶進行管理,并提供相應的數據緩沖區(qū)??梢钥闯?,管道機制比命令機制所提供的數據傳輸服務更直接,因而數據傳輸效率更高。 2 USBD命令機制USBD命令機制允許客戶以讀寫的方式對設備的數據及其控制部分進行訪問,客戶所要做的,僅僅是向USBD提供設備的地址及相關的數據緩沖區(qū)的指針。命令機制所提供的功能主要是USB總線管理相關的內容,如設備設置管理、設備數據訪問、總線設備管理以及電流分配等。第三章 USB設備簡介 本章是整個USB設備開發(fā)中的核心部分,簡要介紹了設備開發(fā)所使用的PDIUSBD12接口芯片,對本設
52、計的硬件實現和設備固件編寫作了詳細介紹。一、 硬件結構USB設備硬件設計的核心是USB控制器,在進行一個具體的USB設備開發(fā)之前,首先要根據具體使用要求選擇合適的USB控制器,設備的設計將圍繞該控制器展開。目前,市場上供應的USB控制器主要分為兩類:專用USB控制器和通用USB控制器。通用USB控制器實現基本的USB協議,并且為用戶預留多個多功能端點,可以滿足不同的應用要求,因此,我們選擇了后一種。通用USB控制器按照結構又細分為帶USB接口的單片機(MCU)和通用USB收發(fā)器兩種。 服務 通道接口 命令接口信息和流通道配置管理設備數據訪問總線設備管理能量控制主機控制器驅動主機控制器驅動主機控
53、制器主機控制器圖23 USBD結構 (一) 帶USB接口的單片機主要有INTEL的8X930系列,CYPRESS公司的EZUSB,以及MOTOROLA公司的MC68HC908JB8系列等。這種方案的最大優(yōu)點在于開發(fā)難度較小,因為大多數這樣的單片機都是基于8051結構或者其他常見的結構,同時均有完備的開發(fā)輔助文檔和代碼實例,但是其開發(fā)一般需要專用的仿真器,并且對于簡單或低成本系統(tǒng),價格高將會是最大的障礙。 (二) 通用USB收發(fā)器 通用USB收發(fā)器僅處理USB總線相關事務,必須有一個外部微處理器來進行協議處理和數據交換。這種方案的主要特點是成本低、接口形式多樣、可靠性高,具有很高的靈活性,尤其適
54、合于產品的改型設計,缺點是開發(fā)者需要非常熟悉USB的協議,以處理USB總線事務,同時要用微處理器控制收發(fā)器的工作。 考慮到實驗室具體情況,我們選擇了通用USB收發(fā)器。 USB硬件結構相當簡單,如圖31所示,它由以下三部分組成:USB收發(fā)器、微處理器和存儲器。它們構成了一個USB數據傳輸的最小系統(tǒng)。其功能為:USB收發(fā)器負責處理所有與USB總線事務有關的任務,如總線喚醒、數據接收/發(fā)送、打包、CRC校驗等,但該收發(fā)器不負責解釋這些數據的意義;微處理器負責處理數據、響應主機請求、以及控制USB收發(fā)器的工作;存儲器負責存儲和提供數據。二、 PDIUSBD12通用USB收發(fā)器(一) PDIUSBD12的性能特點 PDIUSBD12(以下簡稱D12)是PHILIPS公司推出的符合USB1.l規(guī)范的通用收發(fā)器,內部有6個端點,除了默認控制端點外,還各有兩個普通端點和主端點。8位數據并行接口可以方便地與外部CPU進行連接,在批量傳輸模式下達到1M
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度創(chuàng)新辦公園區(qū)草坪設計與生態(tài)友好合同
- 三農村土地綜合整治指南
- 家具購銷合同協議書
- 知識產權與法務管理作業(yè)指導書
- 儀器儀表與自動化設備行業(yè)作業(yè)指導書
- 游戲策劃設計作業(yè)指導書
- 醫(yī)美股份轉讓協議合同
- 藕塘承包合同樣本
- 地質勘察合同付款條件
- 2025年雅安貨車叢業(yè)資格證考試題
- 服裝廠安全生產培訓
- 城市隧道工程施工質量驗收規(guī)范
- 2025年湖南高速鐵路職業(yè)技術學院高職單招高職單招英語2016-2024年參考題庫含答案解析
- 五 100以內的筆算加、減法2.筆算減法 第1課時 筆算減法課件2024-2025人教版一年級數學下冊
- 2025年八省聯考陜西高考生物試卷真題答案詳解(精校打印)
- 2025脫貧攻堅工作計劃
- 2022年四川省成都市成華區(qū)七年級下學期期末語文試卷
- 石油化工、煤化工、天然氣化工優(yōu)劣勢分析
- 10kV配網工程變配電(臺架變、箱變、電纜分接箱)的安裝設計施工精細化標準
- Q∕GDW 12118.3-2021 人工智能平臺架構及技術要求 第3部分:樣本庫格式
- 廣東省義務教育階段學生轉學轉出申請表(樣本)
評論
0/150
提交評論