zoukankan      html  css  js  c++  java
  • 如何在WinCE中使用超过64兆的内存

    实际开发过程中,发现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的内存了。其他更大的内存也可通过此方法修改完成。

     

  • 相关阅读:
    HDU 1501 Zipper(DFS)
    HDU 2181 哈密顿绕行世界问题(DFS)
    HDU 1254 推箱子(BFS)
    HDU 1045 Fire Net (DFS)
    HDU 2212 DFS
    HDU 1241Oil Deposits (DFS)
    HDU 1312 Red and Black (DFS)
    HDU 1010 Tempter of the Bone(DFS+奇偶剪枝)
    HDU 1022 Train Problem I(栈)
    HDU 1008 u Calculate e
  • 原文地址:https://www.cnblogs.com/buffer/p/1275345.html
Copyright © 2011-2022 走看看