日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

nand ubi -1 nand基础

發(fā)布時(shí)間:2024/4/14 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 nand ubi -1 nand基础 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
micro2440有一個(gè)配置是三星K9F2G08U0B--256MB SLC
tiny6410有一個(gè)配置是三星K9F2G086U0B--256MB SLC,有一個(gè)配置是三星K9K8G08U0B--1GB SLC,有一個(gè)配置是三星K9GAG08U0E--2GB MLC

1.
關(guān)于nand的ecc,refer to
http://www.amobbs.com/thread-5051907-1-1.html
Nand Flash本身是不具備ECC功能的,目前Micro有內(nèi)置ECC功能的FLASH,不過市場上很難看到。
Nand Flash由于工藝原因,柵極存儲(chǔ)的電荷會(huì)慢慢漏電,導(dǎo)致數(shù)據(jù)丟失;erase和program次數(shù)越多漏電的過程會(huì)加快。為了保證數(shù)據(jù)的可靠性,設(shè)計(jì)應(yīng)用中都需要添加ECC功能模塊來糾正Nand Flash內(nèi)部的隨機(jī)bit錯(cuò)誤,以及電路上的隨機(jī)錯(cuò)誤。ECC功能由外部電路FPGA來完成,或者M(jìn)CU的code來完成。
SLC的Datasheet上強(qiáng)調(diào)需要ECC糾正1bit錯(cuò)誤。實(shí)際應(yīng)用也確實(shí)如此,三星的SLC通常只發(fā)生1bit錯(cuò)誤,很少有2bit以上的錯(cuò)誤發(fā)生;intel的SLC 1bit,2bit錯(cuò)誤都有很多。為了更可靠的數(shù)據(jù),你可以采用糾正4bit或8bit的ECC算法,糾正bit數(shù)越多code越耗費(fèi)時(shí)間和FPGA越耗費(fèi)資源,ASIC也是。采用哪種ECC方式由設(shè)計(jì)者決定,通常你是不知道別人采用的ECC方式,除非他們告訴你。


2.
以K9F2G08xx--256MB SLC為例說明nandflash的內(nèi)部結(jié)構(gòu):
可以看到,nandflash的構(gòu)成方式是 頁->塊->device
每頁2K+64B
每塊64頁
每個(gè)設(shè)備2048塊


而每頁的結(jié)構(gòu)如下:
分為主區(qū)和空白區(qū),主區(qū)用于存儲(chǔ)真正的數(shù)據(jù);空白區(qū)即傳說的OOB(out of band帶外數(shù)據(jù)),里面分了幾個(gè)字節(jié)用于ECC(error correcting code 錯(cuò)誤校驗(yàn)碼)
main主區(qū)域,包含4個(gè)人扇區(qū);空白區(qū)頁包含4個(gè)扇區(qū)
OOBspare區(qū),除OOB第六字節(jié)外,通常至少把OOB的前3個(gè)字節(jié)存放Nand Flash硬件ECC



1GB SLC的組成,與上面的page,block的結(jié)構(gòu)一致,但是每塊nand所含block增加。




2GB MLC的組成


nand flash是以頁為單位讀或?qū)?#xff0c;是因?yàn)轵?yàn)證ecc時(shí)是整頁驗(yàn)證的。以塊為單位擦除,ubi里有個(gè)物理擦除塊的概念,指的就是它。
--------沒有子頁時(shí)。

3
SLC和MLC的結(jié)構(gòu)區(qū)別,一圖以蔽之





4.
6410的nand接口及硬件ecc過程
tiny6410電路圖接K9F2G08xx

6410的nand控制器
8.8 1-BIT / 4-BIT / 8-BIT ECC (ERROR CORRECTION CODE)
NAND flash controller has four ECC (Error Correction Code) modules for 1 bit ECC , one for 4bit ECC and one for
8bit ECC.
The 1bit ECC modules for main data area can be used for (up to) 2048 bytes ECC parity code generation, and 1
bit ECC module for spare area can be used for (up to) 4 bytes ECC Parity code generation.
Both 4bit and 8bit ECC modules can be used for only 512 bytes ECC parity code generation.
4 bit and 8bit ECC modules generate the parity codes for each 512 byte. However, 1 bit ECC modules generate
parity code per byte lane separately.
4bit ECC modules generate max 7byte parity codes and 8 bit ECC modules generate 13byteparity codes at each
512/24 bytes.
nand控制器有4個(gè)1bit-ecc模塊,1個(gè)4bit-ecc模塊,1個(gè)8bit-ecc模塊
(Recommend: 1bit ECC for SLC, 4bit and 8bit ECC for MLC NAND Flash)--是因?yàn)镸LC比SLC出錯(cuò)幾率高
1bit-ecc 每2048B可校正1位錯(cuò)誤數(shù)據(jù),產(chǎn)生多少個(gè)字節(jié)校驗(yàn)碼?
4bit-ecc 每512B可校正4位錯(cuò)誤數(shù)據(jù),最大產(chǎn)生7個(gè)字節(jié)校驗(yàn)碼。一般的OOB可以提供如此多字節(jié)空間用于存儲(chǔ)校驗(yàn)碼。
8bit-ecc 每512B可校正8位錯(cuò)誤數(shù)據(jù),最大產(chǎn)生13個(gè)字節(jié)校驗(yàn)碼


