單片機與存儲器的關系像什么?單片機里的存儲都是一樣的嗎?為什么有的單片機既有EEPROM又有Flash?
本期貿澤科普實驗室,就來扒一扒單片機與存儲器的那些事——
01單片機與存儲器的關系像什么?
請你用比喻來形容下存儲與單片機的關系,你會用什么呢?
我覺得他們很像大腦與大腦的記憶系統,大腦(單片機)掌控著身體(嵌入式系統)的各項活動和決策,記憶系統存儲那些與生俱來的本能反應和經過長期學習固化下來的知識(ROM),也短暫存儲當前正在思考和處理的信息(RAM),比如剛剛看到的一個電話號碼,一旦注意力轉移(斷電),這個短期記憶就會遺忘(數據清除)。所以,如果存儲不工作了,無論性能多高的器件,都得“涼涼”。
02單片機里的存儲都是一樣的嗎?
以超低功耗32位MCU STM32L151R6-A為例,下圖是其電路框圖,標紅的部分就是在MCU內部集成的存儲器。
在單片機中,為什么會有這么多種類的存儲呢?捋一遍STM32L151R6-A單片機的工作過程就立刻清晰明了了。
1)在單片機上電復位之后,首先需要執行的是引導代碼,就如電腦的系統一樣,引導程序的目的是初始化系統硬件,如時鐘、外設等,并將應用程序從其他存儲器,如Flash,加載到SRAM中,然后跳轉到應用程序的入口地址開始執行。此外,引導程序還可以提供一些基本的調試和下載功能,方便開發者對MCU進行程序燒錄和調試。Boot ROM是單片機正常工作使用的第一個存儲器。
當然,并不是所有MCU都有Boot ROM,像一些簡單、低端的單片機本身是不需要復雜的引導過程的,還有一些自定義設計的特殊單片機,可以通過外部電路或者其他的特殊機制來實現程序的啟動和加載。
2)單片機啟動之后,需要去完成某個具體的應用功能,比如智能家居應用,單片機要控制燈光,實現這個功能的應用代碼在PC編寫完成之后,會被燒錄到單片機里的存儲器中,這個存儲器就是Flash。除了所有的應用程序之外,Flash存儲一些需要長期保存的數據,如系統配置參數、校準數據等,這些數據在設備運行過程中可能會被讀取或修改,但在斷電后依然能夠保留。
3)單片機系統在運行時,可能會產生大量的數據,這些數據需要頻繁的修改,但又不能丟失,比如溫濕度的調節,需要實時根據情況更新數據,但數據保存后,在下次啟動時,不能丟失,這些數據就會被存儲在另外一種ROM,EEPROM里。
4)前面提到的控制燈光功能,假設需要根據光的強度進行控制,就要使用光傳感器,單片機要對傳感器測得的光線數據進行處理、運算,會產生臨時數據、中間結果,這些會被暫時存放在SRAM中,而且程序通常從Flash加載到SRAM執行。
5)任何電子系統都有可能出現異常情況,比如電源故障。在故障修復之后,如何能夠保證系統恢復到正常狀態?這就需要Backup Data存儲器中存儲的關鍵備份數據,比如運行狀態信息、配置信息等。
從單片機系統的運行過程來看,這些存儲器扮演著重要的角色,雖然種類多,但缺一不可。
03既有EEPROM又有Flash的單片機
這要從早期ROM說起,初始的ROM數據寫入方式是在ROM的制造工序中,芯片廠商用特殊的方法燒錄進去的,一次性寫入內容后,用戶只能驗證寫入的資料是否正確,不能再作任何修改。這,工程師怎么能忍,于是就有了可編程只讀存儲器(PROM),PROM允許在制造后由工程師使用編程器寫入數據,但只能寫入一次,之后就不能再更改了,額,只能寫一次?這不相當于人生下來,只能吃一頓飯一樣?還得改。
為了解決不能重復寫入的問題,EPROM出現了,EPROM芯片可重復擦除和寫入,它有一個很明顯的特征,就是它正面的陶瓷封裝上,開有一個玻璃窗口,透過這個窗口,可以看到其內部的集成電路,當紫外線透過這個窗口照射內部芯片時,就可以擦除其內的數據。由于使用紫外線擦除過程需要特殊的設備和操作,很繁瑣,還有可能因為擦除窗口遮光失效,導致數據被誤擦除。
是不是可用其他方式擦除呢?沒錯,用電信號也可以的,這就是電可擦除可編程只讀存儲器(EEPROM)。EEPROM的電可擦除,無疑是前進了一大步。在數據讀取/寫入操作上,EEPROM允許以字節為單位進行操作。不論是編程,還是擦除的過程,EEPROM非常靈活和方便。
雖然EEPROM的性能已經非常不錯了,既可以電擦除,又能按字節讀寫,但是,隨著程序逐漸復雜,EEPROM的讀寫速度和容量就有點捉襟見肘,如果還是只能按照字節操作,就太慢太慢了,改幾行代碼,還得等半天,所以,在EEPROM的基礎上,又發展出了Flash存儲器,有更高的存儲密度、更低的成本和更快的擦寫速度。
要回答為什么有的單片機既有EEPROM又有Flash這個問題,還得看EEPROM和Flash的本質區別,這里我們整理了EEPROM和Flash在數據讀取/寫入操作方式、使用次數以及容量大小這些數據:
從擦除和寫入次數上看,EEPROM次數較高,以常用的AT24C02為例,它的擦除和寫入次數高達100萬,數據保存年限為100年。Flash的次數相對較少,以華邦的W25Q系列的SPI Flash為例,它的擦除和寫入次數可小至10萬,數據保存年限為在20年以上。
從讀寫方式上來看,EEPROM允許以字節為單位進行擦除和寫入操作,而Flash則是以塊或扇區為單位進行擦除和寫入操作。
從存儲容量上來看,EEPROM的容量都比較小,一般在幾K字節到幾百K字節,而Flash的容量是非常大的,小到幾M,大到幾T。
EEPROM和Flash這些各自的特點,讓EEPROM在單字節數據的讀寫環境更有優勢,而Flash適合存儲程序代碼和大量不頻繁更新的數據。
舉兩個單片機應用的例子,第一個,比如要保存一個溫度值,范圍在0-100攝氏度,只占用1個字節,每1分鐘需要把更新的溫度值寫入單片機的存儲器。
如果使用EEPROM,只需要操作存儲器中一個字節的空間,如果是Flash,就需要去操作一個塊或者一個扇區,比如一個扇區有512字節,操作一個字節的數據,整個扇區都需要重新擦寫,這么高頻次的擦寫,Flash的這個扇區很快就會被干廢了,Flash廢了,單片機也就廢了。所以,這種場景使用EEPROM更適合。
第二個是在OTA升級系統固件時,為了防止系統升級失敗造成系統變磚,就要在系統升級前備份系統固件,一般OTA升級的周期都是以月或者年為單位的,數據量大且集中,這個時候就需要使用Flash,它的讀寫速度快且容量大,如果使用EEPROM,讀寫速度慢而且有可能容量不夠。
從這兩個例子,可以看出,Flash和EEPROM在功能上實現互補,他們的存在可以讓系統更好的工作。
如果你認真仔細地讀到了這里,相信文章開頭提到的3個問題,你都已經了解清楚了,那就說明我們本期的貿澤科普實驗室沒白做!
-
單片機
+關注
關注
6057文章
44806瀏覽量
644079 -
mcu
+關注
關注
146文章
17668瀏覽量
357526 -
FlaSh
+關注
關注
10文章
1656瀏覽量
150541 -
存儲器
+關注
關注
38文章
7603瀏覽量
165798 -
EEPROM
+關注
關注
9文章
1061瀏覽量
82946
原文標題:單片機存儲之謎:Flash和EEPROM到底誰更強?| 貿澤科普實驗室
文章出處:【微信號:貿澤電子,微信公眾號:貿澤電子】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
扒一扒那些年曾經很火的單片機們
扒一扒與無線網絡相關的那些事
扒一扒我看過的那些Linux相關的書籍
單片機存儲器擴充與程序下載技巧
單片機教程之單片機總線與存儲器的擴展資料說明

如何對單片機進行片外程序存儲器設計
單片機的存儲器

扒一扒中斷為什么不能調printf?

評論