我正在学习bootloader,
想自己改写个eboot试试。
可是生成的eboot.nb0大小为256k,实验箱原来的是88k。
256k的可以烧进去但是启动后没有反应,
谁知道为什么写进去了,却没反应么?
顺便问下,怎么才能让eboot.nb0大小缩小到88k啊
修改boot.bib文件。那个里边控制你代码的最大长度。
但是如果你的代码太多超过你设定的长度,就会产生eboot.nb0 eboot.nb1....
具体boot.bib怎么修改 看看就知道了,或者找点资料
“实验箱原来的是88k”是什么意思?原来的eboot是88K?那可能是eboot.bin,而不是eboot.nb0。
该代码自然能减小eboot.bin的大小。而eboot.nb0的大小是要在eboot.bib里修改的
EBOOT 80020000 00040000 RAMIMAGE; 这个00040000就表示256KB,改成你希望的即可。不过能保证你的代码编译后小于88KB吗?
引用: 引用 2 楼 liaifeilove 的回复:
修改boot.bib文件。那个里边控制你代码的最大长度。
但是如果你的代码太多超过你设定的长度,就会产生eboot.nb0 eboot.nb1....
具体boot.bib怎么修改 看看就知道了,或者找点资料
是的,我遇到这种情况了
现在我最想知道的是256k的eboot.nb0为什么写进去不对呢?
而他们提供的88k的就行
引用: 引用 4 楼 shuiyan 的回复:
“实验箱原来的是88k”是什么意思?原来的eboot是88K?那可能是eboot.bin,而不是eboot.nb0。
该代码自然能减小eboot.bin的大小。而eboot.nb0的大小是要在eboot.bib里修改的
EBOOT 80020000 00040000 RAMIMAGE; 这个00040000就表示256KB,改成你希望的即可。不过能保证你的代码编译后小于88KB吗?
就是说我用的UP-NETARM2410-S实验箱,
他们提供“烧写bootloader实验”中给了个88KB的eboot.nb0
你烧写在什么地方?烧写在NandFlash中是不能直接执行的,还要用Nboot引导Eboot。Nboot烧在block0,Eboot烧在block2(具体要看你Nboot里的定义)
将EBOOT直接存储在NOR Flash中,此时必须在EBOOT的代码中实现自加载的过程,即将NOR Flash中的EBOOT全部加载到RAM中,并执行。
; Copy boot loader to memory
ands r9, pc, #0xFF000000 ; see if we are in flash or in ram
bne %f20 ; go ahead if we are already in ram
; This is the loop that perform copying.
ldr r0, = 0x21000 ; offset into the RAM
add r0, r0, #PHYBASE ; add physical base
mov r1, r0 ; (r1) copy destination
ldr r2, =0x0 ; (r2) flash started at physical address 0
ldr r3, =0x10000 ; counter (0x40000/4)
10 ldr r4, [r2], #4
str r4, [r1], #4
subs r3, r3, #1
bne %b10
; Restart from the RAM position after copying.
mov pc, r0
nop
nop
nop
; Shouldn't get here.
b