星期四, 10月 12, 2006

CE : Memory, Storage... XIP, Process ...

這一篇: System Memory Management in Windows CE.NET
( http://msdn.microsoft.com/library/default.asp?
url=/library/en-us/dncenet/html/systemmemorymgmtwince.asp)
的筆記

這一篇說明CE的Memory, Filesystem 觀念,所有第一次作CE的人都應該要看這個。
然後配合 CE的HELP : ms-help://MS.WindowsCE.500/wcecoreos5/html/wce50conMemoryArchitecture.htm

... 我是指..有作過Embedded Linux的人.....


可以作成" Relocatable" 和 "XIP" (execution in place, none-relocatable)。

relocatable :

OS loader自行選定要將code load到哪裡。
好處 : RAM由OS管理,比較有效率。也不用麻煩決定memory layout。
缺點 : load program 時需要花比較多時間。

XIP:

code只能在build時指定的位址執行,所以需要在SRAM 方式的memory interface device中。
好處 : ?可以直接在NORFLASH中執行,省DRAM。
缺點 : ?

要決定使用哪一種,要了解CE工具中安排binary file的ROMIMAGE.EXE和 *.bib 的內容格式。

利用 壓縮與指定執行時期位址的方式,可以分別將OS中各component指定為relocatable或XIP。

要放到flash中的資料可以是少用到的module,並且可以利用壓縮來檢少需要的空間。
設定為壓縮,也就等於是指定這部份的code會在RAM中執行。

*.BIB

BIB檔由三個部份組成:MEMORY, MODULES, FILES.

MEMORY

通常在CONFIG.BIB中,每個bspc會有自己的config.bib。
NK  80001000 01FFF000 RAMMAGE
RAM 82000000 01DB0000 RAM
其中RAMIMAGE這個region是要romimage.exe將所有executables, modules, data 檔和compress section 放在這裡,而且給定virtual address 018000.1000 - 0x81FF.FFF的區域。這塊區域可以是在RAM或NORFLASH中。
RAM這個region是給CE Kernel用的,所有file system, object store, heaps, stacks, memory mapped file, writable data sections 都放在這個區域中,同時給定virtual address 0x8200.0000 - 0x83DB.0000的區域。

MODULES

這個section指定所有要放入各區域的file 名稱,同時指定他的attrib。

FILES

這部份的內容和MODULES類似,但是這個section的內容一定會被壓縮。
MODILES中指定的DLL檔,執行時會被load到Slot 1,這部份的資料則會被load到每一個slot中,所以會浪費virtual space 。



CE OS啟動時,create一個4G的virtual memory space,然後切割為33個slot,每個slot 32M。

CE使用 paged virtual memory management, 每個page 4K。

每個process 只能用到(看到) 32M 的位址空間。Process, DLL,heaps, stacks, ..都在這32M的區域中。

沒有留言:

網誌存檔