




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、畢業(yè)設計論文題目:基于 STM32STM32 的 USBUSB 虛擬串口學院:專業(yè):姓名:學號:指導老師:完成時間:20142014 年 5 5 月 1919 日USB 接口由于支持熱插拔和標準統(tǒng)一等特點得到了廣泛應用,越來越多的電腦設備開始采用 USB 接口進行數(shù)據(jù)的傳輸,而如何在不改變現(xiàn)有應用軟件的情況下,將設備移植到USB 接口成為人們研究的熱門。論文以 USB 通信設備類中的抽象控制模型為基礎, 研究了通信設備類及實現(xiàn)虛擬設備的原理,設計并實現(xiàn)了基于通信設備類的虛擬串口驅(qū)動程序。論文研究設計了基于通信設備類的虛擬審驅(qū)動程序的結(jié)構(gòu)和實現(xiàn)方案,程序主要由通信命令轉(zhuǎn)換和數(shù)據(jù)傳輸兩部分構(gòu)成,通
2、信命令轉(zhuǎn)換符合通信設備類中抽象控制模型的規(guī)范,數(shù)據(jù)傳輸部分對現(xiàn)有虛擬串口的實現(xiàn)技術進行了改進。論文的主要工作如下:1)研究了 USB 協(xié)議的請求和傳輸模式,分析了通信設備類實現(xiàn)虛擬設備的方案。2)給出了一種符合通信設備類中抽象控制模型的虛擬串口實現(xiàn)方案。該方案提供了一種基于通信設備類開發(fā)虛擬設備的模板,對設計中的諸多問題進行了詳細的說明,并改進了虛擬串口驅(qū)動程序中數(shù)據(jù)的處理流程。3)將改進后的數(shù)據(jù)處理流程應用于虛擬串口的實現(xiàn)中,生成了一種基于通信設備類的穩(wěn)定、高速的虛擬串口。最后,在串口測試軟件下對虛擬審驅(qū)動程序進行了測試,達到了預期目標。關鍵字:通訊設備類;枚舉過程;虛擬用程序;抽象控制模型
3、AbstractAbstractUSBinterfacesupportsplugandplaywhichhasunifiedstandards,soithasawiderangeofapplications.MoreandmorecomputerdeviceuseUSBinterfacetotransferdata,sohowtomakemanyolddeavestosupportUSBinterfacewithoutchangingcurrentapplicationisbecomingthehotfield.USBCommunicationDeviceClassanditsabstract
4、controlmodelarestudied,principlesofCommunicationDeviceClassandimplementationtechniquesofabstractdevicearealsoanalyzedinthethesis.Onthebasisofthis,designandimplementationofvirtualserialportdriverbasedonCommunicationDeviceClassaregiven.Theoverallstructureandimplementationschemeofvirtualserialportdrive
5、rbasedonCDCaredesigned.Thevirtualserialportdriverismadeupoftwopartswhicharecommunicationcommandtransfermoduleanddatatransmissionmodule.Thecommunicationcommandtransfermodulesatisfiesthespecificationofabstractcontrolmodel,andthedatatransferpartimprovesthetechniqueofcurrentvirtualserialport.Themainwork
6、sinthethesisareasfollows:1)TherequestandtransfermodelforUSBprotocolarestudied,andtheimplementationtechniquesofvirtualserialportareanalyzed.2)TheimplementationschemeofvirtualserialportdriverthatsatisfyabstractcontrolmodeinCDCisgraven.AnewtemplateforthedevelopmentofvirtualserialportbasedonCDCisbrought
7、out,anditdescribessomeissuesforthevirtualserialportdriverindetails,atthesametime,theprocessingstepsforvirtualserialportdriverisimproved.3)Theimproveddataprocessingstepsforvirtualserialportdriverisappliedintheimplementationofritualserialportdriver,andastable,high-speedvirtualserialportismade.Atlast,t
8、hetestforthevirtualserialportdriveonActiveSyncisgiven,andthetestresultshowthatitsfunctionisachievedtherequirementgoals.Keywords:CommunicationDeviceClass;EnumerationProcess;VirtualSerialPortDriver;AbstractControlModel目錄摘要1Abstract2目錄3第1章緒論41.1USB虛擬串口設計背景及其意義41.2USB虛擬串口設計研究方法及目標41.3USB虛擬串口設計國內(nèi)外研究現(xiàn)狀5第2
9、章USB及串口簡單介紹71USB簡介71串口簡介71USB虛擬串口簡介8第3章USB和USBCDC協(xié)議9通用串行總線USB92)USB協(xié)議相關知識介紹92)USB協(xié)議枚舉過程分析10USBCDC協(xié)議11USB通信過程12第4章虛擬串口的實現(xiàn)15串口的工作原理15USB虛擬串口設計16STM32USB吾B分說明16USB電路連接16虛擬串口程序設計17第5章結(jié)論20參考文獻22致明寸23附錄:24第 1 1 章緒論USB虛擬串口設計背景及其意義USB 是一種統(tǒng)一的傳輸規(guī)范,但是接口有許多種,最常見的就是咱們電腦上用的那種扁平的,這叫做 A 型口,里面有 4 根連線,根據(jù)誰插接誰分為公母接口,一般
10、線上帶的是公口,機器上帶的是母口?,F(xiàn)在的很多電子設備都采用 USB 接口來設計,使得各個設備之間的相互通信更為方便和快捷。然而越來越多的設備開始使用 USB 接口,對 USB 協(xié)議也是一個很大的挑戰(zhàn)。一般在傳輸數(shù)據(jù)的接口與通信協(xié)議是對應的,而由于接口的不同,不太外設使用的協(xié)議也不同。USB 接口具有使用簡單、支持熱插拔、傳輸速度快、便于端口擴展等特點,在高速實時數(shù)據(jù)傳輸系統(tǒng)、 數(shù)據(jù)采集系統(tǒng)等工業(yè)領域得到了廣泛的應用。 現(xiàn)代個人計算機往往都帶有四個以上的 USB 接口。然而在現(xiàn)代嵌入式系統(tǒng)和工業(yè)現(xiàn)場中,最常用的標準外設是異步串行通信接口(串口),如何在沒有串口的情況下得到串口數(shù)據(jù),并完成數(shù)據(jù)傳輸
11、成為一個亟待解決的問題。首先, 越來越多帶 USB 接口的器件涌現(xiàn)出來, 如帶 USB 接口的單片機, 或獨立的 USB接口器件,而這些器件的成本已經(jīng)很接近使用 RS232 電平轉(zhuǎn)換芯片所帶來的成本。其次,市場上也出現(xiàn)了一些 USB 轉(zhuǎn)用口的芯片或者 USB 轉(zhuǎn)用口數(shù)據(jù)線,它們的一頭為串口,另一頭為 USB 接口,在其內(nèi)部完成串口到 USB 協(xié)議的轉(zhuǎn)換。它們通過 USB 接口連接到個人計算機后,操作系統(tǒng)識別的卻是一個串口設備,這說明 USB 接口對于傳統(tǒng)的串口調(diào)試工具和用戶基于串口的應用程序是公開的,開發(fā)者完全不用更改 PC 端的調(diào)試和應用程序。 但這些器件的 USB 類不屬于標準的 USB
12、設備類, 因此需要在操作系統(tǒng)上安裝必要的驅(qū)動。另外由于不是操作系統(tǒng)自帶的設備驅(qū)動,而且通信經(jīng)過了多次轉(zhuǎn)換,當調(diào)試遇到問題時常常無法確定是串口出了問題還是 USB 出了問題。這些問題限制了 USB 轉(zhuǎn)用口器件的應用。設備通信類(CommunicationDeviceClass)是 USB 組織定義的一類專門給各種通信設備使用的 USB 子類,是一種可以實現(xiàn)虛擬串口通信的協(xié)議。CDC 類對實現(xiàn) USB 接口和串口之間的轉(zhuǎn)換提供了一個很好的解決辦法。而且 CDC 類是 USB 的一個子類,操作系統(tǒng)默認提供此類驅(qū)動,故可以解決 USB 轉(zhuǎn)用口類器件傳輸不穩(wěn)定的問題。USB虛擬串口設計研究方法及目標本文
13、所講述的 USB 虛擬用口是采用 STM32 來實現(xiàn)的。STM32 系列控制器具有高性能、低成本、低功耗的特點,它自身帶的 USB 模塊符合 USB2.0 規(guī)范和 OTG1.3規(guī)范,支持全速 12Mbps 和低速 1.2Mbps 兩種模式。而且 STM32 官方封裝了很多庫函數(shù),對于編寫 USB 驅(qū)動節(jié)省了很多時間。 本文在理解 USB 體系結(jié)構(gòu)并深入研究 USBCDC 協(xié)議的基礎上,通過分析 USB 枚舉過程在 STM32 平臺上實現(xiàn)了 USB 虛擬串口,通過虛擬串口達到了 USB 與串口通信的預期目的。USB虛擬串口設計國內(nèi)外研究現(xiàn)狀國內(nèi)研究現(xiàn)開發(fā)設備控制芯片較難,中國臺灣地區(qū)的許多公司可
14、以生產(chǎn)這種轉(zhuǎn)換的設備,并提供功能齊全的開發(fā)接口和文檔說明。國內(nèi)集成電路的設計開發(fā)公司的能力還有限,限于提供不太復雜的應用及單一產(chǎn)品中, 并且在國內(nèi)的市場占有率還很小, 目前正處于蓬勃發(fā)展的階段。當前 USB 已經(jīng)成為個人計算機(PC)必備接口,各種 PC 電子消費產(chǎn)品也逐漸配置了這種標準的接口。為了順應這種情況,對于使用串口開發(fā)應用的人員需要提供串口與 USB之間的轉(zhuǎn)接組件,使用口數(shù)據(jù)和及其控制信號可以在 USB 總線上進行傳輸。USB 和串口之間的轉(zhuǎn)換實現(xiàn),有硬件實現(xiàn)和軟件實現(xiàn)兩種。硬件實現(xiàn)一般需要設計專用的設備控制芯片。開發(fā)設備控制芯片較難,需要有專業(yè)的硬件設計及編程能力,為了提高USB
15、和串口轉(zhuǎn)換的開發(fā)效率,國外有很多公司都開發(fā)出了相應的控制芯片。中國臺灣地區(qū)的許多公司可以生產(chǎn)實現(xiàn)這種轉(zhuǎn)換的設備,并提供功能齊全的開發(fā)接口和文檔說明。 國內(nèi)集成電路的設計開發(fā)公司能力還有限, 限于提供不太復雜的應用及單一產(chǎn)品中,并且在國內(nèi)的市場占有率還很小,目前正處于蓬勃發(fā)展階段。設備控制芯片分為通用設備控制器,定位于某幾類 USB 產(chǎn)品的編程應用;專用設備控制器,定位于某一個 USB產(chǎn)品的應用。通用設備控制器大部分被國外芯片壟斷,國內(nèi)在專用設備控制器已有所發(fā)展。國內(nèi)外已有很多商業(yè)上成熟的此類接口轉(zhuǎn)換器,其重點都是放在虛擬串口設備的設計上。一個好的轉(zhuǎn)接器需要設計一個能列舉虛擬串口的驅(qū)動程序,在這
16、種情況下,PC 端的應用軟件依然是針對 RS-232 串行端口編程的,外設也是以 RS-232 為數(shù)據(jù)通信通道,但從 PC 到外設之間的物理連接卻是 USB 總線, 其上的數(shù)據(jù)通信也是 USB 數(shù)據(jù)格式。 采用這種方式的好處在于:一方面可以保護原有的軟件開發(fā)投入,并使已有的針對 RS-232 外設的應用軟件不加修改,便可繼續(xù)使用;另一方面就是 USB 總線的高傳輸速率和即插即用的特性得到了充分利用。 虛擬串口的用途最初都是用于用口轉(zhuǎn)網(wǎng)絡通信接口,也就是把對網(wǎng)口的操作映射為對串口操作。例如,在傳統(tǒng)的門禁系統(tǒng)、考勤系統(tǒng)、售飯系統(tǒng)、POS 消費系統(tǒng)和一些其中控制和可靠性方面存在較大的局限性,隨著網(wǎng)絡
17、的普及,通過 TCP/IP 網(wǎng)絡實現(xiàn)網(wǎng)絡連接,解決系統(tǒng)中,傳統(tǒng)串口總線獲得了大量的應用但與網(wǎng)絡相比,傳統(tǒng)串口總線在傳輸距離傳統(tǒng)用在傳輸距離和可靠性方面方面存在較大的局限性成為必然選擇。由于原來的平臺軟件是通過電腦用收發(fā)數(shù)據(jù),為了使平臺軟件不用改變工作方式,需要在電腦平臺上安裝虛擬用口驅(qū)動, 通過虛擬串口驅(qū)動可以將硬件轉(zhuǎn)換器從網(wǎng)絡上傳送來的數(shù)據(jù)重定向到一個虛擬用口上。這樣,平臺軟件通過虛擬審口進行數(shù)據(jù)收發(fā)。USB 和串口之間的轉(zhuǎn)換實現(xiàn),還有一種實現(xiàn)是軟件實現(xiàn)。這里的軟件實現(xiàn)主要指設計USB 轉(zhuǎn)用口的驅(qū)動程序。在 USB 中 CDC 子類成為規(guī)范之前,USB 轉(zhuǎn)用口的驅(qū)動程序的實現(xiàn)各種各樣,且基于
18、特定的設備,通用性較差。USB 中 CDC 子類中抽象控制模型規(guī)范了虛擬串口實現(xiàn)的框架,增強了虛擬審驅(qū)動程序的通用性。第 2 2 章 USBUSB 及串口簡單介紹USB簡介USB 是英文 UniversalSerialBus(通用串行總線)的縮寫,是一個外部總線的標準,用于規(guī)范電腦與外部設備的連接和通訊,是應用在 PC 領域的接口技術。USB 傳輸速度極快,使用很方便,它可以連接的非常多的外設。比如:鼠標、鍵盤、移動硬盤等。USB 設備之所以會被大量應用,主要有以下優(yōu)點:1)可以熱插拔。這讓用戶在使用外接設備時不需要重復關機這樣的動作。2)攜帶方便。USB 設備通常以“小、輕、薄”見長,對用戶
19、來說,同樣 40G 硬盤,USB硬盤比 IDE 硬盤要輕一半,在想要隨身攜帶大量數(shù)據(jù)時,當然 USB 硬盤會是首選了。3)標準統(tǒng)一。常見的是 IDE 接口的硬盤,串口的鼠標鍵盤,并口的打印機掃面議,可以有了 USB 之后, 這些應用外設統(tǒng)統(tǒng)可以用同樣的標準與 PC 連接, 這時就有了 USB 硬盤,USB 鼠標,等等。4)可以連接多個設備。USB 在 PC 上往往具有多個接口,可以同時連接幾個外設,最高可連接 127 個設備。每個 USB 只有一個主機,主機也稱為根,根結(jié)或根 Hub,它做在主板上或作為適配卡安裝在計算機上,主機包含有主控制器和根集線器,控制著 USB 總線上的數(shù)據(jù)和控制信息的
20、流動,每個 USB 系統(tǒng)只能有一個根集線器,它連接在主控制器上。關于 USB 的數(shù)據(jù)傳輸:主控制器負責主機和 USB 設備間數(shù)據(jù)流的傳輸。它支持四種基本的數(shù)據(jù)傳輸模式:控制傳輸,等時傳輸,中斷傳輸及數(shù)據(jù)塊傳輸。串口簡介串行通信接口即是用口,采用串行通信方式的擴展接口。其通信線只有一根用來傳輸數(shù)據(jù),數(shù)據(jù)傳輸方式是一位一位的順序傳送。這樣的傳輸方式簡單可以降低很多成本,故很多嵌入式系統(tǒng)采用此種接口。用口適用于長距離通信,但其傳輸速率較慢。串口通信可以分為單工、半雙工和全雙工三種,單工數(shù)據(jù)傳輸只支持數(shù)據(jù)在一個方向上傳輸;半雙工數(shù)據(jù)傳輸允許數(shù)據(jù)在兩個方向上傳輸,但是,在某一時刻,只允許數(shù)據(jù)在一個方向上
21、傳輸,它實際上是一種切換方向的單工通信;全雙工數(shù)據(jù)通信允許數(shù)據(jù)同時在兩個方向上傳輸,因此,全雙工通信是兩個單工通信方式的結(jié)合,它要求發(fā)送設備和接收設備都有獨立的接收和發(fā)送能力。串口通常有 RXD 和 TXD 兩個端口,RXD 是接收端,TXD 是發(fā)送端。串口將 RXD 連接到另一個設備的 TXD 端,TXD 連接到另一個設備的 RXD 端,然后通過 CLK 的時序就可以進行數(shù)據(jù)的發(fā)送與接收了。USB虛擬串口簡介USB 通信設備類在物理層通過 USB 總線,采用虛擬串口的方式為主機提供一個物理用口。在系統(tǒng)內(nèi)部,USB 芯片提供一個批量傳輸 IN 端點和一個批量傳輸?shù)?OUT 端點,用于數(shù)據(jù)的接受
22、和發(fā)送,模擬串口的 RXD 線和 TXD 線;另外,芯片還提供中斷 IN 端點,發(fā)送當前串口的狀態(tài),實現(xiàn)對串口傳輸?shù)目刂?。串口設備的數(shù)據(jù),由系統(tǒng)的串口采集,在芯片內(nèi)完成 USB 包的封裝,通過 USB 總線上傳至主機,再由相應的串口應用程序(串口調(diào)試助手)進行處理。對用戶來說,看到的是基于串口的數(shù)據(jù)采集和傳輸,而實際上實現(xiàn)的是基于 USB 協(xié)議包的數(shù)據(jù)傳輸。第 3 3 章 USBUSB 和 USBCDCUSBCDC 協(xié)議通用串行總線USBUSB 協(xié)議相關知識介紹USB 端點USB 通信最基本的形式是通過一個名為端點的東西。USB 端點只能往一個方向傳送數(shù)據(jù),從主機到設備(稱為輸出端點)或者從設
23、備到主機(稱為輸入端點)。端點可以看作是單向的管道。USB 是主機與外圍設備之間的一種串行連接。它以單一類型的總線連接不同類型的設備3。USB 通過具有一定格式的“信包”按一定的“規(guī)程”來傳輸信息,根據(jù)信息的性質(zhì)可以分為 4 種傳輸類型:1)控制模式:主要用于配置 USB 設備,獲取設備信息,發(fā)送數(shù)據(jù)到設備,或者獲取設備的報告。每一個 USB 設備都必須具有名為端點 0 的控制端點,USB 核心使用該端點在插入設備時進行相應的配置。在 USB 虛擬串口設計中使用該模式進行配置 USB 設備,并通過該模式在主機與設備間交換控制請求。2)中斷模式:雖然是中斷模式,實際上是用于對 USB 設備周期性
24、查詢來實現(xiàn)的。USB 設備不存在主動向主機發(fā)送“中斷請求”的能力,只能被動地接受主機通過 USB總線查詢。在 USB 虛擬串口設計中使用該模式來實時報告設備狀態(tài)。3)批量模式:批量端點用于傳輸大量的數(shù)據(jù),沒有很強的時間要求,但需要確保數(shù)據(jù)的可靠傳輸。在 USB 虛擬串口設計中該模式進行數(shù)據(jù)發(fā)送與接收。4)等時模式:用于定時傳輸大量的數(shù)據(jù),但不能確保數(shù)據(jù)是否丟失。USB 描述符USB 是通過描述符來對 USB 設備進行屬性說明的,當 USB 第一次連接到主機上時,主機要求了解 USB 設備的一些基本信息,比如設備有何種功能,需要占用多少 USB 資源,屬于何種設備類等。只有主機完全確認了這些信息
25、之后,設備才能正常工作。這些信息是通過存儲在設備中的 USB 描述符來體現(xiàn)的。當 USB 設備插入主機后,主機要對其進行總線枚舉,配置該設備所需的驅(qū)動等信息。主機通過標準請求來讀取 USB 的描述符。標準的 USB 設備有 5 種描述符,分別為設備描述符、配置描述符、接口描述符、端點描述符和字符串描述符。每一個 USB 設備都有一個設備描述符。而每一個設備描述符有一個默認的配置描述符,配置描述符主要定義了 USB 設備功能,那樣就需要為每個功能定義一個配置。但是同一個時刻只有一個配置可用,一個配置支持至少一個接口。接口定義了實現(xiàn)功能的硬件的集合,接口往往包括多個端點。USB 枚舉枚舉就是從設備
26、讀取一些信息,知道設備時什么樣的設備,如何進行通信,這樣主機就可以根據(jù)這些信息來加載合適的驅(qū)動程序。調(diào)試 USB 設備很重要的一點就是枚舉過程,只要枚舉成功了,那么就已經(jīng)成功大半了。USB 協(xié)議枚舉過程分析USB 協(xié)議定義了設備的 6 種狀態(tài),枚舉過程會經(jīng)歷 4 種狀態(tài)的遷移:上電狀態(tài),默認狀態(tài),地址狀態(tài)和配置狀態(tài)(其他兩種是連接狀態(tài)和掛起狀態(tài))。枚舉過程實際上用到而且只用到了總線的“控制傳輸”的傳輸方式。 這種傳輸方式通常用于配置、命令、狀態(tài)等情形,其中的設置操作 setup 和狀態(tài)操作 status 過程的數(shù)據(jù)包具有 USB 協(xié)議定義的數(shù)據(jù)結(jié)構(gòu),因此,控制傳輸只能通過消息管道進行。一個完整
27、的控制傳輸包括三個過程:建立連接、數(shù)據(jù)過程、狀態(tài)過程。建立連接的過程都是有主機發(fā)起,它開始于一個 Setup 令牌包,后面緊跟著一個 DATA0 包。如果是控制輸入傳輸,數(shù)據(jù)過程則為輸入數(shù)據(jù),若是控制輸出傳輸,則數(shù)據(jù)過程是輸出數(shù)據(jù)。數(shù)據(jù)過程可選型是指設置過程需要指定數(shù)據(jù)長度,如果指定為 0,則沒有數(shù)據(jù)過程。狀態(tài)過程跟在數(shù)據(jù)之后,狀態(tài)過程恰好和數(shù)據(jù)過程的數(shù)據(jù)傳輸方向相反,因為此階段主要是用來確認之前兩階段的所有數(shù)據(jù)已經(jīng)正確傳輸了。下面是枚舉詳細過程:首先獲取設備描述符。USB 主機檢測到 USB 設備插入后,就會先對設備復位。設備復位后,USB 主機就會對地址為 0 的設備發(fā)送獲取設備描述符的標
28、準請求。所有的 USB 設備在總線復位后其地址都為 0,這樣主機就可以跟那些剛剛插入的設備通過地址 0(端點 0)通信。主機在建立階段發(fā)出獲取設備描述符的輸入請求,設備收到該請求后,在數(shù)據(jù)過程將設備描述符返回給主機。 主機在成功獲取到一個數(shù)據(jù)包的設備描述符后并且確認沒有什么錯誤后(注意:有些 USB 設備的端點 0 大小不足 18字節(jié)(但至少具有 8 字節(jié)),而標準的設備描述有 18 字節(jié),在這種情況下,USB 設備只能暫時按最大包將部分設備描述符返回,而主機在成功獲取到前面一部分描述符后,就不會再請求剩下的設備描述符部分,而是進入設置地址階段),就會返回一個0 長度的狀態(tài)數(shù)據(jù)包給設備。然后獲
29、取地址。主機再對設備復位一下,接下來就會進入到設置地址階段。這時 USB主機發(fā)出一個設置地址的請求(建立過程,設置地址無數(shù)據(jù)過程),地址包含在建立包中,具體的地址 USB 主機會負責管理,它會分配一個唯一的地址給新的設備。USB 設備在收到地址后,返回 0 長度的狀態(tài)包,主機收到 0 長度的狀態(tài)包之后,會返回一個 ACK 給設備。設備在收到這個 ACK 之后,就可以啟用新的地址了。這樣設備就分配到了一個唯一的設備地址,以后主機就通過它來進行訪問該設備。然后主機再次獲取設備描述符。 這次跟第一次可能有點不一樣, 這次需要獲取完全部的18 個字節(jié)的設備描述符。當然,如果你的端點 0 緩沖大于 18
30、 字節(jié)的話,那就跟第一次的情形一樣了。接下來,主機就會獲取配置描述符。配置描述符總共為 9 字節(jié)。主機在獲取到配置描述符后,根據(jù)里面的配置集合總長度,再獲取配置集合。配置集合包括配置描述符,接口描述符,端點描符等等。然后主機就會根據(jù)獲取的配置集合對設備進行配置,使設備從地址狀態(tài)進入配置狀態(tài)。最后主機發(fā)送最后一個 Setup 包,允許所有端點進入工作狀態(tài)。過程大體分為:獲取設備描述符、設置地址、再次獲取設備描述符(此次獲取完整的設備描述符)、獲取配置描述符、對設備進行配置。枚舉就相當于主機與 USB 連接的一個過程,為了能夠進行數(shù)據(jù)交換的一個相互識別的過程。枚舉完成后,主機就可以對 USB 設備
31、進行讀寫操作了。USBCDC協(xié)議USB 通信設備類的研究目前尚未成熟,可以參考的資料文獻和代碼都比較少,更多的是依靠討論得出方法,然后對該方法的可行度和可靠性進行試驗。存在開發(fā)難度大,需要解決的問題多等困難。止匕外,驅(qū)動程序開發(fā)對操作系統(tǒng)的依賴性很高,需要對操作系統(tǒng)的相關細節(jié)了解透徹,但是微軟的 WindowsNT 系列操作系統(tǒng)不開源,無法查證實現(xiàn)細節(jié),這也加大了設計實現(xiàn)的難度。由于驅(qū)動程序運行在內(nèi)核態(tài),因此在用戶態(tài)能用的很多標準函數(shù)都無法使用,需要重新查閱函數(shù)用法,驅(qū)動程序的開發(fā)不能像用戶態(tài)程序一樣方便地進行調(diào)試40USB 為了實現(xiàn)不同的應用,將具有特定屬性與服務的一類設備劃分為一個類(Cl
32、ass)。如果提供相似格式的數(shù)據(jù)流或者相似的主機交換方式,兩個設備則被統(tǒng)一在一個類中。如USB 標準就有:AudioClass、CommunicationsDeviceClassHIDClass、VideoClass 等用于在 USB 接口上實現(xiàn)不同的設備接口。USB 標準協(xié)議中,有一類專用于通訊設備(主要包括電信通信設備和中速網(wǎng)絡通信設備)的 CDC 協(xié)議,USB 的 CDC 類(CommunicationsDeviceClass 是 USB 通信設備類的簡稱??梢酝ㄟ^ USBCDC 協(xié)議來將 USB 接口虛擬為其他通訊接口如串口, 以太網(wǎng)接口, ISDN接口等等。根據(jù) CDC 類協(xié)議所針對
33、通信設備的不同,CDC 協(xié)議又被分成幾種不同的模型:USB 傳統(tǒng)電話業(yè)務(POTS)模型,USBISDN 模型和 USB 網(wǎng)絡模型。其中,USB 傳統(tǒng)純電話業(yè)務模型,有可分為直接線控制模型(DirectLineControlModel)、抽象控制模型(AbstractControlModel)和 USB 電話模型(USBTelephoneModel),如圖 3.1 所示。本文所討論的虛擬串口就屬于 USB 傳統(tǒng)純電話業(yè)務模型下的抽象控制模型。CDC類圖3.1CDC類分類CDC 協(xié)議由根據(jù)不同的功能可以分為三個部分:通訊設備類DevicesClass)、通訊接口類(CommunicationIn
34、terfaceClass)和數(shù)據(jù)接口類(DataInterfaceClass)50通訊設備類是設備層次的定義,通常用于標示一個通訊設備與該設備可以提供相應的接口。通訊接口類則定義了相應的通訊服務,包括如何對設備進行管理和控制,數(shù)據(jù)接口類則定義了如何傳輸數(shù)據(jù)。這兩個接口子類占有不同數(shù)量和類型的終端點(Endpoints)。對于前面所述的不同 CDC 類模型,其所對應的接口的終端點需求也是不同的。如所需要討論的抽象控制模型對終端點的需求,通信接口類需要一個控制終端點(ControlEndpoint)和一個可選的中斷(Interrupt)型終端點,數(shù)據(jù)接口子類需要一個方向為輸入 (IN) 的周期性
35、(Isochronous 型終端點和一個方向為輸出(OUT)的周期性型終端點。其中控制終端點主要用于 USB 設備的枚舉和虛擬串口的波特率和數(shù)據(jù)類型(數(shù)據(jù)位數(shù)、停止位和起始位)設置的通信。輸出方向的非同步終端點用于主機(Host)向從設備(Slave)發(fā)送數(shù)據(jù),相當于傳統(tǒng)物理用口中的 TXD 線(如果從單片機的角度看),輸入方向的非同步終端點用于從設備向主機發(fā)送數(shù)據(jù),相當于傳統(tǒng)物理用口中的 RXD 線6。USB通信過程USB 最主要的的是要理解 USB 主機發(fā)送命令給設備,設備要對主機的命令進行響應,USB 通訊的基本單位為“包”理解好“包”這個概念是學習 USB 的關鍵所在。USB 數(shù)據(jù)包的
36、格式如圖 3.2 所示。電話模型網(wǎng)絡模型(CommunicationISDN模型FieldPIDADDRENDPDATACRCFrameNumberBits4+474N*8(N=0,.,1024)5/1611圖3.2USB數(shù)據(jù)包的格式對于數(shù)據(jù)包來說, PID 之后直接跟數(shù)據(jù)域, 數(shù)據(jù)域的長度為 N 字節(jié), 數(shù)據(jù)域后以 16 位的 CRC校驗和結(jié)束。握手包僅有 PID 域,沒有數(shù)據(jù)也沒有校驗和。分離傳輸會用到一類特殊的包,S t a r t ? S p l i t C o m p l e t e - S p l i t 包 , 其 格 式 分 別 如 圖 3 . 3 和 如 圖 3 . 4 所
37、示 。FieldSPLIDPIDHubAddrSCPortSEETCRC5Bits87171125圖3.3Start-Split包FieldSPLIDPIDHubAddrSCPortSUETCRC5Bits87171125圖3.4Complete-Split包在Start-Split和 Complete-Split包中主要指定了此次分離傳輸所在的HUB的地址和下行端口編號以及端點類型(控制、中斷、批量、同步)。以及此次傳輸中數(shù)據(jù)在整個數(shù)據(jù)中的位置(第一個包、中間的包、末尾的包)。令牌包可分為輸入包、輸出包、設置包和幀起始包(注意這里的輸入包是用于設置輸入命令的,輸出色是用來設置輸出命令的,而不
38、是放據(jù)數(shù)的)其中輸入包、輸出包和設置包的格式都是一樣的:SYNC+PID+ADDR+ENDP+CRC5(五位的校驗碼)。幀起始包的格式是 SYNC+PID+11 位 FRAM+CRC5(五位的校驗碼)。數(shù)據(jù)包可以分為 DATA0 包和 DATA1 包, 當 USB 發(fā)送數(shù)據(jù)的時候, 當一次發(fā)送的數(shù)據(jù)長度大于相應端點的容量時, 就需要把數(shù)據(jù)包分為好幾個包, 分批發(fā)送, DATA0 包和 DATA1包交替發(fā)送, 即如果第一個數(shù)據(jù)包是 DATA0,那第二個數(shù)據(jù)包就是 DATA10但也有例外情況,在同步傳輸中(四類傳輸類型中之一),所有的數(shù)據(jù)包都是為 DATA0,格式如下:SYNC+PID+01023
39、 字節(jié)+CRC16。握手包的結(jié)構(gòu)最為簡單的包,格式如下:SYNC+PID。數(shù)據(jù)在 USB 總線上的傳輸以包為單位, 包只能在幀內(nèi)傳輸。 高速 USB 總線的幀周期為125uS,全速以及低速 USB 總線的幀周期為 1mS。幀的起始由一個特定的包(SOF 包)表示,幀尾為 EOF。EOF 不是一個包,而是一種電平狀態(tài),EOF 期間不允許有數(shù)據(jù)傳輸。雖然高速總線和全速低速總線的幀周期不一樣,當時包中幀編號的增加速度是 USB/USBSOF 一樣的,因為在高速 USB 系統(tǒng)中,SOF 包中幀編號實際上取得是計數(shù)器的高 11 位, 最低三位作為微幀編號沒有使用, 因此其幀編號的增加周期也為 1msoU
40、SB 采用 Httleedian 字節(jié)順序,在總線上先傳輸一個字節(jié)的最低有效位,最后傳輸最高有效位,采用 NRZI 編碼,若遇到連續(xù)的 6 個 1 要求進行為填充,即插入一個 00所有的USB包都由 SYNC開始, 高速包的 SYNC寬度為 32bit,全速/低速包的 SYNC段長度為 8bit。實際接收到的 SYNC 產(chǎn)度由于 USBHUB 的關系,可能會小于該值。第 4 4 章虛擬串口的實現(xiàn)4.1串口的工作原理之所以取名為“串行”端口,是因為這種端口會將數(shù)據(jù)“串行化”。更具體地說,它一次獲取一個字節(jié)的數(shù)據(jù)并傳輸該字節(jié)的 8 位。 這樣做的優(yōu)勢在于, 串行端口只需要一條線路就能傳輸 8 個位
41、,而并行端口則需要 8 條。相應的劣勢在于,其傳輸數(shù)據(jù)的用時是擁有八條線路時的 8 倍。止匕外,串行端口還可以降低線纜成本,使線纜更加小巧。在發(fā)送數(shù)據(jù)的每個字節(jié)之前, 串行端口會發(fā)送一個開始位, 這是一個值為 0 的單個位。在發(fā)送完數(shù)據(jù)的每個字節(jié)之后,它將發(fā)送一個停止位,表示該字節(jié)已傳輸完成。此外,它還可以發(fā)送奇偶校驗位。1)波特率。這是一個衡量通信速度的參數(shù)。它表示每秒鐘傳送的 bit 的個數(shù)。例如300 波特表示每秒鐘發(fā)送 300 個 bit。當我們提到時鐘周期時,我們就是指波特率例如如果協(xié)議需要 4800 波特率,那么時鐘是 4800Hz0這意味著串口通信在數(shù)據(jù)線上的采樣率為 4800H
42、z。通常電話線的波特率為 14400,28800 和 36600。波特率可以遠遠大于這些值,但是波特率和距離成反比。高波特率常常用于放置的很近的儀器間的通信,典型的例子就是 GP 舊設備的通信。2)數(shù)據(jù)位。這是衡量通信中實際數(shù)據(jù)位的參數(shù)。當計算機發(fā)送一個信息包,實際的數(shù)據(jù)不會是 8 位的,標準的值是 5、7 和 8 位。如何設置取決于你想傳送的信息。比如,標準的 ASCII 碼是 0127(7 位)。擴展的 ASCII 碼是 0255(8 位)。如果數(shù)據(jù)使用簡單的文本(標準 ASCII 碼),那么每個數(shù)據(jù)包使用 7 位數(shù)據(jù)。每個包是指一個字節(jié),包括開始/停止位,數(shù)據(jù)位和奇偶校驗位。由于實際數(shù)據(jù)
43、位取決于通信協(xié)議的選取,術語“包”指任何通信的情況。3)停止位。用于表示單個包的最后一位。典型的值為 1,1.5 和 2 位。由于數(shù)據(jù)是在傳輸線上定時的,并且每一個設備有其自己的時鐘,很可能在通信中兩臺設備間出現(xiàn)了小小的不同步。因此停止位不僅僅是表示傳輸?shù)慕Y(jié)束,并且提供計算機校正時鐘同步的機會。適用于停止位的位數(shù)越多, 不同時鐘同步的容忍程度越大, 但是數(shù)據(jù)傳輸率同時也越慢。4)奇偶校驗位。在用口通信中一種簡單的檢錯方式。有四種檢錯方式:偶、奇、高和低。當然沒有校驗位也是可以的。對于偶和奇校驗的情況,用口會設置校驗位(數(shù)據(jù)位后面的一位),用一個值確保傳輸?shù)臄?shù)據(jù)有偶個或者奇?zhèn)€邏輯高位。例如,如果
44、數(shù)據(jù)是 011,那么對于偶校驗,校驗位為 0,保證邏輯高的位數(shù)是偶數(shù)個。如果是奇校驗,校驗位位 1,這樣就有 3 個邏輯高位。高位和低位不真正的檢查數(shù)據(jù), 簡單置位邏輯高或者邏輯低校驗。 這樣使得接收設備能夠知道一個位的狀態(tài),有機會判斷是否有噪聲干擾了通信或者是否傳輸和接收數(shù)據(jù)是否不同4.2USB虛擬串口設計STM32USB 部分說明STM32 的 USB 模塊可以產(chǎn)生三種中斷:USB 喚醒中斷、USB 高優(yōu)先級中斷和 USB低優(yōu)先級中斷,在 STM32 的參考手冊中沒有詳細說明這三種中斷對應哪些事件,現(xiàn)說明如下網(wǎng):USB 喚醒中斷:在中斷向量表中的位置是 42。這個中斷在 USB 設備從暫停
45、模式喚醒時產(chǎn)生,喚醒事件由 USB_ISTR 寄存器的 WKUP 位標識。USB 高優(yōu)先級中斷:在中斷向量表中的位置是 19。這個中斷僅由 USB 同步(Isochronous)模式傳輸或雙緩沖塊(Bulk)傳輸模式下的正確傳輸事件產(chǎn)生, 正確傳輸事件由 USB_ISTR 寄存器的 CTR 位標識。USB 低優(yōu)先級中斷:在中斷向量表中的位置是 20。這個中斷由所有其它的 USB 事件產(chǎn)生,例如正確傳輸(不包括同步模式和雙緩沖塊模式)、USB 復位等,事件標志位在USB_ISTR 寄存器中。在 STM32 的 USB 開發(fā)包的例子中包含了上述中斷的處理,例如在 USB 揚聲器的例子中,CTR_H
46、P 函數(shù)處理 USB 高優(yōu)先級中斷;在所有例子中都有 USB_Istr()函數(shù)處理 USB 低優(yōu)先級中斷。USB 如何區(qū)分低速、全速和高速設備:對于全速和高速設備,上拉電阻是接在D+上;而低速設備則是上拉電阻接在 D-上。USB 系統(tǒng)中只允許有一個主機,主機分為 3 個不同的功能模塊:應用軟件、USB 系統(tǒng)軟件和 USB 總線接口。客戶軟件負責和 USB 設備的功能單元進行通信,以實現(xiàn)其特定功能,它需要開發(fā)人員自行開發(fā),包才 SUSB 設備驅(qū)動程序和界面應用程序兩部分??蛻糗浖荒苤苯釉L問 USB 設備,具與功能單元的通信必須經(jīng)過 USB 系統(tǒng)軟件和 USB 總線接口模塊才能實現(xiàn)。USB 電路
47、連接從主機角度上講,USB 設備可看作是由一些配置、接口和端點組成的,這是通常所說的 USB 設備架構(gòu),即一個 USB 設備可以含有一個或多個配置。在每個配置中可含有一個或多個接口,在每個接口中可含有若干個端點。其中,配置和接口是對 USB 設備功能的抽象,實際的數(shù)據(jù)傳輸由端點來完成,在使用 USB 設備前,必須指明其采用哪個配置和接口。USB 設備使用各種描述符來說明其設備構(gòu)架,包括設備描述符、配置描述符、接口描述符、端點描述符和字符串描述符等,它們通常被保存在 USB 接口芯片的固件中。USB 的電路連接如圖 4.1 所示:PRTR5V0U2X圖4.1USB硬件接口圖虛擬串口程序設計首先是
48、枚舉過程中的獲取設備描述符部分, 主機如果要識別成串口, 就要將此 USB 設備的描述符寫成虛擬串口的描述符,要根據(jù) CDC 類通信協(xié)議進行編寫。此程序設備描述符是一個數(shù)組,數(shù)組的成員是描述符的內(nèi)容。下面定義的數(shù)組即是設備描述符。constuint8_tVirtual_Com_Port_DeviceDescriptor=(0 x12,/*描述符字節(jié)長度*/USB_DEVICE_DESCRIPTOR_TYPE,/*設備描述符類型*/0 x00,FB13碳侏DGNDB65V】51_UNILIIE-USBP70 x02,/*USB 規(guī)范發(fā)布號,表示用哪種協(xié)議,0 x20 表示 USB2.0*/0 x
49、02,/*類型代碼即 CDC*/0 x00,/*子類型代碼*/0 x00,/*協(xié)議代碼*/0 x40,/*端點 0 最大分組大小,值為,8、16、32、64*/0 x83,0 x04,/*供應商 ID*/0 x40,0 x57,/*產(chǎn)品 ID。由產(chǎn)品 ID 和供應商 ID,就可以讓操作系統(tǒng)加載不同的驅(qū)動程序*/0 x00,0 x02,/*設備出產(chǎn)編碼*/*制造商標示符*/*產(chǎn)品標示符*/*設備用口號描述符*/0 x01/*可能配置數(shù),指配置字符串的個數(shù)*/);在枚舉前期,USB 主機發(fā)送 SETUP 包,然后獲取設備描述符,然后會得知設備的類型,再加載相應的驅(qū)動,此時 USB 虛擬串口就成功了
50、。完成枚舉之后,就可以編寫作為用口接收和發(fā)送數(shù)據(jù)的程序了。在此設計中我們只需用到 STM32 的 GPIOA,GPIOB 和串口以及 USB 時鐘。所以先要允許 GPIOA,GPIOB 和串口的時鐘。USB 時鐘會在接下來使能。下面看第一個 Set_System()S 數(shù):RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIO_DISCONNECT,ENABLE);這個函數(shù)叫允許 USB 斷開線。通過查看 RCC_APB2Periph_GPIO_DISCONNECT 在程序中的定義為 RCC_APB2Periph_GPIOA。而 USB_DISCONNECT_PI
51、N 在程序中定義的為 GPIO_Pin_11。說明是程序定義的斷開線引腳是 PA11,查看 STM32 引腳圖可以看出 PA11 是連接 USB 弓|腳的 DM 弓|腳。此引腳連接到一個上拉電阻控制的三極管上面,接下來將 USB 的斷開引腳即 PA11配置成上拉的。這也就意味著在開始時這個上拉電阻使得三極管導通,從而使時 DP 腳被加上一個 1.5K 的電阻,這樣就可以開始枚舉了。第二個函數(shù) Set_USBClock(),這個函數(shù)就是先將 USB 所在的總線 AP1 經(jīng)過 PLL 分頻,得到 AP1 時鐘,然后再允許 USB 時鐘使能。第三個函數(shù) USB_Interrupts_Config()
52、,由名字可以看出是配置 USB 中斷的。在該函數(shù)中使能了兩個中斷,一個是 USB,一個是用口。程序中沒有設定它們的搶占優(yōu)先級,故默認它們的優(yōu)先級分組相同,USB 的響應優(yōu)先級為 0,串口的響應優(yōu)先級為 1,由于搶占優(yōu)先級相同,不存在嵌套關系,故這兩個中斷都不會被另一個中斷打斷。在它們中斷函數(shù)里面是我要處理的各個事情,等一下再介紹它們。最后是 USB_Init()o 第一句是將 pInformation 指向 Device_Info 結(jié)構(gòu)體;第三句是將pProperty 指向 Device_Property 結(jié)構(gòu)體;第四句將 pUser_Standard_Request 指針指向User_Sta
53、ndard_Requests 吉構(gòu)體。這三個結(jié)構(gòu)體都是與具體設備枚舉和功能實現(xiàn)相關的。最后一句實際上運行的是 DEVICE_PROP 中的 Virtual_Com_Port_init()這個函數(shù)。這個函數(shù)通過查看可以看到幾個函數(shù):Get_SerialNum(),此為獲取設備序列號,轉(zhuǎn)變?yōu)?Unicode 字符串。PowerOn(),連接 USB 設備,實質(zhì)是讓主機檢測到 USB 設備。USART_Config_Default(),配置串口至缺省狀態(tài),在這里波特率被設置為 9600,并且允許了接收中斷。發(fā)送中斷沒有允許。bDeviceState=UNCONNECTED,將當前狀態(tài)定義為未連接狀態(tài)
54、。到此初始化結(jié)束了。下面就是中斷部分了。中斷函數(shù)是串口的接受中斷, 程序中串口的發(fā)送中斷是沒有允許的。那么用口是如何發(fā)送數(shù)據(jù)呢?不用中斷方式,那就是直接來用寫寄存器方式來發(fā)送了。不過寫寄存器方式,當有大量數(shù)據(jù)發(fā)送時就會出現(xiàn)問題,因為它沒有判斷是否發(fā)送緩沖區(qū)為空。串口接收中斷調(diào)用的函數(shù)為 USART_To_USB_Send_Data()函數(shù)功能是從串口向 USB端發(fā)送數(shù)據(jù)。然后數(shù)據(jù)再從 USB 端向主機發(fā)送,這樣就可以與主機相互通信了。在做好的虛擬串口端可以連接一個硬件,使其通過串口將數(shù)據(jù)發(fā)送給 USB 虛擬的串口處理器中,然后可以通過設備的 USB 向 PC 機發(fā)送數(shù)據(jù)。而對于 PC 機,US
55、B設備相當于一個串口設備,它識別的也是個 COM 口,所以我們可以通過串口調(diào)試助手來查看接收到的數(shù)據(jù)。也可以用串口調(diào)試助手來發(fā)送數(shù)據(jù),通過 USB 虛擬的串口設備來返回該數(shù)據(jù)。第 5 5 章結(jié)論隨著越來越多的外設開始使用 USB 接口進行數(shù)據(jù)通信,合理并快速地實現(xiàn)基于 USB的數(shù)據(jù)傳輸顯得尤為重要, 而基于通信設備類的虛擬設備實現(xiàn)又是開發(fā)人員研究的重點。 論文研究了以 USB 通信設備類為核心的虛擬串口實現(xiàn)方案, 并對虛擬用口驅(qū)動的加載及卸載、通信命令轉(zhuǎn)換和數(shù)據(jù)高速傳輸進行了研究, 實現(xiàn)了基于通信設備類的虛擬串口驅(qū)動程序的可用版本。 與現(xiàn)有類似驅(qū)動程序相比, 該系統(tǒng)具有符合通信設備類的抽象控制
56、模型和高速傳輸?shù)葍?yōu)點,此外它還與 Windows2003、XP、Vista和 Win7 系統(tǒng)在源代碼級別兼容,具有廣闊的應用前景。論文中通信設備類的研究及基于通信設備類的虛擬串口實現(xiàn), 對開發(fā)人員設計其他基于通信設備類的虛擬設備實現(xiàn)方案具有很好的指導意義。本論文主要完成以下工作:1) 深入研究了 Windows 驅(qū)動的工作原理, 閱讀了英文原版的 WindowsNT 文件系統(tǒng)及 USB協(xié)議中通信設備類的相關書籍,既學習了 Windows 驅(qū)動程序的的一般開發(fā)方法,又學習了符合 USB 協(xié)議的驅(qū)動程序的開發(fā)方法。閱讀了相關的驅(qū)動開發(fā)源碼,掌握了WindowsNT 操作系統(tǒng)下虛擬設備驅(qū)動程序的開發(fā)
57、方法;2)研究了現(xiàn)有的虛擬串口實現(xiàn)技術,分析了各種實現(xiàn)方法的優(yōu)缺點,從中選擇了通信設備類的抽象控制模型作為虛擬串口實現(xiàn)的理論依據(jù),避免了重新設計 USB轉(zhuǎn)用口電路板及兼容性的問題,這使得虛擬串口驅(qū)動有更廣闊的應用前景, 通用性和高效性;3)學習了 USB 協(xié)議,對通信設備類進行了深入的研究和分析,并且根據(jù)通信設備類中各模型的特點,確定了虛擬串口驅(qū)動所用的模型為抽象控制模型;4)根據(jù)虛擬串口驅(qū)動程序的設計目標,研究了虛擬串口驅(qū)動程序的總體結(jié)構(gòu)和詳細方案,對虛擬串口驅(qū)動程序中的難點和重點問題進行深入的分析和解決方法的優(yōu)化;5)根據(jù)虛擬串口驅(qū)動程序的研究結(jié)果,實現(xiàn)了該驅(qū)動程序的演示版本,進行了兼容性
58、和穩(wěn)定性的測試,通過測試得出了還需要對系統(tǒng)做后續(xù)的改進和完善的工作。參考文獻1UniversalSerialBusSpecification,Revision2.0.Compaq,Hewlett-Packard,Intel,Lucent,Microsoft,NEC,PhilipsIncJ,2000.2許永和.EZ-USBFX 系列單片機 USB 外圍設備設計與應用M.北京:北京航空航天大學出版社,2002.3MindShare,inc,DonAnderson,DaveDzatko 孟文.USB 系統(tǒng)體系M.北京:中國電力出版社,2003.4李肇慶,廖峰,劉建存.USB 接口技術M.北京:國防工
59、業(yè)出版社,20045王成儒,李英偉.USB2.0 原理與工程開發(fā)M.北京:國防工業(yè)出版社,2004.6張帆,史彩成.Windows 設備驅(qū)動程序開發(fā)指南M.北京:北京航空航天大學出版社,2008.WalterOneyProgrammingtheMicrosoftWindowsDriverModel.MicrosoftPressJ,2003ChrisCant.WritingWindowsWDMDeviceDrivers.FocalPressJ,1999.9周立功.USB2.0 與 OTG 規(guī)范及開發(fā)指南M.北京:北京航空航天大學出版社,2004.10肖踞雄,翁鐵成,宋中慶.USB 技術及應用設計
60、M.北京:清華大學出版社,2004.11JanAxelson.USBComplete:TheDeveloperGuideM.LakeviewResearch,2011.時光荏苒,四年的大學生活已經(jīng)接近尾聲。在畢業(yè)論文完成之際,我謹向所有給予了我指導、關心和支持的老師、同學和親人們致以最衷心的感謝!首先,深深感謝我的導師侯寧老師。有了您的悉心指導與勉勵,我才能順利完成了理論學習和畢業(yè)論文。您平易近人、治學嚴謹、知識淵博,對待生活積極樂觀,為我們營造了輕松積極的環(huán)境,真正做到了傳道、授業(yè)、解惑。您在學習和生活上給予了我很多引導和幫助,為人的和藹、敏銳的把握能力和孜孜不倦的研究精神永遠是我學習、生活和工作的榜樣,這將成為我人生中一筆寶貴的財富
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 杭州中學分班考數(shù)學試卷
- 淮安九年級期末數(shù)學試卷
- 貴港三模數(shù)學試卷
- 健康管理師課件講義
- 2025屆河南省洛陽市偃師高中物理高一第二學期期末調(diào)研試題含解析
- 2025-2030年中國錫鉛焊絲項目投資可行性研究分析報告
- 健康社區(qū)課件
- 2025年中國微信營銷行業(yè)市場深度調(diào)研分析及投資前景研究預測報告
- 花椒加工廠可行性研究報告
- 中國維生素B12行業(yè)市場調(diào)研分析及投資戰(zhàn)略咨詢報告
- GB/T 18379-2001建筑物電氣裝置的電壓區(qū)段
- 銀行供應鏈融資業(yè)務管理辦法
- 化工環(huán)境保護與及安全技術概論考試題及答案
- GB 20208-2006煙花爆竹禮花彈發(fā)射炮筒
- 2023年中國黃金集團江西金山礦業(yè)有限公司招聘筆試題庫及答案解析
- 醫(yī)院藥學-藥物臨床試驗概述課件
- 熒光與熒光分析課件
- 120急救站(分站)工作考核細則
- 航站樓管理部《機場使用手冊》實施細則
- 防腐公司簡介
- 中小學幼兒園學校反恐防暴安全檢查記錄表
評論
0/150
提交評論