stepldr编译的问题

stepldr编译,生成
stepldr.bin 4kB,
stepldr.exe 7kB,
stepldr.map 3kB,
stepldr.nb0 4kB,
stepldr.nb1 4kB,
stepldr.nb2 4kB

我想问的是,为什么会生成3个stepldr.nbx?在哪里设置的?为什么在我的环境里面,stepldr.nb1是有效的,那么其他两个是做什么用的?

在我的stepldr目录下,有以下几个根编译相关的文件,

Makefile文件:
这个根其他目录的都一样的,都是直接include makefile.def

Makefile.inc文件:生成文件
stepldr_romimage:
!IF "$(NOLINK)" == ""
romimage $(ROMIMAGE_FLAGS) stepldr.bib
debug $(_PLATFORMROOT)/$(_TGTPLAT)/target/$(_TGTCPU)/$(WINCEDEBUG)/stepldr.nb0 < trimnb0.scr

!IF "$(WINCEREL)"=="1"
copy $(_PLATFORMROOT)/$(_TGTPLAT)/target/$(_TGTCPU)/$(WINCEDEBUG)/stepldr.* $(_FLATRELEASEDIR)
!ENDIF
!ENDIF

source文件:定义编译类型,文件名
TARGETNAME=stepldr
TARGETTYPE=PROGRAM
RELEASETYPE=PLATFORM
EXEENTRY=StartUp
NOMIPS16CODE=1
LDEFINES=-subsystem:native /DEBUG /DEBUGTYPE:CV /FIXED:NO
CDEFINES=$(CDEFINES) -DPAGESIZE2K
TARGETLIBS=$(_COMMONOAKROOT)/lib/$(_CPUINDPATH)/fulllibc.lib
SOURCES=startup.s /
main.c /
nand.c /
utils.c
WINCETARGETFILES=stepldr_romimage

stepldr.bib文件:
MEMORY
; Name Start Size Type
; ------- -------- -------- ----
STEPLDR 00000000 00001000 RAMIMAGE
STACK 33ff5800 00001000 RESERVED
RAM 33ff0000 00001000 RAM
CONFIG
COMPRESSION=ON
PROFILE=OFF
KERNELFIXUPS=ON
ROMSTART=00000000
ROMWIDTH=32
ROMSIZE=00001000
MODULES
; Name Path Memory Type
; ---------- -------------------------------------------------------------- -----------
nk.exe $(_TARGETPLATROOT)/target/$(_TGTCPU)/$(WINCEDEBUG)/stepldr.exe STEPLDR

Trimnb0.scr文件:这个文件做什么用的?
rcx
1000

w 1100
q
这个问题很多人都碰到过。
因为编译stepldr(nboot)的时候,很多人用的是ADS。用pb5.0去编的比较少。
如果用三星官方2440BSP for WinCE 5.0的话,
ROMSIZE=00003000
导致编译出来的stepldr.nb0是12K,烧录之后是无法使用的。

后来请教别人之后,才知道要把 ROMSIZE 改为ROMSIZE=00001000,就会生成三个stepldr.nbx。
使用stepldr.nb1即可。

给出的解释是,由于pb5.0编译器的原因导致12K的stepldr前4K和后4K是空的,证据是你用一个二进制文件查看工具去看看。深层次的原因,我也不清楚,大家都是这么用的。
简单的说就是PB自带的ARM编译器没有做到足够好,无法编译出4K以下的bin文件,使用ADS就没问题。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值