stepldr编译的问题

news/2024/12/29 18:58:21 标签: makefile, 编译器, wince, include, path, 三星
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就没问题。

http://www.niftyadmin.cn/n/1403757.html

相关文章

【递归】 之 逆波兰表达式

问题描述 逆波兰表达式是一种把运算符前置的算术表达式&#xff0c;例如普通的表达式2 3的逆波兰表示法为 2 3。逆波兰表达式的优点是运算符之间不必有优先级关系&#xff0c;也不必用括号改变运算次序&#xff0c;例如(2 3) * 4的逆波兰表示法为* 2 3 4。本题求解逆波兰表达…

接口技术的基本知识

CPU与外部设备、存储器的连接和数据交换都需要通过接口设备来实现&#xff0c;前者被称为I/O接口&#xff0c;而后者则被称为存储器接口。存储器通常在CPU的同步控制下工作&#xff0c;接口电路比较简单&#xff1b;而I/O设备品种繁多&#xff0c;其相应的接口电路也各不相同&a…

WinCE5.0 BSP BOOTLOADER开发详解-生成bin和nb0

一&#xff0c;生成EBOOT.exe 1&#xff0c;在D:/WINCE500/PLATFORM/Sun2410/SRC/BOOTLOADER/EBOOT目录下&#xff0c;建立名为Startup.s的汇编文件。 源代码如下&#xff1a; OPT 2 INCLUDE kxarm.h OPT 1 OPT 128 STARTUPTEXT LEAF_ENTRY StartUp nop EN…

【动态规划】 之 动态规划解题的一般思路

许多求最优解的问题可以用动态规划来解决。用动态规划解题&#xff0c;首先要把原问题分解为若干个子问题&#xff0c;这一点和前面的递归方法类似。区别在于&#xff0c;单纯的递归往往会导致子问题被重复计算&#xff0c;而用动态规划的方法&#xff0c;子问题的解一旦求出就…

转载——bootloader 开发,最郁闷前三步

在书市和网上溜达一圈&#xff0c;只发现两本关于Bootloader的开发资料。一个是电子工业出版社出版的《Windows CE.NET实用开发技术》&#xff1b;另一个是PB的HELP文件。其他大多为介绍Bootloader相关知识的&#xff0c;最多也就是修改一下官方的Bootloader源码。 觉得没什么…

算法总结——大整数加法

问题描述 求两个不超过200位的非负整数的和。输入数据有两行&#xff0c;每行是一个不超过200位的非负整数&#xff0c;没有多余的前导0。输出要求一行&#xff0c;即相加后的结果。结果里不能有多余的前导0&#xff0c;即如果结果是342&#xff0c;那么就不能输出为0342。 输…

WinCE虚拟串口驱动(一)

// //TITLE: // WinCE虚拟串口驱动(一) //AUTHOR: // norains //DATE: // Saturday 28-March-2009 //Environment: // WINDOWS CE 5.0 // 用过串口进行开发的朋友应该都知道&#xff0c;串口驱动是一个典型的独占设备。简单点来说&#xff0c;就是在成…

WinCE虚拟串口驱动(二)

// //TITLE: // WinCE虚拟串口驱动(二) //AUTHOR: // norains //DATE: // Saturday 28-March-2009 //Environment: // WINDOWS CE 5.0 // 虚拟串口驱动的完整代码如下&#xff1a; view plaincopy to clipboardprint?// VirtualSerial.cpp : Defines…