Windows CE內存管理機制
Windows CE引入了虛擬內存機制管理多達4G的虛擬內存,最大支持512MB的物理內存.不同的CPU內存管理方法不同。對于MIPS和SHX系列CPU來說,地址映射是由CPU完成的,CE內核可以直接訪問512MB的物理內存。對于x86系列和ARM系列的CPU來說,在內核啟動過程中它會將現有物理內存地址全部映射到0x8000 0000以上的虛擬地址空間中供內核以后使用,這個虛實映射機制軟件上通過OEMAddressTable實現,硬件上要求具備MMU.參考microsun的文章:
"WINCE的內存(包括SDRAM及FLASH)的配置包含兩個方面:源代碼(包括C和匯編)中的定義,及系統配置文件CONFIG.BIB中的定義。源代碼中需要定義內存的物理及虛擬地址,大小,并初始化名為OEMAddressTable的結構數組,以告知系統物理地址與虛擬地址的對應關系,系統根據其設置生成MMU頁表。而CONFIG.BIB中一般會將內存定義成不同的段,各段用作不同的用途。"
我的理解是在*.h文件中聲明各虛擬地址,比如用到的寄存器結構體.在虛實地址映射文件(如ARM下的map.a)的OEMAddressTable中建立虛實地址的靜態映射關系,包括RAM,FLASH各部分存儲空間. (OS啟動后所能夠識別的物理內存). 接著在config.bib的MEMORY段(參考HELP里的Memory Section)把RAM映射后的虛擬地址進行分段,比如NK的大小,各種外設緩沖區的保留等.(注意這里是虛擬地址的劃分,必須建立在映射基礎上) 這種靜態的虛擬地址只能夠由內核層訪問,如果在APP中訪問,還必須建立動態映射.
posted on 2007-04-15 23:07 milkyway 閱讀(4564) 評論(4) 編輯 收藏 引用 所屬分類: Wince學習小結