1、生成的Uboot.bin直接下载到内存0x33F80000处运行正常。
2、复制NandFlash中的Uboot到0x33F80000处,Start.S中的校验前4K数据正常通过。但后面执行第二阶段跳转到C函数时,死机了,不响应。
3、如果在“复制NandFlash中的Uboot到0x33F80000处,Start.S中的校验前4K数据正常通过”后加一上动作,加一个调用在Nand_read.c中实现的函数,将0x33F80000开始的数据向前移动64字节,后面到执行第二阶段时就正常了。
郁闷的是这64字节是什么回事。校验4K数据都OK了,为什么到后面跳第二阶段不行,内存向前移动64字节就可以了。
是我错了,在NandFlash复制里的ldr r1, _TEXT_BASE 写成 ldr r1, =_TEXT_BASE, 正确的是要ldr r1,=0x33F80000,而_TEXT_BASE是 0x33f80040 ,刚好64字节
.text 0x33f80000 0x540 arch/arm/cpu/arm920t/start.o
0x33f80000 _start
0x33f80040 _TEXT_BASE
[ 此帖被czf288在2013-12-04 16:12重新编辑 ]