USB海量存儲類設備功能在ARM系統(tǒng)中的應用,FLASH,海._第1頁
USB海量存儲類設備功能在ARM系統(tǒng)中的應用,FLASH,海._第2頁
免費預覽已結束,剩余1頁可下載查看

下載本文檔

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

文檔簡介

1、USB 海量存儲類設備功能在 ARM 系統(tǒng)中的應用,F(xiàn)LASH 海量存儲類設備,Bulk-Only 傳輸技術發(fā)展到今天的信息時代, 數據的存儲和傳輸在嵌入式系統(tǒng)有了越來越重要 的地位。而 USB 是目前設計成熟、應用廣泛且使用極為簡捷的技術,USB 專輸是一種高效方便的數據傳輸方式。基于上述原因,本文重點論述基于USB 的海量存儲(USBMassStorage)設備功能在 ARM 嵌入式系統(tǒng)中設計和應用。使用該設 備功能,上位機可以像讀寫普通 U 盤一樣對于系統(tǒng)采集并存儲在 FLASH 中的數 據進行讀寫。1 硬件方案 1.1 器件簡介 S3C44B0X1 是 SAMSUN 公司出品的基于技術

2、發(fā)展到今天的信息時代, 數據的存儲和傳輸在嵌入式系統(tǒng)有了越來越重要 的地位。而 USB 是目前設計成熟、應用廣泛且使用極為簡捷的技術,USB 傳輸是一種高效方便的數據傳輸方式?;谏鲜鲈?,本文重點論述基于USB 勺海量存儲 (USBMass Storage)設備功能在 ARM 嵌入式系統(tǒng)中設計和應用。使用該設備 功能,上位機可以像讀寫普通 U 盤一樣對于系統(tǒng)采集并存儲在 FLASH 中的數據 進行讀寫。1 硬件方案1.1 器件簡介S3C44B0X是SAMSUN公司出品的基于 ARM7TDM內核的RISC型微處理器, 8 kB 指令和數據共享的緩存,主頻可達 66MHz 可以運行 16 位的

3、Thumb 指令和 32 位的 ARMtt 令,且接口豐富, 具有通用性。K9F2808U0C 是 SAMSUN 公司生產的一款 Nand 型閃存芯片,容量為 16 MB,讀 寫速度快,數據保存時間長,可擦寫 10 萬次,在嵌入式系統(tǒng)中有著廣泛的應 用,主要是負責數據存儲。PDIUSBDI 藝是 PHILIPS 公司生產的帶有并行總線和局部 DMA 專輸能力的全速 USB接口芯片,符合 USB1.1 版規(guī)范,可以與任何外部 MC/MPU 實現(xiàn)并行接 口,傳輸速度可達 2MB/s。該 USB 芯片有 1 個控制端點和 2 個普通端點。1.2 硬件連接圖硬件連接如圖 1 所示。在該系統(tǒng)中,F(xiàn)LAS

4、H 芯片 K9F2808U0(負責嵌入式系統(tǒng)中 的數據存儲;處理器 S3C44B0)執(zhí)行底層固件代碼;USE 接口芯片 PDIUS-BDI2 負責設備與上位機的通訊。 這樣系統(tǒng)采集并存儲在閃存芯片中的數據便可以通 過 USB 接口傳輸到上位機。2 軟件實現(xiàn) 要實現(xiàn)實驗系統(tǒng)與上位機的 USB 通訊,首先要正確設計 PDIUSBD12 勺底層固件 程序。而要實現(xiàn)系統(tǒng)的海量存儲設備功能,還要有 FLASH 的讀寫操作代碼和實 現(xiàn)海量存儲設備類規(guī)范的代碼。下面從這 3 個方面來分析。軟件開發(fā)環(huán)境為ARM 公司的 ADS1.2, USB 監(jiān)控和測試軟件為 BUSlound 2.1 PDIUSBD12 固

5、件編程PDIUSBDI2 固件結構和數據流向如圖 2 所示。 結構圖中的硬件提取層是固件中 的最底層代碼, 負責對處理器與 PDIUSBDI2 相連接的 I /O 口進行操作, 以通知 PDI-USBD12接下來處理器將對其進行命令操作或是數據操作。而命令接口層是 基于硬件提取層的一套對 PDIUS-BDI2 進行操作的子程序,可以方便上層程序的 編寫。當 PDIUSBD1 向處理器發(fā)出中斷請求時,處理器讀取中斷寄存器,根據中斷源 調用相應的中斷服務處理程序,中斷服務處理程序設置相應的事件標志,如果 有數據傳輸并作相應的數據處理。根據USB 協(xié)議4,控制端點 0 用來負責設備的枚舉,如獲取設備

