如何在WinCE中使用超過64兆的記憶體

2021-06-19 08:20:03 字數 1210 閱讀 6650

實際開發過程中,發現windows ce. net預設最大支援64mb記憶體。預設為32m,最大為64m,可以在pb的setting裡面設定:

但是實際的應用中,往往對記憶體的需求往往超過64mb,而且現在記憶體的**已經非常便宜,使用大記憶體已經是很普通的事情了,經過檢視pb的幫助以及一陣摸索,找到了修改windows ce.net,可以使用大於64m的記憶體的方法,本文以128m為例。其主要方法如下:

第一部:到pb的安裝目錄的%_winceroot%\public\common\oak\csp\i486\inc\pc.h中,修改pc.h中的cepc_extra_ram_size巨集為總記憶體數減去config.bib中詳細列出的記憶體數。128m記憶體是在原來的0x02400000基礎上加上0x04000000。

在config.bib中也要相應的修改:

第二步:到pb的安裝目錄的%_winceroot%\public\common\oak\csp\i486\oal\oeminit.asm中,開啟oeminit.asm檔案,修改「_oemaddresstable:」。 _oemaddresstable是乙個非常關鍵的記憶體對映描述表,主要描述物理記憶體和虛擬記憶體之間的對映,表的每一條目有3個dword,依次是(va,pa,cbsize),其中va是虛擬記憶體的開始位址,一般為80000000h,pa是物理記憶體的開始位址,一般為0,cbsize就是ce核心支援物理記憶體的大小,這個dword是我們最最關心的,其單位是byte。需要注意的是,cbsize,一定要是4m byte的倍數,因為windows ce.net核心中檢測記憶體大小,是以4m byte為單位來檢測的。cbsize系統預設為04000000h,其大小為64m,我們可以將其修改為8000000h,就可以支援128m記憶體了

第三步:重新buildi486oal.lib 。從pb選單進入cmd命令列(windows命令行不行,一定要從pb裡面的build選單進入)裡面進入到pb的安裝目錄裡面的%_winceroot%\public\common\oak\csp\i486\oal目錄下。

然後執行:build –c和sysgen i486oal命令;到%_targetplatroot%\kernel\buildexe目錄下面先後執行:set wincerel=1;build –c;makeimg三個命令。

第四步:在pb的build選單裡面重新build platform,make image重新生成nk.bin。

通過以上四部wince就可以支援128m的記憶體了。其他更大的記憶體也可通過此方法修改完成。

如何在WinCE中使用超過64兆的記憶體

實際開發過程中,發現windows ce.net預設最大支援64mb記憶體。預設為32m,最大為64m,可以在pb的setting裡面設定 但是實際的應用中,往往對記憶體的需求往往超過64mb,而且現在記憶體的 已經非常便宜,使用大記憶體已經是很普通的事情了,經過檢視pb的幫助以及一陣摸索,找到了修...

如何在 C C 中使用64位整數型別

ansi c99標準中並沒有64位整數型別。其次,許多實際的編譯器,都實現了對64位整數型別的支援。其中關鍵是這個 變數定義 輸出方式 gcc mingw32 g mingw32 gcc linux i386 g linux i386 microsoftvisual c 6.0 long long ...

如何在AndroidStudio中使用AIDL

本章節介紹如何在androidstudio中使用aidl 2.在aidl下建立乙個包,包裡建立乙個 aidl檔案,右鍵aidl new aidl aidl file 紅框就是建立完成後的樣子 3.在aidl檔案寫要被呼叫的方法,此方法不能有許可權修飾符 4.首先build下,然後建立乙個servic...