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