极品馒头泬19p,国产精品亚洲一区二区三区,狠狠色噜噜狠狠狠7777奇米,国产精品视频一区二区三区无码,国产欧美日韩久久久久

【E1172】關(guān)于NAND FLASH 的壞塊管理

2021-09-13 19:42:40      索煒達(dá)電子      960     

項(xiàng)目編號:E1172

文件大?。?K

源碼說明:帶中文注釋

開發(fā)環(huán)境:C編譯器

簡要概述:

就現(xiàn)在的NAND FLASH ,有串口和并口兩種,
并口就是48PIN的數(shù)據(jù)的輸入和輸入公用IO的
串口的就是使用SPI接口的NAND FLASH

說下NAND FLASH 管理的核心思維:
1 識別壞塊,標(biāo)記壞塊,
2 如何保存壞塊信息
3 交換區(qū)概念
4 保留去概念

1,NANDFLASH 的工藝不能保證寫進(jìn)去的每個(gè)塊里面的數(shù)據(jù),和讀出來的數(shù)據(jù)一致,所以是存在壞塊的,
而NAND FLASH的數(shù)據(jù)組織結(jié)構(gòu)是這樣的,
由N個(gè)塊組成,而塊由M個(gè)PAGE組成+MXSPARE區(qū)

比如 K9F1G08U0D 以這個(gè)片子為例子,
BLOCK 大小為 128K 用戶可以寫的,
實(shí)際大小為 128K + 64*4*16
至于后面64*4*16的意思是這樣的, 因?yàn)樵撈用總€(gè)PAGE的大小為2048 也就是2K,
而因?yàn)镹AND 存在壞塊,所以,在每寫512個(gè)字節(jié)后,都會(huì)產(chǎn)生一個(gè)校驗(yàn)碼,而這個(gè)校驗(yàn)碼用來標(biāo)記,該塊是壞塊還是可以正常使用的,
當(dāng)然這個(gè)512是針對大頁的NAND FLASH,小頁的話是每256個(gè)字節(jié)產(chǎn)出一個(gè)校驗(yàn)碼,當(dāng)然現(xiàn)在這樣的小頁的NAND FLASH很少見了,
老了,即使有,也是拆機(jī)弄下來的,
壞塊的識別的話,這幾種,并口的:一個(gè)是可以根據(jù)ECC校驗(yàn)算法來,判斷是否為壞塊,具體算法可以去百度查查,
一個(gè)是可以判斷在寫玩數(shù)據(jù)之后,來判斷SPARE數(shù)據(jù)區(qū)域來判斷段壞塊,而對于小頁和大頁的有區(qū)別
小頁的NANDFLASH ,比如一個(gè)頁的大小為1K,那么,在讀取1K后面數(shù)據(jù)的16個(gè)數(shù)據(jù),
如果第一個(gè)數(shù)據(jù)不為FF,那么標(biāo)記該塊為壞塊,在標(biāo)記的時(shí)候,可以標(biāo)記的數(shù)據(jù)為全部為00,也就是在標(biāo)記16個(gè)數(shù)據(jù)的時(shí)候表示為0
而在標(biāo)記的時(shí)候,一般標(biāo)記的區(qū)域是這個(gè)塊的第一個(gè)PAGE后的16個(gè)數(shù)據(jù)
 串口:串口的,里面有自校驗(yàn),硬件的,所以在識別的時(shí)候,可以直接裝載要判斷的PAGE的地址,然后去讀取狀態(tài)寄存器即可,
同樣的也可以去標(biāo)記壞塊,標(biāo)記花開的話和并口的一樣

2 如何保存壞塊信息,
壞塊信息一般包括:
1 ,保存壞塊的信息的地址,也就是你要獲得壞塊信息的話,一般去哪個(gè)地址去讀,可以是固定的,也可以不是固定的,不固定的花費(fèi)的時(shí)間長點(diǎn),管理起來復(fù)雜
2,壞塊信息要保存交換區(qū)的信息:這個(gè)信息是,你所使用的交換區(qū),某個(gè)塊是壞塊,還是好塊 后面會(huì)介紹
3,保留區(qū)的地址映射狀態(tài),后面會(huì)介紹
4 ,如何去標(biāo)記該塊是作為,保存壞塊信息表格呢,,

