Error: Ram start overlaps rom binary

http://blog.csdn.net/lan120576664/article/details/5492880

好久都没有动WINCE了,以前买了友善之臂的板子跑的是5.0,只是搞过一段时间。由于公司的原因,今天在网上下载了友善2440的板子WINCE6.0bsp。今次友善提供的是一个安装包,去安装bsp和6.0的工程(工程有两个)。我选了一个带QQ的工程就重新编译了一下。

10多分钟过去了(呵呵,新进的小黑速度性能还可以,曾经还是在香港排行性能第一的机子哦),编译好了但是出错。

出错内容如下:

  1. Processing NK 
  2.  
  3. Writing D:/WINCE600/OSDesigns/Mini2440-with-QQ/Mini2440-with- 
  4.  
  5. QQ/RelDir/Mini2440_ARMV4I_Release/NK.bin 
  6. Error: Ram start overlaps rom binary 
  7. Rom end  : 0x82356260 
  8. Ram start: 0x8200e000 
  9. NK 
  10. physfirst 80200000 
  11. physlast  82356260 
  12. ulRAMFree 8200e000 
  13. Fatal error hit, exiting... 
  14. Table of contents  82353768  00002af8  (     11000) 
  15. Writing ROM signature and TOC pointer at 80200040 
  16. Kernel data copy section  807bee7c  00000020  (        32) 
  17. ROM Header                82353714  00000054  (        84) 
  18. First DLL Address:       4001c001 
  19. Last DLL Address:        416dc0b1 
  20. Physical Start Address:  80200000 
  21. Physical End Address:    82356260 
  22. Start RAM:               82000000 
  23. Start of free RAM:       8200e000 
  24. End of RAM:              83e00000 
  25. Number of Modules:       230 
  26. Number of Copy Sections: 2 
  27. Copy Section Offset:     807bee7c 
  28. Kernel Flags:            00000002 
  29. FileSys 4K Chunks/Mbyte: 48 <2Mbyte  48 2-4Mbyte  0 4-6Mbyte  0  
  30.  
  31. >6Mbyte 
  32. CPU Type:                    01c2h 
  33. Miscellaneous Flags:         0002h 
  34. Extensions Pointer:      80201570 
  35. Total ROM size:          02156260 (  34955872) 
  36. makeimg: FATAL ERROR: Command returned non-zero exit code 1 (dec). 
  37. makeimg: FATAL ERROR: Command returned non-zero exit code 1 (dec). 
  38. Mini2440-with-QQ - 4 error(s), 10 warning(s) 
  39. ========== 生成: 0 成功或最新,1 失败,0 被跳过 ========== 

仔细看了一下错误,找到了

Error: Ram start overlaps rom binary

Ram的空间与ROM的空间重叠了。

在5.0的时候Ram与ROM的大小设置在config.bib文件里面的。

但是,我在vs2005的工程里面却没找到,害到我直接去BSP目录底下找才找到。

(如果网友知道在vs2005中如何找到config.bib麻烦告知一下,PB5.0可以直接在项目里面找到的)

打开config.bib文件,发现内容如下

  1. MEMORY 
  2.     NK      80200000  01e00000  RAMIMAGE   ;01e00000  30M 
  3.     RAM     82000000  01e00000  RAM    
  4. ;    FLASH   92000000  00100000  RESERVED 
  5.  
  6. ; Common RAM areas 
  7.     AUD_DMA             80002000  00000800  RESERVED  
  8.     SDIO_DMA            80010000  00010000  RESERVED 
  9.     ARGS                80020800  00000800  RESERVED 
  10.     DBGSER_DMA          80022000  00002000  RESERVED 
  11.     SER_DMA             80024000  00002000  RESERVED 
  12.     IR_DMA              80026000  00002000  RESERVED 
  13.     SLEEP               80028000  00002000   RESERVED 
  14.     EDBG                80030000  00020000  RESERVED 
  15.     DISPLAY             80080000  00180000  RESERVED     
  16.  
  17. CONFIG 
  18.     COMPRESSION=ON 
  19.     KERNELFIXUPS=ON 
  20.  
  21. IF IMGPROFILER    
  22.     PROFILE=ON 
  23. ELSE 
  24.     PROFILE=OFF 
  25. ENDIF 
  26.  
  27. ; ROMFLAGS is a bitmask of options for the kernel 
  28. ;   ROMFLAGS    0x0001      Disallow Paging 
  29. ;   ROMFLAGS    0x0002      Not all KMode 
  30. ;   ROMFLAGS    0x0010      Trust Module only 
  31. IF IMGTRUSTROMONLY 
  32.     IF IMGNOTALLKMODE 
  33.        ROMFLAGS=12 
  34.     ELSE 
  35.        ROMFLAGS=10 
  36.     ENDIF 
  37. ELSE 
  38.     IF IMGNOTALLKMODE 
  39.        ROMFLAGS=02 
  40.     ELSE 
  41.        ROMFLAGS=00 
  42.     ENDIF 
  43. ENDIF 
  44.  
  45.     ROMSTART=80200000 
  46.     ROMWIDTH=32 
  47.     ROMSIZE=01e00000         ;01e00000  30M 
  48.      
  49. FSRAMPERCENT=0x30303030 

 

