手头上有个三星的S3C6410 BSP,建好工程并编译之后,发现个很奇怪的现象,就是如论怎么更改配置编译最后都会出现一个不速之客stepldr.nb3,这样说明我的stepldr已经超过了8K,打开COMPRESSION=ON之后也是这样。
我怎么才能将stepldr压缩在8K以内呢。顺便提一下,别人用同样的BSP编译出来的就不会有stepldr.nb3,搞了几天了都还是这个样子,真是崩溃了,请教高人指点一番,谢谢!!!
下面是我的stepldr.bib文件内容和stepldr\source文件内容。
stepldr.bib:
MEMORY
;----------------------------------------------------------------------
; NAME ADDRESS SIZE TYPE
;----------------------------------------------------------------------
STEPLDR 00000000 00002000 RAMIMAGE ; Image : 8 KB (in Stepping Stone)
RAM 500F0000 0000C000 RAM ; RAM : 48 KB
STACK 500FC000 00004000 RESERVED ; Stack : 16 KB (sharing with Eboot)
CONFIG
COMPRESSION = OFF
PROFILE = OFF
KERNELFIXUPS = ON
ROMOFFSET = FFFFF000
ROMSTART = 00000000
ROMWIDTH = 32
ROMSIZE = 00001000
MODULES
; Name Path Memory Type
; ---------- -------------------------------------------------------------- -----------
nk.exe $(_TARGETPLATROOT)\target\$(_TGTCPU)\$(WINCEDEBUG)\stepldr.exe STEPLDR
stepldr\source 文件:
TARGETNAME = stepldr
TARGETTYPE = PROGRAM
RELEASETYPE = PLATFORM
EXEENTRY = StartUp
WINCECPU=1
!IF "$(BSP_USEDVS)" == "1"
ADEFINES=$(ADEFINES) -pd "DVS_EN SETL {TRUE}"
!ELSE
ADEFINES=$(ADEFINES) -pd "DVS_EN SETL {FALSE}"
!ENDIF
CDEFEINS=$(CDEFINES) /Faccs /Fm
LDEFINES = -subsystem:native /DEBUGTYPE:CV /FIXED:NO
# FullLibc.lib is used for C common operator function
# Do not remove this library even build will succeed without this
# some divider function can map incorrectly.
TARGETLIBS = \
$(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\fulllibc.lib \
# $(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\gsnull.lib
SOURCES = \
startup.s \
nand_opt.s \
utils.c \
nand.c \
main.c
WINCETARGETFILES=stepldr_romimage
我做了几个测试,如果把source文件中的fulllibc.lib注释掉,则不会生成stepldr.nb3,但是烧录stepldr.nb1之后只打印出“WinCE 6.0 Steploader for SMDK6410” 一句话,就死在那里了,真的是如fulllibc.lib上面的注释所说即使删除这个库不影响编译也会导致一些函数出错。
另外如果把stepldr\main.c里面的Uart_Init() 串口初始化函数注释掉,也不会生成stepldr.nb3,但是烧录stepldr.nb1之后,还是无法加载eboot。