ldr r0,=_TEXT_BASE
ldr r1,=0x0
mov r2,#0x20000
bl read_nand_ll
tst r0,#0x0
beq testequ
lll: b lll
testequ:
ldr r0,=_TEXT_BASE
ldr r1,=0x0
mov r2,#0x800
testp:ldr r3,[r1],#4
ldr r4,[r0],#4
teq r3,r4
bne notmatch
subs r2,r2,#4
beq done
bne testp
notmatch:
ldr r0,=LEDCON
mov r1,#0x15400
str r1,[r0]
ldr r0,=LEDDAT
mov r1,#0xef
str r1,[r0]
here: b here
done:ldr r0,=LEDCON
mov r1,#0x15400
str r1,[r0]
ldr r0,=LEDDAT
mov r1,#0x0
str r1,[r0]
abc: b abc
版主我的意思是这个,当我把0x20000这么大128k代码拷到sdram中的时候,用来比较0x800内(2k大小)这样的话数据是没错的,led灯也全亮了(证明进入了done里面)。而当我比较0x1000(4k大小)的时候灯亮了一个,进入了notmatch里面,说明2k到4k的数据有不相同的,只有0-2k的数据是相同的。在read_nand_ll里面我是按照128m的那种操作来的,和大家用的一样。因为大家用的是0x400比较,这个在0-2k里面没有超过一页,所以验证不出来问题。不知道版主有没有验证过2k之后的数据是不是一样?