晕死
copy_proc_beg
adr r0, ResetEntry
ldr r2, BaseOfROM
经过我测试发现执行了adr r0, ResetEntry这句r0的内容果然是0x30000000,为什么程序执行完nand_boot_beg段后会这样哦
nand_boot_beg
;adr r0,ResetEntry
;ldr r1,=Entry
;str r0,[r1]
mov r5, #NFCONF
;set timing value
ldr r0, =(7<<12)|(7<<8)|(7<<4)
str r0, [r5]
;enable control
ldr r0, =(0<<13)|(0<<12)|(0<<10)|(0<<9)|(0<<8)|(1<<6)|(1<<5)|(1<<4)|(1<<1)|(1<<0)
str r0, [r5, #4]
bl ReadNandID
mov r6, #0
ldr r0, =0xec73
cmp r5, r0
beq %F1
ldr r0, =0xec75
cmp r5, r0
beq %F1
mov r6, #1
1
bl ReadNandStatus
mov r8, #0 ldr r9, =ResetEntry;
2 ands r0, r8, #0x1f
bne %F3
mov r0, r8
bl CheckBadBlk
cmp r0, #0
addne r8, r8, #32
bne %F4
3
mov r0, r8
mov r1, r9
bl ReadNandPage
add r9, r9, #512
add r8, r8, #1
4
cmp r8, #5120
bcc %B2
mov r5, #NFCONF ;DsNandFlash
ldr r0, [r5, #4]
bic r0, r0, #1
str r0, [r5, #4]
ldr pc, =copy_proc_beg
;===========================================================
copy_proc_beg
adr r0, ResetEntry
0 cmp r0,#0x30000000 ;这两行是测试用r0的值用的
beq %B0 ;这两行是测试用r0的值用的
ldr r2, BaseOfROM