5862|15

73

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

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

最新回复

mark  详情 回复 发表于 2009-7-23 17:29
点赞 关注

回复
举报

83

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
ROMSIZE=00001000 -------------太小了吧,这是NK的大小,你弄成4k 不这样才怪,把这个ROMSIZE变成30M试试。
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
老大,stepldr本来就是4k的。。。
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

4
 
引用 2 楼 Seven_zhangxw 的回复:
老大,stepldr本来就是4k的。。。


看错了,我的正常啊,是不是你的BSP有什么问题?我发个我的配置给你看看。哈哈
我已经移植成功到标准5.0下面了。
==================================================================
MEMORY
;   Name      Start     Size      Type
;   -------   --------  --------  ----
    STEPLDR   00000000  00003000  RAMIMAGE
    STACK     33ff5800  00001000  RESERVED
    RAM       33ff0000  00001000  RAM

CONFIG
        COMPRESSION=ON
        PROFILE=OFF
        KERNELFIXUPS=ON
   
        ROMSTART=00000000
        ROMWIDTH=32
        ROMSIZE=00003000----------看来是你搞错了,我这个编译出来正常啊,不过我不用这种PB下的BIOS的,我用ADS
MODULES
;   Name        Path                                                               Memory Type
;   ----------  --------------------------------------------------------------     -----------
    nk.exe      $(_TARGETPLATROOT)\target\$(_TGTCPU)\$(WINCEDEBUG)\stepldr.exe     STEPLDR
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

5
 
引用 2 楼 Seven_zhangxw 的回复:
老大,stepldr本来就是4k的。。。


你的BSP是哪里的,?立宇泰的?我是直接三星官网的,未经任何板商修改,我自己把他修改了一番,现在就剩下触摸屏不准了。
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

6
 
这个问题很多人都碰到过。
因为编译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是空的,证据是你用一个二进制文件查看工具去看看。深层次的原因,我也不清楚,大家都是这么用的。
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

7
 
引用 4 楼 gooogleman 的回复:
引用 2 楼 Seven_zhangxw 的回复:
老大,stepldr本来就是4k的。。。


你的BSP是哪里的,?立宇泰的?我是直接三星官网的,未经任何板商修改,我自己把他修改了一番,现在就剩下触摸屏不准了。



哈哈哈,我这个BSP是非常非常正点的三星官方的。。。

 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

8
 
引用 5 楼 lijinyan3000 的回复:
......
后来请教别人之后,才知道要把 ROMSIZE 改为ROMSIZE=00001000,就会生成三个stepldr.nbx。
使用stepldr.nb1即可。

给出的解释是,由于pb5.0编译器的原因导致12K的stepldr前4K和…


对,我就想知道这个深层次的原因。。
我就想知道为什么会生成这么奇怪的东西,而eboot,它就是eboot.nb0,没有使用eboot.nb1...为什么呢?为什么?
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

9
 
简单的说就是PB自带的ARM编译器没有做到足够好,无法编译出4K以下的bin文件,使用ADS就没问题。
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

10
 
引用 5 楼 lijinyan3000 的回复:
这个问题很多人都碰到过。
因为编译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和…


-------------------good!我觉得用ADS写比较灵活,固化到flash只要用个仿真器就可以了,非常方便。
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

11
 
引用 8 楼 yashi 的回复:
简单的说就是PB自带的ARM编译器没有做到足够好,无法编译出4K以下的bin文件,使用ADS就没问题。


应该说PB的ARM编译器无法正确编译出4K以下的nbx文件吧,我编译出来的stepldr.nb0是12k,stepldr.bin是3K,但是是不能直接写到Flash的,因为bin文件有特定的格式,必须用eboot烧写。可以先用ADS编译出来的nboot启动eboot,然后用eboot烧写stepldr.bin。烧写后重启,就是用stepldr启动eboot了。
有点郁闷吧,哈哈~
我之前用了几个版本的nboot,很多都没有实现唤醒功能,但是三星官方BSP的stepldr有,所以就用这种方式烧写了stepldr,哈哈。
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

12
 
引用 10 楼 xy1001 的回复:
引用 8 楼 yashi 的回复:
简单的说就是PB自带的ARM编译器没有做到足够好,无法编译出4K以下的bin文件,使用ADS就没问题。


应该说PB的ARM编译器无法正确编译出4K以下的nbx文件吧,我编译出来的stepldr.nb0是12k,stepldr.bin是3K,但是是不能直接写到Flash的,因为bin文件有特定的格式,必须用eboot烧写。可以先用ADS编译出来的nboot启动eboot,然后用eboot烧写stepldr.bin。烧写后重启,就是用stepldr启动eboot了。
有…


其实我就不用stepldr.nb0,我就用ADS写的BIOS加个图片600K,照样启动,还要搞个4K的什么东西,麻烦,我用仿真器直接可以固化到flash了,多爽。用ADSL开发比PB容易多了。
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

13
 
你用的是NOR Flash吧?stepldr是给NAND Flash用的。
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

14
 
MARK,这个帖子受益,跟帖!
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

15
 
顶一个先!!!
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

16
 
mark
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表