初学者提问!关于arm中断向量表问题

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

重新将0x20000000的代码写入0x0的flash中,在查看一下

  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

21

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部