《電子技術應用》
您所在的位置:首頁 > 测试测量 > 设计应用 > 基于Flash的大容量高速数据记录仪的设计
基于Flash的大容量高速数据记录仪的设计
与非网
摘要: 现今嵌入式存储产品已渗透进人们生活工作中的方方面面,从ATM 机到手持通讯设备。社会对嵌入式产品的性能也有越来越高的要求:大容量,高速度,断电保护,体积限制等等。当前数据记录仪的容量和速度普遍偏小。本文旨在研究一种的数据存储容量达512MB 高速数据记录仪,它可以用于多路信号采集系统中。重点研究在嵌入式linux 系统平台的架构下基于NandFlash 的存储技术。
Abstract:
Key words :

    引言

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

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

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


圖 1:系統整體結構圖圖

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

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

  系統軟件組成

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

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

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

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

  NandFlash 驅動設計

  NandFlash 驅動程序框架

  按照 linux 下驅動編寫規范編寫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 的數據存儲空間對于數據記錄儀而言是一個非常大的容量。

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 国产日韩av高清| 久久天天躁夜夜躁狠狠躁2022 | 亚洲伊人婷婷| 久久九九国产视频| 国产日韩在线播放| 99精品视频播放| 国产精品视频播放| 免费久久99精品国产自| 日本一区二区三区视频在线播放 | 九九精品在线播放| 欧美在线亚洲一区| 日韩精品视频久久| 亚洲中文字幕无码不卡电影| 久久精品男人天堂| 久久久久国产精品熟女影院| 日本亚洲欧洲色α| 一区二区视频在线免费| 国产午夜精品在线| 日韩久久不卡| 激情小说综合网| 日韩一区av在线| 久久精品99| 国产精品美女视频网站| 日韩中文字幕在线视频观看| 国产成人一二三区| 日韩日本欧美亚洲| 国产精品91久久| 久久亚洲精品成人| 国产日产久久高清欧美一区| 欧美 日韩 国产在线观看| 日韩视频一区在线| 国产精品久久久av| 国产精品视频在线播放| 国产在线精品自拍| 丰满少妇久久久| 欧美日韩在线观看一区| 激情综合在线观看| 国产精品视频区1| 日韩在线视频观看| 国产成人综合久久| 美女精品国产|