日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

关于NandFlash在实际产品使用上的一些经验

發(fā)布時間:2025/3/21 72 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于NandFlash在实际产品使用上的一些经验 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

關(guān)于NandFlash在實際產(chǎn)品使用上的一些經(jīng)驗

07.26.2011, 嵌入式, by qwl.

自己從第一次接觸Nandflash到現(xiàn)在也有將近兩年的時間了,從剛開始的無從下手到現(xiàn)在的略知一二。

回過頭來看自己的學習歷程,積累了很多無論你如何Google和泡壇子都學習不到的經(jīng)驗?,F(xiàn)在拿出來分享給大伙,算是對集體智慧的一種回饋吧。

首先說一下Nandflash本身的一些缺陷和優(yōu)勢:

優(yōu)勢:

1,速度快。這個貌似沒啥可說的,對于現(xiàn)在動輒上G的芯片容量,速度是必要的基礎(chǔ)。

2,便宜。雖然趕不上硬盤,但是在嵌入式設(shè)備里面絕對是性價比杠杠的。

3,沒了。除了傻快傻便宜,真沒嘛優(yōu)勢。

劣勢:

1,可靠性不高。這里所說的可靠性分為兩個方面,第一是芯片出廠的時候就伴隨著一定概率的缺陷。你們懂得,我說的是壞塊。這個缺陷會令很多初入此行的孩紙們丟掉工作,后面會詳細說。第二個是芯片使用過程中的不穩(wěn)定,當然還是在說會產(chǎn)生壞塊的問題。。。

2,不能片上運行程序。由于無法直接尋址,所以就不可能做到片上運行程序。這是很多網(wǎng)絡(luò)上文章經(jīng)常提到的一點,實際上對生活影響不大。因為現(xiàn)在內(nèi)存便宜的很,一般的家用嵌入式設(shè)備對內(nèi)存沒有這么苛刻的要求。

3,芯片操作復(fù)雜。不同于norflash,nandflash沒有這么容易操作。我說的操作主要是指不通過驅(qū)動程序直接靠編程完成對于flash的存取。但是我還是要說上面的話:實際上對于生活影響不大。因為目前大部分的民用嵌入式設(shè)備都有操作系統(tǒng),一般為linux。linux為flash設(shè)備提供了mtd驅(qū)動層,我們對于flash的操作都被抽象成了統(tǒng)一的接口甚至是設(shè)備符號,無需關(guān)心底層實現(xiàn)。

?

下面來說說實際使用時候的一些心得體會:

?

一,什么樣nandflash分區(qū)大小是合理的?

考慮到業(yè)務(wù)的需要,一般我們不會將整個芯片完全當作一個整體來使用。就如同你使用電腦的時候不會只給硬盤分一個區(qū)一樣。主要是為了防止對分區(qū)進行改動或者重新燒錄的時候會丟失全部的數(shù)據(jù)。

而如何分區(qū)才是合理的呢?我歸納主要有以下幾點需要注意:

1,任意一個分區(qū)的大小不要超過操作系統(tǒng)所能操作內(nèi)存的2/3。比如你有128M內(nèi)存,linux可以支配其中的96M,那請不要將nandflash的分區(qū)設(shè)計為大于64M。

這樣的考慮主要是因為,如果未來你需要升級這個分區(qū),尤其是通過網(wǎng)絡(luò)升級這個分區(qū)。如果你的升級方式不是增量式的,那么你必須有一段與flash分區(qū)大小一致內(nèi)存空間用來存放鏡像。這個時候假設(shè)你的flash分區(qū)為96M,那么你將不可能完成更新。因為你沒有足夠的內(nèi)存空間。除非實時解壓縮實時燒錄,風險很高。

?

2,分區(qū)一定要給壞塊留出足夠的空間。我最早接觸到nandflash的時候就犯了這個錯誤,uboot大小200k,我給它劃分的空間為256k,結(jié)果遭遇壞塊,上下移動都沒有空間,非常杯具。

拿目前嵌入式系統(tǒng)比較常用的128M nandflash,他沒產(chǎn)生一個壞塊,空間損失128k。也就是說,如果你設(shè)計分區(qū)大小為512k,遭遇兩個壞塊,實際空間只有256k了。

通過大量設(shè)備生產(chǎn)后所統(tǒng)計出來的結(jié)果,一般nandflash出廠的壞塊基本不會超過4塊。位置不固定。所以我的推薦是,如果你的某些分區(qū)容量較小,比如設(shè)計使用容量為512k,請劃分該分區(qū)為1M以避免壞塊。如果分區(qū)容量較大,比如60M,請劃分64M。這樣比較合理。

?

3,如果被劃分的分區(qū)將會使用文件系統(tǒng),比如Yaffs之類,請不要劃分的過小。比如你有一個分區(qū)用來存儲配置文件,你認為只需要3M就可以解決問題。但實際上你會發(fā)現(xiàn),這個分區(qū)只要一mount上,就已經(jīng)被占用了2M,因為文件系統(tǒng)自己會規(guī)劃出來一部分區(qū)域。你自己能操作的空間只剩下1M了,與設(shè)計目標產(chǎn)生巨大的沖突。請適當調(diào)整大小,并同時參考2號建議。