至于如何保存壞塊信息,很多種方法,核心就是,用特殊的數(shù)據(jù)去標(biāo)記,
比如,我在用來保存壞塊信息表的時(shí)候,一般這樣標(biāo)記
 
該塊的第一個(gè)PAGE的前面八個(gè)數(shù)據(jù)是這樣的,,0xff55aa00,0x0000000
該塊的最后一個(gè)PAGE ,最后8個(gè)數(shù)據(jù)是0X33445588.0XFF00FF00
然后該塊的倒數(shù)第二個(gè)PAGE,標(biāo)記交換區(qū)的信息和保留去地址映射關(guān)系,+一個(gè)校驗(yàn)和

而對于保存壞塊信息表格所用的塊,一般是3個(gè)或者5個(gè)不等,,交替使用,或者也可以不交替使用,,
對于不交替使用的情況就是,一旦發(fā)生壞塊標(biāo)記的情況的話,那么3或者5個(gè)塊都要被寫數(shù)據(jù),而卻寫的數(shù)據(jù)是一樣的,

有人會(huì)說,占用這么多塊不是浪費(fèi),其實(shí),對于整個(gè)芯片來說,占用這幾個(gè)塊,而有個(gè)壞塊管理程序是值得的

3 交換區(qū)概念:
比如,塊0 ,該塊大小為128K, 在0X000-0X18000里面有數(shù)據(jù),0x18800 - 0x20000這個(gè)有數(shù)據(jù)是文件系統(tǒng)認(rèn)為的, 
而文件系統(tǒng)要在0x18000-0x18800這個(gè)512的范圍內(nèi)要寫數(shù)據(jù),那該怎么辦呢,
肯定要這個(gè)塊個(gè)擦除掉的,如果沒有交換區(qū)的話,那么擦除的話,會(huì)導(dǎo)致在0X000-0X18000,,0x18800 - 0x20000之間的數(shù)據(jù)都會(huì)丟失的,那該怎么辦呢,
那就要使用交換區(qū),交換區(qū)的作用就是這樣的,
如果要擦除某個(gè)塊的話,那么首先要將這個(gè)塊里面的數(shù)據(jù)拷貝到另外一個(gè)塊里面,而這個(gè)另外一個(gè)塊,稱之為交換區(qū),
首先將整個(gè)塊的數(shù)據(jù),全部放到一個(gè)可以用的交換區(qū),然后再將0這個(gè)塊擦除,擦除之后0這個(gè)塊里面的數(shù)據(jù)就是FF了,那么在擦除之后,在將交換區(qū)里面的數(shù)據(jù)回寫到0這個(gè)塊里面
那么出現(xiàn)的情況就是0X000-0X18000,,0x18200 - 0x20000 這個(gè)兩個(gè)區(qū)間內(nèi)的數(shù)據(jù)還是原來的數(shù)據(jù),在將原來的數(shù)據(jù)回寫到0塊之后,然后在將這次文件系統(tǒng)要寫的數(shù)據(jù)寫到
0x18000-0x18200這個(gè)區(qū)域里面,這樣既保證數(shù)據(jù)的完整性,又能將新數(shù)據(jù)寫進(jìn)去

4保留區(qū)概念:
保留區(qū)的作用就是這個(gè),當(dāng)在寫數(shù)據(jù)的時(shí)候發(fā)生壞塊的話,那么得將這個(gè)塊的數(shù)據(jù)要保存另外一個(gè)塊里面,同時(shí)要對產(chǎn)生的那個(gè)壞塊進(jìn)行標(biāo)記,

具體可以參考附件:標(biāo)記該壞塊管理參考圈圈的NANDFLASH壞塊管理思維

目錄│文件列表:

 │ nand_flash.rar

TAG壞塊管理
  • 10 次
  • 1 分