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

單片機(jī)教程之單片機(jī)總線與存儲(chǔ)器的擴(kuò)展資料說明

如何對(duì)單片機(jī)進(jìn)行片外程序存儲(chǔ)器設(shè)計(jì)
51單片機(jī)之存儲(chǔ)器

單片機(jī)的存儲(chǔ)器

扒一扒中斷為什么不能調(diào)printf?

評(píng)論