ROM、RAM、FLASH的區別

初學MCU的人,經常會看到ROM, RAM, FLASH,而且會被這些詞彙搞得暈頭轉向。本文對這些概念進行了釐清,並介紹了這些Memory的區別,以及它們在MCU中的作用。

ROM (Read Only Memory)程序存儲器

ROM全稱Read Only Memory,顧名思義,它是一種只能讀出事先所存的數據的固態半導體存儲器。ROM中所存數據穩定,一旦存儲數據就再也無法將之改變或者刪除,斷電後所存數據也不會消失。其結構簡單,因而常用於存儲各種固化程序和數據。

在單片機中用來存儲程序數據及常量數據或變量數據,凡是c文件及h文件中所有代碼、全局變量、局部變量、‘const’限定符定義的常量數據、startup.asm文件中的代碼(類似ARM中的bootloader或者X86中的BIOS,一些低端的單片機是沒有這個的)通通都存儲在ROM中。

爲了便於使用和大批量生產,進一步發展出了可編程只讀存儲器(PROM)、可擦除可編程只讀存儲器(EPROM)。EPROM需要用紫外線長時間照射才能擦除,使用很不方便。1980s又出現了電可擦除可編程只讀存儲器(EEPROM),它克服了EPROM的不足,但是集成度不高、價格較貴。於是又發展出了一種新型的存儲單元結構同EPROM類似的快閃存儲器(FLASH MEMORY)。FLASH集成度高、功耗低、體積小,又能在線快速擦除,因而獲得了快速發展。

FLASH 存儲器

Flash 存儲器(FLASH EEPROM)又稱閃存,快閃。它是EEPROM的一種。它結合了ROM和RAM的長處。不僅具備電子可擦除可編輯(EEPROM)的性能,還不會斷電丟失數據同時可以快速讀取數據。它於EEPROM的最大區別是,FLASH按扇區(block)操作,而EEPROM按照字節操作。FLASH的電路結構較簡單,同樣容量佔芯片面積較小,成本自然比EEPROM低,因此適合用於做程序存儲器。

RAM (Random Access Memory)隨機訪問存儲器

RAM又稱隨機存取存儲器,存儲單元的內容可按照需要隨機取出或存入,且存取的速度與存儲單元的位置無關。這種存儲器在斷電時,將丟失其存儲內容,所以主要用於存儲短時間使用的程序。

它主要用來存儲程序中用到的變量。凡是整個程序中,所用到的需要被改寫的量(包括全局變量、局部變量、堆棧段等),都存儲在RAM中。

ROM, FLASH和RAM的區別

對於RAM, ROM以及FLASH的區別,簡單地說,在計算機中,RAM 、ROM都是數據存儲器。RAM 是隨機存取存儲器,它的特點是易揮發性,即掉電失憶。ROM 通常指固化存儲器(一次寫入,反覆讀取),它的特點與RAM 相反。ROM又分一次性固化、光擦除和電擦除重寫兩種類型。

在應用中,常規上ROM是用來存儲固化程序的,RAM是用來存放數據的。由於FLASH ROM比普通的ROM讀寫速度快,擦寫方便,一般用來存儲用戶程序和需要永久保存的數據。譬如說,現在家用的電子式電度表,它的內核是一款單片機,該單片機的程序就是存放在ROM裏的。電度表在工作過程中,是要運算數據的,要採集電壓和電流,並根據電壓和電流計算出電度來。電壓和電流時一個適時的數據,用戶不關心,它只是用來計算電度用,計算完後該次採集的數據就用完了,然後再採集下一次,因此這些值就沒必要永久存儲,就把它放在RAM裏邊。然而計算完的電度,是需要永久保存的,單片機會定時或者在停電的瞬間將電度數存入到FLASH裏。

發佈了4 篇原創文章 · 獲贊 2 · 訪問量 2288
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章