|
向MCU高手请教:
原汇编程序
;/*汇编语言部分程序设计*/
REG_EXT0CON EQU 0xFFF01018
EBI_EXT0_VALUE EQU 0xF0078003
AREA Vect, CODE, READONLY
ENTRY ;定义汇编程序的入口点
;异常向量表
B Reset_Handler
B Undefined_Handler
B SWI_Handler
B Prefetch_Handler
B Abort_Handler
B .
B IRQ_Handler
B FIQ_Handler
Undefined_Handler
B .
SWI_Handler
B .
Prefetch_Handler
B .
Abort_Handler
B .
IRQ_Handler
B .
FIQ_Handler
B .
Reset_Handler
LDR R1,=REG_EXT0CON
LDR R0,=EBI_EXT0_VALUE ;外部IO空间初始化
STR R0,[R1]
LDR SP, =8100 ;堆栈地址
IMPORT __main
B __main ; 跳转到main()函数处的C语言主程序
END
反汇编的一部分
00000000 [0xea00000c] b Reset_Handler
00000004 [0xea000005] b Undefined_Handler
00000008 [0xea000005] b SWI_Handler
0000000c [0xea000005] b Prefetch_Handler
00000010 [0xea000005] b Abort_Handler
00000014 [0xeafffffe] b 0x14
00000018 [0xea000004] b IRQ_Handler
0000001c [0xea000004] b FIQ_Handler
Undefined_Handler [0xeafffffe] b Undefined_Handler
SWI_Handler [0xeafffffe] b SWI_Handler
Prefetch_Handler [0xeafffffe] b Prefetch_Handler
Abort_Handler [0xeafffffe] b Abort_Handler
IRQ_Handler [0xeafffffe] b IRQ_Handler
FIQ_Handler [0xeafffffe] b FIQ_Handler
Reset_Handler [0xe59f100c] ldr r1,0x0000004c ; = #0xfff01018
0000003c [0xe59f000c] ldr r0,0x00000050 ; = #0xf0078003
00000040 [0xe5810000] str r0,[r1,#0]
00000044 [0xe59fd008] ldr r13,0x00000054 ; = #0x00001fa4
00000048 [0xea000002] b __main
0000004c [0xfff01018] dcd 0xfff01018 ....
00000050 [0xf0078003] dcd 0xf0078003 ....
00000054 [0x00001fa4] dcd 0x00001fa4 ....
__main [0xe28f8090] add r8,pc,#0x90 ; #0xf0
0000005c [0xe898000f] ldmia r8,{r0-r3}
00000060 [0xe0800008] add r0,r0,r8
00000064 [0xe0811008] add r1,r1,r8
00000068 [0xe0822008] add r2,r2,r8
初学arm,现在的情况是:软件调试,程序正常进入C语言main函数,但是用H-JTAG调试,第一句00000000 [0xea00000c] b Reset_Handler就进入不了Reset_Handler [0xe59f100c] ldr r1,0x0000004c ; = #0xfff01018,不知道怎么回事,向高手请教,这是什么原因,JTAG调试另外一个简单程序是可行的!
|
|