AT9G45的原装核心板是用了4片8位DDR2,现在我把核心板改成了1片16位的DDR2,因此在bsp的config.bib中把ROMWIDTH从32改成了16,同时也在eboot.bib中做了相应的修改,ROMSIZE还是跟原来一样设成了2000000(nk)和40000(eboot)。
现在的问题是,编译结束后,发现原本32M的nk.nb0变成了两个16M的nb0和nb1,原本256K的eboot.nb0也变成了两个128K的nb0和nb1,就算把nk裁减到8M,编出来的同样是两个16M的nb0和nb1。
请问这是什么原因引起的?有什么办法可以解决?100分奉上,先谢了!
config.bib如下:
MEMORY
; Name Start Size Type
; ------- -------- -------- ----
BLDR 80000000 00058000 RESERVED
EMACBUF 80058000 00013000 RESERVED
DRVGLOB 8006b000 00001000 RESERVED
; NK 8006c000 00200000 RAMIMAGE
NK 8006c000 02000000 RAMIMAGE
RAM 8206c000 01E00000 RAM
VIDEOBUF 83E6C000 00100000 RESERVED
VIDEOMEM 83F6C000 00100000 RESERVED
; RAM2 88000000 02000000 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
ROMSTART=8006c000
ROMWIDTH=16
ROMSIZE=02000000
------解决方案--------------------
NK 8006c000 02000000 RAMIMAGE
ROMSIZE=02000000
这应该是对的啊。
和ROMWIDTH=16有关系?
------解决方案--------------------
------解决方案--------------------
还没这样搞过,一般都用的32位的,帮顶下
------解决方案--------------------
有關 ROMWIDTH 的用法, LZ 可參考
http://msdn.microsoft.com/en-us/library/ee478812.aspx
簡單來說, ROMWIDTH 設 16 的意思是告訴 Platform Builder, 我有兩顆 16-bits 的 NOR Flash, CPU Data Bus 是 32-bits, 所以一顆 NOR Flash 要接到 D0-D15, 另一顆接到 D16-D31, 所以 PB 在產生 Image 時, 就幫你分別產生 High-Word (D16-D31) and Low-Word (D0-D15) 的兩個檔 .nb0, .nb1, 讓你可以用燒錄器先預燒到 flash 後, 再將 flash IC 上到板子上.
所以 LZ 要的不是改 ROMWIDTH, 而是要去改 bootloader 的 DDR2 initialize code.
Paul, Chao @ Techware
------解决方案--------------------