一種嵌入式設(shè)備中NAND Flash 存儲(chǔ)系統(tǒng)解決方案
掃描二維碼
隨時(shí)隨地手機(jī)看文章
0 引言
嵌入式系統(tǒng)主要由微處理器、存儲(chǔ)設(shè)備、總線標(biāo)準(zhǔn)、I/O外設(shè)等幾大部分構(gòu)成。隨著制造工藝的成熟和體系結(jié)構(gòu)的不斷優(yōu)化,如今無論面向低端應(yīng)用還是高端應(yīng)用,從8 位到64 位,都有很大的選擇范圍,能夠很好的完成復(fù)雜的數(shù)據(jù)信息處理?,F(xiàn)在需要的更多的是如何有效的存儲(chǔ)和管理越來越多的數(shù)據(jù),隨著對(duì)大容量存儲(chǔ)需求的日益迫切,NAND Flash因?yàn)槠渥陨淼奶攸c(diǎn)成為了嵌入式設(shè)備,特別是消費(fèi)類手持嵌入式設(shè)備的最主要存儲(chǔ)解決方案。目前針對(duì)NAND Flash 的研究主要集中在硬件和軟件兩大塊,硬件方面的研究主要希望盡一步加大存儲(chǔ)容量,提高讀寫速度及數(shù)據(jù)可靠性,降低制造成本,統(tǒng)一各廠家的標(biāo)準(zhǔn)等;軟件方面的研究主要集中在如何實(shí)現(xiàn)一個(gè)更優(yōu)秀NAND Flash 的驅(qū)動(dòng)程序。NAND Flash的驅(qū)動(dòng)程序中牽涉到很多問題,比如如何更好的進(jìn)行垃圾收集,負(fù)載均衡,壞塊管理等等。本文主要介紹我們的NANDFlash 存儲(chǔ)系統(tǒng)的驅(qū)動(dòng)程序設(shè)計(jì),主要是基于Linux 操作系統(tǒng)。1 NAND Flash 存儲(chǔ)系統(tǒng)的總體設(shè)計(jì)
NAND Flash 存儲(chǔ)系統(tǒng)的分層結(jié)構(gòu)如圖1 所示。它由用戶層、內(nèi)核層與硬件層組成:用戶層就是直接與用戶聯(lián)系,實(shí)際對(duì)存儲(chǔ)器提出讀寫請(qǐng)求的應(yīng)用程序,比如cp、rm 等命令,比如對(duì)存儲(chǔ)器有讀寫請(qǐng)求的應(yīng)用程序;內(nèi)核層主要包括文件系統(tǒng),比如EXT3、EXT2、FAT32 等文件系統(tǒng),由于我們?cè)诮酉聛淼膲K設(shè)備層中實(shí)現(xiàn)了閃存翻譯層(FTL),所以文件系統(tǒng)可以采用任何通用的文件系統(tǒng),而不需要采用特殊的針對(duì)NAND Flash 的文件系統(tǒng),比如JFFS2 等,塊設(shè)備驅(qū)動(dòng)層,主要實(shí)現(xiàn)統(tǒng)一的Linux 塊設(shè)備驅(qū)動(dòng),主要完成塊設(shè)備注冊(cè)、定義塊設(shè)備操作、請(qǐng)求處理等工作,NAND Flash 設(shè)備驅(qū)動(dòng)層,在這里NAND Flash設(shè)備驅(qū)動(dòng)又分為FTL(flash translation layer)層與LLD(low leveldriver)層,由于NAND Flash 是一個(gè)特殊的存儲(chǔ)設(shè)備,具有自身的特點(diǎn),不同于一般的塊設(shè)備,所以需要FTL層來進(jìn)行一個(gè)轉(zhuǎn)換和翻譯的功能,使得上層可以像對(duì)一般塊設(shè)備進(jìn)行操作那樣來對(duì)NAND Flash 進(jìn)行操作,使得NAND Flash 的特殊性對(duì)于FTL 層以上是透明的不可見的,LLD 層主要用來直接驅(qū)動(dòng)控制器來完成底層的具體操作,例如最基本的頁讀、頁寫、塊擦除等操作;硬件層由NAND Flash 控制器和具體的NAND Flash 芯片構(gòu)成。
嵌入式設(shè)備NANDFlash存儲(chǔ)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).pdf