新聞中心

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

基于Flash的大容量高速數(shù)據(jù)記錄儀設(shè)計(jì)

作者: 時間:2012-02-14 來源:網(wǎng)絡(luò) 收藏

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

本文引用地址:http://2s4d.com/article/149698.htm

引言

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

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

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

圖 1:系統(tǒng)整體結(jié)構(gòu)圖圖

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

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

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

作為片選信號,與處理器

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

系統(tǒng)軟件組成

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

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

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

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

NandFlash 驅(qū)動設(shè)計(jì)

NandFlash 驅(qū)動程序框架

按照 linux 下驅(qū)動編寫規(guī)范編寫nand flash 驅(qū)動,其實(shí)主要工作就是實(shí)現(xiàn)下面這個結(jié)構(gòu)體中的函數(shù)。

s3c2440_nand_drive 這個結(jié)構(gòu)體用于向內(nèi)核注冊Nand Flash 設(shè)備,它會被platform_driver_register 函數(shù)調(diào)用到。其中s3c2440_nand_probe 是最重要的,它完成對nand 設(shè)備的探測。

Nand_scan 是在初始化nand 的時候?qū)and 進(jìn)行的一步非常好重要的操作,在nand_scan 中會對我們所寫的關(guān)于特定芯片的讀寫函數(shù)重載到nand_chip 結(jié)構(gòu)中去,并會將mtd_info 結(jié)構(gòu)體中的函數(shù)用nand 的函數(shù)來重載,實(shí)現(xiàn)了mtd 到底層驅(qū)動的聯(lián)系。并且在nand_scan 函數(shù)中會通過讀取nand 芯片的設(shè)備號和廠家號自動在芯片列表中尋找相應(yīng)的型號和參數(shù),并將其注冊進(jìn)去。

NandFlash 讀頁操作函數(shù)

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

NandFlash 寫操作

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

圖3:讀NandFlash 流程

圖4: 寫NandFlash 流程

NAND Flash 塊擦除

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

測試結(jié)果

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

結(jié)論

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



評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