只生成了eboot.bin,查看build.log,错误如下:
BUILD: [01:0000000144:INFO ] Writing E:\WINCE600\platform\SMDK6410\target\ARMV4I\retail\EBOOT.bin
BUILD: [01:0000000145:INFO ] Table of contents 80071ed8 00000020 ( 32)
BUILD: [01:0000000146:INFO ] Writing ROM signature and TOC pointer at 80030040
BUILD: [01:0000000147:INFO ] Kernel data copy section 80071ef8 00000010 ( 16)
BUILD: [01:0000000148:INFO ] ROM Header 80071e84 00000054 ( 84)
BUILD: [01:0000000149:INFO ] First DLL Address: 4001c001
BUILD: [01:0000000150:INFO ] Last DLL Address: 4001c001
BUILD: [01:0000000151:INFO ] Physical Start Address: 80030000
BUILD: [01:0000000152:INFO ] Physical End Address: 80071f08
BUILD: [01:0000000153:INFO ] Start RAM: 800b0000
BUILD: [01:0000000154:INFO ] Start of free RAM: 8028e000
BUILD: [01:0000000155:INFO ] End of RAM: 800c0000
BUILD: [01:0000000156:INFO ] Number of Modules: 1
BUILD: [01:0000000157:INFO ] Number of Copy Sections: 1
BUILD: [01:0000000158:INFO ] Copy Section Offset: 80071ef8
BUILD: [01:0000000159:INFO ] FileSys 4K Chunks/Mbyte: 128 <2Mbyte 128 2-4Mbyte 0 4-6Mbyte 0 >6Mbyte
BUILD: [01:0000000160:INFO ] CPU Type: 01c2h
BUILD: [01:0000000161:INFO ] Miscellaneous Flags: 0002h
BUILD: [01:0000000162:INFO ] Total ROM size: 00041f08 ( 270088)
BUILD: [01:0000000163:INFO ] Error: Ram free start is after ram end.Fatal error hit, exiting...
正确编译能够生产eboot.nb0的log如下:
0000000144:INFO ] Writing E:\WINCE600\platform\SMDK6410\target\ARMV4I\retail\EBOOT.bin
BUILD: [01:0000000145:INFO ] Table of contents 80070e78 00000020 ( 32)
BUILD: [01:0000000146:INFO ] Writing ROM signature and TOC pointer at 80030040
BUILD: [01:0000000147:INFO ] Kernel data copy section 8006ffe4 00000010 ( 16)
BUILD: [01:0000000148:INFO ] ROM Header 80070e24 00000054 ( 84)
BUILD: [01:0000000149:INFO ] First DLL Address: 4001c001
BUILD: [01:0000000150:INFO ] Last DLL Address: 4001c001
BUILD: [01:0000000151:INFO ] Physical Start Address: 80030000
BUILD: [01:0000000152:INFO ] Physical End Address: 80070e98
BUILD: [01:0000000153:INFO ] Start RAM: 800b0000
BUILD: [01:0000000154:INFO ] Start of free RAM: 800b8000
BUILD: [01:0000000155:INFO ] End of RAM: 800c0000
BUILD: [01:0000000156:INFO ] Number of Modules: 1
BUILD: [01:0000000157:INFO ] Number of Copy Sections: 1
BUILD: [01:0000000158:INFO ] Copy Section Offset: 8006ffe4
BUILD: [01:0000000159:INFO ] FileSys 4K Chunks/Mbyte: 128 <2Mbyte 128 2-4Mbyte 0 4-6Mbyte 0 >6Mbyte
BUILD: [01:0000000160:INFO ] CPU Type: 01c2h
BUILD: [01:0000000161:INFO ] Miscellaneous Flags: 0002h
BUILD: [01:0000000162:INFO ] Total ROM size: 00040e98 ( 265880)
BUILD: [01:0000000163:INFO ] Starting ip: 80063cc8
BUILD: [01:0000000164:INFO ] Raw files size: 00000000
BUILD: [01:0000000165:INFO ] Compressed files size: 00000000
BUILD: [01:0000000166:INFO ] Compacting bin file...
BUILD: [01:0000000167:INFO ] Writing sre file...
BUILD: [01:0000000168:INFO ] Writing rom file...
BUILD: [01:0000000169:INFO ] Start 80030000 Len 00000004
BUILD: [01:0000000170:INFO ] Start 80030040 Len 00000008
BUILD: [01:0000000171:INFO ] Start 80030048 Len 00000004
BUILD: [01:0000000172:INFO ] Start 80031000 Len 0003fe24
BUILD: [01:0000000173:INFO ] Start 80070e24 Len 00000054
BUILD: [01:0000000174:INFO ] Start 80070e78 Len 00000020
BUILD: [01:0000000175:INFO ] Creating rom file E:\WINCE600\platform\SMDK6410\target\ARMV4I\retail\EBOOT.nb0
BUILD: [01:0000000176:INFO ] Done!
请问Start of free RAM是怎么确定的?我忘了修改了什么文件就变成这样了。。。
检查Eboot.bib文件吧,文件名不一定是eboot.bib,反正就是定义Eboot分布的文件,后缀bib
检查你的eboot下的bib文件,我觉得是你的bib设置的nb0文件大小比实际编译出来的要小,所以造成,打包失败。
BUILD: [01:0000000153:INFO ] Start RAM: 800b0000
BUILD: [01:0000000154:INFO ] Start of free RAM: 8028e000
BUILD: [01:0000000155:INFO ] End of RAM: 800c0000
明显有错误.
Error: Ram free start is after ram end.Fatal error hit, exiting...
这句话不是提示你RAM的起始地址在RAM的结束地址之后了,哪来的指定nb0的大小比实际编译的要小的问题?
引用: 引用 4 楼 hzdysymbol 的回复:
Error: Ram free start is after ram end.Fatal error hit, exiting...
这句话不是提示你RAM的起始地址在RAM的结束地址之后了,哪来的指定nb0的大小比实际编译的要小的问题?
楼主贴出bib文件来看看吧。哈哈。
eboot.bib:
PTS 80000000 00020000 RESERVED ; Page Table : 128 KB
ARGS 80020800 00000800 RESERVED ; BSP Args : 2 KB
EBOOT 80030000 00080000 RAMIMAGE ; Eboot Image : 512 KB
RAM 800B0000 00010000 RAM ; RAM : 64 KB
BINFS 800C0000 00030000 RESERVED ; Bin FS : 192 KB
STACK 800FC000 00004000 RESERVED ; Stack : 16 KB (sharing with Step Loader)
FLSCACHE 80100000 02F00000 RESERVED
USB_BUF 83000000 03000000 RESERVED
DISPLAY 87000000 01000000 RESERVED
CONFIG
COMPRESSION=OFF
PROFILE=OFF
KERNELFIXUPS=ON
SRE=ON
ROMSTART = 80030000
ROMWIDTH = 32
ROMSIZE = 00080000
MODULES
; Name Path Memory Type
; -------------- ---------------------------------------------- -----------
nk.exe $(_TARGETPLATROOT)\target\$(_TGTCPU)\$(WINCEDEBUG)\eboot.exe EBOOT
我想知道start of mem是怎么确定的,我开始还可以编的,后来忘了改了哪几个文件就不行了,早知道用git了,郁闷。。。
大家谁知道start of mem怎么确定的??我急死了。。。
看这样子不是Eboot.bib出问题了,而是你的代码里面有问题
不过你可以改大RAM试一试
RAM 80100000 00300000 RAM ;
不过要注意你现在RAM的起始地址为80100000
找到原因了,是我在屏的驱动中用了个大数组作为全局变量,导致eboot的bss段过大造成。
引用: 引用 8 楼 hzdysymbol 的回复:
看这样子不是Eboot.bib出问题了,而是你的代码里面有问题
不过你可以改大RAM试一试
RAM 80100000 00300000 RAM ;
不过要注意你现在RAM的起始地址为80100000
BUILD: [01:0000000153:INFO ] Start RAM: 800b0000
BUILD: [01:0000000154:INFO ] Start of free RAM: 8028e000
BUILD: [01:0000000155:INFO ] End of RAM: 800c0000
为什么现在的RAM的起始地址变为80100000了呢