wince的幾個記憶體問題

2021-04-30 07:15:41 字數 770 閱讀 8360

關於wince的記憶體問題一直有些混亂,最近看了網上幾篇文章,在這裡總結梳理一下。

記憶體第一次對映關係,是定義在

oemaddresstable

裡,這裡通過arm的mmu實現了實體地址到虛擬位址的對映,因此只要mmu開啟,這個對映關係就會一直存在。對於wince而言,只能訪問到這裡的virtual address。

在這裡插個問題就是為什麼要位址對映?wince只能管理512m的物理記憶體,但是擁有4g的虛擬位址空間,使用虛擬記憶體後每個程序都擁有自己的程序空間,提高了系統的可靠性和安全性。

完成位址對映,512m的物理位址對映到0x80000000-0x9fffffff之間,需要注意的是這是cache and buffer的位址,一般的oemaddresstable定義的也是caching address,同時512m的實體地址也會對映到uncaching address 0xa0000000-0xbfffffff之間,即uncaching address=caching address + 0x20000000。

wince

核心位址空間為0x80000000-0xffffffff,可見實體地址就是對映到這個區間,因此對於核心而言通過靜態的對映可以直接訪問實體地址。

應用程式的位址空間為0x00000000-0x7fffffff,實體地址並沒有對映到這個區間,因此應用程式要訪問實體地址就需要再一次的對映,動態地建立一層對映關係,這就是函式virtualalloc/copy和mmmapiospace的功能,個人比較多用mmmapiospace,直接對應實體地址,關於這兩個函式可以檢視msdn。

WINCE的記憶體配置

原文 http www.360doc.com content 10 1021 11 4026366 62690896.shtml wince的記憶體配置 wince的記憶體 包括sdram及flash 的配置包含兩個方面 源 包括c和彙編 中的定義,及系統配置檔案config.bib中的定義。源 中...

WINCE的記憶體配置

wince 的記憶體配置 wince的記憶體 包括sdram及flash 的配置包含兩個方面 源 包括c和彙編 中的定義,及系統配置檔案config.bib中的定義。源 中需要定義記憶體的物理及虛擬位址,大小,並初始化名為oemaddresstable的結構陣列,以告知系統實體地址與虛擬位址的對應關...

WINCE的記憶體配置

發 布 時 間 2008 11 19 來 源 作 者 microsun 瀏 覽 1418 wince的記憶體 包括sdram及flash 的配置包含兩個方面 源 包括c和彙編 中的定義,及系統配置檔案config.bib中的定義。源 中需要定義記憶體的物理及虛擬位址,大小,並初始化名為oemaddr...