《嵌入式系統(tǒng)》課程設(shè)計(jì)基于嵌入式系統(tǒng)的U盤的開發(fā)與設(shè)計(jì)
《《嵌入式系統(tǒng)》課程設(shè)計(jì)基于嵌入式系統(tǒng)的U盤的開發(fā)與設(shè)計(jì)》由會(huì)員分享,可在線閱讀,更多相關(guān)《《嵌入式系統(tǒng)》課程設(shè)計(jì)基于嵌入式系統(tǒng)的U盤的開發(fā)與設(shè)計(jì)(14頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、計(jì)算機(jī)學(xué)院《嵌入式系統(tǒng)》課程設(shè)計(jì)報(bào)告 學(xué)號(hào) 2014-2015學(xué)年 第二學(xué)期 1208320131 《嵌入式系統(tǒng)》 課程設(shè)計(jì)報(bào)告 題目: 基于嵌入式系統(tǒng)的U盤的開發(fā)與設(shè)計(jì) 專業(yè): 計(jì)算機(jī)與技術(shù) 班級(jí): 11(1)班 姓名: 指導(dǎo)教師: 成績(jī): 計(jì)算機(jī)學(xué)院 2015年5月7日 目錄 1. 設(shè)計(jì)內(nèi)容及要求 12 1.1. 設(shè)計(jì)內(nèi)容 12 1.2. 設(shè)計(jì)要求 12 2. 概要設(shè)計(jì) 12 2.1. 硬件電路 12 2.2. 基本程序結(jié)構(gòu) 14 3. 硬件設(shè)計(jì) 16 3.1. M
2、SP430 16 3.2. SL811HS 16 4. 軟件設(shè)計(jì) 17 4.1. USB協(xié)議 17 4.2. BULK_ONLY和UFI協(xié)議 18 4.3. FAT32 21 4.4. 軟件系統(tǒng)模塊 21 5. 心得體會(huì) 23 1. 設(shè)計(jì)內(nèi)容及要求 1.1. 設(shè)計(jì)內(nèi)容 隨著USB技術(shù)和閃存技術(shù)的飛速發(fā)展,移動(dòng)存儲(chǔ)設(shè)備的速度和容量日新月異,但在工業(yè)控制的上位機(jī)和下位機(jī)之間,數(shù)據(jù)傳輸依然采用傳統(tǒng)的串并口技術(shù),特別對(duì)一些前端的便攜式采集系統(tǒng),需要采集后臨時(shí)存儲(chǔ),再拿回來傳給作為上位機(jī)的PC機(jī)進(jìn)行數(shù)據(jù)處理,給人們帶來很多不變,為此,本
3、文提出了一種方法--利用U盤的便捷特性開發(fā)一種基于嵌入式的USB讀寫器,方便地將采集數(shù)據(jù)以文件方式寫入U(xiǎn)盤,PC機(jī)不需要任何特殊驅(qū)動(dòng)便可以完成對(duì)數(shù)據(jù)的處理回放。利用本方法可以徹底解決下位機(jī)與PC機(jī)之間的數(shù)據(jù)傳輸難的問題。 1.2. 設(shè)計(jì)要求 根據(jù)U盤結(jié)構(gòu)特點(diǎn),設(shè)計(jì)了一種基于嵌入式系統(tǒng)U盤的系統(tǒng)結(jié)構(gòu),可以將U盤集成到無線數(shù)據(jù)卡上,或者手機(jī)上,以實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)的功能。 在進(jìn)行USB 開發(fā)過程中,比較難的是對(duì)設(shè)備端的程序(稱為固件,F(xiàn)irmware )進(jìn)行調(diào)試。由于USB 協(xié)議有嚴(yán)格的時(shí)間要求,這就使得程序必須在有效時(shí)間內(nèi)對(duì)某些請(qǐng)求或狀態(tài)進(jìn)行處理,否則,USB 將無法正常工作。因此,在調(diào)試過程中
4、,較多借助LED1,LED2顯示輸出的一些信息來輔助調(diào)試,定位問題所在。比如,在某個(gè)函數(shù)中加入LED1,LED2顯示語句,程序運(yùn)行時(shí)看有否相應(yīng)的LED1,LED2顯示輸出,借此來判斷此函數(shù)是否得到了執(zhí)行。調(diào)試工作基本分二步進(jìn)行:首先對(duì)外部設(shè)備(單片機(jī)部分)借助PC 調(diào)試軟件(從網(wǎng)上下載Bus Hound)將設(shè)備端的USB 協(xié)議(主要有描述符請(qǐng)求、端口配置、地址設(shè)置以及基本數(shù)據(jù)交換)調(diào)通。然后,用調(diào)試好的USB 設(shè)備接口來嵌入文件系統(tǒng)功能。 2. 概要設(shè)計(jì) 2.1. 硬件電路 下圖分別為PDIUSBD12的引腳定義,其中,下列幾個(gè)方面在制作電路板時(shí)應(yīng)該注意。 圖1
5、a)GND 接地,VDD 接正(3.3V 或5V ),如果芯片工作在3.3V ,則Vout3.3 與VDD 都接3.3V ;如果芯片工作在5V ,則這時(shí)Vout3.3 會(huì)輸出3.3V 的電壓,用于提供給D +作參考電壓,因?yàn)榇藚⒖茧妷罕仨殲?.3V 。對(duì)于U 盤來說,由于USB 接供的是5V 電壓,因此應(yīng)該按后一種接法接。即GND 接USB 接口中的GND ,VDD 接USB 接口中的VDD ,D +D-分別接USB 接口中的對(duì)應(yīng)位。 b)XTAL1 和XTAL2 按傳統(tǒng)接法。 c)PDIUSBD12與MCU AT-89C55WD的連接方法見下表 PDIUSBD12引腳 MCU AT-
6、89C55WD引腳 DATA<0>~ DATA<7> P0.0~P0.7(AD0~AD7) ALE ALE/PROG CS_N P1.6 RESET_N P1.7 INT_N P3.2(INT0) SUSPEND P3.3 WR_N P3.6(WR) RD_N P3.7(RD) A0 接GND d)DMARQ DMACK_N EOT_N GL_N CLKOUT引腳懸空,可作為擴(kuò)充功能使用。 e)MCU AT-89C55WD P1.2和P1.3接2個(gè)低電平有效顯示燈LED1和LED2。 2.2. 基本程序結(jié)構(gòu) a)USB 設(shè)備端的固件分以下幾個(gè)
7、層次: 固件模塊 功能 Main.c 進(jìn)行各種初始化操作、寄存器設(shè)置、中斷設(shè)置 intr.c 中斷服務(wù)程序,負(fù)責(zé)將不同類型的中斷轉(zhuǎn)向不同的地方 usb_op.c D12硬件抽象層,所有的上層模塊都必須通過此模塊與USB芯片打交道 usb_prtcl.c 設(shè)備枚舉需要的設(shè)備描述符,配置描述符,接口描述符,端口描述符都由此模塊來執(zhí)行提供 endpoint2_bulk_only.C 所有mass Storage 協(xié)議CBW,CSW,DATA的處理及FLASH的讀寫都由此模塊來處理 b)在調(diào)試的時(shí)候,從現(xiàn)象上來看,分成以下幾個(gè)階段性的步驟:1、USB 芯片正常工作,可以實(shí)現(xiàn)軟
8、連接,此時(shí)PC 機(jī)上會(huì)出現(xiàn)“未知設(shè)備類型”的USB 設(shè)備;2、向主機(jī)提供普通USB 設(shè)備提供描述符,提供正確的VID 和PID 后,PC 能夠識(shí)別設(shè)備,但要求提供設(shè)備的驅(qū)動(dòng)程序;3、安裝驅(qū)動(dòng)程序后,使用周立功單片機(jī)公司提供的UsbDebug.exe簡(jiǎn)單調(diào)試端點(diǎn)1和2,確保其均可傳輸數(shù)據(jù),驗(yàn)證硬件及固件的正確性;4、按Mass Storage不得Bulk-Only 模式提供描述符,PC 機(jī)上設(shè)備類型變成Mass Storage Device;5、響應(yīng)了Bulk-Only 的Inquiry 命令,可以出現(xiàn)盤符了,但尚無法訪問磁盤;6、提供了其他所有的UFI命令(SCSI 子集),開始讀取磁盤0 扇
9、區(qū)(BPB 區(qū))的內(nèi)容按照FAT12 的格式7、在AT-89C55WD EEPROM虛擬一張軟盤,可以正確讀取信息,可以訪問盤符,列目錄為空;8、,軟盤中放一個(gè)可執(zhí)行的文件,可以正常運(yùn)行這個(gè)可執(zhí)行文件;8、創(chuàng)建文件,向設(shè)備發(fā)出Write 命令,等等。下面從具體實(shí)際操作方面來描述調(diào)試各階段的步驟 c)檢查USB 器件工作與否 確定USB 芯片是否已經(jīng)正常工作,是所有調(diào)試的基礎(chǔ),得到電路板之后,這是一個(gè)首先要解決的問題。判斷USB 芯片是否已經(jīng)工作,可以使用SoftConnect ,則在主程序中進(jìn)行軟連接后,如果PC 機(jī)上出現(xiàn)未知設(shè)備,則說明USB 進(jìn)行軟連接正常,也說明芯片已經(jīng)工作了。另外就
10、是使用Bus Hound ,觀察USB 總線上的數(shù)據(jù),從而判斷主機(jī)與設(shè)備之間的通信已經(jīng)進(jìn)行到哪一步了。在主程序中,對(duì)USB 初始化過程為: ① 初始化MCU 的各種端口; ② 進(jìn)行中斷初始化,設(shè)置中斷服務(wù)程序入口地址,將MCU 的中斷方式設(shè)置為低電平觸發(fā),因?yàn)镈12 只要進(jìn)入中斷后INT_N 就一直為低。 ③ 斷開SoftConnect ,延時(shí)1 秒后再次連接 ④ 進(jìn)入主程序循環(huán),等待中斷的到來 ⑤ 由中斷服務(wù)程序處理所有與USB有關(guān)的操作。 d)提供描述符 USB 設(shè)備的調(diào)試過程其實(shí)就是根據(jù)主機(jī)的請(qǐng)求,不斷地向主機(jī)提供各種信息的過程。因此,了解主機(jī)按照什么樣的順序向設(shè)備發(fā)出請(qǐng)求
11、,即Windows 對(duì)USB 設(shè)備的枚舉順序是非常有必要的:GetDeviceDescriptor 。主機(jī)主要對(duì)Length 域感興趣,發(fā)送內(nèi)容一定要正確,特別是第 2 字節(jié)type 一定為0x01 ,即Device ;否則,主機(jī)將不響應(yīng),或 這時(shí)由于主機(jī)對(duì)Device 的描述符將有多長(zhǎng)實(shí)際上都不知道,所以這個(gè)步驟只是試探性的,目的是得到真正長(zhǎng)度,第三步中才正而巴經(jīng)地讀取DeviceDescriptor 。 3. 硬件設(shè)計(jì) 系統(tǒng)采用TI公司的MSP430F149作為MCU,Cypress公司的SL811HS作為USB設(shè)備控制器,充分發(fā)揮各自優(yōu)勢(shì)滿足低功耗要求。 3.1. MSP430
12、 TI公司的 MSP430系列單片機(jī)是一種超低功耗的混合信號(hào)控制器,針對(duì)不同的應(yīng)用而由各種不同的 模塊組成,這些微控制器可用電池工作,且使用的時(shí)間很長(zhǎng),MSP430單片機(jī)具有16位RISC結(jié)構(gòu),CPU中的16個(gè)寄存器和常數(shù)發(fā)生器使其能達(dá)到最高的代碼效率,靈活的時(shí)鐘源可以使器件的功率消耗最低,數(shù)字控制的振蕩器(DCO)可使器件從低功耗模式迅速喚醒,在短于6μs的時(shí)間內(nèi)激活到活躍的工作方式,非常的內(nèi)/外設(shè)和I/O端口資源,端口P1和P2支持中斷喚醒。 3.2. SL811HS Cypress公司的SL811HS是一款超低功耗的USB主/從設(shè)備控制器,主設(shè)備或從設(shè)備模式由軟件控制,USB主/
13、從設(shè)備控制器支持全高速和低速數(shù)據(jù)傳輸,內(nèi)部256字節(jié)的SRAM緩存,訪問時(shí)地址自動(dòng)加1,可大大縮短讀寫指令周期,具有標(biāo)準(zhǔn)的8位雙向微處理器總線接口,其中從設(shè)備模式下支持DMA。 硬件系統(tǒng)框圖 : 串口 并口 UART P5.0~P5.7 P2.0~P2.7 MSP430F149 P6.0~P6.7 P1.1 P4.0~P4.5 控制總線 數(shù)據(jù)總線 INTR 讀/寫片選復(fù)位 D0~D7 SL811HS U盤接口 圖2 USB讀寫器結(jié)構(gòu)圖 USB讀寫器結(jié)構(gòu)框圖如圖1所示,主
14、要由MSP430F149和SL811HS構(gòu)成,MSP430支持串口輸入和14位的并口輸入,P2.7用作中斷喚醒位,P2.6用作標(biāo)準(zhǔn)位區(qū)分?jǐn)?shù)據(jù)和命令,通過P4口向SL811發(fā)送控制信號(hào),P6用作普通的雙向總線接口與SL811進(jìn)行數(shù)據(jù)交換,P1.1支持中斷喚醒接收SL811的中斷請(qǐng)求。 4. 軟件設(shè)計(jì) 為了使上位PC機(jī)能夠直接讀取該讀寫器寫入U(xiǎn)盤的數(shù)據(jù),數(shù)據(jù)存儲(chǔ)按照FAT32文件管理方式存儲(chǔ),其中涉及USB和UFI協(xié)議以及FAT32文件存儲(chǔ)格式。 4.1. USB協(xié)議 USB(通用串行總線)用于將USB接口的外圍設(shè)備(device)連接到主機(jī)(host),實(shí)現(xiàn)二者之間數(shù)據(jù)傳輸?shù)耐獠靠偩€
15、結(jié)構(gòu),是一種快速、靈活的總線接口,USB的傳輸類型有控制(control)、批量(bulk)、中斷(interrupt)和同步(synchronous)傳輸4種,它最大的特點(diǎn)是易于使用,即插即用,主要是用在中速和低速的外設(shè)。 控制數(shù)據(jù)用于在USB接入總線時(shí)對(duì)其進(jìn)行配置,其他的驅(qū)動(dòng)軟件可以根據(jù)具體的應(yīng)用來選擇使用控制傳輸,這種數(shù)據(jù)傳輸不會(huì)丟失數(shù)據(jù)。 典型的批量數(shù)據(jù)包括象使用打印機(jī)或掃描儀時(shí)所出現(xiàn)的大數(shù)據(jù)量的數(shù)據(jù),這種批量數(shù)據(jù)是連續(xù)的,通過在硬件中實(shí)現(xiàn)差錯(cuò)檢測(cè)功能,并且有選擇地進(jìn)行一定的應(yīng)進(jìn)重試操作,可以在硬件層次上保證數(shù)據(jù)的可靠交換。 由設(shè)備自發(fā)產(chǎn)生的數(shù)據(jù)傳輸是中斷數(shù)據(jù)傳輸,這類數(shù)據(jù)傳輸可
16、以由USB設(shè)備在任意時(shí)刻發(fā)起,而且USB總線以不低于設(shè)備說明的速率進(jìn)行傳輸。 同步數(shù)據(jù)在產(chǎn)生、傳送和處理過程中是連續(xù)的和實(shí)時(shí)的,在穩(wěn)定的同步數(shù)據(jù)發(fā)送和接收速率中包含了相應(yīng)的時(shí)鐘信息,為了保持定時(shí)關(guān)系,同步數(shù)據(jù)必須按照接收的速率進(jìn)行傳輸。 4.2. BULK_ONLY和UFI協(xié)議 USB設(shè)備分為5大類,即顯示器、通信設(shè)備、音頻設(shè)備、人機(jī)輸入和海量存儲(chǔ)。通常所用的U盤、移動(dòng)硬盤均屬于海量存儲(chǔ)類。海量存儲(chǔ)類的規(guī)范中包括4個(gè)獨(dú)立的子規(guī)范,即CBI傳輸、Bulk-Only傳輸、ATA命令塊、UFI命令規(guī)范。前兩個(gè)協(xié)議定義了數(shù)據(jù)/命令/狀態(tài)在USB總線上的傳輸方法,Bulk-Only傳輸協(xié)議僅僅使用
17、Bulk端點(diǎn)傳送數(shù)據(jù)/命令/狀態(tài),CBI傳輸協(xié)議則使用Control/bulk/interrupt三種類型的端點(diǎn)進(jìn)行數(shù)據(jù)/命令/狀態(tài)的傳送。后兩個(gè)協(xié)議定義了存儲(chǔ)介質(zhì)的操作命令,ATA協(xié)議用于硬盤,UFI協(xié)議則針對(duì)USB移動(dòng)存儲(chǔ),U盤讀寫器的設(shè)計(jì)遵循Bulk-Only傳輸協(xié)議和UFI命令規(guī)范。UFI命令塊規(guī)范是針對(duì)USB移動(dòng)存儲(chǔ)而制定的,它總共定義了19個(gè)12字節(jié)長(zhǎng)度的操作命令。 Bulk-Only事務(wù)以主機(jī)向設(shè)備發(fā)送CBW(Command Block Warp)包,并以建立相應(yīng)的數(shù)據(jù)傳輸開始的,設(shè)備接收到CBW包,檢查并解釋它,試圖滿足主機(jī)的要求,并通過CSW(Command State W
18、rap)包向主機(jī)返回狀態(tài)信息。 CBW是主機(jī)通過Bulk-Out端點(diǎn)向設(shè)備發(fā)送的命令塊包,在CBW中使用方向位和數(shù)據(jù)傳輸長(zhǎng)度域指明期待的傳輸,CBW必須起始于包邊界,并且必須以31字節(jié)的短包傳輸 結(jié)束,相繼的數(shù)據(jù)包和CSW包必須開始于一個(gè)新的包邊界,所有的CBW包必須按低字節(jié)在前的次序傳輸。 CBW包結(jié)構(gòu)如圖2所示,各域含義如下: 字節(jié)位 7 6 5 4 3 2 1 0 0~3 命令塊包標(biāo)識(shí) 4~7 命令塊標(biāo)記 8~11 數(shù)據(jù)傳輸長(zhǎng)度 12 命令塊標(biāo)旗 13 預(yù)留 邏輯單元號(hào) 14 預(yù)留 CBWCB長(zhǎng)度 15~3
19、0 CBWCB 圖2 CBW包結(jié)構(gòu) 1)命令塊包標(biāo)識(shí)。CBW包標(biāo)記,表明這是一個(gè)CBW包,這個(gè)域的值為43425355H。 2)命令塊標(biāo)記。當(dāng)設(shè)備返回相應(yīng)的CSW包時(shí),必須使命令狀態(tài)標(biāo)記域的值與此值相同。 3)數(shù)據(jù)傳輸長(zhǎng)度。指明命令執(zhí)行期間在Bulk端點(diǎn)上傳數(shù)據(jù)的字節(jié)長(zhǎng)度,如果這個(gè)域的值是0,則在CBW和CSW之間設(shè)備和主機(jī)不傳輸任何數(shù)據(jù),并且設(shè)備將忽略在命令塊標(biāo)旗域中的方向位的值。 4)命令塊標(biāo)旗。方向位規(guī)定了Bulk端點(diǎn)數(shù)據(jù)傳輸?shù)姆较颍渌活A(yù)留。 5)邏輯單元號(hào)。指定命令塊被發(fā)送到的邏輯單元號(hào),如果設(shè)備不支持多個(gè)邏輯單元號(hào),則主機(jī)將這個(gè)域設(shè)置為0。 6)CBWCB長(zhǎng)
20、度,定義了CBWCB的有效長(zhǎng)度,合法值為1-16。 7)CBWCB。由設(shè)備執(zhí)行的命令,由設(shè)備解釋。 CSW向主機(jī)表明來自于CBW包的命令塊的執(zhí)行狀態(tài)。設(shè)備收到CBW包解析處理后將通過Bulk-In端點(diǎn)發(fā)送一個(gè)CSW包。 CSW開始于包邊界,并以13字節(jié)的短包結(jié)束,結(jié)構(gòu)如圖3所示,各域含義如下: 字節(jié)位 7 6 5 4 3 2 1 0 0~3 命令狀態(tài)包標(biāo)識(shí) 4~7 命令狀態(tài)標(biāo)記 8~11 數(shù)據(jù)殘余 12 命令執(zhí)行狀態(tài) 圖3 命令狀態(tài)包結(jié)構(gòu) 1)命令狀態(tài)包標(biāo)識(shí)。CSW包的標(biāo)記,表明這是一個(gè)CSW包,這個(gè)域的值為5
21、3425355H。 2)命令狀態(tài)標(biāo)記。次域的值域CBW包的命令塊標(biāo)記相同。 3)數(shù)據(jù)殘余。實(shí)際數(shù)據(jù)傳輸量與CBW包中規(guī)定的數(shù)據(jù)傳輸長(zhǎng)度的差值。 4)命令執(zhí)行狀態(tài),表明命令成功或失敗信息,如果命令執(zhí)行成功,則設(shè)備將設(shè)置此域的值為0,非0值;則表明失敗或錯(cuò)誤。 UFI是針對(duì)USB移動(dòng)存儲(chǔ)而制定的命令塊協(xié)議,它規(guī)定了主機(jī)和設(shè)備進(jìn)行信息交換所使用的命令塊、數(shù)據(jù)和狀態(tài)信息,Bulk-Only傳輸協(xié)議定義了傳輸這些信息的方法,其中UFI命令塊是封裝在CBW包中的CBWCB,設(shè)備通過讀取CBWCB確定具體要執(zhí)行何種操作命令(如讀命令),如何完成這個(gè)命令(如從閃存的哪個(gè)地址讀,需要讀取的長(zhǎng)度),設(shè)備將
22、命令的執(zhí)行狀態(tài)封裝成CSW返回給主機(jī)。 UFI用于大多數(shù)命令的12字節(jié)命令塊的描述,結(jié)構(gòu)如圖4所示,其中各參數(shù)意義如下: 1)操作命令代碼。指明所需要執(zhí)行的操作命令; 2)邏輯單元號(hào)。指明命令將發(fā)送到哪個(gè)邏輯單元,如果設(shè)備只有一個(gè)邏輯單元,則此域的值為0。 3)邏輯塊地址。命令操作的起始地址。 4)傳輸長(zhǎng)度,指明請(qǐng)求傳輸?shù)臄?shù)據(jù)量,通常以"扇區(qū)"作單位,但是有幾個(gè)命令是以"字節(jié)"作單位的,對(duì)于這些命令,傳輸長(zhǎng)度域可以以不同的名字標(biāo)識(shí),若此域的值為0,則表面沒有數(shù)據(jù)需要傳輸。 5)參數(shù)列表長(zhǎng)度,用于指定發(fā)送到設(shè)備的字節(jié)數(shù),這個(gè)域典型的應(yīng)用于發(fā)送到設(shè)備的參數(shù)命令塊(如模式參數(shù)、診斷參數(shù)等
23、),若此域的值為0,則表面沒有數(shù)據(jù)需要傳輸。 6)分配長(zhǎng)度,指明主機(jī)已經(jīng)分配的用于返回?cái)?shù)據(jù)的最大字節(jié)長(zhǎng)度,若此值為0,則表明沒有數(shù)據(jù)需要傳輸。 字節(jié)位 字節(jié) 7 6 5 4 3 2 1 0 0 操作命令代碼 1 邏輯單元號(hào) 預(yù)留 2~5 邏輯塊地址 6 預(yù)留 7~8 傳輸長(zhǎng)度或參數(shù)列表長(zhǎng)度或分配長(zhǎng)度 9~11 預(yù)留 圖4 UFI結(jié)構(gòu) 4.3. FAT32 FAT是Microsoft較早推出的文件系統(tǒng),具有高度的兼容性,目前仍然廣泛應(yīng)用于個(gè)人電腦尤其是移動(dòng)存儲(chǔ)設(shè)備中,F(xiàn)AT由引導(dǎo)扇區(qū)、FAT1表、FAT2表、目錄
24、和文件區(qū)組成(其中FAT2表是FAT1表的備份)。磁盤的管理是以扇區(qū)為單位的,而移動(dòng)存儲(chǔ)設(shè)備則是以塊為單位的,F(xiàn)AT將塊映射成扇區(qū),原理相同,F(xiàn)AT將磁盤空間以一定數(shù)目的扇區(qū)為單位進(jìn)行劃分,這樣的單位成為"簇"。通常情況下,每扇區(qū)512字節(jié)的原則是不變的,簇的大小一般是2n(n為整數(shù))個(gè)扇區(qū)的大小。所以以簇為單位而不以扇區(qū)為單位進(jìn)行磁盤的分配,是因?yàn)楫?dāng)區(qū)分容量較大時(shí),采用512字節(jié)的扇區(qū)管理,會(huì)增加FAT表的項(xiàng)數(shù)和大文件存取的消耗,使文件系統(tǒng)效率不高。 引導(dǎo)扇區(qū)DBR(DOS Boot Record)通常占用分區(qū)的第0扇區(qū),共512字節(jié),F(xiàn)AT表緊隨其后。DBR的第一部分是一個(gè)x86跳轉(zhuǎn)指令
25、、廠商標(biāo)志和操作系統(tǒng)版本號(hào),接下來的從偏移0x0B開始的是一段描述能夠使可執(zhí)行引導(dǎo)代碼找到相關(guān)參數(shù)的消息,通常稱之為BPB。最后是引導(dǎo)程序代碼以及扇區(qū)結(jié)束標(biāo)志。BPB中記錄了扇區(qū)大小、簇的扇區(qū)數(shù)、保留扇區(qū)數(shù)、FAT表大小和文件系統(tǒng)類型等重要參數(shù),用于文件的索引和定位計(jì)算。 4.4. 軟件系統(tǒng)模塊 USB讀寫器軟件由主模塊、USB模塊、BULK模塊、FAT模塊和中斷處理模塊組成。各模塊之間相互協(xié)調(diào)調(diào)用,共同完成對(duì)U盤文件的讀寫創(chuàng)建。 USB模塊負(fù)責(zé)檢測(cè)USB設(shè)備的移入/移出,對(duì)插入的設(shè)備進(jìn)行枚舉,分配設(shè)備地址端點(diǎn)號(hào),配置設(shè)備接口端點(diǎn)描述符,建立BULK_ONLY輸入/輸出通道,BULK模塊
26、則在已建立的BULK_ONLY輸入/輸出通道發(fā)送CBW數(shù)據(jù)包,并接收CSW數(shù)據(jù)包,通過CBW中嵌入的CBWCB信息確定對(duì)U盤讀/寫操作的扇區(qū)位置和大小,F(xiàn)AT模塊主要完成簇和扇區(qū)間的索引定位,即在U盤內(nèi)尋址,利用BPB中的參數(shù)計(jì)算給定扇區(qū)的所在簇以及進(jìn)入休眠狀態(tài),等待外部中斷喚醒。 中斷處理模塊是在中斷喚醒后根據(jù)中斷類型進(jìn)入不同功能子模塊的,也是整個(gè)軟件系統(tǒng)的核心部分。中斷模塊接收到串口或并口數(shù)據(jù)后,根據(jù)內(nèi)部命令字要求進(jìn)行解析,命令字要求如圖5所示,串口或并口數(shù)據(jù)接收流程如圖6所示。 類型 位 15 14 13 12 11 10 09 08 07 06 0
27、5 04 03 02 01 00 命令字 1 1 命令值 命令參數(shù)字節(jié)數(shù)或數(shù)據(jù)長(zhǎng)度 數(shù)據(jù)字 1 0 預(yù)留 12位數(shù)據(jù) 12位數(shù)據(jù) 圖5 命令和數(shù)據(jù)字結(jié)構(gòu)開始 根據(jù)中斷接口類型屏蔽另外一個(gè)接口,直到系統(tǒng)復(fù)位 讀一個(gè)字 Y 獲取命令參數(shù)長(zhǎng)度等待傳送的數(shù)據(jù)長(zhǎng)度數(shù)據(jù)流方向 命令字? N 處理命令參數(shù)或數(shù)據(jù)緩存 N 需要訪問U盤? Y 檢測(cè)U盤 N 可用? Y 訪問U盤 結(jié)束 圖6 數(shù)據(jù)接收流程圖 5. 心
28、得體會(huì) 首先,我要感謝老師給予了我這次課程設(shè)計(jì)的機(jī)會(huì)。在這次嵌入式系統(tǒng)課程設(shè)計(jì)中,雖然有些難題和困惑之處,但在同學(xué)和老師的幫助下,最終也是完成了最后的課程設(shè)計(jì)。 通過此次的課程設(shè)計(jì),我對(duì)ARM嵌入式有了深入的了解,同時(shí),對(duì)硬件MSP430F149和SL811HS也有所認(rèn)識(shí)。在軟件上,通過對(duì)USB協(xié)議、BULK_ONLY、UFI協(xié)議、FAT32和軟件系統(tǒng)模塊的運(yùn)用也讓我受益匪淺。在操作上,經(jīng)過反復(fù)的學(xué)習(xí)和推敲,也由不熟悉變成熟練。理論知識(shí)方面也是通過與同學(xué)和老師們的討論,最終也達(dá)成了實(shí)驗(yàn)的目的,得到了相應(yīng)的成果。 對(duì)于本次實(shí)驗(yàn)的課題——嵌入式系統(tǒng)U盤開發(fā)的設(shè)計(jì),基于嵌入式U盤讀寫器的設(shè)計(jì)實(shí)現(xiàn)我認(rèn)為可以方便地將下位機(jī)數(shù)據(jù)存儲(chǔ)到普通U盤,徹底解決了工業(yè)控制中上下位機(jī)之間數(shù)據(jù)傳輸難的問題,也為以后其他領(lǐng)域的應(yīng)用創(chuàng)造了前提條件。如長(zhǎng)途客車中的黑匣子、家庭老人健康監(jiān)測(cè)等等。 在人們以后的生活中,隨著USB技術(shù)和閃存技術(shù)的進(jìn)一步發(fā)展,這種嵌入式U盤設(shè)備應(yīng)用領(lǐng)域?qū)?huì)逐步擴(kuò)展,在以后的市場(chǎng)上將有著良好的前景,同時(shí)也會(huì)對(duì)人們的生活提供不小的幫助。 14
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識(shí)競(jìng)賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識(shí)測(cè)試題庫及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測(cè)工種技術(shù)比武題庫含解析
- 1 礦山應(yīng)急救援安全知識(shí)競(jìng)賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案