存儲器分爲兩大類:ram(內存:隨機存儲器)和rom(外存:程序存儲器),分別存數據和程序。程序員
ram就不講了,今天主要討論rom。 編程
(1)rom最初不能編程,出廠什麼內容就永遠什麼內容,不靈活。spa
(2)後來出現了prom,能夠本身寫入一次,要是寫錯了,只能換一片,自認倒黴。.net
(3)人類文明不斷進步,終於出現了可屢次擦除寫入的EPROM,每次擦除要把芯片拿到紫外線上照一下,想一下你往單片機上下了一個程序以後發現有個地方須要加一句話,爲此你要把單片機放紫外燈下照半小時,而後才能再下一次,這麼折騰一天也改不了幾回。blog
(4)歷史的車輪不斷前進,偉大的EEPROM出現了,拯救了一大批程序員,終於能夠隨意的修改rom中的內容了。內存
(ROM--PROM--EPROM--EEPROM的進化!)flash
EEPROM的全稱是「電可擦除可編程只讀存儲器(不要以爲多高大上,其實常常都會用到),即Electrically Erasable Programmable Read-Only Memory。是相對於紫外擦除的rom來說的。可是今天已經存在多種EEPROM的變種,變成了一類存儲器的統稱。it
flash屬於廣義的EEPROM,由於它也是電擦除的rom。可是爲了區別於通常的按字節爲單位的擦寫的EEPROM,咱們都叫它flash。狹義的EEPROM:這種rom的特色是能夠隨機訪問和修改任何一個字節,能夠往每一個bit中寫入0或者1。這是最傳統的一種EEPROM,掉電後數據不丟失,能夠保存100年,能夠擦寫100w次。具備較高的可靠性,可是電路複雜/成本也高。所以目前的EEPROM都是幾十千字節到幾百千字節的,絕少有超過512K的。class
flash作的改進就是擦除時再也不以字節爲單位,而是以塊爲單位,一次簡化了電路,數據密度更高,下降了成本。上M的rom通常都是flash。軟件
flash分爲nor flash和nand flash。nor flash數據線和地址線分開,能夠實現ram同樣的隨機尋址功能,能夠讀取任何一個字節。可是擦除仍要按塊來擦。
nand flash一樣是按塊擦除,可是數據線和地址線複用,不能利用地址線隨機尋址。讀取只能按頁來讀取。(nandflash按塊來擦除,按頁來讀,norflash沒有頁)
因爲nandflash引腳上覆用,所以讀取速度比nor flash慢一點,可是擦除和寫入速度比nor flash快不少。nand flash內部電路更簡單,所以數據密度大,體積小,成本也低。所以大容量的flash都是nand型的。小容量的2~12M的flash可能是nor型的。
使用壽命上,nand flash的擦除次數是nor的數倍。並且nand flash能夠標記壞塊,從而使軟件跳過壞塊。nor flash 一旦損壞便沒法再用。
由於nor flash能夠進行字節尋址,因此程序能夠在nor flash中運行。嵌入式系統多用一個小容量的nor flash存儲引導代碼,用一個大容量的nand flash存放文件系統和內核。
參考博文:http://blog.csdn.net/yuanlulu/article/details/6163106