| ?????? ??SUPERPRO5000是西爾特出品的新一代USB接口獨立式智能極速NAND FLASH編程器.具有編程速度快,燒錄穩定,軟件集成度高,更智能化的特點。是NAND Flash用戶理想的選擇。 ????????SUPERPRO5000除了支持算法集成的三個壞塊處理方法外,還可以為客戶選擇定制其他的燒錄方法(比如三星平臺,高通平臺,博通平臺, WinCE 燒錄等)。算法本生支持ecc512B(Hamming Code),并且支持生成的ecc碼在spare區任意連續地址map。算法本生還支持NAND Boot區的只讀屬性處理,一般表現為Bad block Mark前的OEMReserved的處理。 ????????SUPERPRO5000燒錄每64Mbytes僅需80秒,部分芯片時間甚至小于60秒。其中燒錄過程包括Erase + Program + Verify. 關于NAND Flash ?????NAND FLASH是一種易失的閃存技術,被廣泛使用于U盤,MP3/MP4,GPS,PDA,GSM/3G手機,無線上網設備,筆記本等多個領域。NAND是高數據存儲密度的理想解決方案。 ???和NOR FLASH相比。NAND FLASH具有以下的特點: 1) NAND FLASH同NOR FLASH相比,NAND FLASH有著容量大、價格低等優勢。 2)存在壞塊。由于NAND生產工藝的原因,出廠芯片中會隨機出現壞塊。壞塊在出廠時已經被初始化,并在特殊區域中標記為不可用,在使用過程中如果出現壞塊,也需要進行標記。 3) 易出現位反轉。NAND FLASH更易出現位反轉的現象,如果位反轉出現在關鍵文件上,會導致系統掛機。所以在使用NAND FLASH的同時,建議使用ECC/EDC算法確保可靠性。? 4) 存在Spare區。正因為NAND FLASH有著上面的兩項特殊的地方,Spare區就扮演作存放壞塊標志,ECC值以及芯片信息和文件信息的作用。 5) 多維的空間結構。NAND FLASH一般由block,page,sector等結構組成。所以在有的文件系統中就衍生出各種分區信息和扇區信息等。 SUPERPRO5000下對NAND FLASH 的壞塊處理 | ???NAND FLASH的壞塊處理方式有很多,不同的方案公司或者系統提供商都會選擇不同的壞塊處理方法,來滿足產品開發的需要,目前我們公司已經根據客戶的要求,解決了近百種的壞塊處理方案。并且將常用的三種壞塊處理方案,集成到燒錄算法里面。 ??本文檔以K9F1208U0B為例,詳細闡述了SUPERPRO5000下NAND FLASH的燒錄方法。 | 1.NAND FLASH編程器燒錄軟件概述。 選擇好K9F1208U0B后,將出現下圖(Figure 1)。 ?????????????????????????????????????????????????????????????????????????????(Figure 1) Device Information中,提示(1)提供了該芯片使用何種適配器。提示(2)簡明扼要的講述了本軟件支持壞塊處理方法的種類和技術要點。 下圖是主軟件界面(Figure 2) ???在主軟件界面中,提示1列出了NAND燒錄擁有的正常操作, 從上到下包括:自動批處理(Auto),編程寫入(Program),讀出數據(Read),校驗(Verify),空檢查(Blank_Check),擦除(Erase),啟動代碼塊檢查(Boot Block Check)。 ??其中自動批處理(Auto)必須在提示4(Edit Auto)中設置好才能運行。啟動代碼塊檢查(Boot Block Check)在提示2中設置啟動代碼所占塊(Blocks)的范圍。 ??提示2(Dev.Config)是NAND Flash燒錄的配置中心,壞塊處理方法,ECC,設置燒錄范圍,啟動代碼范圍等的設置都在這個選項里面。 ??提示3是燒錄軟件的信息輸出區,算法的有關信息,燒錄過程的有關信息和燒錄出錯信息都在這個區域打印輸出。 | 2.NAND Flash 的壞塊和壞塊標志。 | | ???由于制造工藝的原因,NAND Flash 在生產過程中可能會產生壞塊,壞塊在出廠前將會被標記。對于壞塊而言,存儲的信息可能會丟失,不能正常使用。另外在NAND Flash擦除或者編程過程中,出現操作失敗后,表示該塊不能正常使用,也應標記成壞塊。所以在一般情況下,在操作NAND Flash之前,先要檢查一下要操作的是否是壞塊,以免壞塊標記被破壞。此外,為了保證存儲信息的可靠性,從NAND Flash中讀取的數據還可以引入ECC校驗,ECC碼一般存放在該頁的spare區。關于ECC,詳細介紹見下一章。 ??小頁模式的NAND Flash(8bit)的壞塊標志(BM)一般放在每個block第一頁和第二頁的第6個字節。 ??Spare區: | | 0 | 1 | 2 | 3 | 4 | BM | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | | | ???小頁模式的NAND Flash(16bit)的壞塊標志(BM)一般放在每個block第一頁和第二頁的第1個字(雙字節)。 | | ??Spare區: | | | | ??大頁模式的NAND Flash(8bit)的壞塊標志(BM)一般放在每個block第一頁和第二頁的第1個字節。 | | Spare區: | | BM | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | | | ??大頁模式的NAND Flash(16bit)的壞塊標志(BM)一般放在每個block第一頁和第二頁的第1個字(雙字節)。 ??Spare區: | | BM | 1 | 2 | 3 | 4 | 5 | 6 | 7 | | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | | | ??一般情況下壞塊標志(BM)處為0xFF或者0xFFFF表示好塊,非0xFF或者0xFFFF代表壞塊。 ??小頁模式的NAND Flash(8bit)的壞塊標志(BM)處會出現下面的情況。我們在總結多個廠商的要求后也把它作為一種壞塊標志進行了集成化處理。 ???Spare區: | | 0 | 1 | 2 | 3 | OEM Reserved | BM | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | | | ??其中OEM Reserved 標志:為OEM 系統保留塊(比如NBOOT,TOC,EBOOT使用),一般可以對外界表示這段代碼區為只讀屬性。 ??BM標志:為0x00當前塊為壞塊,為0xFF, 當前塊為好塊,但如果此時的OEM Reserved標志處為設定的值的話,此處BM標志為0x00,在燒錄過程中做好塊。此設置在器件配置字中如下(Figure 3): ??如圖,表示OEM Reserved的值為0xFC,在這種設置下,當判斷到BM標志為0x00時,前面的OEM Reserved的值讀出為0xFC時,在燒錄過程中判斷其為好塊。 | | | | 3.常用的三種壞塊處理方法 A) 跳過壞塊 (Skip bad block)。 | | (Figure 4) | | 這是一種最常用的壞塊處理方法。它的實現原理比較簡單,順序燒錄,發現某一塊為壞塊后,將相應數據燒錄到下有個好塊,如果發現連續的壞塊的話,也連續的跳過這些壞塊,并把數據燒錄的下一個出現的好塊中。其原理如下圖(Figure 5)。 | | | | ? 采用這種燒錄方法,要關注提示2的設置,以便對NAND的存儲區域進行更靈活的訪問。 ??其中UBA start blk(hex): 指定文件從那個塊開始燒錄,Size of UBA blks(hex): 的內容表示燒錄的文件占用多少個好塊,例如:燒錄芯片K9F1208U0B,燒錄的文件包含spare區的內容。燒錄文件的大小為19M整,燒錄的起始塊為第0塊。K9F1208U0B為小頁模式的NAND,每個塊包含spare區的大小為0x4200Bytes = 16896(dec)Bytes。那么要燒寫的block = 19*1024*1024/16896 = 1179.15,取整為1180(dec) = 0x49C.所以UBA start blk(hex): 0000, Size of UBA blks(hex): 0x49C。 ??注:如果小頁模式不包含spare區的內容,則每個塊的大小為0x4000Bytes. 大頁模式包含spare區的內容,每個塊的大小為0x21000Bytes,大頁模式不包含spare區的內容,每個塊的大小為0x20000. ??采用這種燒錄方法的話,壞塊標志位是不允許寫成非“0xFF”或者“0xFFFF”(16bit),所以在緩沖區(buffer)中的數據,在燒錄過程中,壞塊標志為都被強制改寫0xFF或者0xFFFF。 具有OEM Reserved值的情況下,如果壞塊標志的處的值滿足其判斷要求,將不作強制修改。 B) 硬拷貝 (Hard Copy)。 ??Hard Copy的方法在讀寫過程中,沒有判斷壞塊,而是把它當成一般的Flash進行處理的。但在燒寫過程,由于壞塊的存在,導致對應的數據無法燒寫進去,所以在一般情況下,我們不推薦使用這種方式燒寫NANDFLASH。 ??不過在讀取芯片(母片)的時候,有時候我們并不清楚該芯片的壞塊標志位是不是被改變,不清楚該芯片用的是什么壞塊處理方法,我們還是推薦采用這種方法讀芯片內容。這種方法可以讀出芯片的完全內容,以便進行下一步分析,或者直接拷貝。在讀取芯片完全內容時,例如讀取芯片K9F1208U0B,該芯片共有4096(0x1000)個block。那么在器件配置字中要設置Size of UBA blks(hex) : 1000 。這樣讀取的時候就把所有塊的內容讀出來。 ??用這種方法之間拷貝芯片的時候,要盡量確保目標的芯片是沒有壞塊的芯片,才能保證拷貝的成功率。 | |