新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于PNX1501的NandFlash在線燒錄系統(tǒng)

基于PNX1501的NandFlash在線燒錄系統(tǒng)

作者: 時(shí)間:2011-08-03 來源:網(wǎng)絡(luò) 收藏
  3 系統(tǒng)軟件

  目前市場(chǎng)上Flash的存儲(chǔ)空間均以塊為單位進(jìn)行管理,每一塊大小為32頁,每頁包含512字節(jié)的有效數(shù)據(jù)空間和16字節(jié)的Spare空間,其中有效數(shù)據(jù)用來存放實(shí)際數(shù)據(jù),Spare區(qū)間則用來存放有效數(shù)據(jù)的附加描述信息(ECC,壞塊信息、索引編號(hào)等等)。不同的文件系統(tǒng)有各自不同的數(shù)據(jù)結(jié)構(gòu),其中最主要的兩部分為ECC和壞塊信息。壞塊信息通常用該塊的第0頁或第1頁的Spare區(qū)第6字節(jié)表示(0xFF為有效,其余為無效),ECC則是對(duì)全部有效數(shù)據(jù)進(jìn)行一系列的異或校驗(yàn)后得出的校驗(yàn)值,通常為3字節(jié)(512字節(jié)校驗(yàn))或6字節(jié)(256字節(jié)校驗(yàn))。由于制造工藝的原因,Nand-Flash在生產(chǎn)過程中可能會(huì)產(chǎn)生壞塊,而對(duì)于壞塊而言,存儲(chǔ)信息就可能會(huì)丟失,因而不能使用。每塊Flash在出廠時(shí)已經(jīng)把原始的壞塊信息寫入每塊的第0頁和第1頁的Spare區(qū),在擦除時(shí)一定要先檢查是否為壞塊,否則就會(huì)把壞塊信息一并擦除(再也無法恢復(fù))。此外,為了保證存儲(chǔ)信息的可靠性,在從中讀取數(shù)據(jù)時(shí)還可以引入ECC校驗(yàn),并對(duì)讀取的每頁512字節(jié)數(shù)據(jù)計(jì)算新的ECC,同時(shí)和該頁Spare區(qū)存儲(chǔ)的ECC進(jìn)行比較,這樣,可以糾正1 Bit位翻轉(zhuǎn),或檢測(cè)2 Bit以上的翻轉(zhuǎn)。

  本系統(tǒng)中的燒錄文件按照飛利浦的協(xié)議采用6字節(jié)的ECC,由于以塊和頁來管理數(shù)據(jù),因此,對(duì)于PC端,首先應(yīng)將數(shù)據(jù)按照Nand-Flash結(jié)構(gòu)進(jìn)行映射,其代碼如下:

  

基于PNX1501的NandFlash在線燒錄系統(tǒng)

  之后便可將燒錄文件數(shù)據(jù)填入DataBuf中,每填完512字節(jié)后計(jì)算ECC和其它Spare區(qū)間內(nèi)容,填滿32頁就可開辟新的數(shù)據(jù)結(jié)構(gòu)并掛入鏈表中。

  PC和DSP通信是該系統(tǒng)的關(guān)鍵。設(shè)計(jì)時(shí)可以采用消息方式,也可以在接收端DSP的外掛DDR中開辟一段共享區(qū)問,然后由PC直接將數(shù)據(jù)寫入,再發(fā)送命令進(jìn)行燒錄。本系統(tǒng)采用第二種方式。對(duì)于飛利浦公司的DSP而言,該DSP在驅(qū)動(dòng)中已經(jīng)將其全部DDR空間映射到PC的物理空間了,因而可直接在驅(qū)動(dòng)SDK中增加簡(jiǎn)單接口函數(shù),以將有DSP開辟的共享區(qū)間的地址通過消息方式傳送給PC,這樣,PC就能直接對(duì)該區(qū)問進(jìn)行讀寫了。該操作的具體代碼如下:

  

基于PNX1501的NandFlash在線燒錄系統(tǒng)

  這樣,當(dāng)DSP接到PC發(fā)送的燒錄命令時(shí),系統(tǒng)便可讀取共享緩沖區(qū)的內(nèi)容并開始燒錄Flash。其具體的流程如圖2所示,部分函數(shù)源碼如下:

  

基于PNX1501的NandFlash在線燒錄系統(tǒng)

  設(shè)計(jì)時(shí)的具體時(shí)序可參照芯片資料所提供的時(shí)序電路來控制MMIO寄存器以實(shí)現(xiàn)GPIO的控制,在此不再贅述。需要注意的是,在燒錄或擦除過程中,可能會(huì)失敗并產(chǎn)生壞塊。對(duì)于壞塊的處理。不同系統(tǒng)有不同的方法,主要有直接Skip(跳過)和Reserved Block Area (使用保留塊)等,本系統(tǒng)使用前一種方式。此外,為了可靠起見,在時(shí)間允許的情況下還應(yīng)對(duì)燒錄成功的塊數(shù)據(jù)進(jìn)行ECC校驗(yàn),即讀取全部數(shù)據(jù)來計(jì)算ECC并和燒錄之前計(jì)算的ECC進(jìn)行比較,以判斷是否發(fā)生了位翻轉(zhuǎn),從而確定燒錄是否正確。如果發(fā)生兩位以上的翻轉(zhuǎn),則說明該塊燒錄錯(cuò)誤,應(yīng)重新選擇新塊燒錄并將原塊標(biāo)記為壞塊。

  4 結(jié)束語

  對(duì)DSP外部Flash編程雖然不是一項(xiàng)關(guān)鍵技術(shù),但是它在整個(gè)DSP嵌入式系統(tǒng)開發(fā)過程之中卻起著至關(guān)重要的作用,如何方便、快速地實(shí)現(xiàn)對(duì)引導(dǎo)文件(BootLodaer)和文件系統(tǒng)的燒錄,更是直接影響產(chǎn)品的生產(chǎn)與更新的重要環(huán)節(jié)。通過本系統(tǒng)可以迅速快捷地實(shí)現(xiàn)前期所有啟動(dòng)文件的燒錄,實(shí)際測(cè)試證明:燒錄40 MB的文件系統(tǒng)只需要不到3分鐘,這一點(diǎn)無論從速度上,還是經(jīng)濟(jì)上都優(yōu)于通用編程器件。


上一頁 1 2 下一頁

關(guān)鍵詞: PNX1501 NandFlash 在線燒錄

評(píng)論


相關(guān)推薦

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

關(guān)閉