如何在WinCE中使用超过64兆的内存
2008-08-24 23:16
330 查看
实际开发过程中,发现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的内存了。其他更大的内存也可通过此方法修改完成。
但是实际的应用中,往往对内存的需求往往超过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兆的内存
- Oracle 10G 如何使用超过1.7G的内存
- 如何在32位程序中突破地址空间限制使用超过4G的内存
- Oracle 10G 如何使用超过1.7G的内存
- Wince内存泄露检测工具Application Verifier的使用和如何快速定位泄露语句(二)
- 如何在32位程序中突破地址空间限制使用超过4G的内存
- 如何在32位程序中突破地址空间限制使用超过4G的内存
- 如何在32位程序中突破地址空间限制使用超过4G的内存
- Linux如何使用总计超过100%的内存
- Oracle数据库中如何使用超过2G的内存
- 【ZT】如何在32位程序中突破地址空间限制使用超过4G的内存
- 如何在32位程序中突破地址空间限制使用超过4G的内存
- 如何在32位程序中突破地址空间限制使用超过4G的内存
- Oracle数据库中如何使用超过2G的内存
- Wince内存泄露检测工具Application Verifier的使用和如何快速定位泄露语句
- 在Oracle数据库中如何使用超过2G的内存
- Oracle 10G 如何使用超过1.7G的内存
- ORACLE 10G 如何使用超过1.7G的内存
- 为什么实际内存使用量已经超过了memory.soft_limit_in_bytes,但是并没有立即触发try_to_free_pages in try_charge
- 如何理解并优化.NET应用程序对内存的使用