1. 程式人生 > >FLASH與E²PROM的區別

FLASH與E²PROM的區別

微控制器執行時的資料都存在於RAM(隨機儲存器)中,在掉電後RAM 中的資料是無法保留的,那麼怎樣使資料在掉電後不丟失呢?這就需要使用EEPROM 或FLASHROM 等儲存器來實現。在傳統的微控制器系統中,一般是在片外擴充套件儲存器,微控制器與儲存器之間通過IIC 或SPI 等介面來進行資料通訊。這樣不光會增加開發成本,同時在程式開發上也要花更多的心思。在STC 微控制器中內建了EEPROM(其實是採用IAP 技術讀寫內部FLASH 來實現EEPROM),這樣就節省了片外資源,使用起來也更加方便。下面就詳細介紹STC 微控制器內建EEPROM 及其使用方法。

        flash是用來放程式的,可以稱之為程式儲存器,可以擦出寫入但是基本都是整個扇區進行的。一般來說,微控制器裡的flash都用於存放執行程式碼,在執行過程中不能改。

EEPROM是用來儲存使用者資料,執行過程中可以改變,比如一個時鐘的鬧鈴時間初始化設定為12:00,後來在執行中改為6:00,這是儲存在EEPROM裡,不怕掉電,就算重新上電也不需要重新調整到6:00。

        下面是網上詳細的說法,感覺不錯:

        FLASH 和EEPROM的最大區別是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,但其逆命題不成立