?

二,如何對nandflash分區(qū)進行合理的規(guī)劃?

這里所說的規(guī)劃指flash要如何進行邏輯上的區(qū)分,比如要分幾個區(qū)等。

這個問題說起來比較復(fù)雜,因為不同的應(yīng)用有不同的設(shè)計目標。有些提供可能簡單的分兩個區(qū)甚至不分區(qū)就能解決問題,而有些可能會很復(fù)雜。

這里我拿我所經(jīng)手的項目舉例子:

項目為iptv機頂盒,使用linux操作系統(tǒng),使用uboot作為引導(dǎo)程序。

我的分區(qū)如下:

1M,uboot

1M,uboot-config

3M,kernel

32M,rootfs

16M,backup-rootfs

64M,apps

5M,config

?

uboot如果升級失敗,將會帶來災(zāi)難性的后果。但是有些uboot啟動的參數(shù)需要被動態(tài)的更改,所以必須要把uboot存儲參數(shù)的部分與uboot分離。所以uboot被分為兩個區(qū)分別存儲。

?

kernel無需多說,由于附帶的驅(qū)動較多3M是一個合理的數(shù)值。

?

rootfs指linux所依賴的根文件系統(tǒng)。包括busybox以及實現(xiàn)最小系統(tǒng)所必須的文件。

?

rootfs-backup為備份根文件系統(tǒng),里面存放最小系統(tǒng)所必須的文件以及系統(tǒng)恢復(fù)用的程序。

?

apps為機頂盒程序以及對應(yīng)驅(qū)動的存放分區(qū),為flash中容量最大的部分。我們將所有自己編寫的程序以及驅(qū)動都放置于這個分區(qū),未來升級和維護都會變得很容易。

?

config分區(qū)存儲應(yīng)用程序所依賴的一些配置文件。單獨一個分區(qū)存放是為了避免用戶程序分區(qū)被升級時,每一個用戶自己的設(shè)置以及信息不會丟失。

?

我這里要特別說一下uboot部分。

uboot是整個nandflash的靈魂,沒有他系統(tǒng)就無法正常啟動,甚至無法正常初始化內(nèi)存。當然uboot只是一種程序,他開源,易于使用,大伙都愛用它。親,支持哦~

在我們的項目中,uboot一直沒給我們找什么麻煩。但是到了工廠生產(chǎn)的時候,卻吃了大虧。100片nandflash燒錄完有超過10片無法正常啟動。為什么呢?原因如下:

?

nandflash在出廠的時候一定會保證第一個塊不是壞塊,在我們所使用的芯片里,就是前128K絕對可以使用。但是后面的塊就無法保證了。我們?yōu)閡boot劃分了512K空間,本來覺得就算是有壞塊也會跳過去,沒有所謂。

?

但是我們忽略的一個雷人的問題……那就是uboot被燒錄器燒錄完以后,已經(jīng)因為壞塊導(dǎo)致自己被燒錄的支離破碎。當cpu將第一塊數(shù)據(jù)讀取到內(nèi)存中并運行的時候,這部分代碼不具備跳壞塊讀取的能力,自然而然的uboot其余的部分就無法正常讀取,自然系統(tǒng)將會無法啟動……

如何解決呢?

方法說簡單也簡單,說復(fù)雜也復(fù)雜。我們需要首先編譯一個小于128K什么功能都不帶但是完整的uboot。通過這個uboot引導(dǎo)起來以后再從flash里面讀取另外一個完整功能的uboot到內(nèi)存,然后引導(dǎo)這個uboot然后再引導(dǎo)linux。這就是傳說中的二段跳。

所以在我們的系統(tǒng)分區(qū)中,uboot的那1M分區(qū),實際上包含了兩個uboot。

前128k一個,后面也許緊貼著也許隔若干個壞塊又是一個uboot。這樣就避免在工廠生產(chǎn)出來的uboot無法啟動問題。同學們一定要切記!

?

基本上就是這些,下一次有時間會說說如何通過uboot實現(xiàn)升級失敗后的啟動分區(qū)切換,來完成災(zāi)難拯救的任務(wù)。

轉(zhuǎn)自:http://zoneker.com/2011/07/26/%E5%85%B3%E4%BA%8Enandflash%E5%9C%A8%E5%AE%9E%E9%99%85%E4%BA%A7%E5%93%81%E4%BD%BF%E7%94%A8%E4%B8%8A%E7%9A%84%E4%B8%80%E4%BA%9B%E7%BB%8F%E9%AA%8C/

轉(zhuǎn)載于:https://www.cnblogs.com/fly-fish/archive/2011/11/03/2234854.html

總結(jié)

以上是生活随笔為你收集整理的关于NandFlash在实际产品使用上的一些经验的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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