扩大WinCE可用物理内存

2008-12-28 01:28 阅读 776 次 评论 0 条

WinCE系统内核的源代码中默认使用28M的内存。如果在Build Option中选中Run-Time Image Can be Larger than 32 MB (IMGRAM64=1)项,那么定制WinCE的时候Platform Builder会使用64M的内存来编译。对于大于64M内存系统的定制需要做些修改。

对于x86架构的GEODE处理器(注意此处是对于Geode处理,如果是CEPC则不需要改源代码,CEPC的内存修改方法),要支持大于64M的内存必须修改源码。

首先在WinCE安装目录找到%_WINCEROOT%\Public\Common\Oak\Csp\x86\Inc\Pc.h文件,修改Pc.h中的CEPC_EXTRA_RAM_SIZE宏,CEPC_EXTRA_RAM_SIZE为总内存数减去Config.bib中详细列出的内存数。128M内存是在原来的0x02400000基础上加上0x04000000。

然后找到%_WINCEROOT%\Public\Common\Oak\Csp\x86\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。选择Platform的Build OS菜单下的Open Release Directory打开CMD命令行(直接在windows下运行cmd命令行不行,一定要从Platform的build OS菜单进入),进入 %_WINCEROOT%\Public\Common\OAK\CSP\i486\Oal目录下。然后执行:build –c和sysgen i486oal命令。然后在PB工作空间,选择FileView选项卡,找到%_WINCEROOT%\Public\Common\OAK\CSP\x86\Oal,右键后选上Run Makeimage Tool After Build,最后Build and sysgen编译生成映像NK.bin。

对于x86架构的非GEODE处理器,可以直接通过设置环境变量IMGRAM128=1,使系统可以支持128M的内存。注意config.bib文件中的代码RAM 80C00000 07000000 RAM,其中07000000代表分配的内存空间的大小,这部分空间是真实内存空间大小减去内核所占空间的结果。所以如果分配给RAM内存的空间过大,定制的系统加载之后会黑屏。

对于x86EMULATOR修改代码似乎也不能使其内存超过64M,测试了一次,失败了。

版权声明:本文著作权归原作者所有,欢迎分享本文,谢谢支持!
转载请注明:扩大WinCE可用物理内存 | 起点博客
分类:应用笔记 标签:,

发表评论


表情