导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→救救小弟。Keil arm汇编代码第一跳指令显示是LDR  [Bdv20]

 *第44956篇: 救救小弟。Keil arm汇编代码第一跳指令显示是LDR R4, [PC,0x00000018]

  
楼 主:Bdv20 2006年12月8日14:56
 救救小弟。Keil arm汇编代码第一跳指令显示是LDR     R4, [PC,0x00000018]
第一次用Keil ARM 和Ulink,cpu 是lpc2136。用的是keil自动生成的startup.s,调试的时候不能跳到Reset_Addr,单步运行8次后跳到FFFFFFFF,死掉了。启动代码是:
Vectors         LDR     PC, Reset_Addr         
                LDR     PC, Undef_Addr
                LDR     PC, SWI_Addr
                LDR     PC, PAbt_Addr
                LDR     PC, DAbt_Addr
                NOP                            ; Reserved Vector 
;               LDR     PC, IRQ_Addr
                LDR     PC, [PC, #-0x0FF0]     ; Vector from VicVectAddr
                LDR     PC, FIQ_Addr
可是调试的汇编代码却是:
232: Vectors         LDR     PC, Reset_Addr          
0x00000000  E59F4034  LDR       R4,[PC,#0x0034]
   233:                 LDR     PC, Undef_Addr 
0x00000004  E3A05002  MOV       R5,#0x00000002
   234:                 LDR     PC, SWI_Addr 
0x00000008  E5845000  STR       R5,[R4]
   235:                 LDR     PC, PAbt_Addr 
0x0000000C  E3A05003  MOV       R5,#0x00000003
   236:                 LDR     PC, DAbt_Addr 
0x00000010  E5845004  STR       R5,[R4,#0x0004]
   237:                 NOP                            ; Reserved Vector  
   238: ;               LDR     PC, IRQ_Addr 
0x00000014  E59F201C  LDR       R2,[PC,#0x001C]
   239:                 LDR     PC, [PC, #-0x0FF0]     ; Vector from VicVectAddr 
0x00000018  E3A03000  MOV       R3,#0x00000000
   240:                 LDR     PC, FIQ_Addr 

0地址的第一条为什么不是PC,而是R4? 
而且单步一直运行到了0x00000018,接着就死了。为什么?


  
2楼:哈佛 2006年12月17日23:54
 初始化向量表有问题吧
Vectors         LDR     PC, Reset_Addr         
                LDR     PC, Undef_Addr
                LDR     PC, SWI_Addr
                LDR     PC, PAbt_Addr
                LDR     PC, DAbt_Addr
                NOP                          ; Reserved Vector 
;               LDR     PC, IRQ_Addr
                LDR     PC, [PC, #-0x0FF0]     ; Vector from VicVectAddr
                LDR     PC, FIQ_Addr

首先那里来的这两个                 LDR     PC, PAbt_Addr
                LDR     PC, DAbt_Addr

其次你的nop应该是一串数字吧,代码的检验和要为0x00000000 好像是。

  
3楼:xiangyc555 2006年12月18日09:10
 NOP   ; 不能用这样啊!!
再次不能这样用啊,应 改为 DCD 0X87654321

>>>>>>对该主题发表你的看法

本主题贴数3,分页: [第1页]


[上一篇主题]:TC35I双向数据传输业务怎么开通

[下一篇主题]:招聘维修工