http://blog.csdn.net/lan120576664/article/details/5492880
好久都没有动WINCE了,以前买了友善之臂的板子跑的是5.0,只是搞过一段时间。由于公司的原因,今天在网上下载了友善2440的板子WINCE6.0bsp。今次友善提供的是一个安装包,去安装bsp和6.0的工程(工程有两个)。我选了一个带QQ的工程就重新编译了一下。
10多分钟过去了(呵呵,新进的小黑速度性能还可以,曾经还是在香港排行性能第一的机子哦),编译好了但是出错。
出错内容如下:
- 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 被跳过 ==========
仔细看了一下错误,找到了
Error: Ram start overlaps rom binary
Ram的空间与ROM的空间重叠了。
在5.0的时候Ram与ROM的大小设置在config.bib文件里面的。
但是,我在vs2005的工程里面却没找到,害到我直接去BSP目录底下找才找到。
(如果网友知道在vs2005中如何找到config.bib麻烦告知一下,PB5.0可以直接在项目里面找到的)
打开config.bib文件,发现内容如下
- 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的起始地址
我的调整结果如下:
- 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就行了。