嵌入式系統/存儲

維基教科書,自由的教學讀本

在嵌入式系統中,存儲資源是非常寶貴的。一些芯片,尤其是超大規模集成電路(VLSI)和低端微處理器可能僅有很少的板載內存(On-board RAM)。RAM直接建於芯片內部,因此無法擴展。除了RAM之外,嵌入式系統還有非易失性存儲,如小型磁盤閃存(Flash),或者額外的存儲卡。

一旦系統構建完成,存儲的硬件更改將極為困難。嵌入式系統存儲升級的成本,可能遠遠超出系統的構建成本。例如,為增加系統內存和Flash,將微控制器由Mega8改為Mega128,則芯片成本從4¥上升到18¥;同時,印刷電路板也要根據新的封裝而大規模調整;供電等相關系統也不得不隨之做出調整;程序也需要部分重寫。因此,工程師必須清楚系統擁有的存儲資源是否能夠應對其承擔的任務,並在程序開發過程中,將存儲資源作為重要的參考。

存儲通常被分成不同的幾部分,以執行不同的功能。

尋址[編輯]

維基百科中的相關條目:

存儲的每個字節,處理器的每個輸入輸出位,都有一個唯一的地址。通過地址,處理器可以從存儲中讀取、寫入數據,能夠控制輸入輸出。

嵌入式系統中共有4種典型的尋址區域(Addressable area),每一種都用不同的技術實現:

  • EEPROM程序存儲,也就是芯片的ROM部分。這部分存儲着編寫的程序,即使在掉電的情況下,也不會丟失。當程序運行時,存儲數據可以被修改;而在無斷電狀態下,數據會一直保持。ROM中的數據很少修改,甚至不變。
  • Flash程序存儲,另一種ROM,採用與EEPROM不同的技術原理。
  • RAM,存放正在運行的程序和數據。初始數據從ROM中讀取;在掉電之後,所有內容都會消失。
  • 輸入輸出,控制着微處理器/微控制器的端口輸入輸出。

這裡我們重點討論存儲的尋址。

哈佛結構
馮·諾伊曼結構

很多流行的微控制器,比如8051,AVR,PIC,均採用「哈佛結構」。這和通用計算機所採用的「馮·諾伊曼結構」是不同的。

有待補充:兩種結構的對比


分頁和隊列[編輯]

通常,應用軟件會不斷地增長。古老的處理器,例如火星漫遊者Sojourner搭載的具有16位地址寄存器的8085處理器,能直接訪問的位置為65 536個。若全部用做內存尋址,處理器也僅僅能訪問65KB內存;事實上還有很多地址被分配給其它物理設備,因此可用內存非常少。為此,必須利用「分頁」(Paging)硬件使不可直接訪問內存的數據與可直接訪問內存進行交換,這樣實際使用內存範圍便擴展了,處理器就可以使用更多的內存。早期的PIC處理器有兩組完全獨立的寄存器,一個用來交換ROM中的數據,一個用來交換RAM中的數據。

內存管理[編輯]

x86內存管理[編輯]

ARM內存管理[編輯]

51內存管理[編輯]

AVR內存管理[編輯]