AVR單片機(jī)的USB在線下載器設(shè)計(jì)與實(shí)現(xiàn)(論文源代碼)_第1頁(yè)
AVR單片機(jī)的USB在線下載器設(shè)計(jì)與實(shí)現(xiàn)(論文源代碼)_第2頁(yè)
AVR單片機(jī)的USB在線下載器設(shè)計(jì)與實(shí)現(xiàn)(論文源代碼)_第3頁(yè)
AVR單片機(jī)的USB在線下載器設(shè)計(jì)與實(shí)現(xiàn)(論文源代碼)_第4頁(yè)
AVR單片機(jī)的USB在線下載器設(shè)計(jì)與實(shí)現(xiàn)(論文源代碼)_第5頁(yè)
已閱讀5頁(yè),還剩21頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

..目錄摘要1第一章緒論11.1本論文的研究目的和意義11.2USB簡(jiǎn)介21.3單片機(jī)技術(shù)及AVR單片機(jī)性能簡(jiǎn)介3第二章設(shè)計(jì)構(gòu)思42.1技術(shù)背景42.2方案選擇82.3本章小結(jié)11第三章系統(tǒng)硬件設(shè)計(jì)113.1MCU的選擇113.2硬件電路設(shè)計(jì)143.3本章小結(jié)14第四章系統(tǒng)軟件設(shè)計(jì)144.1系統(tǒng)固件程序設(shè)計(jì)144.2系統(tǒng)驅(qū)動(dòng)程序設(shè)計(jì)154.3ISP下載控制軟件234.4本章小結(jié)24第五章應(yīng)用測(cè)試245.1USB下載器驅(qū)動(dòng)安裝245.2上位機(jī)應(yīng)用程序測(cè)試255.3測(cè)試及結(jié)果分析26第六章全文總結(jié)與展望286.1全文總結(jié)286.2展望29致謝30參考文獻(xiàn)31附錄33..AVR單片機(jī)的USB在線下載器設(shè)計(jì)及實(shí)現(xiàn)學(xué)生:劉煒指導(dǎo)丁曉波〔三峽大學(xué)電氣信息學(xué)院摘要:本文設(shè)計(jì)實(shí)現(xiàn)了一個(gè)基于USB技術(shù)的下載器,該下載器可以通過USB下載線將AVR單片機(jī)的HEX程序通過SPI線路下載到目標(biāo)單片機(jī)中。在設(shè)計(jì)上采用ATmega8單片機(jī)做控制器,它與計(jì)算機(jī)的通信采用USB通信技術(shù),對(duì)目標(biāo)芯片編程采用ISP技術(shù),從而可以方便地在所有具有USB接口的計(jì)算機(jī)上進(jìn)行AVR單片機(jī)系統(tǒng)及其他支持在線編程單片機(jī)系統(tǒng)的開發(fā)。經(jīng)測(cè)試該下載器能夠?qū)纹瑱C(jī)在線編程,在速度,可靠性等方面較并口下載器有較大的提高。關(guān)鍵詞:USB技術(shù);同步串行通信SPI;ISP在線編程;WDM驅(qū)動(dòng);Abstract:Inthispaper,adesigntechnologybasedontheUSBdevicetodownload,thedownloadcanbedownloadedthroughtheUSBlinetoAVRmicrocontrollerthroughtheSPIlinesHEXprogramdownloadedtothetargetMCU.ATmega8usedinthedesignofsingle-chipcontrollertodoitwiththecomputerusingtheUSBcommunicationtechnologycommunications,onthetargetchipusingISPprogrammingtechnology,whichcaneasilyhaveaUSBinterfaceinallthecomputersandtheAVRMCUSystemsothersingle-chipsupportforonlineprogrammingsystem.Testedthedownloadofthesingle-chipdevicetoonlineprogramming,intermsofspeed,reliabilityandsoonthantheparallelporttodownloaddevicehasgreatlyimproved.Keywords:USBtechnology;synchronousserialcommunicationSPI;ISPonlineprogramming;WDMdriver;第一章緒論1.1本論文的研究目的和意義通常進(jìn)行單片機(jī)實(shí)驗(yàn)和開發(fā),編程器是必不可少的。仿真、調(diào)試完的程序要借助編程器寫入單片機(jī)的存儲(chǔ)器中,隨著單片機(jī)技術(shù)的發(fā)展出現(xiàn)了MTP<可多次編程>存儲(chǔ)器技術(shù)和ISP<在系統(tǒng)可編程>技術(shù),這樣就可以省去昂貴的仿真器,只要通過計(jì)算機(jī)接口和一條串行下載線就可直接在目標(biāo)芯片上編程。目前,比較成熟的ISP下載器大多是基于串口或者并口通信的,但存在以下問題:<1>用戶PC機(jī)的主頻、硬件和操作系統(tǒng)不同,可能會(huì)造成控制信號(hào)錯(cuò)誤;<2>不同的廠商提供不同的ISP下載器,互不兼容,給嵌入式開發(fā)帶來(lái)不便;<3>限于串、并口的通信協(xié)議,ISP數(shù)據(jù)傳輸速率較低,影響嵌入式產(chǎn)品的開發(fā)。基于以上原因,本課題要求完成一個(gè)基于計(jì)算機(jī)USB端口的AVR程序下載器,利用該下載器可以通過計(jì)算機(jī)的USB端口實(shí)現(xiàn)對(duì)SPI信號(hào)的模擬,并完成對(duì)AVR程序的下載。從而可以方便地在所有具有USB接口的計(jì)算機(jī)上進(jìn)行AVR單片機(jī)開發(fā)。1.2USB簡(jiǎn)介USB,全稱為UniversalSerialBus〔通用串行總線,它是由Compaq、IBM、Intel、NEC、Microsoft等一些PC大廠商聯(lián)合開發(fā)的一種新型的、基于令牌的、高速的串行接口標(biāo)準(zhǔn)。USB把各種不同的接口統(tǒng)一起來(lái),僅用一個(gè)4針插頭作為標(biāo)準(zhǔn)插頭,通過這個(gè)標(biāo)準(zhǔn)插頭,采用菊花鏈形式可以把所有的外設(shè)連接起來(lái),并且不會(huì)損失帶寬。傳輸速度是USB發(fā)展的主要指標(biāo)之一,USB協(xié)議已從最初的速度只有1.5Mbps<慢速>和12Mbps〔全速的1.1版本,發(fā)展到速度高達(dá)480Mbps的2.0版本。如今專門用于USB外設(shè)間"可移動(dòng)互連"的2.0補(bǔ)充規(guī)范USBOTG〔On-The-Go已經(jīng)發(fā)布,使得USB總線可以進(jìn)行點(diǎn)對(duì)點(diǎn)的數(shù)據(jù)傳輸,而不一定要求主機(jī)的參與。USB接口已被各種流行的操作系統(tǒng)所支持,并應(yīng)用于各種數(shù)據(jù)終端設(shè)備中。它之所以能夠在當(dāng)今的外圍設(shè)備標(biāo)準(zhǔn)接口中占有重要的地位,是由于它具有以下的性能特點(diǎn):●終端用戶的易用性:為連接電纜和連接頭提供了單一的模型;支持即插即用和熱拔插;自我檢測(cè)外設(shè),自動(dòng)地進(jìn)行設(shè)備驅(qū)動(dòng)設(shè)置;可動(dòng)態(tài)連接,動(dòng)態(tài)重置外設(shè)?!駪?yīng)用廣泛性:適應(yīng)不同的設(shè)備,提供低速傳輸〔1.5Mbps、全速傳輸〔12Mbps和高速傳輸〔480Mbps;可連接至多127個(gè)物理設(shè)備,并支持對(duì)多個(gè)設(shè)備的同時(shí)操作;在主機(jī)和設(shè)備之間可以傳輸多個(gè)數(shù)據(jù)和信息流;利用底層協(xié)議,提高了總線利用率?!裢絺鬏攷挘捍_定的帶寬和低延遲適合系統(tǒng)和音頻的應(yīng)用;同步工作可以利用整個(gè)總線帶寬?!耢`活性:可以選擇一系列大小的數(shù)據(jù)包,允許對(duì)設(shè)備緩沖區(qū)大小進(jìn)行選擇;通過指定數(shù)據(jù)緩沖區(qū)大小和執(zhí)行時(shí)間,支持各種數(shù)據(jù)傳輸率;通過協(xié)議對(duì)數(shù)據(jù)流進(jìn)行緩沖處理?!窠研裕撼鲥e(cuò)處理/差錯(cuò)恢復(fù)機(jī)制在協(xié)議中使用;對(duì)用戶感覺而言,熱拔插是完全實(shí)時(shí)的;可以對(duì)有缺陷設(shè)備進(jìn)行認(rèn)定?!衽cPC產(chǎn)業(yè)的一致性:協(xié)議的易實(shí)現(xiàn)性和完整性;與PC機(jī)即插即用的體系結(jié)構(gòu)的一致;對(duì)現(xiàn)存操作系統(tǒng)接口的良好銜接?!癯杀镜土阂缘土膬r(jià)格提供1.5Mbps的子通道設(shè)施;將外設(shè)和主機(jī)硬件進(jìn)行了最優(yōu)化的集成;促進(jìn)了低價(jià)格外設(shè)的發(fā)展;廉價(jià)的電纜和連接頭。對(duì)于數(shù)字系統(tǒng)而言,尤其是目前在工業(yè)界被廣泛應(yīng)用的嵌入式系統(tǒng),進(jìn)行USB技術(shù)的開發(fā)和應(yīng)用是十分必要的。一方面,USB技術(shù)作為一種新興的串行通信技術(shù),隨著協(xié)議版本的不斷更新,傳輸速度已從1.5Mb/s的低速發(fā)展到480Mb/s的高速,可以在很大的程度上滿足不同數(shù)字系統(tǒng)對(duì)串行通信的要求。另一方面,USB技術(shù)不同于以往的串行通信接口技術(shù),包含總線通信協(xié)議等內(nèi)容,在實(shí)際應(yīng)用中,可以根據(jù)需要把數(shù)字系統(tǒng)開發(fā)成相應(yīng)的USB主機(jī)、USB設(shè)備以及USBOTG<USBOn-the-Go,USB主機(jī)、從機(jī)自適應(yīng)>設(shè)備,在實(shí)現(xiàn)不同系統(tǒng)之間的數(shù)據(jù)交互方面有很大的靈活性。對(duì)于Sock而言,如果可以將系統(tǒng)內(nèi)對(duì)數(shù)據(jù)傳輸要求較高的局部模塊設(shè)計(jì)成具有標(biāo)準(zhǔn)接口的點(diǎn)對(duì)點(diǎn)連接方式,而總體仍沿用傳統(tǒng)的片內(nèi)總線數(shù)據(jù)傳輸方式,就可以讓SoC器件很好的解決接口復(fù)雜化和同步-異步的協(xié)調(diào)問題。作為標(biāo)準(zhǔn)化的串行通信接口,USB接口是非常適合SoC點(diǎn)對(duì)點(diǎn)連接設(shè)計(jì)的一種選擇,不但在傳輸速度上可以基本滿足SoC器件中各模塊間數(shù)據(jù)交互的要求,而且從結(jié)構(gòu)上來(lái)說(shuō),USB電纜只需VBus、GND、D+和D-四根線,非常簡(jiǎn)單。因此,基于上述分析,對(duì)USB技術(shù)在數(shù)字系統(tǒng)尤其是嵌入式系統(tǒng)中的應(yīng)用方法進(jìn)行研究,為日后USB技術(shù)在Soc設(shè)計(jì)領(lǐng)域廣泛應(yīng)用奠定基礎(chǔ),就顯得尤為重要,具有十分深遠(yuǎn)的意義。1.3單片機(jī)技術(shù)及AVR單片機(jī)性能簡(jiǎn)介AVR單片機(jī)是ATMEL公司1997年推出的全新配置精簡(jiǎn)指令集RISC〔ReducedInstructionSetCPU單片機(jī)。精簡(jiǎn)指令集RISC結(jié)構(gòu)是20實(shí)際90年代開發(fā)出來(lái)的,是綜合了半導(dǎo)體集成技術(shù)和軟件性能的新結(jié)構(gòu)。這種結(jié)構(gòu)使得AVR單片機(jī)具有接近1MIPS/MHz的高速處理能力。AVR單片機(jī)開發(fā)的目的在于,能采用C語(yǔ)言編程,從而能高效的開發(fā)出目標(biāo)產(chǎn)品。為了對(duì)目標(biāo)代碼大小,性能及功耗進(jìn)行優(yōu)化,AVR單片機(jī)采用了大型快速存取寄存器文件和快速單周期指令??焖俅嫒ISC寄存器文件由32個(gè)通用工作寄存器組成。傳統(tǒng)的基于累加器的結(jié)構(gòu)需要大量的程序代碼,以實(shí)現(xiàn)累加器和存儲(chǔ)器之間的數(shù)據(jù)傳輸;在AVR單片機(jī)中,用32個(gè)通用工作寄存器代替累加器,從而可避免傳統(tǒng)的累加器和存儲(chǔ)器之間的數(shù)據(jù)傳輸造成的瓶頸現(xiàn)象。AVR單片機(jī)運(yùn)用Harvard結(jié)構(gòu),在前一條指令執(zhí)行的時(shí)候就取出現(xiàn)行的指令,然后以一個(gè)周期執(zhí)行指令。在其它的CISC以及類似的RISC結(jié)構(gòu)的單片機(jī)中,外部振蕩器的時(shí)鐘被分頻降低到傳統(tǒng)的內(nèi)部指令執(zhí)行周期,這種分頻最大達(dá)12倍。AVR單片機(jī)是用一個(gè)周期執(zhí)行一條指令的,它是在8位單片機(jī)中第一個(gè)真正的RISC結(jié)構(gòu)的單片機(jī)。AVR單片機(jī)采用低功耗,非揮發(fā)的CMOS工藝制造,內(nèi)部分別集成Flash,EEPROM和SRAM三種不同性能和用途的存儲(chǔ)器。除了可以通過SPI口和一般的編程器對(duì)AVR單片機(jī)的Flash程序存儲(chǔ)器和EEPROM數(shù)據(jù)存儲(chǔ)器進(jìn)行編程外,絕大多數(shù)的AVR單片機(jī)還具有在線編程〔ISP的特點(diǎn),這給學(xué)習(xí)和使用AVR單片機(jī)帶來(lái)了極大的方便。第二章設(shè)計(jì)構(gòu)思2.1技術(shù)背景嵌入式系統(tǒng)及開發(fā)技術(shù)嵌入式系統(tǒng)是以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),并且軟硬件可裁剪,適用于應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗有嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。嵌入式系統(tǒng)的應(yīng)用可以說(shuō)涵蓋了國(guó)民經(jīng)濟(jì)建設(shè)的各個(gè)方面,并處于高速發(fā)展之中,其中在以下幾個(gè)方面的發(fā)展尤其顯著:系統(tǒng)機(jī)構(gòu)處于復(fù)雜;網(wǎng)絡(luò)互聯(lián)成為必然趨勢(shì);應(yīng)用實(shí)時(shí)精簡(jiǎn)系統(tǒng)內(nèi)核、算法來(lái)降低功耗和軟硬件成本;系統(tǒng)提供友好的人機(jī)界面。所以,通過對(duì)嵌入式系統(tǒng)的基本概念、應(yīng)用以及發(fā)展趨勢(shì)的了解,可以看到,嵌入式系統(tǒng)的研究是計(jì)算機(jī)學(xué)科綜合各項(xiàng)理論和技術(shù)的集大成者。針對(duì)這樣的要求,論文本設(shè)計(jì)是基于嵌入式系統(tǒng)的USB外設(shè)的開發(fā)。<一>嵌入式系統(tǒng)組成結(jié)構(gòu)嵌入式系統(tǒng)由硬件和軟件兩部分組成,所以其分類可以從硬件和軟件兩方面進(jìn)行劃分。嵌入式系統(tǒng)的核心是各種類型的嵌入式處理器,嵌入式處理器與通用處理器最大的不同點(diǎn)在于:嵌入式CPU大多工作在為特定用戶群所專門設(shè)計(jì)的系統(tǒng),它將通用CPU中許多板卡完成的任務(wù)集成到芯片內(nèi)部,從而有利于嵌入式系統(tǒng)設(shè)計(jì)在設(shè)計(jì)時(shí)趨于小型化,同時(shí)還具有很高的效率和可靠性。嵌入式處理器的體系結(jié)構(gòu)經(jīng)歷了從CISC〔復(fù)雜指令集到RISC〔精簡(jiǎn)指令集的轉(zhuǎn)變,位數(shù)有4位、8位、16位、32位逐步發(fā)展到64位。嵌入式處理器是嵌入式系統(tǒng)硬件部分的核心,近年來(lái)嵌入式微處理器的主要發(fā)展方向是小體積、高性能、低功耗。專業(yè)分工也越來(lái)越明顯,出現(xiàn)了專業(yè)的IPC〔IntellectualPropertyCore知識(shí)產(chǎn)權(quán)供應(yīng)商,如ARM、MIPS等,這些屬于微處理器〔MicroProcessorUnit,MPU,用于計(jì)算機(jī)通信領(lǐng)域的嵌入式DSP處理器〔DigitalSignalProcessor,DSP和高度集成的嵌入式片上系統(tǒng)〔SystemOnChip,SOC。目前幾乎每一個(gè)半導(dǎo)體制造商都生產(chǎn)嵌入式處理器,并且越來(lái)越多的公司開始擁有自主的處理器的設(shè)計(jì)部門,流行的結(jié)構(gòu)有30多個(gè)系列,其中以ARM、PowerPC、MIPS等使用得最為廣泛。嵌入式軟件是針對(duì)特定應(yīng)用領(lǐng)域,基于某個(gè)固定的硬件平臺(tái),用來(lái)達(dá)到用戶預(yù)期目標(biāo)的計(jì)算機(jī)軟件。為了嵌入式系統(tǒng)的開發(fā)更加方便和快捷,需要專門負(fù)責(zé)管理存儲(chǔ)器分配、中斷管理、任務(wù)調(diào)度等功能的軟件,這就是所謂的嵌入式系統(tǒng)。嵌入式系統(tǒng)是用來(lái)支持嵌入式應(yīng)用的軟件,是嵌入式系統(tǒng)中極為重要的組成部分,它通常包括與硬件相關(guān)的底層驅(qū)動(dòng)程序、系統(tǒng)內(nèi)核、設(shè)備驅(qū)動(dòng)接口,通信協(xié)議、圖形用戶界面〔GUI等。與通用操作系統(tǒng)相比較,嵌入式操作系統(tǒng)在系統(tǒng)實(shí)時(shí)性、硬件依賴性、軟件固化性以及應(yīng)用專用性等方面,具有更加鮮明的特點(diǎn)。嵌入式系統(tǒng)根據(jù)應(yīng)用場(chǎng)合分為兩大類:一類是面向消費(fèi)電子產(chǎn)品的非實(shí)時(shí)操作系統(tǒng),如Linux,應(yīng)用設(shè)備PDA、機(jī)頂盒等;另一類則是面向控制、通信等領(lǐng)域的實(shí)時(shí)操作系統(tǒng),如VxWorks等。實(shí)時(shí)操作系統(tǒng)是具有實(shí)時(shí)性,能支持實(shí)時(shí)控制系統(tǒng)工作的操作系統(tǒng),其首要任務(wù)是調(diào)度一切可利用的資源完成實(shí)時(shí)控制任務(wù);其次才著眼于提高系統(tǒng)的使用效率,其重要特點(diǎn)是通過調(diào)度來(lái)滿足對(duì)于重要事件在規(guī)定時(shí)間內(nèi)作出正確的響應(yīng)。嵌入式系統(tǒng)中的軟件除了嵌入式操作系統(tǒng)外還包括嵌入式應(yīng)用軟件,嵌入式應(yīng)用軟件和普通軟件有一定的區(qū)別,它不僅要求在準(zhǔn)確性、安全性和穩(wěn)定性等方面要滿足實(shí)際應(yīng)用的需要,并且還要盡可能地進(jìn)行優(yōu)化,以減少對(duì)系統(tǒng)資源的消耗,降低硬件成本?!捕度胧较到y(tǒng)的開發(fā)流程嵌入式系統(tǒng)發(fā)展到今天,對(duì)應(yīng)于各種微處理器的硬件平臺(tái)一般都是通用的、固定的和成熟的,這就大大減少了由硬件引入錯(cuò)誤的機(jī)會(huì)。此外,由于嵌入式操作系統(tǒng)屏蔽了底層硬件的復(fù)雜性,使得開發(fā)者通過操作系統(tǒng)提供的API函數(shù)就可以完成大部分的工作,因此大大簡(jiǎn)化了開發(fā)的過程,提高了系統(tǒng)的穩(wěn)定性。嵌入式系統(tǒng)通常是一個(gè)資源受限的系統(tǒng),因此直接在嵌入式系統(tǒng)的硬件平臺(tái)上編寫軟件比較困難,有時(shí)候甚至是不可能的。一般需要交叉開發(fā)環(huán)境〔CrossDevelopmentEnvironment的支持。嵌入式系統(tǒng)的交叉開發(fā)環(huán)境一般包括交叉編譯器、交叉調(diào)試器和系統(tǒng)仿真器。這里一般把進(jìn)行交叉編譯的主機(jī)稱為宿主機(jī),也就是普通的通用計(jì)算機(jī),而把程序?qū)嶋H的運(yùn)行環(huán)境稱為目標(biāo)機(jī),也就是嵌入式系統(tǒng)環(huán)境。交叉編譯器用于在宿主機(jī)上生成能在目標(biāo)機(jī)子上運(yùn)行的代碼,而交叉調(diào)試器和系統(tǒng)仿真器則用于在宿主機(jī)和目標(biāo)機(jī)之間完成嵌入式軟件的調(diào)試。嵌入式軟件開發(fā)所采用的編譯為交叉編譯。所謂交叉編譯就是在一個(gè)平臺(tái)上生成可以在另一個(gè)平臺(tái)上執(zhí)行的代碼。編譯的最主要的工作就在將程序轉(zhuǎn)化成運(yùn)行該程序的CPU所能識(shí)別的機(jī)器代碼,由于不同的體系結(jié)構(gòu)有不同的指令系統(tǒng)。因此,不同的CPU需要有相應(yīng)的編譯器,而交叉編譯就如同翻譯一樣,把相同的程序代碼翻譯稱不同的CPU對(duì)應(yīng)語(yǔ)言。要注意的是,編譯器本身也是程序,也要在與之對(duì)應(yīng)的某一個(gè)CPU平臺(tái)上運(yùn)行。嵌入式軟件經(jīng)過編譯和鏈接后即進(jìn)入調(diào)試階段,調(diào)試是軟件開發(fā)過程中必不可少的一個(gè)環(huán)節(jié),嵌入式軟件開發(fā)過程中的交叉調(diào)試與通用軟件開發(fā)過程中的調(diào)試方式有很大的差別。在常見軟件開發(fā)中,調(diào)試器與被調(diào)試的程序往往運(yùn)行在同一臺(tái)計(jì)算機(jī)上,調(diào)試器是一個(gè)單獨(dú)運(yùn)行著的進(jìn)程,它通過操作系統(tǒng)提供的調(diào)試接口來(lái)控制被調(diào)試的進(jìn)程。而在嵌入式軟件開發(fā)中,調(diào)試時(shí)采用的是在宿主機(jī)和目標(biāo)機(jī)之間進(jìn)行的交叉調(diào)試,調(diào)試器仍然運(yùn)行在宿主機(jī)的通用操作系統(tǒng)之上,但被調(diào)試的進(jìn)程卻是運(yùn)行在基于特定硬件平臺(tái)的嵌入式操作系統(tǒng)中,調(diào)試器和被調(diào)試進(jìn)程通過串口或者網(wǎng)絡(luò)進(jìn)行通信,調(diào)試器可以控制、訪問被調(diào)試進(jìn)程,讀取被調(diào)試進(jìn)程的當(dāng)前狀態(tài),并能夠改變被調(diào)試進(jìn)程的運(yùn)行狀態(tài)。嵌入式系統(tǒng)的交叉調(diào)試有多種方法,主要可分為軟件方式和硬件方式兩種。它們一般都具有如下一些典型特點(diǎn):調(diào)試器和被調(diào)試進(jìn)程運(yùn)行在不同的機(jī)器上,調(diào)試器運(yùn)行在PC機(jī)或者工作站上<宿主機(jī)>,而被調(diào)試的進(jìn)程則運(yùn)行在各種專業(yè)調(diào)試板上<目標(biāo)機(jī)>;調(diào)試器通過某種通信方式<串口、并口、網(wǎng)絡(luò)、JTAG等>控制被調(diào)試進(jìn)程;在目標(biāo)機(jī)上一般會(huì)具備某種形式的調(diào)試代理,它負(fù)責(zé)與調(diào)試器共同配合完成對(duì)目標(biāo)機(jī)上運(yùn)行著的進(jìn)程的調(diào)試。這種調(diào)試代理可能是某些支持調(diào)試功能的硬件設(shè)備,也可能是某些專門的調(diào)試軟件;目標(biāo)機(jī)可能是某種形式的系統(tǒng)仿真器,通過在宿主機(jī)上運(yùn)行目標(biāo)機(jī)的仿真軟件,整個(gè)調(diào)試過程可以在一臺(tái)計(jì)算機(jī)上運(yùn)行。此時(shí)物理上雖然只有一臺(tái)計(jì)算機(jī),但邏輯上仍然存在著宿主機(jī)和目標(biāo)機(jī)的區(qū)別。本設(shè)計(jì)即采用嵌入式系統(tǒng)的開發(fā)技術(shù),借助宿主機(jī)<通用計(jì)算機(jī)>來(lái)編譯出目標(biāo)機(jī)的可執(zhí)行代碼,不再需要編程器,使設(shè)計(jì)簡(jiǎn)化。2.1.2AVR單片機(jī)的在線同步串行接口SPI<SerialPeripheralInterface>允許在ATmega系列單片機(jī)和外設(shè)或其他AVR系列單片機(jī)之間高速同步數(shù)據(jù)傳輸。它是一個(gè)同步的串行通信總線,因此在SPI通信中的發(fā)送器和接收器必須使用相同的時(shí)鐘,使接收器能同步監(jiān)測(cè)數(shù)據(jù)位。SPI邏輯結(jié)構(gòu)如圖,其核心部件為8位移位寄存器和接收緩存器〔兩者合成為SPI數(shù)據(jù)寄存器,由分頻器,選擇器和時(shí)鐘邏輯所組成的時(shí)鐘信號(hào)發(fā)生器,以及SPI狀態(tài)寄存器,SPI控制寄存器等部件。SPI利用B口的第二功能,將其中的PB7,PB6,PB5及PB4分別定義為SCK,MOSI,MISO和SS。圖2-1SPI數(shù)據(jù)通信時(shí)的主-從機(jī)連接與數(shù)據(jù)傳送方式對(duì)SPI主機(jī)數(shù)據(jù)寄存器寫入數(shù)據(jù)以啟動(dòng)SPI時(shí)鐘,通過將需要的從機(jī)的/SS引腳拉低,主機(jī)啟動(dòng)一次通訊過程。SCK引腳是主機(jī)模式的時(shí)鐘輸出和從機(jī)模式的時(shí)鐘輸入,主機(jī)和從機(jī)將需要發(fā)送的數(shù)據(jù)放入相應(yīng)的寄存器。主機(jī)在SCK引腳上產(chǎn)生時(shí)鐘脈沖以交換數(shù)據(jù)。主機(jī)的數(shù)據(jù)從主機(jī)的MOSI移出,從從機(jī)的MOSI移入;從機(jī)的數(shù)據(jù)從從機(jī)的MISO移出,從主機(jī)的MISO移入。主機(jī)通過將從機(jī)的SS拉高實(shí)現(xiàn)與從機(jī)的同步。AVR單片機(jī)的SPI接口在發(fā)送方向上單緩沖,而在接受方向是雙緩沖。這表示在所有的移位操作完成前,被發(fā)送的字節(jié)不能被寫入SPI的數(shù)據(jù)寄存器;但SPI在接受數(shù)據(jù)時(shí),已經(jīng)收到的數(shù)據(jù)必須在下一個(gè)字節(jié)被完全移入之前從SPI數(shù)據(jù)寄存器中讀出,否則這個(gè)字節(jié)會(huì)丟失。2.1.3ISPISP<In-SystemProgramming>技術(shù)實(shí)際上就是用戶在自己設(shè)計(jì)的目標(biāo)系統(tǒng)中或電路板上為重構(gòu)器件進(jìn)行編程或反復(fù)編程時(shí),無(wú)需將ISP器件從線路板上拆上拆下。這種可對(duì)電路板或整個(gè)電子系統(tǒng)隨時(shí)進(jìn)行組態(tài)或重組的功能,給設(shè)計(jì)開發(fā)、電路板級(jí)調(diào)試和系統(tǒng)升級(jí)換代帶來(lái)了極大的方便,使得電路系統(tǒng)設(shè)計(jì)、生產(chǎn)、維護(hù)及更新等環(huán)節(jié)都發(fā)生了革命性的變化。用戶無(wú)論想增加或修改電路設(shè)計(jì),都可以在幾分鐘內(nèi)把新的設(shè)計(jì)下載到器件中。由此可見,硬件的設(shè)計(jì),象軟件那樣靈活而易于實(shí)時(shí)修改,這不僅擴(kuò)展了器件的用途,縮短了系統(tǒng)調(diào)試周期,而且還省略了對(duì)器件單獨(dú)編程的環(huán)節(jié),簡(jiǎn)化了目標(biāo)設(shè)備的現(xiàn)場(chǎng)升級(jí)和維護(hù)工作,是一種全新的設(shè)計(jì)方式。AVR單片機(jī)單片機(jī)引腳共有4個(gè):RST,MOSI,MISO和SCK。各引腳功能如下:RST為在線編程輸入控制端,僅在ISP下載過程中保持高電平,在系統(tǒng)正常工作時(shí)該引腳為系統(tǒng)復(fù)位端,保持低電平狀態(tài)。MOSI為主機(jī)輸出/從機(jī)輸入的數(shù)據(jù)端,系統(tǒng)正常工作時(shí),該引腳為通用I/OP1.5口線。MISO為主機(jī)輸入/從機(jī)輸出的數(shù)據(jù)端。系統(tǒng)正常工作時(shí),該引腳為通用I/OP1.6口線。SCK為串行編程的時(shí)鐘端,可實(shí)現(xiàn)主/從機(jī)時(shí)序的同步。該時(shí)鐘頻率不得超過系統(tǒng)時(shí)鐘的1/16。系統(tǒng)正常工作時(shí),該引腳為通用I/OP1.7口線。ISP下載是基于串行傳輸方式,并且符合SPI協(xié)議。在SPI協(xié)議中,數(shù)據(jù)的發(fā)送和接收是同步進(jìn)行的。即在同步時(shí)鐘的作用下,在發(fā)送數(shù)據(jù)的同時(shí)也在接收數(shù)據(jù)。ISP的時(shí)序如圖所示。圖2-2ISP串行數(shù)據(jù)傳輸時(shí)序圖每一字節(jié)的數(shù)據(jù)都是低位在先,高位在后,在串行時(shí)鐘的作用下逐位傳輸。在傳輸過程中,數(shù)據(jù)是在時(shí)鐘輸入端為高電平時(shí)有效,在時(shí)鐘輸入端為低電平時(shí)更新數(shù)據(jù)。2.2方案選擇通常進(jìn)行單片機(jī)實(shí)驗(yàn)或開發(fā)時(shí),編程器是必不可少的。仿真調(diào)試過的程序需要借助編程器寫入單片機(jī)內(nèi)部或外接的程序存儲(chǔ)器中,隨著單片機(jī)技術(shù)的應(yīng)用發(fā)展,許多公司新推出的MCU具有片內(nèi)Flash存儲(chǔ)器,Flash存儲(chǔ)器具有電可擦除、無(wú)需后備電源保護(hù)數(shù)據(jù)、可在線編程等特點(diǎn)。在線編程允許單片機(jī)內(nèi)部運(yùn)行的程序去改寫Flash存儲(chǔ)器的內(nèi)容,利用這個(gè)特點(diǎn),不僅可以在運(yùn)行過程中修改某些運(yùn)行參數(shù),也為研制新型嵌入式應(yīng)用開發(fā)工具提供了技術(shù)基礎(chǔ)。采用宿主機(jī)/目標(biāo)機(jī)模式開發(fā)嵌入式應(yīng)用,利用宿主機(jī)上豐富的資源和良好的開發(fā)環(huán)境開發(fā)和仿真調(diào)試目標(biāo)機(jī)上的軟件,然后將交叉編譯生成的目標(biāo)代碼傳輸并裝載到目標(biāo)機(jī)上,并在監(jiān)控程序或者操作系統(tǒng)的支持下利用交叉調(diào)試器進(jìn)行分析和調(diào)試,最后目標(biāo)機(jī)在脫離宿主機(jī)單獨(dú)運(yùn)行。具有在線編程功能的單片機(jī)給實(shí)驗(yàn)和開發(fā)帶來(lái)了很大的方便和靈活性,并使單片機(jī)系統(tǒng)遠(yuǎn)程調(diào)試、升級(jí)成為現(xiàn)實(shí)。嵌入式面向用戶,面向產(chǎn)品,面向應(yīng)用的特性決定了它的硬件和軟件都必須高效率地設(shè)計(jì),量體裁衣,去除冗余,這樣才能在具體應(yīng)用中更具有競(jìng)爭(zhēng)力。嵌入式系統(tǒng)這種對(duì)體積的敏感性決定了它對(duì)外圍接口設(shè)備選擇的嚴(yán)格性。既要保證能與其它外圍設(shè)備高速、有效地通信,又要嚴(yán)格控制接口的體積。而通用串行總線USB正符合了這一要求。而USB1.1的最大傳輸速率可達(dá)12Mbps,USB2.0更是支持高達(dá)480Mbps的傳輸速率。由于常見的外設(shè)幾乎都支持USB,所以只需一到兩個(gè)USB接口,就可以完成嵌入式系統(tǒng)和幾乎所有常見外設(shè)的通信。這種解決方案無(wú)疑具有很強(qiáng)的實(shí)用性。USB接口分為USB主機(jī)USBMaster和USB外設(shè)USBSlave。USB主機(jī)負(fù)責(zé)對(duì)各種USB外設(shè)的控制并向USB外設(shè)供電。要實(shí)現(xiàn)嵌入式系統(tǒng)對(duì)各種外圍設(shè)備的有效控制,就必須在嵌入式系統(tǒng)中實(shí)現(xiàn)USBMaster的功能。在本設(shè)計(jì)中,選用的嵌入式微處理器需要是一款功能強(qiáng)大的RISC微處理器,其時(shí)鐘頻率高,它的體積小,功耗低,性能穩(wěn)定。本文采用USB接口技術(shù)和AVR單片機(jī)相結(jié)合,完成一個(gè)USB下載器,不需要使用編程器,只需要通過USB接口和編程電纜直接在目標(biāo)器件或系統(tǒng)上進(jìn)行編程。ATMEL公司的AVR系列單片機(jī),提供了一個(gè)SPI串行接口對(duì)內(nèi)部程序存儲(chǔ)器編程ISP,支持在線編程功能。本設(shè)計(jì)選用單片機(jī)是ATMEL公司推出的AVR系列單片機(jī),采用上/下位機(jī)設(shè)計(jì)方式,通過USB通訊方式實(shí)現(xiàn)信息傳輸。具體工作原理是:上位機(jī)〔PC機(jī)首先安裝驅(qū)動(dòng)程序和PC應(yīng)用軟件,然后將下位機(jī)系統(tǒng)安裝到單片機(jī)上,將USB插頭插入主機(jī),經(jīng)主機(jī)正確識(shí)別后,運(yùn)行PC應(yīng)用軟件將程序下載到目標(biāo)芯片中,下載的程序存儲(chǔ)到下位機(jī)存儲(chǔ)單元中,進(jìn)行ISP下載到目標(biāo)芯片中。用戶操作用戶操作顯示數(shù)據(jù)發(fā)送數(shù)據(jù)接受數(shù)據(jù)數(shù)據(jù)傳遞ISP操作數(shù)據(jù)反饋硬件平臺(tái)PC機(jī)應(yīng)用軟件USB接口ISP接口目標(biāo)芯片圖2-3系統(tǒng)框架圖上圖即為本設(shè)計(jì)的系統(tǒng)框架圖。從圖上可知,對(duì)于USB接口的設(shè)計(jì),拿出三種方案:方案一:采用USB接口芯片與AVR單片機(jī)相結(jié)合。用USB接口芯片來(lái)檢測(cè)以及反應(yīng)USB端口的事件。硬件模塊關(guān)系如下圖。ISPISP接口USB總線數(shù)據(jù)傳遞單片機(jī)USB 接口USB接口芯片PDIUSB12數(shù)據(jù)傳輸U(kuò)SB供電USB供電圖2-4方案一:硬件模塊關(guān)系圖USB接口芯片有許多種,可大致分為兩類:一種是內(nèi)部集成了微控制器,如美國(guó)Tl公司的TUSB32l0,它內(nèi)嵌一個(gè)兼容的8051MPU,還有CyPress半導(dǎo)體公司的CY7C63xxx二系列的芯片,它們擁有35條涉及基本的操作和程序跳轉(zhuǎn)等的指令:另一種USB芯片只處理USB通信,必須被一個(gè)外部微控制器控制。這一類有代表性的產(chǎn)品有朗訊公司的USS820/825、飛利浦公司的PDIUSBD12。經(jīng)過綜合考慮,我們的設(shè)計(jì)中采用了第二種類型的USB接口芯片。采用飛利浦公司的PDIUSBD12作為USB下載器的接口器件。方案二:不用USB接口芯片,由單片機(jī)發(fā)送、接收相關(guān)的USB設(shè)備信息,枚舉USB外設(shè)成功后,根據(jù)接收到的DI,進(jìn)行相應(yīng)的控制操作。ISPISP接口數(shù)據(jù)傳遞單片機(jī)USB 接口數(shù)據(jù)傳輸U(kuò)SB供電圖2-5方案二:硬件模塊關(guān)系圖從硬件模塊關(guān)系圖,我們就能得出:方案二比方案一簡(jiǎn)單。減少了USB接口芯片,整個(gè)設(shè)計(jì)的成本降低,電路簡(jiǎn)單化,可靠性提高。方案三:采用無(wú)線通信方式方式。不需要USB為目標(biāo)芯片供電。在線編程允許單片機(jī)內(nèi)部運(yùn)行的程序去改寫Flash存儲(chǔ)器的內(nèi)容,利用這個(gè)特點(diǎn),不僅可以在運(yùn)行過程中修改某些運(yùn)行參數(shù),也為研制新型嵌入式應(yīng)用開發(fā)工具提供了技術(shù)基礎(chǔ)。在線編程為開發(fā)調(diào)試提供了方便,無(wú)線通信給實(shí)驗(yàn)和開發(fā)帶來(lái)了很大的方便和靈活性,并使單片機(jī)系統(tǒng)遠(yuǎn)程調(diào)試、升級(jí)成為現(xiàn)實(shí)。2.3本章小結(jié)本章提出三種設(shè)計(jì)方案進(jìn)行對(duì)比,得出可行性方案二。并從單片機(jī)性能上進(jìn)行可行性論證。這是本設(shè)計(jì)的理論基礎(chǔ)。接下來(lái)的硬件設(shè)計(jì)和軟件設(shè)計(jì)就是根據(jù)這些內(nèi)容展開的。第三章系統(tǒng)硬件設(shè)計(jì)3.1MCU的選擇硬件是整個(gè)系統(tǒng)的基礎(chǔ),是完成各個(gè)功能的物理平臺(tái)。本設(shè)計(jì)的微控制器選擇AVR系列單片機(jī)ATmega8。在AVR家族中,ATmega8是一個(gè)非常特殊的單片機(jī),它的芯片內(nèi)部集成了較大容量的存儲(chǔ)器和豐富強(qiáng)大的硬件接口電路,具有AVR高檔單片機(jī)MEGE系列的全部性能和特點(diǎn),采用小引腳封裝,所以價(jià)格僅與低檔單片機(jī)相當(dāng),性價(jià)比高。ATmega8的主要性能如下:1.高性能,低功耗的8位AVR微控制器,先進(jìn)的RISC精簡(jiǎn)指令集結(jié)構(gòu)〔1130功能強(qiáng)大的指令,大多數(shù)為單時(shí)鐘周期指令〔232個(gè)8位通用工作寄存器〔3工作在16MHz時(shí),具有16MIPS的性能〔4片內(nèi)集成硬件乘法器〔執(zhí)行速度為2個(gè)時(shí)鐘周期2.片內(nèi)集成了較大容量的非易失性程序和數(shù)據(jù)存儲(chǔ)器以及工作存儲(chǔ)器〔18K字節(jié)的Flash程序存儲(chǔ)器,擦寫次數(shù):大于10000次〔2支持可在線編程〔ISP,可在應(yīng)用自編程〔IAP〔3帶有獨(dú)立加密位的可選BOOT區(qū),可通過BOOT區(qū)內(nèi)的引導(dǎo)程序區(qū)〔用戶自己寫入來(lái)實(shí)現(xiàn)IAP編程〔4512個(gè)字節(jié)的EEPROM,擦寫次數(shù):100000次〔51K字節(jié)內(nèi)部SRAM〔6可編程的程序加密位3.豐富強(qiáng)大的外部接口〔Periphcral性能〔12個(gè)具有比較模式的帶預(yù)分頻器〔SeparatePrescale的8位定時(shí)/計(jì)數(shù)器〔21個(gè)帶預(yù)分頻器〔SeparatePrescale,具有比較和捕獲模式的16位定時(shí)/計(jì)數(shù)器〔31個(gè)具有獨(dú)立振蕩器的異步實(shí)時(shí)時(shí)鐘〔RTC〔43個(gè)PWM通道,可實(shí)現(xiàn)任意小于16位,相位和頻率可調(diào)的PWM脈寬調(diào)制輸出〔58通道A/D轉(zhuǎn)換〔TQFP,MLF,6路10位A/D+2路8位A/D〔66通道A/D轉(zhuǎn)換〔PDIP封裝,4路10位A/D+2路8位A/D〔71個(gè)I2C的串行接口,支持主/從,收發(fā)四種工作方式,支持自動(dòng)總線仲裁〔81個(gè)可編程的串行USART接口,支持同步,異步以及多機(jī)通信自動(dòng)地址識(shí)別〔91個(gè)支持主從〔Master/Slave收發(fā)的SPI同步串行接口〔10帶片內(nèi)RC振蕩器的可編程看門狗定時(shí)器〔11片內(nèi)模擬比較器4.特殊的微控制器性能〔1可控制的上電復(fù)位延時(shí)電路和可編程的欠電壓檢測(cè)電路〔2內(nèi)部集成了可選擇頻率〔1/2/4/8MHz,可校準(zhǔn)的RC振蕩器〔25C,5V,1MHZ時(shí),精度為1%〔3外部和內(nèi)部的中斷源18個(gè)〔4五種睡眠模式:空閑模式〔Idle,ADC噪聲抑制模式〔ADCNoiseReduction省電模式〔Pow-save掉電模式〔Power-down,待命模式〔Standby5.I/O口和封裝〔1最多23個(gè)可編程I/O口,可任意定義I/O的的輸入/輸出方向;輸出時(shí)為推挽輸出,驅(qū)動(dòng)能力強(qiáng),可直接驅(qū)動(dòng)LED等大電流負(fù)載:輸入口可定義為三態(tài)輸入,可以設(shè)定帶內(nèi)阻上拉電阻,省去外接上拉電阻〔228腳PDIP封裝,32腳TQFP封裝和32腳MLF封裝6.寬工作電壓〔12.7V~5.5V〔ATmega8L〔24.5V~5.5V〔ATmega87.高運(yùn)行速度〔10~8MHz〔ATmega8L〔20~16MHz〔ATmega88.低功耗〔4MHz,3V,25C〔1正常模式〔Active:3.6mA〔2空閑模式〔IdleMode:1.0mA〔3掉電模式〔Power-downMode:0.5uAATmega8內(nèi)嵌8K字節(jié)的Flash存儲(chǔ)空間,18個(gè)外部和內(nèi)部的中斷源。它在4.5V~5.5V工作電壓范圍內(nèi)的工作速率范圍為0~16MHz,這使得它有極高的速率和存儲(chǔ)空間來(lái)應(yīng)付USB通訊。3.1.從通信協(xié)議和傳輸過程可知,ATmega8單片機(jī)在初始化后要保持接收地址狀態(tài),當(dāng)接收到本機(jī)地址后回送地址并設(shè)置本機(jī)為接收數(shù)據(jù)狀態(tài),接受完數(shù)據(jù)后做出相應(yīng)反應(yīng),最后回到接收地址的狀態(tài)。單片機(jī)主流程的核心部分是協(xié)議層的請(qǐng)求處理,它關(guān)系到PC機(jī)枚舉USB外設(shè)成功與否。所以在調(diào)試單片機(jī)程序的時(shí)候,要特別注意Windows對(duì)USB設(shè)備的枚舉順序。如果枚舉成功,主機(jī)將找到新的設(shè)備,提示安裝驅(qū)動(dòng)程序;否則找到未知設(shè)備,USB外設(shè)不可用。關(guān)中斷關(guān)中斷接受數(shù)據(jù),讀取本機(jī)地址地址?本機(jī)地址?分析數(shù)據(jù),完成動(dòng)作送回相應(yīng)數(shù)據(jù)回送地址設(shè)置為接收地址設(shè)置接受數(shù)據(jù)開中斷響應(yīng)串口中斷中斷返回NYYN圖3-1串口通信流程圖3.2硬件電路設(shè)計(jì)本設(shè)計(jì)電路圖見附圖,該電路設(shè)計(jì)分析如下:〔1ATmega8的PC6〔RESET與PB2〔SS及ISP插座上的RST通過JP2相連,當(dāng)接通JP2,即實(shí)現(xiàn)ATmega8的自編程?!?ATmega8的PB3<MOSI>,PB4<MISO>,PB5<SCK>分別與ISP插座上的MOSI,MISO,SCK相連,實(shí)現(xiàn)SPI主從機(jī)串行通信。〔3PC0,PC1各接一個(gè)LED燈,用來(lái)指示工作狀態(tài)?!?在PB6,PB7之間接一個(gè)12MHz晶振,提供外部時(shí)鐘?!?由于USB接口的電壓,數(shù)值為3.6V,而電腦USB端口的輸出電壓為5V,為了電平匹配,本電路使用3.6V穩(wěn)壓二極管D1,D2來(lái)分別與D-,D+相連3.3本章小結(jié)本章著重介紹了本課題實(shí)驗(yàn)平臺(tái)的主要硬件構(gòu)成,該平臺(tái)選用ATmega8作為系統(tǒng)處理器,是由于ATmega8芯片的高速,低功耗,性能穩(wěn)定等特點(diǎn),也為該演示平臺(tái)的將來(lái)功能的擴(kuò)展和升級(jí)提供便利。第四章系統(tǒng)軟件設(shè)計(jì)本設(shè)計(jì)的軟件主要分為兩個(gè)部分:單片機(jī)上的控制系統(tǒng)設(shè)計(jì)和PC機(jī)上的應(yīng)用程序設(shè)計(jì)。單片機(jī)控制系統(tǒng)負(fù)責(zé)與PC機(jī)通信和對(duì)目標(biāo)芯片ISP編程,PC機(jī)上的應(yīng)用程序包括USB的驅(qū)動(dòng)程序和ISP下載控制軟件。利用雙龍?jiān)诰€編程軟件將在AVRStudio中生成的HEX文件下載到ATmega8芯片中,完成了單片機(jī)上的控制系統(tǒng)設(shè)計(jì)。下面進(jìn)行PC機(jī)上USB下載器驅(qū)動(dòng)程序的設(shè)計(jì)。4.1系統(tǒng)固件程序設(shè)計(jì)所有基于微控制器及其外圍電路的功能設(shè)備的正常工作都離不開固件的參與。固件的作用就是輔助硬件,或者說(shuō)是控制硬件來(lái)完成預(yù)期的設(shè)備功能。沒有固件的參與和控制,硬件設(shè)備只是芯片的簡(jiǎn)單的堆砌,無(wú)法實(shí)現(xiàn)預(yù)期的功能,就像一臺(tái)沒有安裝操作系統(tǒng)的計(jì)算機(jī)一樣。USB設(shè)備也不例外。因此,用戶必須根據(jù)實(shí)際的需要來(lái)編寫固件程序,從而輔助硬件完成USB通信任務(wù)。一般情況下,設(shè)備是不能啟動(dòng)任何傳輸過程的,它只能對(duì)主機(jī)的請(qǐng)求作出響應(yīng)。固件一直就等待主機(jī)的命令,再根據(jù)命令去執(zhí)行相應(yīng)的程序。4.1.1固件程序開發(fā)工具ATMEL開發(fā)的AVRSTUDIO軟件是一個(gè)用于開發(fā)AVR系列單片機(jī)的集成工作環(huán)境。該軟件有以下功能:匯編程序匯編器,模擬仿真功能〔需仿真機(jī)結(jié)合,AVRProg串行編程,STK500/AVRISP/JTAGICE編程等功能。AVRSTUDIO支持ATMEL全系列仿真器。在AVRSTUDIO中可以完成所有的操作,如建立項(xiàng)目,建立和編輯匯編源文件,匯編〔可以生成OBJ和HEX文件,調(diào)試,程序下載等,一氣呵成,十分方便。固件程序下載雙龍?jiān)诰€編程軟件<SLISP>是由XX市雙龍電子開發(fā)的擁有獨(dú)立知識(shí)產(chǎn)權(quán)的編程軟件,使用這個(gè)軟件可以對(duì)AT89S系列、AVR系列MCU進(jìn)行串行編程.由下載電纜和應(yīng)用軟件組成,支持的器件為ATMEL公司的AT89S系列<包含AT89S51/52>和AVR系列;支持的燒錄文件格式有INTEL格式的HEX文件、EEP文件、二進(jìn)制BIN文件;支持緩沖區(qū)數(shù)據(jù)修改和保存,緩沖區(qū)中的數(shù)據(jù)可以保存為二進(jìn)制BIN文件、INTEL格式的HEX或EEP文件;緩沖區(qū)中的數(shù)據(jù)還可以保存為C程序中的char或unsignedchar類型數(shù)組文件,以方便程序開發(fā)者處理某些特殊應(yīng)用.下載電纜有10根線,一端連接計(jì)算機(jī)的并行口,另一端連接ISP下載插座。此時(shí),該USB下載器即相當(dāng)于一個(gè)ATmega8的串行編程器,實(shí)現(xiàn)ATmega8自編程。USB接口可實(shí)現(xiàn)為下載線路供電。4.2系統(tǒng)驅(qū)動(dòng)程序設(shè)計(jì)設(shè)計(jì)一個(gè)USB外圍設(shè)備,除了固件程序外還需要設(shè)計(jì)相應(yīng)的設(shè)備驅(qū)動(dòng)程序,才能使之與PC通信。設(shè)備驅(qū)動(dòng)程序?qū)嶋H上是一系列控制硬件設(shè)備的函數(shù),是操作系統(tǒng)中控制和鏈接硬件的關(guān)鍵模塊。它提供連接到計(jì)算機(jī)的硬件設(shè)備的軟件接口。設(shè)備驅(qū)動(dòng)程序?qū)⒉煌庠O(shè)特性和操作系統(tǒng)高層分割開,隱藏了硬件設(shè)備內(nèi)部的實(shí)現(xiàn)細(xì)節(jié),并對(duì)操作系統(tǒng)透明。對(duì)于USB外設(shè),驅(qū)動(dòng)程序的優(yōu)劣直接將影響著設(shè)備性能的發(fā)揮,好的驅(qū)動(dòng)程序能夠準(zhǔn)確、穩(wěn)定、可靠的按主體的要求完成數(shù)據(jù)信息的傳輸和處理,為上層應(yīng)用軟件提供良好的接口。驅(qū)動(dòng)程序開發(fā)工具Driverstudio是一套用來(lái)簡(jiǎn)化微軟Windows平臺(tái)下設(shè)備驅(qū)動(dòng)程序的開發(fā),調(diào)試和測(cè)試的工具包。在windwos2000操作系統(tǒng)下建立WDM驅(qū)動(dòng)程序編程環(huán)境,首先安裝DDK,后安裝DriverStudio,并選擇安裝Driverworks,ToolS和SoftCE工具。則在visualC++編程工具欄中自動(dòng)添加了一個(gè)DriveStudio菜單。通過DriverStudio已經(jīng)初步建立了一個(gè)驅(qū)動(dòng)程序框架,根據(jù)需要向里面填充內(nèi)容即可。4.2.USB系統(tǒng)通過具有相同接口的串行連線將不同的設(shè)備連接到一起。USB的物理拓?fù)浣Y(jié)構(gòu)為分層的星型結(jié)構(gòu),由三層組成:USB主機(jī)〔Host、USB設(shè)備〔Device和USB集線器〔Hub。USB主機(jī)是星型結(jié)構(gòu)的中心,它通過USB集線器連接更多的USB設(shè)備,組成USB系統(tǒng)。由于總線電氣性能的原因,物理上USB設(shè)備最多可以通過USB集線器擴(kuò)展到6層。從邏輯上看,USB主機(jī)可以與分層的USB設(shè)備直接通信,就好象與設(shè)備直接相連一樣?!?USB主機(jī)作為USB系統(tǒng)的主控組件,USB主機(jī)控制USB總線上所有USB設(shè)備和集線器的數(shù)據(jù)通信過程。在整個(gè)USB系統(tǒng)中只允許有一個(gè)USB主機(jī),并且必須要有一個(gè)USB主機(jī)控制整個(gè)系統(tǒng)的數(shù)據(jù)傳輸工作。所有的數(shù)據(jù)傳輸都是由USB主機(jī)發(fā)起的。USB主機(jī)在USB系統(tǒng)中是一個(gè)起協(xié)調(diào)作用的實(shí)體,它不僅占有特殊的物理位置,而且對(duì)于USB以及連到USB上的設(shè)備來(lái)說(shuō),還負(fù)有特殊的責(zé)任;主機(jī)控制所有USB設(shè)備的訪問;一個(gè)USB設(shè)備想要訪問總線必須由主機(jī)給予其使用權(quán);主機(jī)還負(fù)責(zé)監(jiān)督USB的拓?fù)浣Y(jié)構(gòu)。〔2USB設(shè)備USB設(shè)備就是能通過USB來(lái)發(fā)送和接受數(shù)據(jù)從而實(shí)現(xiàn)一定功能的實(shí)體。USB設(shè)備從底層的物理和電氣特性到上層的軟件協(xié)議和數(shù)據(jù)結(jié)構(gòu)都有嚴(yán)格的定義,分為很多USB設(shè)備類,如鍵盤、打印機(jī)等。每個(gè)USB設(shè)備都有表明自身能力和所需要資源的描述符。在設(shè)備第一次連接到主機(jī)上之后,設(shè)備就可以分得USB的帶寬,進(jìn)行數(shù)據(jù)的傳輸了。在總線的數(shù)據(jù)傳輸過程中,相對(duì)于USB主機(jī)而言,USB設(shè)備一直扮演著受控的角色,按照USB主機(jī)的要求接受或發(fā)送數(shù)據(jù)。根據(jù)數(shù)據(jù)傳輸?shù)乃俣炔煌?USB設(shè)備被分為全USB設(shè)備速設(shè)備〔12Mb/s和低速設(shè)備〔1.5Mb/s兩種,在USB2.0的版本中還定義了高速設(shè)備,傳輸速率達(dá)到480Mb/s?!?USB集線器USB集線器提供了用來(lái)連接USB設(shè)備的接口,一個(gè)集線器能將一個(gè)USB的連接點(diǎn)轉(zhuǎn)化為多個(gè)連接點(diǎn),使得多個(gè)設(shè)備能同時(shí)連接到唯一的USB總線上進(jìn)行通信。作為USB體系結(jié)構(gòu)中的專用設(shè)備,USB接線器的突出特點(diǎn)是支持熱插拔、區(qū)分設(shè)備速度、為設(shè)備供電和檢測(cè)設(shè)備的各種狀態(tài)并通知USB主機(jī)。USB主機(jī)提供USB接線器的驅(qū)動(dòng)軟件,并具有對(duì)接線器的每個(gè)端口電源進(jìn)行開關(guān)的功能,并對(duì)每個(gè)端口的變化作出反應(yīng)。在USB主機(jī)的硬件控制器內(nèi)部一般要嵌入一個(gè)接線器部件,稱為根接線器,它具有USB接線器除中斷傳輸之外的全部功能。4.USB總線傳輸協(xié)議是USB設(shè)備和USB主機(jī)之間的數(shù)據(jù)流協(xié)議。數(shù)據(jù)在主機(jī)和設(shè)備之間的傳輸過程,在USB總線傳輸協(xié)議中被分成了三層:信號(hào)層、協(xié)議層和數(shù)據(jù)傳輸層。首先介紹一下相關(guān)的基本概念。端點(diǎn):每一個(gè)USB設(shè)備在主機(jī)看來(lái)就是端點(diǎn)的集合,主機(jī)只能通過端點(diǎn)與設(shè)備進(jìn)行通訊,以使用設(shè)備的功能。每個(gè)端點(diǎn)實(shí)際上就是一個(gè)一定大小的數(shù)據(jù)緩沖區(qū),這些端點(diǎn)在設(shè)備出廠時(shí)就已定義好其地址的分配。在USB系統(tǒng)中,每一個(gè)端點(diǎn)都有唯一的地址,這是由設(shè)備地址和端點(diǎn)號(hào)給出的。每個(gè)端點(diǎn)都有一定的特性,其中包括傳輸方式、總線訪問頻率、帶寬、端點(diǎn)號(hào)、數(shù)據(jù)包的最大容量等。端點(diǎn)必須在設(shè)備后才能生效〔端點(diǎn)0除外。端點(diǎn)0通常為控制端點(diǎn),用于設(shè)備初始化等,端點(diǎn)1、2等一般用作數(shù)據(jù)傳輸端點(diǎn),存放主機(jī)與設(shè)備之間往來(lái)的數(shù)據(jù)。接口:USB端點(diǎn)被捆綁為接口。每個(gè)USB接口只處理一種USB邏輯連接,例如鼠標(biāo),鍵盤等。因?yàn)橐粋€(gè)USB接口代表一個(gè)基本功能,因而每個(gè)USB驅(qū)動(dòng)程序控制一個(gè)接口。配置:USB接口本身被捆綁為配置。一個(gè)USB設(shè)備可以有多個(gè)配置。而且可以在配置之間切換以改變?cè)O(shè)備的狀態(tài),但一個(gè)時(shí)刻只能激活其中一個(gè)配置。管道:一個(gè)USB管道是主機(jī)驅(qū)動(dòng)程序的一個(gè)數(shù)據(jù)緩沖區(qū)一個(gè)USB外設(shè)端點(diǎn)的連接,它代表了一種在兩者之間移動(dòng)數(shù)據(jù)的能力。一旦設(shè)備被配置,管道就存在了。管道有兩種類型:數(shù)據(jù)管道和消息管道。幀:USB協(xié)議中的幀,可以看成是一個(gè)時(shí)間單位,也可以看成是一個(gè)長(zhǎng)度單位。從時(shí)間單位上來(lái)看,一幀的長(zhǎng)度為1ms,系統(tǒng)中所有事務(wù)的處理都是在以幀為單位的時(shí)間周期內(nèi)完成。從長(zhǎng)度上來(lái)看,對(duì)于USB1.1協(xié)議,一幀的數(shù)據(jù)長(zhǎng)度為12000比特,如果所有的事務(wù)處理不能占滿整個(gè)幀長(zhǎng)時(shí),主機(jī)會(huì)填充上空閑位。4.USB系統(tǒng)的功能就是完成數(shù)據(jù)的傳輸,其主要特點(diǎn)就是USB系統(tǒng)中所有的操作都由USB主機(jī)來(lái)發(fā)起、控制和結(jié)束的。USB設(shè)備就是充當(dāng)了一個(gè)被動(dòng)者的角色?!惨籙SB設(shè)備的枚舉過程在主機(jī)與設(shè)備進(jìn)行通信之前,主機(jī)需要知道設(shè)備的一些具體信息,主機(jī)必須分配一個(gè)地址給設(shè)備。主機(jī)是通過一個(gè)被稱為枚舉的過程來(lái)完成這些工作。其流程如下:<1>用戶插入一個(gè)設(shè)備到USB設(shè)備到USB端口:集線器給USB端口供電,此時(shí)設(shè)備處于上電狀態(tài);<2>主機(jī)通過集線器來(lái)確定連接事件的細(xì)節(jié):當(dāng)集線器通過差模信號(hào)線<D+和D->檢測(cè)到設(shè)備的接入后,主機(jī)會(huì)等待100ms以使設(shè)備的接入過程順利完成并使供電穩(wěn)定;<3>主機(jī)再給集線器發(fā)送一個(gè)SetPortFeature請(qǐng)求,重新配置端口,集線器來(lái)確定設(shè)備接入的端口上保持復(fù)位命令10ms,然后,該端口就處于被激活的狀態(tài),這時(shí),設(shè)備處于缺省態(tài),可以從端口上獲取最高達(dá)100mA的電流,設(shè)備的所有寄存器等均已復(fù)位,并通過默認(rèn)地址0與主機(jī)通信;<4>主機(jī)獲取設(shè)備描述符:主機(jī)發(fā)送一個(gè)GetDescriptor請(qǐng)求來(lái)獲得缺省管道的最大數(shù)據(jù)包的大小;<5>主機(jī)分配一個(gè)地址給設(shè)備:主機(jī)控制器通過發(fā)送一個(gè)SetAddress請(qǐng)求來(lái)給設(shè)備分配一個(gè)總線上的唯一地址,此時(shí)設(shè)備進(jìn)入地址態(tài),在以后的各種數(shù)據(jù)傳輸中,設(shè)備將使用這個(gè)新地址;<6>主機(jī)獲取設(shè)備的配置描述符:主機(jī)給新地址發(fā)送一個(gè)GetDescriptor請(qǐng)求來(lái)讀取這個(gè)設(shè)備描述符,這個(gè)描述符包括端點(diǎn)0的最大包的大小、設(shè)備支持的配置號(hào)、以及關(guān)于這個(gè)設(shè)備的其他基本信息;<7>主機(jī)給設(shè)備分配配置值:在從描述符了解了設(shè)備之后,主機(jī)發(fā)送一個(gè)SetConfiguration命令來(lái)請(qǐng)求希望的配置號(hào),設(shè)備讀取這個(gè)請(qǐng)求后設(shè)定自己配置來(lái)匹配主機(jī)的請(qǐng)求,設(shè)備此時(shí)處于配置狀態(tài),并且設(shè)備的接口已經(jīng)被使能,也就是說(shuō),這個(gè)USB已經(jīng)可以開始使用了?!捕SB設(shè)備的描述符及標(biāo)準(zhǔn)請(qǐng)求命令當(dāng)USB設(shè)備第一次連接到主機(jī)上時(shí),主機(jī)要求了解USB設(shè)備的一些基本信息,比如設(shè)備有何種功能、需要占用多少USB資源、屬于何種設(shè)備類等。只有主機(jī)完全確認(rèn)了這些信息之后,設(shè)備才能正常工作。這些信息是通過存儲(chǔ)在設(shè)備中的USB描述符來(lái)體現(xiàn)的。描述符可以看作是一個(gè)完整的數(shù)據(jù)結(jié)構(gòu),用于描述一個(gè)USB設(shè)備的所有屬性。USB協(xié)議1.1中規(guī)定的標(biāo)準(zhǔn)的描述符包括以下幾種:設(shè)備描述符:描述了USB設(shè)備的通用信息,一個(gè)USB設(shè)備只有一個(gè)設(shè)備描述符。設(shè)備描述符包括設(shè)備類代碼、子類代碼、設(shè)備協(xié)議代碼、端點(diǎn)0最大包的大小等基本信息;配置描述符:用于描述一個(gè)USB設(shè)備的屬性和能力等配置信息,一個(gè)USB設(shè)備也只需一個(gè)配置描述符就足夠了。配置描述符包括配置描述符的類型編號(hào)、所支持的接數(shù)量、供電模式的選擇等;端點(diǎn)描述符:用于描述接口所使用的非0端點(diǎn)的屬性,包括輸入/輸出方向、端點(diǎn)號(hào)和端點(diǎn)容量等。在USB對(duì)設(shè)備進(jìn)行枚舉時(shí),主機(jī)需要對(duì)設(shè)備進(jìn)行一系列設(shè)置。主機(jī)通過缺省的控制管道對(duì)設(shè)備發(fā)送一些基本的請(qǐng)求命令,完成讀取設(shè)備狀態(tài)、設(shè)備的各種描述符,并對(duì)設(shè)備重新分配地址,重新配置端口等功能。這些命令都是由控制傳輸方式來(lái)傳送的。我們將這些基本的請(qǐng)求命令稱為標(biāo)準(zhǔn)的USB設(shè)備請(qǐng)求命令,這些請(qǐng)求命令是主機(jī)配置USB設(shè)備的關(guān)鍵。標(biāo)準(zhǔn)的USB設(shè)備請(qǐng)求命令是一個(gè)8字節(jié)的數(shù)據(jù)包,在USB1.1協(xié)議中,這樣的命令有11個(gè),都具有相同的數(shù)據(jù)結(jié)構(gòu)格式。結(jié)合USB系統(tǒng)的枚舉過程和標(biāo)準(zhǔn)設(shè)備請(qǐng)求命令來(lái)看,USB系統(tǒng)的枚舉過程起始就是主機(jī)向設(shè)備發(fā)送標(biāo)準(zhǔn)的設(shè)備請(qǐng)求命令的過程。從軟件角度看,主機(jī)按照枚舉的過程依次向設(shè)備寫入請(qǐng)求命令,在枚舉功能完成之后,用戶應(yīng)用軟件通過驅(qū)動(dòng)程序并遵循一定的設(shè)備類協(xié)議對(duì)設(shè)備進(jìn)行各種操作。4.2.5USB主機(jī)端的軟件開發(fā)方法與用戶使用的操作系統(tǒng)平臺(tái)有關(guān)。目前,微軟主流的操作系統(tǒng)Windows2000和WindowsXP等,大多數(shù)USB設(shè)備只能在Windows下使用,但也不是所有的Windwos版本都能很好地支持USB。從Windows98開始,微軟開始在操作系統(tǒng)中為USB提供越來(lái)越完善的驅(qū)動(dòng)支持,USB驅(qū)動(dòng)程序開始成為Windows標(biāo)準(zhǔn)的WDM<WindowsDriverModel>驅(qū)動(dòng)程序體系的一部分。Windows設(shè)備驅(qū)動(dòng)方式主要有三類:即VxD<虛擬設(shè)備驅(qū)動(dòng)程序>、KMD<內(nèi)核模式驅(qū)動(dòng)程序>和WDM<Windows設(shè)備驅(qū)動(dòng)程序模型>。本設(shè)計(jì)USB設(shè)備驅(qū)動(dòng)采用WDM模型。1.WDM驅(qū)動(dòng)程序的兩種工作模式<1>內(nèi)核模式任務(wù)可以運(yùn)行特權(quán)級(jí)指令,對(duì)任何I/O設(shè)備有全部的訪問權(quán),還能夠訪問任何虛地址和控制虛擬內(nèi)存硬件。此類模式的驅(qū)動(dòng)程序文件以sys為后綴名,存在于系統(tǒng)目錄下。<2>用戶模式在這種模式中,運(yùn)行的代碼如果不通過操作系統(tǒng)中某種門機(jī)制,就不能進(jìn)入內(nèi)核模式。在Intel80x86處理器上,該模式對(duì)應(yīng)于RINGG3級(jí)環(huán)。此類模式的驅(qū)動(dòng)程序以可執(zhí)行文件<.exe>或動(dòng)態(tài)鏈接庫(kù)<.dll>的形式存在,可以從任何路徑運(yùn)行。2.WDM分層驅(qū)動(dòng)模式WDM采用分層的驅(qū)動(dòng)程序模型如圖4-1所示,在不同的層次上的驅(qū)動(dòng)程序有不同的優(yōu)先級(jí)。在WDM中用功能設(shè)備對(duì)象<FDO>與物理設(shè)備對(duì)象<PDO>來(lái)描述硬件。一個(gè)PDO對(duì)應(yīng)一個(gè)硬件,一個(gè)硬件只允許有一個(gè)PDO,卻可以擁有多個(gè)FDO,在FDO的上下有一些過濾器設(shè)備對(duì)象<FiDO>。4.2.61USB驅(qū)動(dòng)程序的內(nèi)核層圖4-1USB驅(qū)動(dòng)程序的體系結(jié)構(gòu)USB驅(qū)動(dòng)程序運(yùn)行在內(nèi)核態(tài),有三個(gè)層次:.最高層,是用戶開發(fā)的被稱為USB設(shè)備驅(qū)動(dòng)程序;.中間層,是USB類驅(qū)動(dòng)程序,在Windows98中為usbd.sys;.最低層,是主機(jī)控制器驅(qū)動(dòng)程序,有兩種主機(jī)控制器驅(qū)動(dòng)程序,即通用主機(jī)控制器驅(qū)動(dòng)程UHCD<UniversalHostControlDriver>和開放主機(jī)控制器接口OpenHCI<OpenHostControlInterface>。USB設(shè)備驅(qū)動(dòng)程序通過調(diào)用USB類驅(qū)動(dòng)程序的服務(wù)來(lái)訪問USB設(shè)備,它們之間的接口被稱為USB驅(qū)動(dòng)程序接口USBDI。USB類驅(qū)動(dòng)程序和通用主機(jī)控制器驅(qū)動(dòng)程序或開放主機(jī)控制器接口之間進(jìn)行交互,該接口稱為通用主機(jī)接口<UHI>或開放主機(jī)接口<OHI>,USB類驅(qū)動(dòng)程序把USB設(shè)備驅(qū)動(dòng)程序所產(chǎn)生的請(qǐng)求通過UHI或OHI發(fā)送下去。USB驅(qū)動(dòng)程序軟件堆棧內(nèi)的層間通信使用IRP機(jī)制,一個(gè)設(shè)備驅(qū)動(dòng)程序要和另外一個(gè)設(shè)備驅(qū)動(dòng)程序進(jìn)行通信時(shí),它會(huì)用一個(gè)IRP結(jié)構(gòu)來(lái)組裝一個(gè)請(qǐng)求,并把該請(qǐng)求傳遞到下一層上去,下一層正確接受了該請(qǐng)求之后,會(huì)向發(fā)送方發(fā)出一個(gè)應(yīng)答<ACK>握手信號(hào)。重復(fù)這個(gè)過程,就可以在不同分層結(jié)構(gòu)之間實(shí)現(xiàn)通信了。雖然不同的軟件分層通信都要使用IRP,而實(shí)際的USB請(qǐng)求卻存放在一個(gè)被Microsoft稱之為通用串行總線請(qǐng)求<URP>的結(jié)構(gòu)內(nèi)。URP內(nèi)包含了不同的域,在不同的軟件分層結(jié)構(gòu)中,每一個(gè)分層會(huì)使用不同的域來(lái)進(jìn)行處理操作。2USB程序各層的功能〔1USB設(shè)備驅(qū)動(dòng)程序USB設(shè)備驅(qū)動(dòng)程序位于USB類驅(qū)動(dòng)程序之上,不與實(shí)際的硬件打交道,而是通過USBDI的內(nèi)部IOCTL使用USB類驅(qū)動(dòng)程序。因?yàn)樗鼈兌际莾?nèi)部IOCTL,所以只能用于內(nèi)核態(tài)的調(diào)用<如設(shè)備驅(qū)動(dòng)程序>,但不能用于用戶態(tài)的應(yīng)用程序?!?USB類驅(qū)動(dòng)程序USBD負(fù)責(zé)管理USB系統(tǒng)中通用串行總線的工作,控制所有的USB協(xié)議操作和高層中斷處理控制。圖4-2設(shè)備驅(qū)動(dòng)程序調(diào)用用戶態(tài)與內(nèi)核態(tài)通訊流程是:應(yīng)用程序通過WIN32提供的API調(diào)用,向WNI32子系統(tǒng)發(fā)出命令;WlN32子系統(tǒng)通過標(biāo)準(zhǔn)的系統(tǒng)調(diào)用與內(nèi)核層的I/O管理器通訊,將用戶程序的API調(diào)用轉(zhuǎn)換成IRP<I/ORequestPackage>包;I/O管理器將IRP包傳遞給指定的設(shè)備驅(qū)動(dòng)程序;設(shè)備驅(qū)動(dòng)程序再將IRP轉(zhuǎn)換為相應(yīng)的硬件抽象層HAL<Hardwareabstracotionlayer>調(diào)用并傳遞給HAL層;最后由HAL與硬件直接打交道,得到用戶程序需要的數(shù)據(jù),并沿原路通過設(shè)備驅(qū)動(dòng)程序、I/O管理器和WNI32子系統(tǒng)返回到用戶程序。3.總線驅(qū)動(dòng)程序和類驅(qū)動(dòng)程序總線驅(qū)動(dòng)程序負(fù)責(zé)發(fā)現(xiàn)總線上的全部設(shè)備,管理設(shè)備與計(jì)算機(jī)的連接,檢測(cè)設(shè)備的添加和刪除,并且為它發(fā)現(xiàn)的設(shè)備創(chuàng)建一個(gè)物理設(shè)備對(duì)象PDO。通常,一旦總線驅(qū)動(dòng)程序管了控制權(quán),它可以直訪問硬件,但USB設(shè)備必須通過它的類驅(qū)動(dòng)程進(jìn)行問。4.2.7獲取硬件信息獲取硬件信息分配硬件資源導(dǎo)入工作例程打開設(shè)備對(duì)象數(shù)據(jù)傳輸終止否?刪除設(shè)備終止否?否卸載例程數(shù)據(jù)傳輸例程初始化例程開始結(jié)束圖4-3系統(tǒng)驅(qū)動(dòng)程序開發(fā)模型Windows驅(qū)動(dòng)程序模型<WindowsDriverModel,WDM>是一種模型結(jié)構(gòu),它建立在物理設(shè)備對(duì)象<PhysicalDeviceObject,PDO>和功能設(shè)<FunctionalDeviceObject,FDO>的結(jié)構(gòu)化分層基礎(chǔ)上。WDM模型為了適應(yīng)即插即用系統(tǒng),重新定義了驅(qū)動(dòng)程序分層,它至少存在總線驅(qū)動(dòng)程序和功能驅(qū)動(dòng)程序,根據(jù)需要還可以選擇過濾器驅(qū)動(dòng)程序。通常情況下,連接到總線的每個(gè)物理部件都有一個(gè)PDO,承擔(dān)由硬件實(shí)現(xiàn)的低級(jí)設(shè)備控制的責(zé)任。更高級(jí)軟件則都存在一個(gè)FDO。當(dāng)存在IPO操作時(shí),IRP請(qǐng)求包<IPORequestPacket>首先被送到上級(jí)過濾器驅(qū)動(dòng)程序,然后被一級(jí)一級(jí)的往下傳遞,最后由總線驅(qū)動(dòng)程序完成對(duì)設(shè)備的操作。設(shè)備驅(qū)動(dòng)程序位于整個(gè)結(jié)構(gòu)的最頂層,它不直接操作硬件,而是通過USBD接口傳遞請(qǐng)求。當(dāng)設(shè)備驅(qū)動(dòng)程序被系統(tǒng)加載時(shí),首先進(jìn)入DriverEntry<>入口例程,在該例程中主要設(shè)置程序中要處理的各個(gè)MajorFunctonIRP和AddDevice的處理函數(shù)入口點(diǎn)。當(dāng)USB堆棧檢測(cè)到設(shè)備后,即插即用管理器<PlugandPlayManager>調(diào)用DriverEntry例程中設(shè)置的AddDevice處理函數(shù)進(jìn)行資源的分配和FDO的創(chuàng)建。該例程的偽代碼為:PnPAddDevice<INPDRIVER-OBJECTFDO,INPDEVICE-OBJECTPDO>{//為設(shè)備創(chuàng)建一個(gè)符號(hào)鏈接,用于應(yīng)用程序的CreateFile調(diào)用;//創(chuàng)建設(shè)備對(duì)象和設(shè)備擴(kuò)展;//初始化設(shè)備對(duì)象和設(shè)備擴(kuò)展中的各個(gè)變量;//向PDO查詢?cè)O(shè)備的電源性能并保存到FDO的設(shè)備擴(kuò)展中;//因?yàn)樵O(shè)備可能暫時(shí)不被使用,關(guān)閉USB設(shè)備電源。}當(dāng)USB堆棧分配完資源后,將會(huì)發(fā)送一個(gè)信號(hào)來(lái)激活DriverEntry例程中指定的處理函數(shù),這個(gè)函數(shù)將完成如下工作:獲取設(shè)備描述符;獲取配置描述符;從配置描述符中選擇一個(gè)接口,并用該接口配置設(shè)備。如果配置成功,將配置信息存放在設(shè)備擴(kuò)展中。這時(shí),驅(qū)動(dòng)程序已經(jīng)完全就緒,等待應(yīng)用程序發(fā)出與設(shè)備進(jìn)行通信的請(qǐng)求。當(dāng)應(yīng)用程序與設(shè)備進(jìn)行數(shù)據(jù)傳輸時(shí),應(yīng)用程序首先必須調(diào)用CreateFile打開設(shè)備,然后利用返回的句柄對(duì)設(shè)備進(jìn)行讀寫操作。對(duì)于驅(qū)動(dòng)程序,當(dāng)應(yīng)用程序調(diào)用CreateFile時(shí),處理函數(shù)將被激活,并完成如下工作:獲取當(dāng)前IRP的堆棧指針,通過堆棧指針獲得要打開的文件名,然后通過文件名找到內(nèi)部管道ID,若對(duì)當(dāng)前接口此管道ID合法,則將該管道打開,并將返回給應(yīng)用程序一個(gè)合法句柄。管道被打開后,用戶應(yīng)用程序?qū)?huì)調(diào)用ReadFile或WriteFile從設(shè)備讀取數(shù)據(jù)或向設(shè)備寫數(shù)據(jù),激活處理函數(shù)將讀寫請(qǐng)求轉(zhuǎn)換成相應(yīng)的USB請(qǐng)求數(shù)據(jù)包<USBRequestPacket,URP>傳遞給下層驅(qū)動(dòng)程序,并等待IPO處理的最后完成。4.3ISP下載控制軟件PC機(jī)ISP下載軟件Progisp是面向用戶的一個(gè)接口,它向用戶提供讀目標(biāo)芯片廠商號(hào),讀目標(biāo)芯片型號(hào),寫目標(biāo)芯片F(xiàn)lash,讀目標(biāo)芯片F(xiàn)lash和擦除目標(biāo)芯片F(xiàn)lash等ISP編程操作。因?yàn)樗蠭SP操作都在單片機(jī)控制系統(tǒng)中實(shí)現(xiàn),所以PC機(jī)ISP下載軟件僅是通過USB接口向單片機(jī)發(fā)送ISP編程指令和代碼數(shù)據(jù),同時(shí)接收并顯示單片機(jī)反饋回的信息。PC機(jī)ISP下載軟件Progisp支持所有的AVR芯片的編程,支持AT89S51,AT89S52;支持自定義并口下載編程器;支持自定義串口的下載編程器;支持USBASP編程器;支持并口的并行編程器等功能。4.4本章小結(jié)本章主要是從編寫設(shè)備驅(qū)動(dòng)程序和USB通信應(yīng)用程序的目的出發(fā),首先介紹了Windows驅(qū)動(dòng)模式。明確了下文將要介紹的設(shè)備驅(qū)動(dòng)程序和ISP下載控制程序分別在整個(gè)系統(tǒng)中所處的位置。然后討論了Windows中的WDM驅(qū)動(dòng)程序模型的特點(diǎn),尤其分析了WDM型的USB驅(qū)動(dòng)程序的分層體系架構(gòu)和工作流程。最后根據(jù)本人的實(shí)際應(yīng)用總結(jié)了開發(fā)WDM驅(qū)動(dòng)程序的方法。第五章應(yīng)用測(cè)試5.1USB下載器驅(qū)動(dòng)安裝將USB線拔下又插上,主機(jī)檢測(cè)到新設(shè)備,并提示安裝驅(qū)動(dòng)程序,安裝完驅(qū)動(dòng)程序后,PC機(jī)開始枚舉USB設(shè)備。PC機(jī)根據(jù)讀取得USB設(shè)備描述符配置設(shè)備,此時(shí),USB設(shè)備枚舉成功,進(jìn)入掛起狀態(tài),本設(shè)備已經(jīng)被PC機(jī)識(shí)別,如圖5-1,5-2所示,USB接口測(cè)試成功。圖5-1圖5-25.2上位機(jī)應(yīng)用程序測(cè)試已經(jīng)下載好程序的USB下載器,就可以向目標(biāo)板下載程序了。插上JP1,通過USB為目標(biāo)板供電。如下圖5-3,下載成功。圖5-35.3測(cè)試及結(jié)果分析測(cè)試環(huán)境說(shuō)明:測(cè)試中使用的硬件環(huán)境:主機(jī)端硬件:PC機(jī)配置CPU主頻3.00GHZ,內(nèi)存1G,硬盤容量60G目標(biāo)機(jī)硬件:MEGA8最小系統(tǒng),MEGA16最小系統(tǒng),使用片內(nèi)FLASH編程。測(cè)試使用的軟件環(huán)境:主機(jī)端軟件:操作系統(tǒng)MicrosoftWindowsXPProfessional,下載軟件PROGISP〔Var,SLISP〔V1.3.4目標(biāo)機(jī)軟件:自主開發(fā)的若干單片機(jī)應(yīng)用程序。程序大小分別為:ATmega8的程序分別為6.68KB,2.22KB,10.03KB,ATmega16的程序分別為29.8KB,6.68KB。測(cè)試過程:使用并口下載和USB下載器各自對(duì)不同目標(biāo)系統(tǒng),不同應(yīng)用程序分別進(jìn)行多次下載〔10次,記錄兩種下載方式對(duì)于不同大小的程序和不同目標(biāo)系統(tǒng)的平均下載速度和成功率。最終以此為根據(jù)分析USB相對(duì)于并口下載器的性能提升情況。表5-1PORGISP程序下載比較USB下載器并口下載目標(biāo)芯片Atmega8ATmega16ATmega8ATmega16程序大小〔KB6.682.2210.0329.86.686.682.2210.0329.86.68下載時(shí)間〔S20.93.1823.11.24.812.853.2平均速度〔KB/S3.342.473.323.733.342.151.852.152.322.09成功率100%100%100%100%100%100%100%100%100%100%從表上可以得出,USB下載器的下載速度明顯比ISP并口下載的速度快,我們來(lái)進(jìn)行定量分析。表5-2數(shù)據(jù)比較分析ATmega8ATmega16程序大小〔KB6.682.2210.0329.86.68下載速度〔KB/S并口2.151.852.152.322.09USB3.342.473.323.733.34提高率〔%5534546160表5-2數(shù)據(jù)分析結(jié)果顯示,USB下載器在下載速度上具有很大優(yōu)勢(shì),且程序越大,速度提高率越大。將USB下載器的USB接口與PC相連,ISP插座與計(jì)算機(jī)并口相連,打開雙龍?jiān)诰€編程軟件,記錄程序大小,下載時(shí)間。如下圖:表5-3雙龍并口下載與USB下載雙龍并口下載USB下載目標(biāo)芯片ATmega8ATmega16ATmega8ATmega16程序大小〔KB10.032.226.686.6829.810.032.226.6829.86.68下載時(shí)間〔SFAST24.5145.28.6830.923.10.9282NORMAL33.654.8611.89.8732平均速度〔KB/SFAST0.410.561.280.770.963.322.473.343.733.34NORMAL0.300.470.570.680.93成功率<%>100100100100100100100100100100表5-4數(shù)據(jù)比較分析ATmega8ATmega16程序大小〔KB6.682.2210.0329.86.68下載速度〔KB/S并口1.280.560.410.960.77USB3.342.473.323.733.34提高率〔%161341710289334表5-4數(shù)據(jù)分析非常明顯的顯示了USB下載器的優(yōu)勢(shì),速度提高率比Progisp并口下載更高??梢钥吹?USB下載器的下載速度〉PROG并口下載〉雙龍SLISP并口下載。通過試驗(yàn)數(shù)據(jù)分析,USB下載器的優(yōu)勢(shì)顯而易見,證明了本設(shè)計(jì)方案的可行性。第六章全文總結(jié)與展望6.1全文總結(jié)本文設(shè)計(jì)了一種單片機(jī)<MCU>控制、基于USB接口通信的通用智能型ISP下載器。利用該下載器,可以將編寫好的程序下載到目標(biāo)單片機(jī)中。通過計(jì)算機(jī)的USB端口實(shí)現(xiàn)對(duì)SPI信號(hào)的模擬,并完成對(duì)AVR程序的下載,從而可以方便的在所有具有USB接口的計(jì)算機(jī)上對(duì)具有在線編程功

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論