您的位置:首页 > 其它

Error: Ram start overlaps rom binary

2012-04-15 13:23 246 查看
http://blog.csdn.net/lan120576664/article/details/5492880

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

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

出错内容如下:

[cpp]
view plaincopyprint?

Processing NK 
 
Writing D:/WINCE600/OSDesigns/Mini2440-with-QQ/Mini2440-with- 

 
QQ/RelDir/Mini2440_ARMV4I_Release/NK.bin 
Error: Ram start overlaps rom binary 
Rom end  : 0x82356260 
Ram start: 0x8200e000 
NK 
physfirst 80200000 
physlast  82356260 
ulRAMFree 8200e000 
Fatal error hit, exiting... 
Table of contents  82353768  00002af8  (     11000) 
Writing ROM signature and TOC pointer at 80200040 
Kernel data copy section  807bee7c  00000020  (        32) 
ROM Header                82353714  00000054  (        84) 

First DLL Address:       4001c001 
Last DLL Address:        416dc0b1 
Physical Start Address:  80200000 
Physical End Address:    82356260 
Start RAM:               82000000 
Start of free RAM:       8200e000 
End of RAM:              83e00000 
Number of Modules:       230 
Number of Copy Sections: 2 
Copy Section Offset:     807bee7c 
Kernel Flags:            00000002 
FileSys 4K Chunks/Mbyte: 48 <2Mbyte  48 2-4Mbyte  0 4-6Mbyte  0  

 
>6Mbyte 
CPU Type:                    01c2h 
Miscellaneous Flags:         0002h 
Extensions Pointer:      80201570 
Total ROM size:          02156260 (  34955872) 
makeimg: FATAL ERROR: Command returned non-zero exit code 1 (dec). 

makeimg: FATAL ERROR: Command returned non-zero exit code 1 (dec). 

Mini2440-with-QQ - 4 error(s), 10 warning(s) 
========== 生成: 0 成功或最新,1 失败,0 被跳过 ========== 

[cpp]
view plaincopyprint?

MEMORY 
    NK      80200000  01e00000  RAMIMAGE   ;01e00000  30M 
    RAM     82000000  01e00000  RAM    
;    FLASH   92000000  00100000  RESERVED 
 
; Common RAM areas 
    AUD_DMA             80002000  00000800  RESERVED  

    SDIO_DMA            80010000  00010000  RESERVED 
    ARGS                80020800  00000800  RESERVED 

    DBGSER_DMA          80022000  00002000  RESERVED 
    SER_DMA             80024000  00002000  RESERVED 

    IR_DMA              80026000  00002000  RESERVED 
    SLEEP               80028000  00002000   RESERVED 

    EDBG                80030000  00020000  RESERVED 
    DISPLAY             80080000  00180000  RESERVED     

 
CONFIG 
    COMPRESSION=ON 
    KERNELFIXUPS=ON 
 
IF IMGPROFILER    
    PROFILE=ON 
ELSE 
    PROFILE=OFF 
ENDIF 
 
; 
; ROMFLAGS is a bitmask of options for the kernel 

;   ROMFLAGS    0x0001      Disallow Paging 
;   ROMFLAGS    0x0002      Not all KMode 
;   ROMFLAGS    0x0010      Trust Module only 
; 
IF IMGTRUSTROMONLY 
    IF IMGNOTALLKMODE 
       ROMFLAGS=12 
    ELSE 
       ROMFLAGS=10 
    ENDIF 
ELSE 
    IF IMGNOTALLKMODE 

c6f6
       ROMFLAGS=02 
    ELSE 
       ROMFLAGS=00 
    ENDIF 
ENDIF 
 
    ROMSTART=80200000 
    ROMWIDTH=32 
    ROMSIZE=01e00000         ;01e00000  30M 
     
FSRAMPERCENT=0x30303030 

MEMORY
NK      80200000  01e00000  RAMIMAGE   ;01e00000  30M
RAM     82000000  01e00000  RAM
;    FLASH   92000000  00100000  RESERVED

; Common RAM areas
AUD_DMA             80002000  00000800  RESERVED
SDIO_DMA            80010000  00010000  RESERVED
ARGS                80020800  00000800  RESERVED
DBGSER_DMA          80022000  00002000  RESERVED
SER_DMA             80024000  00002000  RESERVED
IR_DMA              80026000  00002000  RESERVED
SLEEP               80028000  00002000	 RESERVED
EDBG                80030000  00020000  RESERVED
DISPLAY             80080000  00180000  RESERVED

