请教WinCE系统启动问题

ttlcoms   2007-1-15 00:12 楼主
我用的是一块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

回复评论 (3)

; NK Start address
#define NKSTART8C200000
#define NKLEN01D00000

#define RAMSTART         8E000000
#define RAMLEN01F00000

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

点赞  2007-1-15 11:36
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
对此句不理解,那位兄弟指点一下.
点赞  2007-1-15 15:48
那位兄弟有SMDK2410 BSP的文档资料,给俺发一份zzkn11@163.com
我用的开发板是别人转手的,资料残缺不全,感谢先!
点赞  2007-1-15 16:11
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复