<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于Flash的大容量高速數據記錄儀設計

          基于Flash的大容量高速數據記錄儀設計

          作者: 時間:2012-02-14 來源:網絡 收藏

          現今嵌入式存儲產品已滲透進人們生活工作中的方方面面,從ATM 機到手持通訊設備。社會對嵌入式產品的性能也有越來越高的要求:,度,斷電保護,體積限制等等。當前的容量和速度普遍偏小。本文旨在研究一種的存儲容量達512MB ,它可以用于多路信號采集系統(tǒng)中。重點研究在嵌入式linux 系統(tǒng)平臺的架構下Nand 的存儲技術。

          本文引用地址:http://www.ex-cimer.com/article/149698.htm

          引言

          FLASH 是一種不揮發(fā)性內存,在無電流供應的條件下也能夠長久地保持數據,相對于傳統(tǒng)的存儲介質具有無可比擬的優(yōu)勢。目前主要的閃存分為兩類:Intel 首先開發(fā)的NOR flash 和東芝發(fā)布的Nand。

          Nor 的特點是芯片內執(zhí)行。應用程序可以直接在閃存內運行。不必再把代碼讀到系統(tǒng)RAM 中。NOR 的傳輸效率很高,但是寫入和擦除速度很低。Nandflash 存儲單元的讀寫是以頁和塊為單位來進行,這種結構最大的優(yōu)點在于容量可以做得很大,NAND 閃存的成本較低,有利于大規(guī)模普及。主要功能是存儲資料。故而現在碼相機閃存卡和MP3 播放器中存儲設備幾乎全部是NandFlash?,F在大部分的嵌入式設備廠商出于成本的考慮都選擇了NandFlash 作為存儲設備。這樣增加了軟件的復雜度,降低了系統(tǒng)效率而且也限制了Flash 容量。

          結合兩類閃存的優(yōu)缺點,本文中我們選擇NandFlash 作為數據上午數據存儲器,norflash 作為數據記錄儀的程序存儲器。

          圖 1:系統(tǒng)整體結構圖圖

          圖 2:系統(tǒng)應用軟件流程

          數據記錄儀整體包括兩塊,其部分是數據采集模塊一部分是數據存儲模塊,用TLC2578 芯片來實現數據采集AD 轉換,系統(tǒng)的調度核心是ARM 處理器,在這里使用S3c2440,ARM 主要負責核心處理和控制。存儲器負責程序和數據的存儲,其中Nand FLASH 存儲數據文件,Nor Flash 負責存儲bootloader,操作系統(tǒng)內核和文件系統(tǒng),SDRAM 存儲系統(tǒng)運行時的程序和數據,ARM 通過GPIO 連接相關繼電器、觸發(fā)設備、輸出電壓控制設備、以及特定設備采樣A/D 并進行驅動。

          S3C2440 是三星公司的ARM920T 的ARM 控制器:支持32 b 的AMBA 總線接口;帶有MMU,可以進行Linux 操作系統(tǒng)的移植;支持大頁NAND 閃存控制器。NandFlash 芯片選用K9F4G08U0M,這是Samsung 生產的512 MB 的NAND Flash 存儲器。內部存儲結構為(2K+64)字節(jié)×32 頁×4 096 塊,NAND Flash 接口信號比較少,數據線寬度只有8bit,CLE 和ALE 兩個引腳信號用來區(qū)分總線上的數據類型,沒有地址總線。Nor Flash 采用16MX16 位的E28F128J3A,NORFlash 接口與系統(tǒng)總路線完全匹配,16 個數據輸入輸出引腳,可以連接在系統(tǒng)總線上。NORFlash 有三個芯片片選引腳信號,選用

          作為片選信號,與處理器

          引腳相連。BYTE接高電平,表示Flash 在16 位數據傳輸模式下。

          系統(tǒng)軟件組成

          本系統(tǒng)的軟件部分包括應用程序和系統(tǒng)程序,應用程序主要是 AD 采集和讀寫Flash,見圖2,而系統(tǒng)程序就是應用程序工作的軟件平臺。它由以下部分組成:系統(tǒng)引導程序、嵌入式操作系統(tǒng)linux 內核、文件系統(tǒng)。

          系統(tǒng)引導程序負責將操作系統(tǒng)內核固化到Flash 中和系統(tǒng)初始化工作,然后將系統(tǒng)控制權交給操作系統(tǒng)。在本文里我們使用uboot 作為系統(tǒng)引導程序。嵌入式操作系統(tǒng)內核是嵌入式系統(tǒng)加電運行后的管理平臺,負責實時性任務和多任務的管理,這里選擇嵌入式linux 內核。

          文件系統(tǒng)是對一個存儲設備上的數據和元數據進行組織的機制。Linux 文件系統(tǒng)接口實現為分層的體系結構,從而將用戶接口層、文件系統(tǒng)實現和操作存儲設備的驅動程序分隔開。JFFS2 是專門針對嵌入式系統(tǒng)中的Flash 存儲器的特性而的一種日志文件系統(tǒng)。YAFFS2 支持大頁面的NAND 設備,并且對大頁面的NAND 設備做了優(yōu)化。

          軟件平臺固化在Nor Flash 中。根據軟件平臺的內容 對Nor Flash 的地址空間進行分區(qū),這里分三個區(qū),分別存放bootloader、Linux 內核和文件系統(tǒng)。

          NandFlash 驅動設計

          NandFlash 驅動程序框架

          按照 linux 下驅動編寫規(guī)范編寫nand flash 驅動,其實主要工作就是實現下面這個結構體中的函數。

          s3c2440_nand_drive 這個結構體用于向內核注冊Nand Flash 設備,它會被platform_driver_register 函數調用到。其中s3c2440_nand_probe 是最重要的,它完成對nand 設備的探測。

          Nand_scan 是在初始化nand 的時候對nand 進行的一步非常好重要的操作,在nand_scan 中會對我們所寫的關于特定芯片的讀寫函數重載到nand_chip 結構中去,并會將mtd_info 結構體中的函數用nand 的函數來重載,實現了mtd 到底層驅動的聯系。并且在nand_scan 函數中會通過讀取nand 芯片的設備號和廠家號自動在芯片列表中尋找相應的型號和參數,并將其注冊進去。

          NandFlash 讀頁操作函數

          NandFlash 讀數據操作以頁為單位,讀數據首先寫入讀數據命令00H(如圖3),然后輸入要讀取頁的地址,接著從數據寄存器中讀取數據,最后進行ECC 校驗。

          NandFlash 寫操作

          寫操作其實就是對頁進行編程命令。見圖4,首先寫入80h 開始編程模式,接下來寫入地址和數據; 最后寫入10h 表示編程結束。程序如下:

          圖3:讀NandFlash 流程

          圖4: 寫NandFlash 流程

          NAND Flash 塊擦除

          本論文所用到的Nand Flash 的塊大小是32X(2k+64)Byte,整塊擦除。命令代碼流程:首先寫入60h 進入擦寫模式,然后輸入塊地址,接下來寫入D0h, 表示擦寫結束。

          測試結果

          在測試 Nand Flash 的讀寫速度時,我們通過TFTP 將數據下載到RAM 中,Nand Flash 進行讀、編程、擦寫測試。這樣可以比較真實的測試Nand Flash 的讀寫速度,測試結果表明從NandFlash 讀4MBbytes 的數據所用的時間是3886ms,向Nand Flash 寫4Mbytes 數據所用的時間是14026ms,擦除NandFlash 中的4MByte 需要的時間是6 毫秒。這個速度還是比較理想的,完成對32 路AD 采集過來數據的實時存儲是足夠的。而且512MByte 的數據存儲空間對于數據記錄儀而言是一個非常大的容量。

          結論

          測試結果表明數據記錄儀存儲速度是比較理想的,完成對AD 采集過來數據的實時存儲是足夠的。而且512MByte 的數據存儲空間對于數據記錄儀而言是一個非常大的容量。



          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();