1. 程式人生 > >PB常見編譯出錯及解決辦法(一)

PB常見編譯出錯及解決辦法(一)

Error: Ram start overlaps rom binary  
Rom end  : 0x8df9ba1c  
Ram start: 0x8de29000  
NK  
physfirst 8c200000  
physlast  8df9ba1c  
ulRAMFree 8de29000  
Fatal error hit, exiting...  
makeimg: FATAL ERROR: Command returned non-zero exit code 1 (dec).  
makeimg: FATAL ERROR: Command returned non-zero exit code 1 (dec).

  
.  
.  
30,733,179 NK.bin  

Error: Ram start overlaps rom binary
Rom end  : 0x8df9ba1c
Ram start: 0x8de29000
NK
physfirst 8c200000
physlast  8df9ba1c
ulRAMFree 8de29000
Fatal error hit, exiting...
makeimg: FATAL ERROR: Command returned non-zero exit code 1 (dec).
makeimg: FATAL ERROR: Command returned non-zero exit code 1 (dec).
.
.
30,733,179 NK.bin
.


導致這個錯誤的原因是NK.bin的實際大小超過了config.bib檔案中定義的大小。

有兩個方法可以解決這個問題。

方法一:刪除一些不必要的元件,然後重新Sysgen

方法二:修改config.bib檔案

下面是我的config.bib檔案的一段:

view plaincopy to clipboardprint?
NK          8C200000  01C00000  RAMIMAGE  
RAM       8DE00000  02200000  RAM  
.  
.  
ROMSTART=8C200000     
ROMWIDTH=32  
ROMSIZE=01c00000  

NK   8C200000  01C00000  RAMIMAGE
RAM       8DE00000  02200000  RAM
.
.
ROMSTART=8C200000  
ROMWIDTH=32
ROMSIZE=01c00000
.
 

這裡定義的NK的大小是01C00000,也就是28M。

而實際上我現在的NK已經達到了30,733,179,也就是29.3M。

這就是導致問題的主要原因。

解決方法:

首先把01C00000改成01E00000(30M)

然後把8DE00000改成8E100000(+2M)

    把02200000改成02000000(-2M)

最後把ROMSIZE=01c00000改成ROMSIZE=01E00000

重新Sysgen

(這裡面如果NK超過32M,Build Options中需要勾選上

“Run-Time Image Can be Larger than 32 MB”)