|
嵌入式課程讀后感_基于Nand Flash 存儲技術的嵌入式linux 系統(tǒng)設計,
現(xiàn)今嵌入式存儲產品已滲透進人們生活工作中的方方面面,從ATM 機到手持通訊設備。社會對嵌入式產品的性能也有越來越高的要求:大容量,高速度,斷電保護,體積限制等等。當前數(shù)據記錄儀的容量和速度普遍偏小。本文旨在研究一種的數(shù)據存儲容量達512MB 高速數(shù)據記錄儀,它可以用于多路信號采集系統(tǒng)中。重點研究在嵌入式linux 系統(tǒng)平臺的架構下基于NandFlash 的存儲技術。
引言
FLASH 是一種不揮發(fā)性內存,在無電流供應的條件下也能夠長久地保持數(shù)據,相對于傳統(tǒng)的存儲介質具有無可比擬的優(yōu)勢。目前主要的閃存分為兩類:Intel 首先開發(fā)的NOR flash 和東芝發(fā)布的NandFlash。
Nor FLASH 的特點是芯片內執(zhí)行。應用程序可以直接在閃存內運行。不必再把代碼讀到系統(tǒng)RAM 中。NOR 的傳輸效率很高,但是寫入和擦除速度很低。Nandflash 存儲單元的讀寫是以頁和塊為單位來進行,這種結構最大的優(yōu)點在于容量可以做得很大,NAND 閃存的成本較低,有利于大規(guī)模普及。主要功能是存儲資料。故而現(xiàn)在碼相機閃存卡和MP3 播放器中存儲設備幾乎全部是NandFlash,F(xiàn)在大部分的嵌入式設備廠商出于成本的考慮都選擇了NandFlash 作為存儲設備。這樣增加了軟件設計的復雜度,降低了系統(tǒng)效率而且也限制了Flash 容量。
結合兩類閃存的優(yōu)缺點,本文中我們選擇NandFlash 作為數(shù)據記錄儀上午數(shù)據存儲器,norflash 作為數(shù)據記錄儀的程序存儲器。
圖 1:系統(tǒng)整體結構圖圖
數(shù)據記錄儀設計整體包括兩塊,其部分是數(shù)據采集模塊一部分是數(shù)據存儲模塊,用TLC2578 芯片來實現(xiàn)數(shù)據采集AD 轉換,系統(tǒng)的調度核心是ARM 處理器,在這里使用S3c2440,ARM 主要負責核心處理和控制。存儲器負責程序和數(shù)據的存儲,其中Nand FLASH 存儲數(shù)據文件,Nor Flash 負責存儲bootloader,操作系統(tǒng)內核和文件系統(tǒng),SDRAM 存儲系統(tǒng)運行時的程序和數(shù)據,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é)&TImes;32 頁&TImes;4 096 塊,NAND Flash 接口信號比較少,數(shù)據線寬度只有8bit,CLE 和ALE 兩個引腳信號用來區(qū)分總線上的數(shù)據類型,沒有地址總線。Nor Flash 采用16MX16 位的E28F128J3A,NORFlash 接口與系統(tǒng)總路線完全匹配,16 個數(shù)據輸入輸出引腳,可以連接在系統(tǒng)總線上。NORFlash 有三個芯片片選引腳信號,選用作為片選信號,與處理器引腳相連。BYTE接高電平,表示Flash 在16 位數(shù)據傳輸模式下。
系統(tǒng)軟件組成
本系統(tǒng)的軟件部分包括應用程序和系統(tǒng)程序,應用程序主要是 AD 采集和讀寫Flash,見圖2,而系統(tǒng)程序就是應用程序工作的軟件平臺。它由以下部分組成:系統(tǒng)引導程序、嵌入式操作系統(tǒng)linux 內核、文件系統(tǒng)。嵌入式的相關視頻, 嵌入式底層驅動開發(fā)視頻, 嵌入式底層驅動視頻教程, 嵌入式底層視頻課程, 嵌入式點歌機vGA無點歌視頻, 嵌入式點歌機系統(tǒng)安裝視頻, 嵌入式點歌機支持視頻格式, 嵌入式電磁鎖維修教程視頻, 嵌入式電動晾衣架安裝視頻, 嵌入式電動晾衣架安裝視頻教程, 嵌入式電動晾衣架怎樣安裝視頻, 嵌入式電動幕布安裝視頻, 嵌入式電動升降晾衣架安裝視頻, 嵌入式電動衣架安裝視頻, 嵌入式電路視頻, 嵌入式電路圖視頻教程, 嵌入式電視安裝視頻, 嵌入式電視掛架安裝視頻, 嵌入式電視機安裝視頻教程,
系統(tǒng)引導程序負責將操作系統(tǒng)內核固化到Flash 中和系統(tǒng)初始化工作,然后將系統(tǒng)控制權交給操作系統(tǒng)。在本文里我們使用uboot 作為系統(tǒng)引導程序。嵌入式操作系統(tǒng)內核是嵌入式系統(tǒng)加電運行后的管理平臺,負責實時性任務和多任務的管理,這里選擇嵌入式linux 內核。
文件系統(tǒng)是對一個存儲設備上的數(shù)據和元數(shù)據進行組織的機制。Linux 文件系統(tǒng)接口實現(xiàn)為分層的體系結構,從而將用戶接口層、文件系統(tǒng)實現(xiàn)和操作存儲設備的驅動程序分隔開。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 驅動,其實主要工作就是實現(xiàn)下面這個結構體中的函數(shù)。
s3c2440_nand_drive 這個結構體用于向內核注冊Nand Flash 設備,它會被platform_driver_register 函數(shù)調用到。其中s3c2440_nand_probe 是最重要的,它完成對nand 設備的探測。
Nand_scan 是在初始化nand 的時候對nand 進行的一步非常好重要的操作,在nand_scan 中會對我們所寫的關于特定芯片的讀寫函數(shù)重載到nand_chip 結構中去,并會將mtd_info 結構體中的函數(shù)用nand 的函數(shù)來重載,實現(xiàn)了mtd 到底層驅動的聯(lián)系。并且在nand_scan 函數(shù)中會通過讀取nand 芯片的設備號和廠家號自動在芯片列表中尋找相應的型號和參數(shù),并將其注冊進去。
NandFlash 讀頁操作函數(shù)
NandFlash 讀數(shù)據操作以頁為單位,讀數(shù)據首先寫入讀數(shù)據命令00H(如圖3),然后輸入要讀取頁的地址,接著從數(shù)據寄存器中讀取數(shù)據,最后進行ECC 校驗。 |
|