在WinCE50下移植了一個針對PXA255 CPU的BSP,現在有個奇怪的現象,就是儅OS
Image比較小的時候,系統能夠跑起來,儅OS大一點的時候,大概6M以上吧,就會出現如下的信息:
0 PID:0 TID:0 -OALKitlStart(rc = 1)
0 PID:0 TID:0 -OEMInit
0 PID:0 TID:0 MDValidateRomChain: XIP (ffffffff -> ffffffff) doesn't
exist in OEMAddressTable
0 PID:0 TID:0 ERROR! XIP region span accross discontigious memory!!!
System Halted!
0 PID:0 TID:0 Sp=ffffc7cc
這裡XIP(ffffffff -> ffffffff)地址由於OS大小的不同有改變。
看了g_oalAddressTable,和config.bib文件看不出來有什麽問題呀,大蝦們給各意見,這裡的XIP是怎麽囘事呢?我應該沒有定義XIP吧
g_oalAddressTable
DCD 0x80000000, 0xA0000000, 64 ; everything SDRAM-related (eboot
RAM, eboot RAMIMG, nk RAM, nk RAMIMAGE, nk MEMDEFS, ethdbg buffs)
DCD 0x86000000, 0xE0000000, 1 ; Zero-Bank (in RSVD slot)- No Phy
Mem needed to back up
DCD 0x86100000, 0x48000000, 1 ; Memory Controller
DCD 0x86200000, 0x40000000, 32 ; Mem-Mapped Registers (perifs)
DCD 0x88200000, 0x20000000, 32 ; PCMCIA S0 I/O Space
DCD 0x8A200000, 0x28000000, 32 ; PCMCIA S0 ATTRIBUTE MEM Space
DCD 0x8C200000, 0x2C000000, 64 ; PCMCIA S0 COMMON MEM Space
DCD 0x90200000, 0x30000000, 32 ; PCMCIA S1 I/O Space
DCD 0x92200000, 0x38000000, 32 ; PCMCIA S1 ATTRIBUTE MEM Space
DCD 0x94200000, 0x3C000000, 64 ; PCMCIA S1 COMMON MEM Space
DCD 0x98200000, 0x44000000, 1 ; LCDC
DCD 0x98300000, 0x00000000, 32 ; BOOT-ROM FLASH (nCS0)
DCD 0x9C300000, 0x08000000, 1 ; Neponset's CPLD Registers (nCS2)
DCD 0x9C400000, 0x0A000000, 1 ; BCR (nCS2')
DCD 0x9C500000, 0x10000000, 1 ; SA1111 on Neponset (nCS4)
DCD 0x9C600000, 0x04000000, 32 ; eXpansion Flash ROM (nCS1)
DCD 0x9F600000, 0x0C000000, 1 ; Ethernet - I/O Space (nCS3)
DCD 0x9F700000, 0x0E000000, 1 ; Ethernet - Attrib Space (nCS3)
DCD 0x9F800000, 0x14000000, 1 ;
DCD 0x00000000, 0x00000000, 0 ; end of table
我的CONFIG.bib定義如下:
MEMORY
; Name Start Size Type
; ------- -------- -------- ----
RSVD 80000000 000FF000 RESERVED
ARGS 800FF000 00001000 RESERVED
NK 80100000 03000000 RAMIMAGE
RAM 83100000 00F00000 RAM
; Reserve ZBANK virtual block (No physical memory
; is required to back this virtual range).
;
ZBANK 86000000 00100000 RESERVED
CONFIG
AUTOSIZE=ON
KERNELFIXUPS=ON
; @CESYSGEN IF !NK_NKNOCOMP
COMPRESSION=ON
; @CESYSGEN ENDIF !NK_NKNOCOMP
; @CESYSGEN IF NK_NKNOCOMP
COMPRESSION=OFF
; @CESYSGEN ENDIF NK_NKNOCOMP
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