為什麼微控制器中既有Flash又有EEPROM

2022-05-04 07:06:06 字數 2576 閱讀 6978

微控制器執行時的資料都存在於ram(隨機儲存器)中,在掉電後ram 中的資料是無法保留的,那麼怎樣使資料在掉電後不丟失呢?這就需要使用eeprom 或flashrom 等儲存器來實現。

插播一段:rom最初不能程式設計,出廠什麼內容就永遠什麼內容,不靈活。後來出現了prom,可以自己寫入一次,要是寫錯了,只能換一片。隨著不斷改進,終於出現了可多次擦除寫入的eprom,每次擦除要把晶元拿到紫外線上照一下,想一下你往微控制器上下了乙個程式之後發現有個地方需要加一句話,為此你要把微控制器放紫外燈下照半小時,然後才能再下一次,這麼折騰一天也改不了幾次。歷史的車輪不斷前進,偉大的eeprom出現了,拯救了一大批程式設計師,終於可以隨意的修改rom中的內容了。

eeprom的全稱是「電可擦除可程式設計唯讀儲存器」,即electrically erasable programmable read-only memory。是相對於紫外擦除的rom來講的。但是今天已經存在多種eeprom的變種,變成了一類儲存器的統稱。

狹義的eeprom:

這種rom的特點是可以隨機訪問和修改任何乙個位元組,可以往每個bit中寫入0或者1。這是最傳統的一種eeprom,掉電後資料不丟失,可以儲存100年,可以擦寫100w次。具有較高的可靠性,但是電路複雜/成本也高。因此目前的eeprom都是幾十千位元組到幾百千位元組的,絕少有超過512k的。

flash:

flash屬於廣義的eeprom,因為它也是電擦除的rom。但是為了區別於一般的按位元組為單位的擦寫的eeprom,我們都叫它flash。

既然兩者差不多,為什麼微控制器中還要既有flash又有eeprom呢?

通常,微控制器裡的flash都用於存放執行**,在執行過程中不能改;eeprom是用來儲存使用者資料,執行過程中可以改變,比如乙個時鐘的鬧鈴時間初始化設定為12:00,後來在執行中改為6:00,這是儲存在eeprom裡,不怕掉電,就算重新上電也不需要重新調整到6:00。

但最大區別是其實是:flash按扇區操作,eeprom則按位元組操作,二者定址方法不同,儲存單元的結構也不同,flash的電路結構較簡單,同樣容量佔晶元面積較小,成本自然比eeprom低,因而適合用作程式儲存器,eeprom則更多的用作非易失的資料儲存器。當然用flash做資料儲存器也行,但操作比eeprom麻煩的多,所以更「人性化」的mcu設計會整合flash和eeprom兩種非易失性儲存器,而廉價型設計往往只有 flash,早期可電擦寫型mcu則都是eeprm結構,現在已基本上停產了。

在晶元的內電路中,flash和eeprom不僅電路不同,位址空間也不同,操作方法和指令自然也不同,不論馮諾伊曼結構還是哈佛結構都是這樣。技術上,程式儲存器和非易失資料儲存器都可以只用falsh結構或eeprom結構,甚至可以用「變通」的技術手段在程式儲存區模擬「資料儲存區」,但就算如此,概念上二者依然不同,這是基本常識問題。

eeprom:電可擦除可程式設計唯讀儲存器,flash的操作特性完全符合eeprom的定義,屬eeprom無疑,首款flash推出時其資料手冊上也清楚的標明是eeprom,現在的多數flash手冊上也是這麼標明的,二者的關係是「白馬」和「馬」。至於為什麼業界要區分二者,主要的原因是 flash eeprom的操作方法和傳統eeprom截然不同,次要的原因是為了語言的簡練,非正式檔案和口語中flash eeprom就簡稱為flash,這裡要強調的是白馬的「白」屬性而非其「馬」屬性以區別flash和傳統eeprom。

flash的特點是結構簡單,同樣工藝和同樣晶元面積下可以得到更高容量且大資料量下的操作速度更快,但缺點是操作過程麻煩,特別是在小資料量反覆重寫時,所以在mcu中flash結構適於不需頻繁改寫的程式儲存器。

很多應用中,需要頻繁的改寫某些小量資料且需掉電非易失,傳統結構的eeprom在此非常適合,所以很多mcu內部設計了兩種eeprom結構,flash的和傳統的以期獲得成本和功能的均衡,這極大的方便了使用者。隨著isp、iap的流行,特別是在程式儲存位址空間和資料儲存位址空間重疊的mcu系中,現在越來越多的mcu生產商用支援iap的程式儲存器來模擬eeprom對應的資料儲存器,這是低成本下實現非易失資料儲存器的一種變通方法。為在商業宣傳上取得和雙eeprom工藝的「等效」性,不少採用flash程式儲存器「模擬」(注意,技術概念上並非真正的模擬)eeprom資料儲存器的廠家紛紛宣稱其產品是帶eeprom的,嚴格說,這是非常不嚴謹的,但商人有商人的目的和方法,用flash「模擬」eeprom可以獲取更大商業利益,所以在事實上,技術概念混淆的始作俑者正是他們。

從成本上講,用flash「模擬」eeprom是合算的,反之不會有人幹,用eeprom模擬flash是怎麼回事呢?這可能出在某些程式儲存空間和資料儲存空間連續的mcu上。這類mcu中特別是儲存容量不大的低端mcu依然採用eeprom作為非易失儲存器,這在成本上反而比採用flash和傳統eeprom雙工藝的設計更低,但這種現象僅僅限於小容量前提下。因flash工藝的流行,現在很多商人和不夠嚴謹的技術人員將程式儲存器稱為flash,對於那些僅採用傳統eeprom工藝的mcu而言,他們不求甚解,故而錯誤的將eeprom程式儲存器稱為「 模擬flash」,根本的原因是他們未理解flash只是一種儲存器結構而非儲存器的用途,錯誤的前提自然導致錯誤的結論。商業上講,用eeprom模擬 flash是不會有人真去做的愚蠢行為,這違背商業追求最大利益的原則,技術上也不可行,而對於技術人員而言。本質的問題是flash是一種儲存器型別而非mcu中的程式儲存器,即使mcu的程式儲存器用的是flash,但其逆命題不成立。

為什麼微控制器中既有FLASH又有EEPROM?

20161227464036.html 微控制器執行時資料都儲存在ram中,在掉電後ram的資料是無法保留的,那麼怎麼使得在掉電後資料不丟失呢?這就需要使用eeprom或flashrom等儲存器來實現。rom最初不能程式設計,出廠什麼內容就永遠什麼內容,不靈活。後來出現了prom,可以自己寫入一次,...

微控制器中為什麼有了Flash還有EEPROM?

時,然後才能再下一次,這麼折騰一天也改不了幾次。歷史的車輪不斷前進,偉大的eeprom 出現了,拯救了一大批程式設計師,終於可以隨意的修改rom中的內容了。eeprom的全稱是 電可擦除可程式設計唯讀儲存器 即electrically erasable program mable read only...

微控制器中為什麼有了Flash還有EEPROM?

flash flash屬於廣義的eeprom,因為它也是電擦除的rom。但是為了區別於一般的按位元組為單位的擦寫的eeprom,我們都叫它flash。既然兩者差不多,為什麼微控制器中還要既有flash又有eeprom呢?通常,微控制器裡的flash都用於存放執行 在執行過程中不能改 eeprom是用...