6、各種描述符、設置地址、獲取海量存儲設備的邏輯單元數 目和復位設備等操作。這些操作是通過中斷和主循環(huán)共同完成的。這里端點 1 未用到,可以忽略其中斷。端點 2 是主端點,用作 BuIk-OnIy 傳輸。在端點 2 的中斷處理程序中實現(xiàn) BuIk-OnIy 傳輸及命令解析和執(zhí)行。其中,中斷服務處理程序與主循環(huán)通過一個名為 ControIData 的結構體變量進 行通訊。主循環(huán)初始化 I /O 口、事件標志 bUSBFIags 建立包數據緩沖區(qū)、定 時器和中斷,重新連接 USB 總線后進入一個無限循環(huán), 當該循環(huán)輪詢到某事件 標志被置位時便進行相應的處理。特別是在設備枚舉中當建立標志被置位時, 根據

7、設備請求的類型域ControIData ,DeviceRequest,bmRequestType 來確定 是標準設備請求、廠商設備請求還是類型設備請求,再根據請求類型進行相應 的調用。2.2 K9F2808U0C 讀寫操作K9F2808U0(共有 1 024 塊,每塊 32 頁,每頁 528 B,其中 512B 用于存放數 據,另外 16 B 用于存放信息,如塊的好壞標記、塊邏輯地址和ECC 校驗和等。FLASH 賣寫有其自身的特點,讀寫都以頁為單位,可以隨機讀,但無法隨機 寫,寫操作前必須把寫單元所在的塊擦除。因此,對于該閃存的讀操作可以采取直接讀取來處理;而對于寫操作,則通過設置塊緩沖來解

8、決,以減輕系統(tǒng)的任務和對 FLASH!勺擦除次數。寫操作的基 本思想是:設置一個塊緩沖區(qū),待寫數據先寫入緩沖區(qū)對應的頁地址,當緩沖 區(qū)中待寫數據的頁地址到達 31 或者頁地址未滿 31 但傳輸已經結束時,先將目 標塊中待寫頁以外的有關數據保存到緩沖區(qū)對應的頁地址,然后擦除整塊,最 后將緩沖區(qū)的數據拷貝到該塊。寫操作流程如圖 3 所示。2.3 海量存儲規(guī)范實現(xiàn) 海量存儲設備必須符合海量存儲設備類規(guī)范,該規(guī)范包括 4 個獨立的子類規(guī) 范,本設計中用到其中的 2 個子類規(guī)范:一是 USB MassStorage Class Bulk-Only Transport規(guī)范5;二是 USB MassStor

9、age ClassUFI Comma n 規(guī)范。前者定義了數據/命令/狀態(tài)在 USB 總線上的傳 輸方法, Bulk-Only 傳輸規(guī)范僅僅使用 Bulk 端點傳送數據命令狀態(tài)。后者 定義了對存儲介質的操作命令, UFI 命令規(guī)范基于 SCSI-2 和 SFF-8070i 命令 集。這里根據SCSI-2 規(guī)范6針對該類設備的操作命令規(guī)范,總共編寫了9 個命令執(zhí)行函數,見下文。海量存儲規(guī)范的實現(xiàn)有 2 個地方要注意:一是設備描述符、配置描述符、接口 描述符和端點描述符要正確設置,主機是通過控制端點 (端點 0) 獲取這一些描 述符的;二是 BULK 端點(端點 2)的中斷處理,其中的 BULKOUT 中斷處理較 BULK IN 復雜,由于篇幅所限,下面只討論 BULK OUT 的中斷處理。BULK OUT勺中斷處理要對主機發(fā)送的 CBW (Com-ma nd Block Wrapper和數據進 行解析和處理。偽代碼結構如下: 其中 pSCSI 是傳遞給讀寫函數的有關讀寫地址和數據傳輸長度等參數的結構 體。數據的處理在讀寫函數中進行。 Write( ) 函數的流程如圖 3。讀函數以頁 為單位,一次可以讀取連續(xù)的若干頁,在此不再列出其流程

溫馨提示

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

評論

0/150

提交評論