请教WinCE系统启动问题

hxbin1979 2007-01-15 12:12:51
我用的是一块2410的开发板,根据资料说明定制的系统下载到扳子上,系统能正确启动,但是当我使用自定义的系统编译时会提示ROM与RAM的地址冲突,提示错误为:
Copy Section Offset: 8cef6f84
FileSys 4K Chunks/Mbyte: 128 <2Mbyte 128 2-4Mbyte 0 4-6Mbyte 0 >6Mbyte
CPU Type: 01c0h
Extensions Pointer: 8c20248c
Total ROM size: 0220f418 ( 35714072)
Error: Ram start overlaps rom binary
Rom end : 0x8e40f418
Ram start: 0x8e029000
NK
physfirst 8c200000
physlast 8e40f418
ulRAMFree 8e029000

错误应该是因为我自定义的系统比较大,需要在config.bib中增加NK的内存分配,于是修改相应的RAMIMAGE和RAM的内存分配(地址是连续的),pb编译成功,但是下在到扳子上系统无法启动,提示信息为:
Windows CE Firmware Init
INFO: Initializing system interrupts...
INFO: Initializing system clock(s)...
INFO: Initializing driver globals area...
SDMMC config current rGPGCON: ff95fdba
SDMMC config set rGPGCON: ffa5fdba
SDMMC config Init Done.
OEMInit Done...
Sp=ffffc7cc

修改前的config.bib:
; NK name
#define NKNAME NK

; NK Start address
#define NKSTART 8C200000
#define NKLEN 01D00000

#define RAMSTART 8E000000
#define RAMLEN 01F00000

$(NKNAME) $(NKSTART) $(NKLEN) RAMIMAGE
RAM $(RAMSTART) $(RAMLEN) RAM

; NK 80040000 01EB0000 RAMIMAGE
; RAM 8c200000 01C00000 RAM

; Common RAM areas
AUD_DMA 8c002000 00002000 RESERVED
DRV_GLB 8c010000 00010000 RESERVED
DBGSER_DMA 8c022000 00002000 RESERVED
SER_DMA 8c024000 00002000 RESERVED
IR_DMA 8c026000 00002000 RESERVED
SD_DMA 8c028000 00008000 RESERVED
EDBG 8c030000 00020000 RESERVED
CPXIPCHAIN 8c050000 00008000 RESERVED
SLEEP_BUFF 8c058000 00004000 RESERVED
DISPLAY 8c100000 00100000 RESERVED


CONFIG

COMPRESSION=ON
KERNELFIXUPS=ON


IF IMGPROFILER
PROFILE=ON
ENDIF
IF IMGPROFILER !
PROFILE=OFF
ENDIF

ROMFLAGS=0
ROMSTART=$(NKSTART)
ROMWIDTH=32
ROMSIZE=$(NKLEN)

反复做了多次实验,没有得到结果,我又用第一次按资料说明定制的、可以正确启动的系统,将config.bib的RAM启示地址偏移200000,编译成功,下载到扳子上也是不能启动,和上述提示相同。

现在只能把目标定位在Boot Loader系统初始化阶段的内存空间映射,有资料提到内存分配表,但是不知道此表在哪个文件中,是否修改了此表的内存分配就可以了。

我使用的pb4.2,通过USB将NK.bin直接下载到0x30200000
...全文
656 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
slyzhang 2007-01-15
  • 打赏
  • 举报
回复
; NK Start address
#define NKSTART8C200000
#define NKLEN01D00000

#define RAMSTART 8E000000
#define RAMLEN01F00000

这四个地址应该是在一个范围的, 不能顺便修改,必须成对修改,以适应两个地址空间都在以前那个大的地址空间内。

hxbin1979 2007-01-15
  • 打赏
  • 举报
回复
那位兄弟有SMDK2410 BSP的文档资料,给俺发一份zzkn11@163.com
我用的开发板是别人转手的,资料残缺不全,感谢先!
hxbin1979 2007-01-15
  • 打赏
  • 举报
回复
2410的OEMAddressTable在WINCEROOT\PLATFORM\SMDK2410\KERNEL\HAL\ARM和WINCEROOT\PLATFORM\SMDK2410\NBOOT路径下的map.a的文件中
DCD 0x80000000, 0x00000000, 32 ; 32 MB SROM(SRAM/ROM) BANK 0
DCD 0x82000000, 0x08000000, 32 ; 32 MB SROM(SRAM/ROM) BANK 1
DCD 0x84000000, 0x10000000, 32 ; 32 MB SROM(SRAM/ROM) BANK 2
DCD 0x86000000, 0x18000000, 32 ; 32 MB SROM(SRAM/ROM) BANK 3
DCD 0x88000000, 0x20000000, 32 ; 32 MB SROM(SRAM/ROM) BANK 4
DCD 0x8A000000, 0x28000000, 32 ; 32 MB SROM(SRAM/ROM) BANK 5
DCD 0x8C000000, 0x30000000, 64 ; 64 MB DRAM BANK 0
Kernel的起始地址是0x30200000,对应的虚拟地址就是8C200000
我最后做的实验是将RAM地址偏移了200000,大小不变,这样ROM+RAM的总空间大于64M,再验证下

DCD 0x80000000, 0x00000000, 32 ; 32 MB SROM(SRAM/ROM) BANK 0
对此句不理解,那位兄弟指点一下.

19,502

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