基于ARM的U盤設(shè)計(jì)
基于ARM的U盤設(shè)計(jì),基于,arm,設(shè)計(jì)
基于ARM的U盤設(shè)計(jì)
基于ARM的U盤設(shè)計(jì)
福建師范大學(xué) 2006級 網(wǎng)絡(luò)工程
【摘要】:USB(Universal Serial Bus,通用串行總線)是計(jì)算機(jī)一種新型的接口技術(shù),它能夠使得計(jì)算機(jī)與外部設(shè)備的鏈接更加方便與快捷?,F(xiàn)在,許多設(shè)備都開始應(yīng)用USB接口來開發(fā),比如鍵盤.鼠標(biāo).移動硬盤.打印機(jī).數(shù)碼相機(jī)等。在實(shí)際應(yīng)用中,也越來越多地開發(fā)開始采用USB技術(shù),比如數(shù)據(jù)收集等,USB的開發(fā)設(shè)計(jì)和應(yīng)用現(xiàn)已成為現(xiàn)代電子設(shè)計(jì)的一個非常很要的部分。
【關(guān)鍵詞】:D12、USB_HUB、ARM、Mass Storage協(xié)議.FAT區(qū).綜述
目錄
1 引言 3
1.1 USB 接口的分析 3
1.2 USB 器件的選擇 3
1.3 Mass Storage協(xié)議與FAT16文件系統(tǒng) 4
2 系統(tǒng)應(yīng)用技術(shù)的概述 4
2.1 嵌入式系統(tǒng) 4
2.1.1ARM的初步介紹 4
2.2 ?PDIUSBD12芯片介紹 5
2.2.1PDIUSBD12芯片的性能與特點(diǎn) 5
3 USB系統(tǒng)原理和結(jié)構(gòu) 5
3.1 USB 總線拓?fù)浣Y(jié) 5
3.2.1 USB設(shè)備 6
3.2.2 USB HUB 7
3.2.4 設(shè)備電源 7
3.2.5 設(shè)備的掛起 7
3.3 USB主機(jī) 8
3.4 USB設(shè)備接口的固件程序設(shè)計(jì) 8
3.5 USB數(shù)據(jù)流 10
4 應(yīng)用的協(xié)議 13
4.1 Mass Storage 協(xié)議 13
4.2 Bulk-Only傳輸協(xié)議 16
4.3 SCSI指令集 18
5 程序的實(shí)現(xiàn) 21
5.1主循環(huán)——MAINLOOP.C 21
5.2中斷服務(wù)程序 21
5.3控制端點(diǎn)處理 22
5.4普通端點(diǎn)處理 23
5.5數(shù)據(jù)提交函數(shù) 24
六 固件調(diào)試 25
6.1固件調(diào)試 25
6.2 USB器件的檢查 25
6.3提供描述符 25
6.4 BULK_ONLY傳輸協(xié)議命令處理 26
6.5 SCSI 命令集 27
6.6 系統(tǒng)調(diào)試測試 29
七 總結(jié) 32
參考文獻(xiàn) 33
1 引言
1.1 USB 接口的分析
USB 是一種價格低廉、體積很小、效率高、速度快和支持熱插拔的新型串行通信接口。它能夠支持許多個外部設(shè)備的同時連接和通信,而且即插即用方便的特點(diǎn)能夠使用戶可以不重新啟動計(jì)算機(jī)的情況下直接把USB接口的外部設(shè)備連接到計(jì)算機(jī)直接開始通信。
USB設(shè)計(jì)規(guī)范性為計(jì)算機(jī)與外部設(shè)備的通信提供了一個比較完整的解決策略,它與舊式的計(jì)算機(jī)接口相比較,USB總線特性有下面的特點(diǎn):
1、它的接口小巧。與舊式的計(jì)算機(jī)接口相比較,USB的接口有非常明顯的體積優(yōu)勢,朝著計(jì)算機(jī)與外部設(shè)備便攜化和小型化發(fā)展的大趨勢。
2、USB是共享式接口。USB接口運(yùn)用了“菊花鏈”方式,能夠支持許多個外設(shè)的連接。經(jīng)過USB集線器,單個USB主控制器它能偶可以連接最多126個外部設(shè)備,它大大提高了計(jì)算機(jī)的外部設(shè)備功能擴(kuò)展和應(yīng)用能力。
3、它能夠支持即插即用和熱插拔。當(dāng)一個USB外部設(shè)備連接到計(jì)算機(jī)時,系統(tǒng)能夠自動監(jiān)測到該設(shè)備,同時加載相應(yīng)的驅(qū)動程序。因此,USB可以自動配置,用戶可以不需要其他任何手動配置,當(dāng)連接設(shè)備時不要重新啟動計(jì)算機(jī);用戶也能夠隨時斷開USB設(shè)備和計(jì)算機(jī)的連接,同時并不會損害計(jì)算機(jī)與外部設(shè)備。
4、它能夠節(jié)省系統(tǒng)資源。系統(tǒng)中給USB主控制器分配一根IRQ線盒幾個I/O地址,它再給外部設(shè)備分配唯一的一個地址。
5、USB能夠支持許多種操作。3種傳輸速率:低速1.5Mbit/s、全速2Mbit/s、高速80 Mbit/s。同時,4種類型的傳輸模式:塊傳輸、中斷傳輸、同步傳輸、控制傳輸。這樣USB就能夠滿足不同種外部設(shè)備的功能需求。
6、USB成本很低?,F(xiàn)在,市場上USB的主控與從控芯片的價格都十分便宜,比如USB電纜等也非常的便宜,再加上USB具有很高的性能,使USB成為性價比非常高的計(jì)算機(jī)接口。
7、USB能夠提供電源。當(dāng)外部設(shè)備耗電不大,能夠可以考慮用USB接口直接供電的方式,這樣十分方便與便攜。
8、USB同時擁有的很好的兼容性。
1.2 USB 器件的選擇
在對一個USB設(shè)備開發(fā)之初,首要根據(jù)具體情況要求選擇適當(dāng)?shù)腢SB控制器?,F(xiàn)在,市面上供應(yīng)的USB控制器大體有兩種:一種是帶USB接口的單片機(jī)(MCU),另一種是純粹的USB接口芯片。
1、 帶USB接口的單片機(jī)從應(yīng)用上能夠可以分成兩大類:
(1)專門應(yīng)用于底層設(shè)計(jì)USB控制的單片機(jī)
(2)增加了USB接口的普通單片機(jī)。
如果USB 接口芯片僅僅處理USB通信,那么必須得有一個外部微處理器來進(jìn)行數(shù)據(jù)交換和協(xié)議處理。比較有特點(diǎn)的產(chǎn)品有Philips公司的PDIUSBD12(并行接口),NS公司的USBN9603/9604(并行接口)和NetChip公司的NET2888 等。USB接口芯片的主要特點(diǎn)是接口方便、價格便宜、可靠性高,特別是在適合于產(chǎn)品的改型設(shè)計(jì)方面上(軟件只需要增添微處理器的USB中斷處理和數(shù)據(jù)交換程序、PC機(jī)的USB接口通信程序,不需要對原有的產(chǎn)品系統(tǒng)結(jié)構(gòu)上作很大的變動,在硬件上只需要對并行總線和中斷進(jìn)行變動)。
1.3 Mass Storage協(xié)議與FAT16文件系統(tǒng)
USB組織在定義了海量存儲設(shè)備類(Mass Storage Class)的規(guī)范制,而且這個類規(guī)范又包括四個獨(dú)立的子類規(guī)范,
1. USB Mass Storage Class Control/Bulk/Interrupt (CBI) Transport
2. USBMass Storage Class Bulk-Only Transport
3. USB Mass Storage Class ATA Command Block
4.USB Mass Storage Class UFI Command Specification。
1和2子規(guī)范在定義了數(shù)據(jù)、命令、狀態(tài)USB上的傳輸方法。Bulk- Only傳輸規(guī)范只是使用Bulk端點(diǎn)傳送數(shù)據(jù)、命令、狀態(tài),CBI傳輸規(guī)范使用了Control、Bulk和Interrupt三種類型的端點(diǎn)在進(jìn)行數(shù)據(jù)、命令、狀態(tài)傳送。3和4子規(guī)范是定義了存儲介質(zhì)上的操作命令。ATA命令僅規(guī)范用于在硬盤上,UFI的命令規(guī)范只是對USB移動存儲。Microsoft Windows中提供了對Mass Storage協(xié)議的支持,所以USB移動設(shè)備只是需要遵循Mass Storage協(xié)議來組織數(shù)據(jù)和處理命令,就能夠?qū)崿F(xiàn)和PC機(jī)進(jìn)行交換數(shù)據(jù)。但是Flash的存儲單元的組織形式是用FAT16文件系統(tǒng),因此,就能夠直接把Windows的瀏覽器上經(jīng)過可移動磁盤來進(jìn)行交換數(shù)據(jù)了,Windows可以對FAT16文件系統(tǒng)的管理,因此,USB設(shè)備并不需要干預(yù)FAT16文件系統(tǒng)操作的完整細(xì)節(jié)。
主機(jī) (USB Host)
圖1.3 USB 移動存儲結(jié)構(gòu)
大容量存儲設(shè)備 (USB Peripheral)
USB總線
API接口
UFI/ATA驅(qū)動
USB傳輸驅(qū)動
(CBI或Bulk Only)
USB總線接口
存儲介質(zhì)接口
USB傳輸處理
UFI/ATA命令處理
存儲介質(zhì)
(硬盤、閃存等)
2 系統(tǒng)應(yīng)用技術(shù)的概述
2.1 嵌入式系統(tǒng)
2.1.1ARM的初步介紹
ARM是Advanced RISC Machines 的縮寫,是微處理器行業(yè)非常知名的一家企業(yè)。ARM在設(shè)計(jì)上不僅實(shí)現(xiàn)了小體積化而且高性能的結(jié)構(gòu)。ARM處理器簡單的結(jié)構(gòu)使得ARM的內(nèi)核非常小,因此使得工作期間的低功耗。ARM處理器核具有卓越的性能和非常突出的優(yōu)點(diǎn),不僅成為高效率、低消耗、低成本嵌入式處理器核的代名詞,同時也得到許多廠家的大力支持。ARM處理器是在32位高端嵌入式系統(tǒng)中使用的主流芯片之一,占有了絕大部分的市場,而且提供了在數(shù)字處理和移動通信等消費(fèi)類嵌入式產(chǎn)品非常好的解決方案。
ARM處理器是精簡指令集計(jì)算機(jī)RISC體系結(jié)構(gòu)的計(jì)算機(jī)系統(tǒng),它不僅集成了非常典型的RISC結(jié)構(gòu)特性,
RISC是指Reduced Instruction Set Computer 的縮寫,
比如:
1.具有簡單的尋址模式,全部加載/存儲的地址都是由寄存器的內(nèi)容與指令域來決定;
2.每一條數(shù)據(jù)處理指令最大限度和利用ALU和移位器;
3.實(shí)現(xiàn)了最大的數(shù)據(jù)吞吐量多寄存器加載和存儲指令;
4.實(shí)現(xiàn)了最快速所有指令代碼執(zhí)行的條件;
因此這些在基本的RISC結(jié)構(gòu)上增強(qiáng)的特征,使得ARM處理器在低功耗、高性能和體積小方面上得到非常良好的平衡與穩(wěn)定[1]。
2.2 ?PDIUSBD12芯片介紹
?2.2.1PDIUSBD12芯片的性能與特點(diǎn)
PDIUSBD12是PHILIPS運(yùn)用在USB1.1協(xié)議設(shè)備端上使用最廣的芯片之一,帶有并行總線與局部DMA傳輸能力的高速的USB接口器件。在芯片內(nèi)集成了具有卓越性能的USB接口器件、SIE和FIFO存儲器以及電壓調(diào)整器等,能夠給任何外部微控制器與微處理器達(dá)成高速并行接口。
PDIUSBD12芯片的功能框圖如圖2.2.1所示
圖2.2.1? D12的功能框圖
PDIUSBD12是一種性價上非常高的USB器件,它提供了28PIN腳模式,有SO28與TSSOP28封裝,SIE達(dá)到了全部的USB協(xié)議層,并且全部由硬件實(shí)現(xiàn)而不需要固件的參與。
具體功能如下:同步方式識別、并/串轉(zhuǎn)換、比特填充/解填充、CRC校驗(yàn)/生成、PID確認(rèn)/生成、地址識別和握手信號的鑒定/生成、批處理數(shù)據(jù)傳輸可達(dá)1MB/s,3±0.3V雙極性輸入范圍,可接受4.5~5.5V工作電壓、工業(yè)級標(biāo)準(zhǔn)工作環(huán)境溫度范圍為-40~+85℃[4]。
3 USB系統(tǒng)原理和結(jié)構(gòu)
3.1 USB 總線拓?fù)浣Y(jié)
USB總線的物理連接是一種有層次性的星型結(jié)構(gòu),每個星型結(jié)構(gòu)以集線器(HUB)為中心。PC機(jī)就是主機(jī)和根HUB,用戶能夠?qū)⑼庠O(shè)或者附加的HUB同它相連,而且這些附加的HUB能夠連接另外的外部設(shè)備以及下層HUB。USB最多可以支持5個HUB層以及127個外設(shè)。
下圖中描述了總線的物理拓?fù)浣Y(jié)構(gòu)。
圖3.1 USB總線拓?fù)浣Y(jié)構(gòu)
3.2.1 USB設(shè)備
USB設(shè)備中包括HUB與功能設(shè)備,而且功能設(shè)備又能夠細(xì)分為定位設(shè)備與字符設(shè)備等等。為達(dá)到進(jìn)一步敘述,給出端點(diǎn)(endpoint)與管道(pipe)的觀念。
端點(diǎn):每一個USB設(shè)備在主機(jī)看來就是一個端點(diǎn)的集合,主機(jī)只能通過端點(diǎn)與設(shè)備進(jìn)行通訊,以使用設(shè)備的功能。每一個端點(diǎn)實(shí)際上就是一個一定大小的數(shù)據(jù)緩沖區(qū),這些端點(diǎn)在設(shè)備出廠時就已經(jīng)定義好了。在USB系統(tǒng)中,每一個端點(diǎn)都有唯一的地址,這是由設(shè)備地址和端點(diǎn)號給出的。每個端點(diǎn)都有一定的特性。其中包括:傳輸方式、總線訪問頻率、帶寬、端點(diǎn)號、數(shù)據(jù)包的最大容量等等。除端點(diǎn)0外,其它端點(diǎn)必須在設(shè)備配置后才能生效。
端點(diǎn)0通常為控制端點(diǎn),用于設(shè)備初始化參數(shù)等,端點(diǎn)1、2等一般用作數(shù)據(jù)端點(diǎn),存放主機(jī)與設(shè)備間往來的數(shù)據(jù)。
管道:一個USB管道是驅(qū)動程序的一個數(shù)據(jù)緩沖區(qū)與一個外設(shè)端點(diǎn)的連接,它代表了一種在兩者之間移動數(shù)據(jù)的能力。一旦設(shè)備被配置,管道就存在了。管道由兩種類型,數(shù)據(jù)流管道(其中的數(shù)據(jù)沒有USB定義的結(jié)構(gòu))與消息管道(其中的數(shù)據(jù)必須由USB定義的結(jié)構(gòu))。管道只是一個邏輯上的概念。
所有的設(shè)備必須支持端點(diǎn)0以作為設(shè)備的控制管道。通過控制管道可以獲取完全描述USB設(shè)備的信息,包括:設(shè)備類型、電源管理、配置、端點(diǎn)描述等等。只要設(shè)備連接到USB上并上電,端點(diǎn)0就可以被訪問,與之對應(yīng)的控制管道就存在了。
一個USB設(shè)備可以分為三個層。最底層是總線接口,用來發(fā)送與接收包。中間層處理總線接口與不同的端點(diǎn)之間的數(shù)據(jù)流通。一個端點(diǎn)是數(shù)據(jù)最終的使用者或提供者,它可以看作是數(shù)據(jù)源或是數(shù)據(jù)接收端。最上層就是USB設(shè)備所提供的功能,比如鼠標(biāo)或鍵盤等。
圖3.2.1 USB設(shè)備層次結(jié)構(gòu)
3.2.2 USB HUB
USB結(jié)構(gòu)中HUB是一個關(guān)鍵,它提供了附加的USB節(jié)點(diǎn),USB節(jié)點(diǎn)被又稱為端口。HUB能夠檢測出每一個下行端口的狀態(tài),而且能夠給下端的設(shè)備提供電源。
下圖描述了一個非常典型的HUB結(jié)構(gòu)。
圖3.2.2 USB HUB
3.2.4 設(shè)備電源
USB設(shè)備的電源能夠由USB總線供給,而且也能夠自備電源。一個USB設(shè)備能夠有這兩種供電方式,但同一時間只能為一種供電方式。這兩種供電方式是可以進(jìn)行切換的。
3.2.5 設(shè)備的掛起
為了節(jié)電,當(dāng)設(shè)備在指定的時間內(nèi)沒有總線傳輸,USB設(shè)備自動進(jìn)入掛起狀態(tài)。如果設(shè)備所接的HUB的端口被禁止了,設(shè)備也將進(jìn)入掛起狀態(tài)(稱之為選擇掛起)。當(dāng)然主機(jī)也可以進(jìn)入掛起狀態(tài)。
USB設(shè)備當(dāng)總線活動時,就會離開掛起狀態(tài)。一個設(shè)備也可以通過電信號來遠(yuǎn)程喚醒進(jìn)入掛起狀態(tài)的主機(jī)。這個能力是可選的,如果一個設(shè)備具有這個能力,主機(jī)有能力禁止或允許使用這種能力。
3.3 USB主機(jī)
USB主機(jī)在USB系統(tǒng)中處于中心地位,能夠?qū)SB及其連接的設(shè)備有著特殊的任務(wù)。主機(jī)控制著全部對USB的訪問,一個外部設(shè)備只能有主機(jī)同意才能夠有訪問總線的權(quán)利。主機(jī)也同時檢測著USB的結(jié)構(gòu)。
USB主機(jī)有三層結(jié)構(gòu):設(shè)備驅(qū)動程序、USB系統(tǒng)軟件、USB主控制器(主機(jī)的總線接口)。另外,還有兩個軟件接口:主機(jī)控制驅(qū)動(HCD)接口,USB驅(qū)動(USBD)接口。
圖3.3 主機(jī)的層次結(jié)構(gòu)
3.4 USB設(shè)備接口的固件程序設(shè)計(jì)
在整個USB接口設(shè)計(jì)中USB設(shè)備接口固件的開發(fā)具有舉足輕重的地位。設(shè)備接口硬件需要軟件的協(xié)同來完成相應(yīng)的工作,然而在固件的編制上不會受到具體的微處理器種類限制。相對于開發(fā)者來說,接口硬件在工作上具有著不可見性,能夠看到的的是接口固件在控制整個接口時所做的工作。
完全的中斷驅(qū)動由PDIUSBD12的固件設(shè)計(jì)成,當(dāng)一個CPU處理前臺任務(wù)的時候,后臺進(jìn)行的是USB的傳輸。這也就能夠確保了最好的傳輸速率與更好的軟件結(jié)構(gòu),而且同時也能夠簡化了編程與調(diào)試。事件標(biāo)志“EPPFLAGS”和Setup包數(shù)據(jù)緩沖區(qū)“CONROL_XFER”來實(shí)現(xiàn)是由后臺ISR(中斷服務(wù)程序)和前臺主程序循環(huán)之間的數(shù)據(jù)交換,
其原理如圖3.4.1所示
圖3.4.1 前后臺工作原理
對于這種結(jié)構(gòu),主循環(huán)就可以不用來考慮數(shù)據(jù)的來源,它只要檢查循環(huán)緩沖區(qū)中需要處理的新數(shù)據(jù)。這樣,主循環(huán)就能夠?qū)W⒂糜跀?shù)據(jù)的處理,而ISR能可以以最大可能的速度來進(jìn)行數(shù)據(jù)的傳輸。
??? D12固件在編寫成分層結(jié)構(gòu)簡潔且能夠進(jìn)行更加簡單的修改和測試。不僅增加了程序的通用性,同時也增加了代碼的可讀性。
固件的積木式結(jié)構(gòu)如圖3.4.2所示.
圖3.4.2 固件結(jié)構(gòu)和數(shù)據(jù)流向
各模塊程序的分工如下:
硬件提取層:
對單片機(jī)的I/O口、數(shù)據(jù)總線等硬件接口進(jìn)行操作。
PDIUSBD12命令接口:
對PDIUSBD12器件進(jìn)行操作的模塊子程序集。
中斷服務(wù)程序:
當(dāng)PDIUSBD12向單片機(jī)發(fā)出中斷請求時,讀取PDIUSBD12的中斷傳輸來的數(shù)據(jù),并設(shè)定事件標(biāo)志“EPPFLAGS”和Setup包數(shù)據(jù)緩沖區(qū)“CONROL_XFER”傳輸給主循環(huán)程序。
標(biāo)準(zhǔn)請求處理程序:
對USB的標(biāo)準(zhǔn)設(shè)備請求進(jìn)行處理。
主循環(huán)程序:
發(fā)送USB請求、處理USB總線事件和用戶功能處理等。
廠商請求處理程序:
對用戶添加的廠商請求進(jìn)行處理。
3.5 USB數(shù)據(jù)流
圖3.5.1 USB數(shù)據(jù)流過程
從邏輯上講,USB數(shù)據(jù)的傳輸是通過管道進(jìn)行的。USB系統(tǒng)軟件通過缺省管道(與端點(diǎn)0相對應(yīng))管道設(shè)備,設(shè)備驅(qū)動程序通過其它的管道來管理設(shè)備的功能接口。實(shí)際的數(shù)據(jù)傳輸過程是這樣的:設(shè)備驅(qū)動程序通過對USBD接口(USB driver interface)的調(diào)用發(fā)出輸入輸出請求(IRP, I/O Request Packet);USB驅(qū)動程序接到請求后,調(diào)用HCD接口(host controller driver interface),將IRP轉(zhuǎn)化為USB的傳輸(transfer),一個IRP可以包含一個或多個USB傳輸;然后HCD將USB傳輸分解為總線操作(transaction),由主控制器以包(packet)的形式發(fā)出。需要注意的是:所有的數(shù)據(jù)傳輸都是由主機(jī)開始的,任何外設(shè)都無權(quán)開始一個傳輸。
IRP是由操作系統(tǒng)定義的,而USB傳輸與總線操作是USB規(guī)范定義的。為了進(jìn)一步說明USB傳輸,這里引出幀(frame)的概念。
幀:USB總線將1ms定義為一幀,每幀以一個SOF包為開始,在這1ms里USB進(jìn)行一系列的總線操作。引入幀的概念主要是為了支持與時間有關(guān)的總線操作。
為了滿足不同外設(shè)和用戶的要求,USB提供了四中傳輸方式:控制傳輸;同步傳輸;中斷傳輸;批傳輸。它們在數(shù)據(jù)格式、傳輸方向、數(shù)據(jù)包容量限制、總線訪問限制等方面有著各自不同的特征:
控制傳輸(Control Transfer)
1. 通常用于配置、命令、狀態(tài)等情形;
2. 其中的設(shè)置操作(setup)和狀態(tài)操作(status)的數(shù)據(jù)包具有USB定義的結(jié)構(gòu),因此控制傳輸只能通過消息管道進(jìn)行;
3. 支持雙向傳輸;
4. 對與高速設(shè)備,允許數(shù)據(jù)包最大容量為8,16,32或64字節(jié),對于低速設(shè)備只有8字節(jié)一種選擇;
5. 端點(diǎn)不能指定總線訪問的頻率和占用總線的時間,USB系統(tǒng)軟件會做出限制;
6. 具有數(shù)據(jù)傳輸保證,在必要時可以重試。
同步傳輸(Isochronous Transfer)
1. 是一種周期的、連續(xù)的傳輸方式,通常用于與時間有密切關(guān)系的信息的傳輸;
2. 數(shù)據(jù)沒有USB定義的結(jié)構(gòu)(數(shù)據(jù)流管道);
3. 單向傳輸,如果一個外設(shè)需要雙向傳輸,則必須使用另一個端點(diǎn);
4. 只能用于高速設(shè)備,數(shù)據(jù)包的最大容量可以從0到1023個字節(jié);
5. 具有帶寬保證,并且保持?jǐn)?shù)據(jù)傳輸?shù)乃俾屎愣ǎ總€同步管道每幀傳輸一個數(shù)據(jù)包);
6. 沒有數(shù)據(jù)重發(fā)機(jī)制,要求具有一定的容錯性;
7. 與中斷方式一起,占用總線的時間不得超過一幀的90%。
中斷傳輸(Interrupt Transfer)
1. 用于非周期的、自然發(fā)生的、數(shù)據(jù)量很小的信息的傳輸,如鍵盤、鼠標(biāo)等。
2. 數(shù)據(jù)沒有USB定義的結(jié)構(gòu)(數(shù)據(jù)流管道);
3. 只有輸入這一種傳輸方式(即外設(shè)到主機(jī));
4. 對于高速設(shè)備,允許數(shù)據(jù)包最大容量為小于或等于64字節(jié),對于低速設(shè)備只能小于或等于8字節(jié);
5. 具有最大服務(wù)周期保證,即在規(guī)定時間內(nèi)保證有一次數(shù)據(jù)傳輸;
6. 與同步方式一起,占用總線的時間不得超過一幀的90%;
7. 具有數(shù)據(jù)傳輸保證,在不要時可以重試。
批傳輸(Bulk Transfer)
1. 用于大量的、對時間沒有要求的數(shù)據(jù)傳輸;
2. 數(shù)據(jù)沒有USB定義的結(jié)構(gòu)(數(shù)據(jù)流管道);
3. 單向傳輸,如果一個外設(shè)需要雙向傳輸,則必須使用另一個端點(diǎn);
4. 只能用于高速設(shè)備,允許數(shù)據(jù)包最大容量為8,16,32或64字節(jié);
5. 沒有帶寬的保證,只要有總線空閑,就允許傳輸數(shù)據(jù)(優(yōu)先級小于控制傳輸);
6. 具有數(shù)據(jù)傳輸保證,在必要時可以重試,以保證數(shù)據(jù)的準(zhǔn)確性。
圖3.5.2 USB數(shù)據(jù)傳輸
4 應(yīng)用的協(xié)議
4.1 Mass Storage 協(xié)議
USB協(xié)議可以在啟動或者當(dāng)設(shè)備插入系統(tǒng)時對設(shè)備進(jìn)行備置。
USB設(shè)備被分成以下幾類:通訊設(shè)備(Communication devices)、人機(jī)輸入(Human input)、顯示器(Monitors)、音頻設(shè)備(Audio)、海量存儲(Mass storage)。特定類(class)的設(shè)備又能夠劃分成子類(subclass),劃分子類的后軟件就能夠搜索總線而且可以選擇所有它能夠可以支持的設(shè)備。
每一個設(shè)備可以有一個或者多個配置(Configuration),配置可以用來定義設(shè)備的功能。如果其中的某個設(shè)備具有幾種不同的功能,那么每個功能都只需要一個配置。配置(configuration)是接口(interface)的集合。接口指定設(shè)備中的哪些硬件和USB交換數(shù)據(jù)。而每一個和USB交換數(shù)據(jù)的硬件就叫做一個端點(diǎn)(endpoint)。所以,接口就是端點(diǎn)的集合。在USB的設(shè)備類別定義(USB Device Class Definitions)定義特定類或者子類中的設(shè)備又需要提供的缺省配置、端點(diǎn)和接口。描述符(descriptor)能夠描述配置、設(shè)備、接口和端點(diǎn)的一般信息。
下圖為USB 描述符的層次結(jié)構(gòu)。
圖4.1.1 USB描述符層次結(jié)構(gòu)
USB(Host)唯一通過描述符了解設(shè)備的有關(guān)信息,根據(jù)這些信息建立起通信,在這些描述符中,規(guī)定了設(shè)備所使用的協(xié)議、端點(diǎn)情況等。因此,正確地提供描述符,是USB設(shè)備正常工作的先決條件。USB海量存儲設(shè)備(USB Mass Storage Class)包括General Mass Storage Subclass、CD-ROM、Tape、Solid State。Mass Storage Class只需要支持一個接口,即數(shù)據(jù)(Data)接口,選擇缺省配置時此接口即被激活。數(shù)據(jù)接口允許與設(shè)備之間進(jìn)行數(shù)據(jù)傳輸,它提供三個端點(diǎn):Bulk Input 端點(diǎn)、Bulk Output 端點(diǎn)和中斷端點(diǎn)。通用海量存儲設(shè)備(General Mass Storage Device)是隨機(jī)存取、基于塊/扇區(qū)存儲的設(shè)備。它只能存儲和取回來自CPU 的數(shù)據(jù)。這種設(shè)備的接口遵循SCSI-2標(biāo)準(zhǔn)的直接存取存儲設(shè)備(Direct Access Storage Device)協(xié)議。USB設(shè)置上的介質(zhì)使用與SCSI-2設(shè)備相同的邏輯塊(logical blocks)方式尋址。下面介紹基于Bulk Only(批量傳輸)模式的Mass Storage 設(shè)備的描述符:每個USB設(shè)備都必須有一個設(shè)備描述符[8]。
圖4.1.2 設(shè)備(Device)描述符
圖4.1.3 配置(Configuration)描述符
圖4.1.4接口(Interface)描述符
圖4.1.5 Bulk-In 端點(diǎn)描述符
圖4.1.6 Bulk-Out 端點(diǎn)描述符
圖4.1.7 bInterfaceSubClass 處的工業(yè)標(biāo)準(zhǔn)命令塊代碼
圖4.1.8 Mass Storage 傳輸協(xié)議
4.2 Bulk-Only傳輸協(xié)議
設(shè)備插入到USB后,USB即對設(shè)備進(jìn)行搜索,并要求設(shè)備提供相應(yīng)的描述符。在USB Host 得到上述描述符后,即完成了設(shè)備的配置,識別出為Bulk-Only的Mass Storage設(shè)備,然后即進(jìn)入Bulk-Only傳輸方式。在此方式下,USB與設(shè)備間的所有數(shù)據(jù)均通過Bulk-In和Bulk-Out來進(jìn)行傳輸,不再通過控制端點(diǎn)傳輸任何數(shù)據(jù)。在這種傳輸方式下,有三種類型的數(shù)據(jù)在USB和設(shè)備之間傳送,CBW、CSW 和普通數(shù)據(jù)。CBW(Command Block Wrapper,即命令塊包)是從USB Host發(fā)送到設(shè)備的命令,命令格式遵從接口中的bInterfaceSubClass 所指定的命令塊,這里為SCSI傳輸命令集。USB設(shè)備需要將SCSI命令從CBW中提取出來,執(zhí)行相應(yīng)的命令。完成以后,向Host發(fā)出反映當(dāng)前命令執(zhí)行狀態(tài)的CSW(Command Status Wrapper,即命令狀態(tài)包),Host根據(jù)CSW來決定是否繼續(xù)發(fā)送下一個CBW或是數(shù)據(jù)。Host要求USB設(shè)備執(zhí)行的命令可能為發(fā)送數(shù)據(jù),則此時需要將特定數(shù)據(jù)傳送出去,完畢后發(fā)出CSW,以使Host進(jìn)行下一步的操作。
USB設(shè)備所執(zhí)行的操作可用下圖描述:
Ready
Command
Transport
(CBW)
Date-in
(to host)
Date-out
(From host)
Status
Transport
(CSW)
圖4.2.1
USB Host 按照下面的格式向設(shè)備端發(fā)送CBW,
圖4.2.2 CBW
下面是CSW 的格式和定義:
圖4.2.3 CSW
dCSWSignature 的內(nèi)容為53425355h , dCSWTag 即為dCBWTag 的內(nèi)容,
dCSWDataResidue 還需要傳送的數(shù)據(jù),此數(shù)據(jù)根據(jù)dCBWDataTransferLength-本次已經(jīng)傳
送的數(shù)據(jù)得到。Host 端根據(jù)此值決定下一次CBW 的內(nèi)容,如果沒有完成則繼續(xù);如果命令
正確執(zhí)行,bCSWStatus 返回0 即可。按這個規(guī)則組裝好CSW 后,通過Bulk-In 端點(diǎn)將其
發(fā)出即可
4.3 SCSI指令集
Bulk-Only 的CBW 中的CBWCB 中的內(nèi)容即為如下格式的命令塊描述符(Command
Block Descriptor)。SCSI-2 有三種字長的命令,6 位、10 位和12 位,Microsoft Windows 環(huán)境下支持12 位字長的命令。
圖4.3.1 12 位字長的SCSI 命令
Operation Code是操作代碼,表示特定的命令。高3位為Group Code,共有8 種組合,即8個組,低5五位為Command Code,可以有32種命令。
Logicol unit Number是為了兼容SCSI-1而設(shè)的。Logical block address為高位在前,低位在后的邏輯塊地址,即扇區(qū)地址。Transfer length為需要從邏輯塊地址處開始傳輸?shù)纳葏^(qū)數(shù)(比如在Read 和Write 命令中);Parameter list length為需要傳輸?shù)臄?shù)據(jù)長度(比如在Mode Sense 命令中);Allocation length為初始程序?yàn)榉祷財(cái)?shù)據(jù)所分配的最大字節(jié)數(shù),此值可以為零,表示不需要傳送數(shù)據(jù)。
SCSI指令集的Direct Accesss類型存儲介質(zhì)的傳輸命令有許多,所幸運(yùn)的是Mass Storage協(xié)議只用到了其中的一些。下面黑體部分即為需要USB設(shè)備作出響應(yīng)的請求,一般是要求向Host發(fā)送一些有關(guān)設(shè)備的數(shù)據(jù):
圖4.3.2
對于不同的命令,其命令塊描述符略有不同,其要求的返回內(nèi)容也有所不同,根據(jù)相
應(yīng)的文檔,可以對每種請求作出適當(dāng)?shù)幕貞?yīng)。比如,下面是INQUIRY 請求的命令塊描述符
和其返回內(nèi)容的數(shù)據(jù)格式:
圖4.3.3 INQUIRY命令塊描述符
圖4.3.4 INQUIRY命令返回?cái)?shù)據(jù)格式
Host 會依次發(fā)出INQUIRY、Read Capacity、UFI Mode Sense 請求,如果上述請求的返
回結(jié)果都正確,則Host 會發(fā)出READ 命令,讀取文件系統(tǒng)0 簇0 扇區(qū)的MBR 數(shù)據(jù),進(jìn)入
文件系統(tǒng)識別階段。
對于PREVENT-ALLOW MEDIUM REMOVAL 和TEST UNIT READY 命令,只需直
接返回CSW 即可,對于后者,由于Flash 盤總是處于READY 狀態(tài),故可直接返回CSW。
5 程序的實(shí)現(xiàn)
5.1主循環(huán)——MAINLOOP.C
主循環(huán)的的檢查開始表示子程序進(jìn)一步的處理。MCU一但通電那就需要初始化I/O端口、定時器和中斷服務(wù)程序。然后,MCU將會重新連接USB,其中包含SOFT CONNET 寄存器設(shè)置
ON,這個工程很重要。
下圖為主循環(huán)的流程圖:
Yes
主循環(huán)開始
初始化I/O端口、定時器和中斷,重新連接到USB總線
循環(huán)
USB中斷
中斷服務(wù)程序
No
圖5.1主循環(huán)
5.2中斷服務(wù)程序
D12產(chǎn)生的中斷就是中斷服務(wù)程序代碼處理,中斷服務(wù)程序把數(shù)據(jù)從D12的內(nèi)FIFO拿回到CPU存儲器,同時也要建立正確的事件標(biāo)志,用來通知對應(yīng)的子程序來進(jìn)行處理。
下圖是中斷服務(wù)程序的流程圖:
中斷服務(wù)
讀取D12中斷寄存器
控制輸入
控制輸出
端點(diǎn)1輸入
端點(diǎn)1輸出
端點(diǎn)2輸入
端點(diǎn)2輸出
DMA傳輸結(jié)束
掛起改變
總線復(fù)位
中斷服務(wù)結(jié)束
控制端點(diǎn)發(fā)送數(shù)據(jù)處理
控制端點(diǎn)接收數(shù)據(jù)處理
DMA傳輸技術(shù)處理
端點(diǎn)2接收數(shù)據(jù)處理
端點(diǎn)2發(fā)送數(shù)據(jù)處理
端點(diǎn)1發(fā)送數(shù)據(jù)處理
端點(diǎn)1接收數(shù)據(jù)處理
設(shè)置掛起改變標(biāo)志
設(shè)置總線復(fù)位標(biāo)志
No
No
No
No
No
No
No
No
No
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
圖5.2中斷服務(wù)程序流程
5.3控制端點(diǎn)處理
SETUP階段開始就是控制傳輸?shù)臉?biāo)志,然后進(jìn)行的就是可選的DATA階段,在SETUS階段結(jié)束,固件的控制傳輸就是使用這三個狀態(tài)來正確處理。
下圖是控制端點(diǎn)處理程序的流程圖:
控制輸出入口
讀端點(diǎn)處理狀態(tài)清中斷標(biāo)志
SETUP包?
SETUP處理程序
控制輸出子程序結(jié)束
No
Yes
圖5.3.1 控制輸出程序流程圖
控制輸入入口
清中斷標(biāo)志位
數(shù)據(jù)提交處理
控制輸入子程序結(jié)束
圖5.3.2 控制輸入程序流程圖
5.4普通端點(diǎn)處理
從主機(jī)接收數(shù)據(jù)包是普通輸出端點(diǎn)(本項(xiàng)目中為BULK_OUT端點(diǎn))配置。MCU從主機(jī)接收輸出中斷標(biāo)志時,清零D12中斷位。在清零緩沖區(qū)選擇端點(diǎn),然后MCU需要確認(rèn)數(shù)據(jù)的長度而且同時把數(shù)據(jù)讀出來,之后再進(jìn)行數(shù)據(jù)處理子程序。
普通輸入端點(diǎn)(本項(xiàng)目中為BULK_IN端點(diǎn))的中斷,只需要讀取端點(diǎn)號的最后處理狀態(tài)寄存器來清除中斷寄存器的相應(yīng)位,同時把狀態(tài)清零就可。輸入端點(diǎn)中斷是發(fā)送完數(shù)據(jù)之后才產(chǎn)生的,如果還有數(shù)據(jù)要發(fā)送時,就可以在中斷程序程序里接著繼續(xù)發(fā)送。
下圖為普通端點(diǎn)處理程序流程圖:
普通輸入入口
清中斷標(biāo)志讀取緩沖區(qū)數(shù)據(jù)
輸入數(shù)據(jù)接口子程序
普通輸入子程序結(jié)束
普通輸出入口
清中斷標(biāo)志讀取緩沖區(qū)數(shù)據(jù)
數(shù)據(jù)處理
確認(rèn)數(shù)據(jù)長度并讀出
普通輸出子程序結(jié)束
圖5.4 普通端點(diǎn)處理程序流程圖
5.5數(shù)據(jù)提交函數(shù)
定義了數(shù)據(jù)提交函數(shù)在中斷服務(wù)程序里。同時子程序負(fù)責(zé)把數(shù)據(jù)寫入端點(diǎn)緩沖區(qū),之后提交給主機(jī)。
下圖是數(shù)據(jù)提交函數(shù)程序流程圖:
程序入口
確定傳輸數(shù)據(jù)長度
選擇端點(diǎn)
寫指定長度的數(shù)據(jù)到緩沖區(qū)
緩沖區(qū)數(shù)據(jù)提交主機(jī)
程序結(jié)束
圖5.5 數(shù)據(jù)提交函數(shù)程序流程圖
六 固件調(diào)試
6.1固件調(diào)試
相對與設(shè)備的程序進(jìn)行調(diào)試是USB通訊程序項(xiàng)目開發(fā)過程中最難的部分。同時USB協(xié)議有嚴(yán)格的時間限制,這就使得程序得在一定的時間內(nèi)對某些請求或者狀態(tài)進(jìn)行處理,否則,USB將會無法正常的工作。
USB 設(shè)備端的固件分以下幾個層次:
文件模塊名稱
主要功能
Main.c:
進(jìn)行各種初始化操作、寄存器設(shè)置、中斷設(shè)置
Fat16.c flash.c :
負(fù)責(zé)按照Fat16 文件系統(tǒng)的組織向Flash 中寫入數(shù)據(jù)或是從Flash: 中讀出數(shù)據(jù)
Chap9.c bulk-only.c:
完成不同的中斷請求,Chap9 完成來自端點(diǎn)0 的USB標(biāo)準(zhǔn)設(shè)備請求,Bulk-Only 完成來自批量模式端點(diǎn)的Mass Storage Bulk-Only 傳輸中斷請求
Isr.c :
中斷服務(wù)程序,負(fù)責(zé)將不同類型的中斷轉(zhuǎn)向一同的地方
D12ci.c:
函數(shù)化的D12 的命令集合,可以直接調(diào)用這些函數(shù),而不必再自己根據(jù)手冊查每個命令的代碼另外,此文件中包括一些與硬盤有關(guān)的地址定義
6.2 USB器件的檢查
第一:判斷USB芯片是否已經(jīng)工作。
第二:使用SOFTCONNECT,則在主程序進(jìn)行軟件連接后,如果GL_N燈閃爍幾下,則PC機(jī)上出現(xiàn)未知設(shè)備,則說明USB進(jìn)行軟連接正常,也說明芯片已經(jīng)工作了。
6.3提供描述符
1
GetDeviceDescriptor。主機(jī)主要對Length 域感興趣,發(fā)送內(nèi)容一定要正確,特別是第 2 字節(jié)type 一定為0x01,即Device;否則,主機(jī)將不響應(yīng),或 者再重復(fù)2 次后放棄。
這時由于主機(jī)對Device 的描述符將有多長實(shí)際上都不知道,所以這個步驟只是試探性的,
目的是得到真正長度,第三步中才正而巴經(jīng)地讀取DeviceDescriptor。
2
SetAddress。一般為02 或03。
3
連續(xù)3 次GetDeviceDescriptor,讀取全部設(shè)備描述符,一般為 18 B,分為多次傳輸。
如果不正確,主機(jī)將不響應(yīng)或重復(fù)2 次后放棄。
4
GetConfigDescriptor。注意第2 字節(jié)一定為0x02,即config 。這部分內(nèi)容包括
Configuration Descriptor、Interface Descriptor 和所有要用到的端點(diǎn)的EndPooint Descriptor。
5
GetStringDescriptor(可能沒有),根據(jù)在設(shè)備描述符中是否有 String 索引而定。一
般先讀取LanguageID,再讀取product string。
6
讀取全部ConfigDescriptor,次數(shù)根據(jù)描述符的大小決定(端點(diǎn)個數(shù)不同,描述符大
小不同),如 果不正確,主機(jī)將不響應(yīng)或再重復(fù)2 次后放棄。
7
如果以上步驟都正確,主機(jī)將找到新設(shè)備,提示安裝驅(qū)動程序;否則找到未知設(shè)備,不可用。安裝驅(qū)動程序后,以后的每次PlugIn,枚舉次序與以上步驟略有不同,之后會有SetConfiguration、GetConfiguration 和GetInterface 等調(diào)用。
6.4 BULK_ONLY傳輸協(xié)議命令處理
當(dāng)USB總線數(shù)據(jù)檢測軟件檢測到數(shù)據(jù)55 53 42 53時,說明已經(jīng)開始了BULK_ONLY傳輸階段。就可以不用太多考慮USB中斷、端點(diǎn)之類的問題,到此階段后只有兩個端點(diǎn)工作,即Bulk_In和Bulk_Out端點(diǎn),IN用于設(shè)備向主機(jī)發(fā)送數(shù)據(jù),OUT用于主機(jī)向設(shè)備發(fā)送數(shù)據(jù)。Bulk_In端點(diǎn)的處理比較簡單,只是在需要的時候,設(shè)備將要發(fā)往主機(jī)的數(shù)據(jù)通過此端點(diǎn)送出即可,如果數(shù)據(jù)一次不能發(fā)完,就把設(shè)置標(biāo)志位,通過發(fā)送中斷的產(chǎn)生可以實(shí)現(xiàn)連續(xù)發(fā)送。Bulk_Out端點(diǎn)的情況比較復(fù)雜一些,要判斷收到的是協(xié)議內(nèi)容還是數(shù)據(jù),如果是協(xié)議內(nèi)容,就要對協(xié)議包進(jìn)行解析,根據(jù)協(xié)議中的內(nèi)容得到SCSI命令,然后再根據(jù)這些命令處理相應(yīng)的請求。
下面為BULK端點(diǎn)處理的流程圖:
清中斷寄存器標(biāo)志
是否正傳數(shù)據(jù)
繼續(xù)傳送數(shù)據(jù)
向主機(jī)發(fā)送CSW
Yes
No
6.4 Bulk_In端點(diǎn)處理流程圖
清中斷寄存器標(biāo)志
收到的是數(shù)據(jù)
繼續(xù)傳送數(shù)據(jù)
解析命令并執(zhí)行命令
Yes
No
圖6.5 Bulk_Out端點(diǎn)處理流程圖
6.5 SCSI 命令集
在SCSI 命令集的處理中,比較難處理的是WRITE 和READ 比較難處理。因?yàn)镠ost
傳送數(shù)據(jù)至少一次為512 個字節(jié),不管是讀還是寫,都需要一次傳送512 個字節(jié),但是批量
傳輸端點(diǎn)一次只能傳輸64 個字節(jié),即要傳8 次才可以傳完。因此,在向Host 傳送數(shù)據(jù)時,
設(shè)置傳輸標(biāo)志,當(dāng)Device 的發(fā)送中斷出現(xiàn)后,判斷此傳輸標(biāo)志,如果正處于傳輸狀態(tài),則
繼續(xù)傳輸,直至需要的數(shù)據(jù)傳輸完畢,再傳輸CSW。在從Host 接收數(shù)據(jù)時,也設(shè)置接收標(biāo)
志,當(dāng)收到WRITE 命令后,即進(jìn)入此狀態(tài),直至從Host 端接收數(shù)據(jù)完畢,再將數(shù)據(jù)存入
Flash 中。
Host
傳送數(shù)據(jù)
Device發(fā)送中斷
傳送CSW
傳輸完畢
圖6.5.1 SCSI傳送數(shù)據(jù)
Host
接收數(shù)據(jù)
Write命令
Host端接收完畢
數(shù)據(jù)存入Flash中
收到
接收標(biāo)志
圖6.5.2 SCSI接收數(shù)據(jù)
本系統(tǒng)開發(fā)的U盤的存儲空間使用的是4 MB的RAM空間。當(dāng)U盤插入主機(jī)時,通過操作系統(tǒng)的格式化操作把該空間格式化成FAT系統(tǒng),然后主機(jī)就可以在該存儲空間上進(jìn)行文件的寫入與讀取。
6.6 系統(tǒng)調(diào)試測試
1. 嵌入式軟件的加載界面
圖6.6.1
2. U盤設(shè)備控制傳輸階段的配置信息通信過程,包括設(shè)備描述符、配置描述符和字符串描述符的枚舉、設(shè)置USB設(shè)備地址等
圖6.6.2
3. 基于BulkOnly的海量存儲協(xié)議的調(diào)試信息輸出
圖6.6.3
4. 本論文所設(shè)計(jì)的U盤的格式化界面
圖6.6.4
5. U盤中文件的拷貝與文件夾的創(chuàng)建
圖6.6.5
七 總結(jié)
在此項(xiàng)目開發(fā)過程中,我從中學(xué)到了許多書本上學(xué)不到的東西,尤其是在動手和實(shí)際應(yīng)用的能力得到強(qiáng)化。
通過這次USB通信程序開發(fā),包含嵌入式程序、單片機(jī),讓我覺得C語言編程的熟練城區(qū)是項(xiàng)目開發(fā)的重點(diǎn)。許多出現(xiàn)的問題其實(shí)都是原理上非常承受的東西,從資料中就能夠找到。而我們要做的就是把書本上的原理在特定的平臺上實(shí)現(xiàn)就可以了。原理是比較抽象,比較粗略的,不需要精確;而在真正使用代碼實(shí)現(xiàn)時,那就是需要具體、詳細(xì)、精確、一點(diǎn)誤差都不能有,因此,對編程語言的熟練就可以達(dá)到事半功倍,提高效率。
動手實(shí)際的運(yùn)用和開發(fā)就是學(xué)習(xí)的好機(jī)會,只有真正經(jīng)過了開發(fā)過程以后,你才會有更加深刻的體會。在項(xiàng)目開發(fā)過程中,實(shí)際能力和經(jīng)驗(yàn)的增長是相輔相成的。有些內(nèi)容是要憑經(jīng)驗(yàn),理論上的東西,是別人總結(jié)出來的東西,非常的抽象,跟實(shí)際運(yùn)用中相比往往省略了許多細(xì)節(jié),而項(xiàng)目開發(fā)有時候就是根據(jù)抽象的理論,來重新實(shí)現(xiàn)細(xì)節(jié)。一個問題在一次查找原因的過程中不清楚,那么你在做第二次就有一定的思路了,也就能夠很快的找到問題的所在。
在開發(fā)過程中,學(xué)到的不僅是將理論的東西運(yùn)用到實(shí)際中,同時也是排找問題思路的建立。
參考文獻(xiàn)
[1]ARM公司.ARM Architeture Reference Manual[s]. 2000
[2]ARM 公司.The ARM-THUMB Procedure Call Standard[s]. 2000
[3]馬忠梅,馬廣云.ARM嵌入式處理器結(jié)構(gòu)與應(yīng)用基礎(chǔ)[m].北京:北京航空航天大學(xué)出版色,2002
[4]周立功.PDIUSBD12 USB 固件編程與驅(qū)動開發(fā)[M].北京:北京航空航天大學(xué)出版社,2003.2
[5]沈文,Eagle lee.AVR 單片機(jī)C語言開發(fā)入門指導(dǎo)[M].北京:清華大學(xué)出版社,2003
[6]王士元.C高級實(shí)用程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,1996
[7]譚浩強(qiáng).C程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,1996
[8]Atmel Corporation.AVR Instruction Set Nomenclature:Status Register(SREG); [9]Registers and Operands.http://www.atmel.com
[10]SAMSUNG Electronics CO.LTD. K9F5608U0A-YCB0,K9F5608U0A-YIB0. http://www.intl.samsungsemi.com/Memory/Flash/datasheets.html
U-disk design based on ARM
Fujian Normal University, Fujian Institute of Technology 2006 Network Engineering
122622006071 JianPing Xie Tutor Xiao Lin
Abstract: USB (Universal Serial Bus, Universal Serial Bus) is a new type of computer interface technology that allows computers to link with external devices more convenient and fast. Now, many devices are beginning to use USB interface to develop, such as the keyboard. Mouse. Mobile hard disk. Mobile hard disk. Printer. Digital cameras. In practice, more and more developers start using USB technology, such as data collection, USB design and application development has become a very modern electronic design is to be part of.
Key words: D12, USB_HUB, ARM, Mass Storage Protocol. FAT area. Summary
33
收藏
編號:2680158
類型:共享資源
大?。?span id="su98pwq" class="font-tahoma">940.67KB
格式:ZIP
上傳時間:2019-11-28
15
積分
- 關(guān) 鍵 詞:
-
基于
arm
設(shè)計(jì)
- 資源描述:
-
基于ARM的U盤設(shè)計(jì),基于,arm,設(shè)計(jì)
展開閱讀全文
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
裝配圖網(wǎng)所有資源均是用戶自行上傳分享,僅供網(wǎng)友學(xué)習(xí)交流,未經(jīng)上傳用戶書面授權(quán),請勿作他用。