cpu:at91rm9200
加载u-boot后,用ads来单步调试我的裸机程序,发现0x00000000地址如下:
00000000 [0xea000007] b 0x24 00000004 [0xeafffffe] b 0x4 00000008 [0xeafffffe] b 0x8 0000000c [0xeafffffe] b 0xc 00000010 [0xeafffffe] b 0x10 00000014 [0xeafffffe] b 0x14 00000018 [0xe51fff20] ldr pc,0xfffff100 ; = #0x00200218 0000001c [0xeafffffe] b 0x1c 00000020 [0x00105448] andeqs r5,r0,r8,asr #8 00000024 [0xe59f1130] ldr r1,0x0000015c ; = #0xfffffc00 00000028 [0xe3e00000] mvn r0,#0 0000002c [0xe5810064] str r0,[r1,#0x64] 00000030 [0xe3e00001] mvn r0,#1 00000034 [0xe5810004] str r0,[r1,#4] 00000038 [0xe3e00000] mvn r0,#0 0000003c [0xe5810014] str r0,[r1,#0x14] 00000040 [0xe3a00000] mov r0,#0 00000044 [0xe5810030] str r0,[r1,#0x30] 00000048 [0xe3a00001] mov r0,#1 0000004c [0xe5810000] str r0,[r1,#0] 00000050 [0xe59f0108] ldr r0,0x00000160 ; = #0x0000ff01
而0x20000000的内容如下: __ENTRY [0xea000009] b InitReset undefvec [0xeafffffe] b undefvec swivec [0xe59ff010] ldr pc,SWI_Addr ; = #SWI_Addr pabtvec [0xe59ff010] ldr pc,PrefetchAddr ; = #PrefetchAddr dabtvec [0xe59ff010] ldr pc,DataAbortAddr ; = #DataAbortAddr rsvdvec [0xeafffffe] b rsvdvec irqvec [0xe51fff20] ldr pc,0x1ffff100 ; = #0xffffffff fiqvec [0xeafffffe] b fiqvec SWI_Addr [0x20007860] dcd 0x20007860 `x. PrefetchAddr [0x200000e8] dcd 0x200000e8 ... DataAbortAddr [0x200000ec] dcd 0x200000ec ... InitReset [0xe59f10dc] ldr r1,0x20000110 ; = #0x20008514 20000030 [0xe3c11003] bic r1,r1,#3 20000034 [0xe1a0d001] mov r13,r1 20000038 [0xe59f00d4] ldr r0,0x20000114 ; = #0x2000448c 2000003c [0xe1a0e00f] mov r14,pc 20000040 [0xe12fff10] bx r0 20000044 [0xe28f004c] add r0,pc,#0x4c ; #0x20000098 20000048 [0xe890007e] ldmia r0,{r1-r6} 2000004c [0xe321f0d3] msr cpsr_c,#0xd3 20000050 [0xe3c11003] bic r1,r1,#3
按理说0x00000000地址的内容应该和0x20000000的内容相匹配才是,请问是哪里不对呢,我应该从哪里着手?
|