Image exceeds specified memory size / WINCE 生成多個 NK


关于处理在Platform Builder 5.0中"Warning: Image exceeds specified memory size"问题

Platform Builder 5.0 编译过程中,提示"Warning: Image exceeds specified memory size by 90124 bytes and may not run.",这样一般也会生成多个NK.nbx(NK.nb0,NK.nb1,...),可能会导致你的镜像跑不起来,这样看你的配置而定了:比如你是要下载NK.bin还是NK.nb0咯。

参见了网上一些帖子:

  • 关于NK.nb0,NK.nb1:
    nbx的文件大小是一定的,就是说不过生成几个,每个都是一样大,最后一个正常会有很多0在后面,可以用UE等工具看一下。
    对于文件的大小设置建议参考bin文件,最后生成的bin文件大小基本上就接近你需要的大小了,建议稍微大一点。
    要考虑定制的系统添加的组件的多少,越多最后生成的文件有效数据就越大。当有效数据超过你定义的大小,那么就会出现你这样的情况。

 

  • 一般的解决方法是:
    1. 刪減不必要的component
    2. 重新規劃config.bib,RAMIMAGE的大小

 

  • 而问题的终结解决方法是:
    .%_WINCEROOT%\PLATFORM\\FILES下的config.bib修改MEMORY节中关于NK存放空间的大小,以及CONFIG节中ROMSIZE的大小(具体数值应和在MEMORY节中关于NK存放空间的大小),然后要重新Sysgen一次。

 

       注意,如果不想重新编译,这要修改的是workspace下(有两处地方出现,_Release和_Release下的postproc文件夹中)的config.bib而不是PLATFORM下的,这样就不用重新编译了,直接再做一次Make Run-Time Image就行了。
如果直接在platform builder的parameter view里面修改,结果改的config.bib根本就不会被工程访问到,除非你重新Sysgen咯!^_^

 

        另外,最好把ROMSIZE也改成RAMIMAGE一样的大小,这样NK.nb0就可以装下整个NK了,否则会生成NK.nb1甚至更多。

      但有可能在下载NK.bin的时候会发生错误,原因是eboot中有两个宏定义要和config.bib保持一致。ROM_RAMIMAGE_START和ROM_RAMIMAGE_SIZE。这两个宏要和config.bib中的RAMIMAGE的相关定义保持一致。
这样改完后,就可以正常运行了。

posted on 2010-09-14 10:58  Morris  阅读(346)  评论(0编辑  收藏  举报

导航