可以看到

     NK      80200000  01e00000  RAMIMAGE   ;01e00000  30M(注释是本人加上去的)
    RAM     82000000  01e00000  RAM  

  ROMSTART=80200000
  ROMWIDTH=32
  ROMSIZE=01e00000         ;01e00000  30M(注释是本人加上去的)

看一下出错信息,ROM总共是多大。

Total ROM size:          02156260 (  34955872)

这个大概是33M左右的大小,超过了设置的ROMSIZE规定的大小,

同时,82356260=80200000(ROMSTART)  +02156260 (ROMSIZE),82356260明显超过了RAM的起始地址82000000。

因此,现在问题来了,有两个步骤。

1、把ROMSIZE的大小放大。

2、根据ROMSIZE的大小重新调整RAM的起始地址

我的调整结果如下:

  1. MEMORY 
  2. ;    NK      80200000  01e00000  RAMIMAGE 
  3. ;    RAM     82000000  01e00000  RAM 
  4.     NK      80200000  02300000  RAMIMAGE    ;35M 
  5.     RAM     82500000  01e00000  RAM 
  6. ;    FLASH   92000000  00100000  RESERVED 
  7.  
  8. ; Common RAM areas 
  9.     AUD_DMA             80002000  00000800  RESERVED  
  10.     SDIO_DMA            80010000  00010000  RESERVED 
  11.     ARGS                80020800  00000800  RESERVED 
  12.     DBGSER_DMA          80022000  00002000  RESERVED 
  13.     SER_DMA             80024000  00002000  RESERVED 
  14.     IR_DMA              80026000  00002000  RESERVED 
  15.     SLEEP               80028000  00002000   RESERVED 
  16.     EDBG                80030000  00020000  RESERVED 
  17.     DISPLAY             80080000  00180000  RESERVED     
  18.  
  19. CONFIG 
  20.     COMPRESSION=ON 
  21.     KERNELFIXUPS=ON 
  22.  
  23. IF IMGPROFILER    
  24.     PROFILE=ON 
  25. ELSE 
  26.     PROFILE=OFF 
  27. ENDIF 
  28.  
  29. ; ROMFLAGS is a bitmask of options for the kernel 
  30. ;   ROMFLAGS    0x0001      Disallow Paging 
  31. ;   ROMFLAGS    0x0002      Not all KMode 
  32. ;   ROMFLAGS    0x0010      Trust Module only 
  33. IF IMGTRUSTROMONLY 
  34.     IF IMGNOTALLKMODE 
  35.        ROMFLAGS=12 
  36.     ELSE 
  37.        ROMFLAGS=10 
  38.     ENDIF 
  39. ELSE 
  40.     IF IMGNOTALLKMODE 
  41.        ROMFLAGS=02 
  42.     ELSE 
  43.        ROMFLAGS=00 
  44.     ENDIF 
  45. ENDIF 
  46.  
  47.     ROMSTART=80200000 
  48.     ROMWIDTH=32 
  49.     ;ROMSIZE=01e00000 
  50.     ROMSIZE=2300000 ;35M 
  51.      
  52. FSRAMPERCENT=0x30303030 

我将ROMSIZE设置成35M的大小。

当然解决这个问题的方法还有其他方法

可以参考

http://blog.csdn.net/joyzml/archive/2010/01/18/5207176.aspx

这个网址。

设置完成后,将重新打包NK就行了。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值