基于嵌入式系統(tǒng)U盤開發(fā)的設計.doc_第1頁
基于嵌入式系統(tǒng)U盤開發(fā)的設計.doc_第2頁
基于嵌入式系統(tǒng)U盤開發(fā)的設計.doc_第3頁
基于嵌入式系統(tǒng)U盤開發(fā)的設計.doc_第4頁
基于嵌入式系統(tǒng)U盤開發(fā)的設計.doc_第5頁
免費預覽已結束,剩余12頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

湖南文理學院芙蓉學院課程設計報告課程名稱: 嵌入式系統(tǒng)課程設計 專業(yè)班級: 通信工程1301班 學生姓名: 王海波 指導教師: 邵湘怡 完成時間: 2016年 6月 22日 報告成績: 評閱意見: 評閱教師 日期 湖南文理學院制目錄基于嵌入式系統(tǒng)u盤開發(fā)的設計1一、設計題目1二、設計內容及要求12.1設計內容12.2設計要求1三、設計作用與目的2四、系統(tǒng)設計方案24.1系統(tǒng)總體設計24.2簡要闡述系統(tǒng)工作原理3五、系統(tǒng)硬件設計35.1硬件電路35.2基本程序結構45.2.1.USB 設備端的固件分以下幾個層次:45.2.2.在調試的時候,從現(xiàn)象上來看,分成以下幾個階段性的步驟55.2.3.檢查USB 器件工作與否65.2.4.提供描述符65.3硬件設計6六、系統(tǒng)軟件設計76.1USB協(xié)議76.2 BULK_ONLY和UFI協(xié)議86.3 FAT32116.4軟件系統(tǒng)模塊12七、仿真調試分析14八、嵌入式系統(tǒng)學習心得14九、參考文獻15基于嵌入式系統(tǒng)u盤開發(fā)的設計一、設計題目基于嵌入式系統(tǒng)u盤開發(fā)的設計二、設計內容及要求2.1設計內容隨著USB技術和閃存技術的飛速發(fā)展,移動存儲設備的速度和容量日新月異,但在工業(yè)控制的上位機和下位機之間,數(shù)據(jù)傳輸依然采用傳統(tǒng)的串并口技術,特別對一些前端的便攜式采集系統(tǒng),需要采集后臨時存儲,再拿回來傳給作為上位機的PC機進行數(shù)據(jù)處理,給人們帶來很多不變,為此,本文提出了一種方法-利用U盤的便捷特性開發(fā)一種基于嵌入式的USB讀寫器,方便地將采集數(shù)據(jù)以文件方式寫入U盤,PC機不需要任何特殊驅動便可以完成對數(shù)據(jù)的處理回放。利用本方法可以徹底解決下位機與PC機之間的數(shù)據(jù)傳輸難的問題。2.2設計要求據(jù)U盤結構特點,設計了一種基于嵌入式系統(tǒng)U盤的系統(tǒng)結構,可以將U盤集成到無線數(shù)據(jù)卡上,或者手機上,以實現(xiàn)數(shù)據(jù)存儲的功能。在進行USB 開發(fā)過程中,比較難的是對設備端的程序(稱為固件,F(xiàn)irmware )進行調試。由于USB 協(xié)議有嚴格的時間要求,這就使得程序必須在有效時間內對某些請求或狀態(tài)進行處理,否則,USB 將無法正常工作。因此,在調試過程中,較多借助LED1,LED2顯示輸出的一些信息來輔助調試,定位問題所在。比如,在某個函數(shù)中加入LED1,LED2顯示語句,程序運行時看有否相應的LED1,LED2顯示輸出,借此來判斷此函數(shù)是否得到了執(zhí)行。調試工作基本分二步進行:首先對外部設備(單片機部分)借助PC 調試軟件(從網(wǎng)上下載Bus Hound)將設備端的USB 協(xié)議(主要有描述符請求、端口配置、地址設置以及基本數(shù)據(jù)交換)調通。然后,用調試好的USB 設備接口來嵌入文件系統(tǒng)功能。三、設計作用與目的根據(jù)U 盤結構特點,設計了一種基于嵌入式系統(tǒng)U 盤的系統(tǒng)結構,可以將U 盤集成到無線數(shù)據(jù)卡上,或者手機上,以實現(xiàn)數(shù)據(jù)存儲的功能四、系統(tǒng)設計方案4.1系統(tǒng)總體設計圖1 USB讀寫器結構圖4.2簡要闡述系統(tǒng)工作原理SB讀寫器結構框圖如圖1所示,主要由MSP430F149和SL811HS構成,MSP430支持串口輸入和14位的并口輸入,P2.7用作中斷喚醒位,P2.6用作標準位區(qū)分數(shù)據(jù)和命令,通過P4口向SL811發(fā)送控制信號,P6用作普通的雙向總線接口與SL811進行數(shù)據(jù)交換,P1.1支持中斷喚醒接收SL811的中斷請求。五、系統(tǒng)硬件設計5.1硬件電路下圖分別為PDIUSBD12的引腳定義,其中,下列幾個方面在制作電路板時應該注意。圖2 PDIUSBD12引腳圖a)GND 接地,VDD 接正(3.3V 或5V ),如果芯片工作在3.3V ,則Vout3.3 與VDD 都接3.3V ;如果芯片工作在5V ,則這時Vout3.3 會輸出3.3V 的電壓,用于提供給D 作參考電壓,因為此參考電壓必須為3.3V 。對于U 盤來說,由于USB 接供的是5V 電壓,因此應該按后一種接法接。即GND 接USB 接口中的GND ,VDD 接USB 接口中的VDD ,D D分別接USB 接口中的對應位。b)XTAL1 和XTAL2 按傳統(tǒng)接法。c)PDIUSBD12與MCU AT-89C55WD的連接方法見下表表1 PDIUSBD12與MCU AT-89C55WD的連接方法PDIUSBD12引腳MCU AT-89C55WD引腳DATA DATAP0.0P0.7(AD0AD7)ALEALE/PROGCS_NP1.6RESET_NP1.7INT_NP3.2(INT0)SUSPENDP3.3WR_NP3.6(WR)RD_NP3.7(RD)A0接GNDd)DMARQ DMACK_N EOT_N GL_N CLKOUT引腳懸空,可作為擴充功能使用。e)MCU AT-89C55WD P1.2和P1.3接2個低電平有效顯示燈LED1和LED2。5.2基本程序結構5.2.1.USB 設備端的固件分以下幾個層次:表2固件層次固件模塊功能Main.c進行各種初始化操作、寄存器設置、中斷設置intr.c中斷服務程序,負責將不同類型的中斷轉向不同的地方usb_op.cD12硬件抽象層,所有的上層模塊都必須通過此模塊與USB芯片打交道usb_prtcl.c設備枚舉需要的設備描述符,配置描述符,接口描述符,端口描述符都由此模塊來執(zhí)行提供endpoint2_bulk_only.C所有mass Storage 協(xié)議CBW,CSW,DATA的處理及FLASH的讀寫都由此模塊來處理5.2.2.在調試的時候,從現(xiàn)象上來看,分成以下幾個階段性的步驟1、USB 芯片正常工作,可以實現(xiàn)軟連接,此時PC 機上會出現(xiàn)“未知設備類型”的USB 設備;2、向主機提供普通USB 設備提供描述符,提供正確的VID 和PID 后,PC 能夠識別設備,但要求提供設備的驅動程序;3、安裝驅動程序后,使用周立功單片機公司提供的UsbDebug.exe簡單調試端點1和2,確保其均可傳輸數(shù)據(jù),驗證硬件及固件的正確性;4、按Mass Storage不得BulkOnly 模式提供描述符,PC 機上設備類型變成Mass Storage Device;5、響應了BulkOnly 的Inquiry 命令,可以出現(xiàn)盤符了,但尚無法訪問磁盤;6、提供了其他所有的UFI命令(SCSI 子集),開始讀取磁盤0 扇區(qū)(BPB 區(qū))的內容按照FAT12 的格式7、在AT-89C55WD EEPROM虛擬一張軟盤,可以正確讀取信息,可以訪問盤符,列目錄為空;8、,軟盤中放一個可執(zhí)行的文件,可以正常運行這個可執(zhí)行文件;8、創(chuàng)建文件,向設備發(fā)出Write 命令,等等。下面從具體實際操作方面來描述調試各階段的步驟5.2.3.檢查USB 器件工作與否確定USB 芯片是否已經(jīng)正常工作,是所有調試的基礎,得到電路板之后,這是一個首先要解決的問題。判斷USB 芯片是否已經(jīng)工作,可以使用SoftConnect ,則在主程序中進行軟連接后,如果PC 機上出現(xiàn)未知設備,則說明USB 進行軟連接正常,也說明芯片已經(jīng)工作了。另外就是使用Bus Hound ,觀察USB 總線上的數(shù)據(jù),從而判斷主機與設備之間的通信已經(jīng)進行到哪一步了。在主程序中,對USB 初始化過程為: 初始化MCU 的各種端口; 進行中斷初始化,設置中斷服務程序入口地址,將MCU 的中斷方式設置為低電平觸發(fā),因為D12 只要進入中斷后INT_N 就一直為低。 斷開SoftConnect ,延時1 秒后再次連接 進入主程序循環(huán),等待中斷的到來 由中斷服務程序處理所有與USB有關的操作。5.2.4.提供描述符USB 設備的調試過程其實就是根據(jù)主機的請求,不斷地向主機提供各種信息的過程。因此,了解主機按照什么樣的順序向設備發(fā)出請求,即Windows 對USB 設備的枚舉順序是非常有必要的:GetDeviceDescriptor 。主機主要對Length 域感興趣,發(fā)送內容一定要正確,特別是第 2 字節(jié)type 一定為0x01 ,即Device ;否則,主機將不響應,或 這時由于主機對Device 的描述符將有多長實際上都不知道,所以這個步驟只是試探性的,目的是得到真正長度,第三步中才正而巴經(jīng)地讀取DeviceDescriptor 。5.3硬件設計系統(tǒng)采用TI公司的MSP430F149作為MCU,Cypress公司的SL811HS作為USB設備控制器,充分發(fā)揮各自優(yōu)勢滿足低功耗要求。MSP430TI公司的 MSP430系列單片機是一種超低功耗的混合信號控制器,針對不同的應用而由各種不同的模塊組成,這些微控制器可用電池工作,且使用的時間很長,MSP430單片機具有16位RISC結構,CPU中的16個寄存器和常數(shù)發(fā)生器使其能達到最高的代碼效率,靈活的時鐘源可以使器件的功率消耗最低,數(shù)字控制的振蕩器(DCO)可使器件從低功耗模式迅速喚醒,在短于6s的時間內激活到活躍的工作方式,非常的內/外設和I/O端口資源,端口P1和P2支持中斷喚醒。SL811HSCypress公司的SL811HS是一款超低功耗的USB主/從設備控制器,主設備或從設備模式由軟件控制,USB主/從設備控制器支持全高速和低速數(shù)據(jù)傳輸,內部256字節(jié)的SRAM緩存,訪問時地址自動加1,可大大縮短讀寫指令周期,具有標準的8位雙向微處理器總線接口,其中從設備模式下支持DMA。六、系統(tǒng)軟件設計為了使上位PC機能夠直接讀取該讀寫器寫入U盤的數(shù)據(jù),數(shù)據(jù)存儲按照FAT32文件管理方式存儲,其中涉及USB和UFI協(xié)議以及FAT32文件存儲格式。6.1USB協(xié)議USB(通用串行總線)用于將USB接口的外圍設備(device)連接到主機(host),實現(xiàn)二者之間數(shù)據(jù)傳輸?shù)耐獠靠偩€結構,是一種快速、靈活的總線接口,USB的傳輸類型有控制(control)、批量(bulk)、中斷(interrupt)和同步(synchronous)傳輸4種,它最大的特點是易于使用,即插即用,主要是用在中速和低速的外設??刂茢?shù)據(jù)用于在USB接入總線時對其進行配置,其他的驅動軟件可以根據(jù)具體的應用來選擇使用控制傳輸,這種數(shù)據(jù)傳輸不會丟失數(shù)據(jù)。典型的批量數(shù)據(jù)包括象使用打印機或掃描儀時所出現(xiàn)的大數(shù)據(jù)量的數(shù)據(jù),這種批量數(shù)據(jù)是連續(xù)的,通過在硬件中實現(xiàn)差錯檢測功能,并且有選擇地進行一定的應進重試操作,可以在硬件層次上保證數(shù)據(jù)的可靠交換。由設備自發(fā)產(chǎn)生的數(shù)據(jù)傳輸是中斷數(shù)據(jù)傳輸,這類數(shù)據(jù)傳輸可以由USB設備在任意時刻發(fā)起,而且USB總線以不低于設備說明的速率進行傳輸。同步數(shù)據(jù)在產(chǎn)生、傳送和處理過程中是連續(xù)的和實時的,在穩(wěn)定的同步數(shù)據(jù)發(fā)送和接收速率中包含了相應的時鐘信息,為了保持定時關系,同步數(shù)據(jù)必須按照接收的速率進行傳輸。6.2 BULK_ONLY和UFI協(xié)議USB設備分為5大類,即顯示器、通信設備、音頻設備、人機輸入和海量存儲。通常所用的U盤、移動硬盤均屬于海量存儲類。海量存儲類的規(guī)范中包括4個獨立的子規(guī)范,即CBI傳輸、Bulk-Only傳輸、ATA命令塊、UFI命令規(guī)范。前兩個協(xié)議定義了數(shù)據(jù)/命令/狀態(tài)在USB總線上的傳輸方法,Bulk-Only傳輸協(xié)議僅僅使用Bulk端點傳送數(shù)據(jù)/命令/狀態(tài),CBI傳輸協(xié)議則使用Control/bulk/interrupt三種類型的端點進行數(shù)據(jù)/命令/狀態(tài)的傳送。后兩個協(xié)議定義了存儲介質的操作命令,ATA協(xié)議用于硬盤,UFI協(xié)議則針對USB移動存儲,U盤讀寫器的設計遵循Bulk-Only傳輸協(xié)議和UFI命令規(guī)范。UFI命令塊規(guī)范是針對USB移動存儲而制定的,它總共定義了19個12字節(jié)長度的操作命令。Bulk-Only事務以主機向設備發(fā)送CBW(Command Block Warp)包,并以建立相應的數(shù)據(jù)傳輸開始的,設備接收到CBW包,檢查并解釋它,試圖滿足主機的要求,并通過CSW(Command State Wrap)包向主機返回狀態(tài)信息。CBW是主機通過Bulk-Out端點向設備發(fā)送的命令塊包,在CBW中使用方向位和數(shù)據(jù)傳輸長度域指明期待的傳輸,CBW必須起始于包邊界,并且必須以31字節(jié)的短包傳輸結束,相繼的數(shù)據(jù)包和CSW包必須開始于一個新的包邊界,所有的CBW包必須按低字節(jié)在前的次序傳輸。CBW包結構如圖2所示,各域含義如下:表3 CBW包結構字節(jié)位7654321003命令塊包標識47命令塊標記811數(shù)據(jù)傳輸長度12命令塊標旗13預留邏輯單元號14預留CBWCB長度1530CBWCB1)命令塊包標識。CBW包標記,表明這是一個CBW包,這個域的值為43425355H。2)命令塊標記。當設備返回相應的CSW包時,必須使命令狀態(tài)標記域的值與此值相同。3)數(shù)據(jù)傳輸長度。指明命令執(zhí)行期間在Bulk端點上傳數(shù)據(jù)的字節(jié)長度,如果這個域的值是0,則在CBW和CSW之間設備和主機不傳輸任何數(shù)據(jù),并且設備將忽略在命令塊標旗域中的方向位的值。4)命令塊標旗。方向位規(guī)定了Bulk端點數(shù)據(jù)傳輸?shù)姆较颍渌活A留。5)邏輯單元號。指定命令塊被發(fā)送到的邏輯單元號,如果設備不支持多個邏輯單元號,則主機將這個域設置為0。6)CBWCB長度,定義了CBWCB的有效長度,合法值為1-16。7)CBWCB。由設備執(zhí)行的命令,由設備解釋。CSW向主機表明來自于CBW包的命令塊的執(zhí)行狀態(tài)。設備收到CBW包解析處理后將通過Bulk-In端點發(fā)送一個CSW包。CSW開始于包邊界,并以13字節(jié)的短包結束,結構如圖3所示,各域含義如下:表4 命令狀態(tài)包結構字節(jié)位7654321003命令狀態(tài)包標識47命令狀態(tài)標記811數(shù)據(jù)殘余12命令執(zhí)行狀態(tài) 1)命令狀態(tài)包標識。CSW包的標記,表明這是一個CSW包,這個域的值為53425355H。2)命令狀態(tài)標記。次域的值域CBW包的命令塊標記相同。3)數(shù)據(jù)殘余。實際數(shù)據(jù)傳輸量與CBW包中規(guī)定的數(shù)據(jù)傳輸長度的差值。4)命令執(zhí)行狀態(tài),表明命令成功或失敗信息,如果命令執(zhí)行成功,則設備將設置此域的值為0,非0值;則表明失敗或錯誤。UFI是針對USB移動存儲而制定的命令塊協(xié)議,它規(guī)定了主機和設備進行信息交換所使用的命令塊、數(shù)據(jù)和狀態(tài)信息,Bulk-Only傳輸協(xié)議定義了傳輸這些信息的方法,其中UFI命令塊是封裝在CBW包中的CBWCB,設備通過讀取CBWCB確定具體要執(zhí)行何種操作命令(如讀命令),如何完成這個命令(如從閃存的哪個地址讀,需要讀取的長度),設備將命令的執(zhí)行狀態(tài)封裝成CSW返回給主機。UFI用于大多數(shù)命令的12字節(jié)命令塊的描述,結構如圖4所示,其中各參數(shù)意義如下:1)操作命令代碼。指明所需要執(zhí)行的操作命令;2)邏輯單元號。指明命令將發(fā)送到哪個邏輯單元,如果設備只有一個邏輯單元,則此域的值為0。3)邏輯塊地址。命令操作的起始地址。4)傳輸長度,指明請求傳輸?shù)臄?shù)據(jù)量,通常以扇區(qū)作單位,但是有幾個命令是以字節(jié)作單位的,對于這些命令,傳輸長度域可以以不同的名字標識,若此域的值為0,則表面沒有數(shù)據(jù)需要傳輸。5)參數(shù)列表長度,用于指定發(fā)送到設備的字節(jié)數(shù),這個域典型的應用于發(fā)送到設備的參數(shù)命令塊(如模式參數(shù)、診斷參數(shù)等),若此域的值為0,則表面沒有數(shù)據(jù)需要傳輸。6)分配長度,指明主機已經(jīng)分配的用于返回數(shù)據(jù)的最大字節(jié)長度,若此值為0,則表明沒有數(shù)據(jù)需要傳輸。表5 UFI結構字節(jié)位字節(jié)765432100操作命令代碼1邏輯單元號預留25邏輯塊地址6預留78傳輸長度或參數(shù)列表長度或分配長度911預留6.3 FAT32FAT是Microsoft較早推出的文件系統(tǒng),具有高度的兼容性,目前仍然廣泛應用于個人電腦尤其是移動存儲設備中,F(xiàn)AT由引導扇區(qū)、FAT1表、FAT2表、目錄和文件區(qū)組成(其中FAT2表是FAT1表的備份)。磁盤的管理是以扇區(qū)為單位的,而移動存儲設備則是以塊為單位的,F(xiàn)AT將塊映射成扇區(qū),原理相同,F(xiàn)AT將磁盤空間以一定數(shù)目的扇區(qū)為單位進行劃分,這樣的單位成為簇。通常情況下,每扇區(qū)512字節(jié)的原則是不變的,簇的大小一般是2n(n為整數(shù))個扇區(qū)的大小。所以以簇為單位而不以扇區(qū)為單位進行磁盤的分配,是因為當區(qū)分容量較大時,采用512字節(jié)的扇區(qū)管理,會增加FAT表的項數(shù)和大文件存取的消耗,使文件系統(tǒng)效率不高。引導扇區(qū)DBR(DOS Boot Record)通常占用分區(qū)的第0扇區(qū),共512字節(jié),F(xiàn)AT表緊隨其后。DBR的第一部分是一個x86跳轉指令、廠商標志和操作系統(tǒng)版本號,接下來的從偏移0x0B開始的是一段描述能夠使可執(zhí)行引導代碼找到相關參數(shù)的消息,通常稱之為BPB。最后是引導程序代碼以及扇區(qū)結束標志。BPB中記錄了扇區(qū)大小、簇的扇區(qū)數(shù)、保留扇區(qū)數(shù)、FAT表大小和文件系統(tǒng)類型等重要參數(shù),用于文件的索引和定位計算。6.4軟件系統(tǒng)模塊USB讀寫器軟件由主模塊、USB模塊、BULK模塊、FAT模塊和中斷處理模塊組成。各模塊之間相互協(xié)調調用,共同完成對U盤文件的讀寫創(chuàng)建。USB模塊負責檢測USB設備的移入/移出,對插入的設備進行枚舉,分配設備地址端點號,配置設備接口端點描述符,建立BULK_ONLY輸入/輸出通道,BULK模塊則在已建立的BULK_ONLY輸入/輸出通道發(fā)送CBW數(shù)據(jù)包,并接收CSW數(shù)據(jù)包,通過CBW中嵌入的CBWCB信息確定對U盤讀/寫操作的扇區(qū)位置和大小,F(xiàn)AT模塊主要完成簇和扇區(qū)間的索引定位,即在U盤內尋址,利用BPB中的參數(shù)計算給定扇區(qū)的所在簇以及進入休眠狀態(tài),等待外部中斷喚醒。中斷處理模塊是在中斷喚醒后根據(jù)中斷類型進入不同功能子模塊的,也是整個軟件系統(tǒng)的核心部分。中斷模塊接收到串口或并口數(shù)據(jù)后,根據(jù)內部命令字要求進行解析,命令字要求如圖5所示,串口或并口數(shù)據(jù)接收流程如圖6所示。 表6 命令和數(shù)據(jù)字結構類型型15141312111009080706050403020100命令字11命令值命令參數(shù)字節(jié)數(shù)或數(shù)據(jù)長度數(shù)據(jù)字10預留12位數(shù)據(jù)12位數(shù)據(jù)開始 根據(jù)中斷接口類型屏蔽另外一個接口,直到系統(tǒng)復位讀一個字Y

溫馨提示

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

評論

0/150

提交評論