單片機里明明有FLASH,為啥還要再塞個EEPROM?不少剛接觸嵌入式的小伙伴估計都有過這樣的疑惑:FLASH能存程序,容量大,讀取又快,干嘛還要加個讀寫慢、容量小的EEPROM?這不是多此一舉嘛。其實,這倆兄弟各有所長,分工明確,就像你電腦里的固態硬盤和內存條,誰也替不了誰。
咱們先從最常用的場景說起。單片機里的FLASH,主要職責是“藏經閣”——存放程序代碼。你想啊,你給單片機下載的程序,正常情況下是不是一輩子都不會變?上電就跑,跑完就停,下次上電還是那段代碼。FLASH讀起來確實快,但寫入就費勁了,得按塊擦除,一擦就是一整片,還不能單獨改某個字節。這就好比你要改書里的一個字,得把整頁撕掉重寫,多麻煩。所以程序放FLASH里最合適,穩定、讀取快,還不用老改動。
可程序跑起來總得記點啥吧?比如你玩游戲打到哪一關了、設置的溫度閾值是多少、設備的序列號是啥——這些數據得在掉電后還能記住,而且經常要改。這時候EEPROM就閃亮登場了。它最大的優點就是能按字節讀寫,想改哪個字節就改哪個,不用動鄰居。雖然讀寫速度慢點,但存個檔、改個配置,誰在乎那幾微秒呢?就像你玩游戲,讀存檔的時候等一小會兒無所謂,但要是游戲本身運行卡頓,那就沒法玩了。所以EEPROM天生就是干這種“經常改、量不大”的活兒的。
還有個細節容易忽略:可靠性。EEPROM雖然是獨立的區塊,但硬件這東西,誰也不敢保證它永遠不壞。萬一哪天EEPROM全盤損壞了,你的設備難道就直接罷工了嗎?好的程序設計會考慮到這一點:即使EEPROM廢了,程序照樣能跑,只是沒法存檔而已——頂多每次開機都是初始狀態,總比變磚強。FLASH存著核心程序,一般不會輕易動它,所以可靠性更高。
當然,技術總是在進步的。現在有些單片機性能比較強悍,比如GD32的一些型號,它的FLASH支持在線擦寫,而且擦寫次數也提升了,甚至可以把一部分FLASH空間模擬成EEPROM用,這樣就能省掉外掛的EEPROM芯片,降低成本。但即便這樣,很多場合還是得老老實實加獨立的EEPROM,因為FLASH的擦寫壽命通常比EEPROM短(EEPROM可達百萬次,FLASH一般萬次左右),而且萬一模擬過程中斷電,數據可能就丟了。
所以說,FLASH和EEPROM在單片機里是各司其職的好搭檔。一個負責“讀書”,一個負責“記筆記”。除非哪天FLASH的性能強到能完美兼顧兩者,不然它們還得繼續搭伙過日子。
-
單片機
+關注
關注
6076文章
45495瀏覽量
670342 -
嵌入式
+關注
關注
5198文章
20449瀏覽量
334032 -
FlaSh
+關注
關注
10文章
1748瀏覽量
155521
發布評論請先 登錄
STM32單片機的啟動文件及FLASH分配
單片機中有FLASH為啥還需要EEROM?
評論