1bit ecc 編碼和解碼
8.8.2 1-BIT ECC PROGRAMMING ENCODING AND DECODING
1. To use 1-bit ECC in software mode, reset the ECCType to ‘0’ (enable 1-bit ECC)‘. ECC module generates
ECC parity code for all read / write data when MainECCLock (NFCONT[7]) and SpareECCLock (NFCONT[6])
are unlocked(‘0’). You must reset ECC value by writing the InitMECC (NFCONT[5]) and InitSECC
(NFCONT[4]) bit as ‘1’ and have to clear the MainECCLock (NFCONT[7]) bit to ‘0’(Unlock) before read or
write data.
MainECCLock (NFCONT[7]) and SpareECCLock(NFCONT[6]) bit controls whether ECC Parity code is
generated or not.
2. Whenever data is read or written, the ECC module generates ECC parity code on register NFMECC0/1.
3. After you complete read or write one page (does not include spare area data), Set the MainECCLock bit to ‘1’
(Lock). ECC Parity code is locked and the value of the ECC status register will not be changed.
4. To generate spare area ECC parity code, Clear SpareECCLock (NFCONT[6]) bit to ‘0’ (unlock).
5. Whenever data is read or written, the spare area ECC module generates ECC parity code on register
NFSECC.
6. After you complete read or write spare area, set the SpareECCLock bit to '1' (Lock). ECC Parity code is
locked and the value of the ECC status register will not be changed.
7. From now on, you can use these values to record to the spare area or check the bit error.
8. For example, to check the bit error of main data area on page read operation, after generating of ECC codes
for main data area, you have to move the ECC parity codes (is stored to spare area) to NFMECCD0 and
NFMECCD1. From this time, the NFECCERR0 have the valid error status values.
簡解:
手動(dòng)清零MainECCLock位,開啟main區(qū)域的ecc硬件自動(dòng)校驗(yàn)。
在cpu從nand main區(qū)上讀取數(shù)據(jù)或者寫入數(shù)據(jù)到nand main區(qū)時(shí),ecc模塊自動(dòng)產(chǎn)生ecc校驗(yàn)碼,放在寄存器NFMECC0/1里面.
當(dāng)寫完一頁之后--- (一頁的由自己定義,要按照nand說明書查看一頁的大小,每頁都有一個(gè)OOB用于存放該頁的校驗(yàn)碼),需要手動(dòng)置MainECCLock 1,以便停止硬件ecc。此時(shí)寄存器NFMECC0/1的值將不會(huì)改變。

手動(dòng)清零SpareECCLock 位,啟動(dòng)ecc spare區(qū)域的硬件自動(dòng)校驗(yàn)。
在cpu從nand spare上讀取數(shù)據(jù)或者寫入數(shù)據(jù)到nand spare區(qū)時(shí),ecc模塊自動(dòng)產(chǎn)生ecc校驗(yàn)碼,放在寄存器NFSECC里面.
當(dāng)寫完nand?spare區(qū)域之后,需要手動(dòng)置SpareECCLock1,以便停止ecc spare區(qū)域的硬件自動(dòng)校驗(yàn)。此時(shí)寄存器NFSECC的值將不會(huì)改變。

在寫操作時(shí),每寫完一個(gè)頁,就將NFMECC0/1的值寫入nand的相應(yīng)頁的oob的某部分作為校驗(yàn)碼。
在讀操作時(shí),每讀完一頁,就接著讀取相應(yīng)頁的oob中的校驗(yàn)碼,寫入NFMECCD0/1寄存器,此時(shí)cpu會(huì)自動(dòng)比較NFMECCD0/1和NFMECC0/1的值,結(jié)果存入NFECCERR0 寄存器。

5
ecc校驗(yàn)原理
http://blog.csdn.net/nhczp/article/details/1700031
http://blogimg.chinaunix.net/blog/upfile2/080702112233.pdf



轉(zhuǎn)載于:https://www.cnblogs.com/-song/archive/2012/12/08/3331835.html

總結(jié)

以上是生活随笔為你收集整理的nand ubi -1 nand基础的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。