CONFIG
COMPRESSION=ON
KERNELFIXUPS=ON

IF IMGPROFILER
PROFILE=ON
ELSE
PROFILE=OFF
ENDIF

;
; ROMFLAGS is a bitmask of options for the kernel
;   ROMFLAGS    0x0001      Disallow Paging
;   ROMFLAGS    0x0002      Not all KMode
;   ROMFLAGS    0x0010      Trust Module only
;
IF IMGTRUSTROMONLY
IF IMGNOTALLKMODE
ROMFLAGS=12
ELSE
ROMFLAGS=10
ENDIF
ELSE
IF IMGNOTALLKMODE
ROMFLAGS=02
ELSE
ROMFLAGS=00
ENDIF
ENDIF

ROMSTART=80200000
ROMWIDTH=32
ROMSIZE=01e00000         ;01e00000  30M

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的起始地址

我的调整结果如下:

[cpp]
view plaincopyprint?

MEMORY 
;    NK      80200000  01e00000  RAMIMAGE 
;    RAM     82000000  01e00000  RAM 
    NK      80200000  02300000  RAMIMAGE    ;35M 
    RAM     82500000  01e00000  RAM 
;    FLASH   92000000  00100000  RESERVED 
 
; Common RAM areas 
    AUD_DMA             80002000  00000800  RESERVED  

    SDIO_DMA            80010000  00010000  RESERVED 
    ARGS                80020800  00000800  RESERVED 

    DBGSER_DMA          80022000  00002000  RESERVED 
    SER_DMA             80024000  00002000  RESERVED 

    IR_DMA              80026000  00002000  RESERVED 
    SLEEP               80028000  00002000   RESERVED 

    EDBG                80030000  00020000  RESERVED 
    DISPLAY             80080000  00180000  RESERVED     

 
CONFIG 
    COMPRESSION=ON 
    KERNELFIXUPS=ON 
 
IF IMGPROFILER    
    PROFILE=ON 
ELSE 
    PROFILE=OFF 
ENDIF 
 

; ROMFLAGS is a bitmask of options for the kernel 

;   ROMFLAGS    0x0001      Disallow Paging 
;   ROMFLAGS    0x0002      Not all KMode 
;   ROMFLAGS    0x0010      Trust Module only 

IF IMGTRUSTROMONLY 
    IF IMGNOTALLKMODE 
       ROMFLAGS=12 
    ELSE 
       ROMFLAGS=10 
    ENDIF 
ELSE 
    IF IMGNOTALLKMODE 
       ROMFLAGS=02 
    ELSE 
       ROMFLAGS=00 
    ENDIF 
ENDIF 
 
    ROMSTART=80200000 
    ROMWIDTH=32 
    ;ROMSIZE=01e00000 
    ROMSIZE=2300000 ;35M 
     
FSRAMPERCENT=0x30303030 

MEMORY
; NK 80200000 01e00000 RAMIMAGE
; RAM 82000000 01e00000 RAM
NK 80200000 02300000 RAMIMAGE ;35M
RAM 82500000 01e00000 RAM
; FLASH 92000000 00100000 RESERVED

; Common RAM areas
AUD_DMA 80002000 00000800 RESERVED
SDIO_DMA 80010000 00010000 RESERVED
ARGS 80020800 00000800 RESERVED
DBGSER_DMA 80022000 00002000 RESERVED
SER_DMA 80024000 00002000 RESERVED
IR_DMA 80026000 00002000 RESERVED
SLEEP 80028000 00002000 RESERVED
EDBG 80030000 00020000 RESERVED
DISPLAY 80080000 00180000 RESERVED

CONFIG
COMPRESSION=ON
KERNELFIXUPS=ON

IF IMGPROFILER
PROFILE=ON
ELSE
PROFILE=OFF
ENDIF

;
; ROMFLAGS is a bitmask of options for the kernel
; ROMFLAGS 0x0001 Disallow Paging
; ROMFLAGS 0x0002 Not all KMode
; ROMFLAGS 0x0010 Trust Module only
;
IF IMGTRUSTROMONLY
IF IMGNOTALLKMODE
ROMFLAGS=12
ELSE
ROMFLAGS=10
ENDIF
ELSE
IF IMGNOTALLKMODE
ROMFLAGS=02
ELSE
ROMFLAGS=00
ENDIF
ENDIF

ROMSTART=80200000
ROMWIDTH=32
;ROMSIZE=01e00000
ROMSIZE=2300000 ;35M

FSRAMPERCENT=0x30303030

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

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

可以参考

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

这个网址。

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

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息