LDR PC, # 不会跳转,而是顺序执行下一行的问题?

[复制链接]
8949|10
 楼主| 云痕 发表于 2008-7-11 10:22 | 显示全部楼层 |阅读模式
pc, AC, ST, ck, Stack
我用的ADS1.2+&nbsp;H-JTAG调试的LPC2364,AXD仿真的时候,<br />Vectors&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PC,&nbsp;Reset_Addr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PC,&nbsp;Undef_Addr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;4<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PC,&nbsp;SWI_Addr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;8<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PC,&nbsp;PAbt_Addr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;c<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PC,&nbsp;DAbt_Addr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;10<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NOP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;14&nbsp;Reserved&nbsp;Vector&nbsp;<br /><br />从Vectors行开始单步执行,LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PC,&nbsp;Reset_Addr&nbsp;执行之后不是跳转,而是顺序执行LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PC,&nbsp;Undef_Addr,后面也全部相同,从Regisers窗口观察Current里的pc值,和指令相对应,00&gt04&gt08&gt0c。之前还有遇到就是进入main()后,一部分函数执行完毕后,继续执行剩下的函数,结果到函数返回的‘}’后,有时候跳到数据或指令异常,或跳到main()后紧跟的那个'{'行首,感觉很怪异,想不出什么解决办法,感觉和启动代码,或者scatter文件相关。<br />启动代码:<br />&nbsp;&nbsp;&nbsp;&nbsp;PRESERVE8<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />;&nbsp;Standard&nbsp;definitions&nbsp;of&nbsp;Mode&nbsp;bits&nbsp;and&nbsp;Interrupt&nbsp;(I&nbsp;&&nbsp;F)&nbsp;flags&nbsp;in&nbsp;PSRs<br /><br />Mode_USR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x10<br />Mode_FIQ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x11<br />Mode_IRQ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x12<br />Mode_SVC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x13<br />Mode_ABT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x17<br />Mode_UND&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x1B<br />Mode_SYS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x1F<br /><br />I_Bit&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x80&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;when&nbsp;I&nbsp;bit&nbsp;is&nbsp;set,&nbsp;IRQ&nbsp;is&nbsp;disabled<br />F_Bit&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x40&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;when&nbsp;F&nbsp;bit&nbsp;is&nbsp;set,&nbsp;FIQ&nbsp;is&nbsp;disabled<br /><br />;//&nbsp;&lth&gt&nbsp;Stack&nbsp;Configuration&nbsp;(Stack&nbsp;Sizes&nbsp;in&nbsp;Bytes)<br />;//&nbsp;&nbsp;&nbsp;&lto0&gt&nbsp;Undefined&nbsp;Mode&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt0x0-0xFFFFFFFF:8&gt<br />;//&nbsp;&nbsp;&nbsp;&lto1&gt&nbsp;Supervisor&nbsp;Mode&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt0x0-0xFFFFFFFF:8&gt<br />;//&nbsp;&nbsp;&nbsp;&lto2&gt&nbsp;Abort&nbsp;Mode&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt0x0-0xFFFFFFFF:8&gt<br />;//&nbsp;&nbsp;&nbsp;&lto3&gt&nbsp;Fast&nbsp;Interrupt&nbsp;Mode&nbsp;&lt0x0-0xFFFFFFFF:8&gt<br />;//&nbsp;&nbsp;&nbsp;&lto4&gt&nbsp;Interrupt&nbsp;Mode&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt0x0-0xFFFFFFFF:8&gt<br />;//&nbsp;&nbsp;&nbsp;&lto5&gt&nbsp;User/System&nbsp;Mode&nbsp;&nbsp;&nbsp;&nbsp;&lt0x0-0xFFFFFFFF:8&gt&nbsp;<br />;//&nbsp;&lt/h&gt<br /><br />;定义堆栈的大小,最终工作在系统模式,栈名StackUsr,只给了起始位置,未指定大小<br />SVC_STACK_LEGTH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;单位为字<br />FIQ_STACK_LEGTH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0<br />IRQ_STACK_LEGTH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;512<br />ABT_STACK_LEGTH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0<br />UND_STACK_LEGTH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0<br /><br />;USR_STACK_LEGTH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1024&nbsp;&nbsp;;设定用户模式栈<br /><br />Heap_Size&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1024<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;IMPORT&nbsp;__use_no_semihosting_swi<br />&nbsp;&nbsp;&nbsp;&nbsp;IMPORT&nbsp;__use_two_region_memory<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;IMPORT&nbsp;&nbsp;&nbsp;&nbsp;TargetResetInit<br />&nbsp;&nbsp;&nbsp;&nbsp;IMPORT&nbsp;&nbsp;FIQ_Exception<br />&nbsp;&nbsp;&nbsp;&nbsp;IMPORT&nbsp;&nbsp;__main<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />;The&nbsp;emported&nbsp;labels<br />;给外部使用的标号在这声明<br />;&nbsp;&nbsp;&nbsp;&nbsp;EXPORT&nbsp;&nbsp;bottom_of_heap<br />&nbsp;&nbsp;&nbsp;&nbsp;EXPORT&nbsp;&nbsp;bottom_of_Stacks<br />;&nbsp;&nbsp;&nbsp;&nbsp;EXPORT&nbsp;&nbsp;top_of_heap<br />&nbsp;&nbsp;&nbsp;&nbsp;EXPORT&nbsp;&nbsp;StackUsr&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;EXPORT&nbsp;&nbsp;Reset_Handler<br />&nbsp;&nbsp;&nbsp;&nbsp;EXPORT&nbsp;__user_initial_stackheap<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />;&nbsp;Area&nbsp;Definition&nbsp;and&nbsp;Entry&nbsp;Point<br />;&nbsp;&nbsp;Startup&nbsp;Code&nbsp;must&nbsp;be&nbsp;linked&nbsp;first&nbsp;at&nbsp;Address&nbsp;at&nbsp;which&nbsp;it&nbsp;expects&nbsp;to&nbsp;run.<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CODE32<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AREA&nbsp;&nbsp;&nbsp;&nbsp;RESET,&nbsp;CODE,&nbsp;READONLY<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ENTRY<br /><br />;&nbsp;Exception&nbsp;Vectors<br />;&nbsp;&nbsp;Mapped&nbsp;to&nbsp;Address&nbsp;0.<br />;&nbsp;&nbsp;Absolute&nbsp;addressing&nbsp;mode&nbsp;must&nbsp;be&nbsp;used.<br />;&nbsp;&nbsp;Dummy&nbsp;Handlers&nbsp;are&nbsp;implemented&nbsp;as&nbsp;infinite&nbsp;loops&nbsp;which&nbsp;can&nbsp;be&nbsp;modified.<br /><br />Vectors&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PC,&nbsp;Reset_Addr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PC,&nbsp;Undef_Addr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;4<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PC,&nbsp;SWI_Addr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;8<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PC,&nbsp;PAbt_Addr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;c<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PC,&nbsp;DAbt_Addr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;10<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NOP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;14&nbsp;Reserved&nbsp;Vector&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PC,&nbsp;IRQ_Addr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PC,&nbsp;[PC,&nbsp;#-0x0120]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;18&nbsp;&nbsp;Vector&nbsp;from&nbsp;VicVectAddr<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PC,&nbsp;FIQ_Addr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;1c<br /><br />Reset_Addr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Reset_Handler&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;20<br />Undef_Addr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Undef_Handler&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;24<br />SWI_Addr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SWI_Handler&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;28<br />PAbt_Addr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PAbt_Handler&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;2c<br />DAbt_Addr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DAbt_Handler&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;20<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0xB9206E28&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;34&nbsp;Reserved&nbsp;Address&nbsp;<br />IRQ_Addr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IRQ_Handler&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;38<br />FIQ_Addr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FIQ_Handler&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;3c<br /><br />Undef_Handler&nbsp;&nbsp;&nbsp;B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Undef_Handler&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;40<br />SWI_Handler&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SWI_Handler&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;44<br />PAbt_Handler&nbsp;&nbsp;&nbsp;&nbsp;B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PAbt_Handler&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;48<br />DAbt_Handler&nbsp;&nbsp;&nbsp;&nbsp;B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DAbt_Handler&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;4c&nbsp;<br />IRQ_Handler&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IRQ_Handler&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;40<br />FIQ_Handler&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FIQ_Handler&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;44&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />Reset_Handler&nbsp;&nbsp;&nbsp;<br />;&nbsp;&nbsp;Enter&nbsp;Undefined&nbsp;Instruction&nbsp;Mode&nbsp;and&nbsp;set&nbsp;its&nbsp;Stack&nbsp;Pointer<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MSR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CPSR_c,&nbsp;#Mode_UND:OR:I_Bit:OR:F_Bit<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SP,&nbsp;StackUnd<br /><br />;&nbsp;&nbsp;Enter&nbsp;Abort&nbsp;Mode&nbsp;and&nbsp;set&nbsp;its&nbsp;Stack&nbsp;Pointer<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MSR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CPSR_c,&nbsp;#Mode_ABT:OR:I_Bit:OR:F_Bit<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SP,&nbsp;StackAbt<br /><br />;&nbsp;&nbsp;Enter&nbsp;FIQ&nbsp;Mode&nbsp;and&nbsp;set&nbsp;its&nbsp;Stack&nbsp;Pointer<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MSR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CPSR_c,&nbsp;#Mode_FIQ:OR:I_Bit:OR:F_Bit<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SP,&nbsp;StackFiq<br /><br />;&nbsp;&nbsp;Enter&nbsp;IRQ&nbsp;Mode&nbsp;and&nbsp;set&nbsp;its&nbsp;Stack&nbsp;Pointer<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MSR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CPSR_c,&nbsp;#Mode_IRQ:OR:I_Bit:OR:F_Bit<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SP,&nbsp;StackIrq<br /><br />;&nbsp;&nbsp;Enter&nbsp;Supervisor&nbsp;Mode&nbsp;and&nbsp;set&nbsp;its&nbsp;Stack&nbsp;Pointer<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MSR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CPSR_c,&nbsp;#Mode_SVC:OR:I_Bit:OR:F_Bit<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SP,&nbsp;StackSvc<br /><br />;&nbsp;&nbsp;Enter&nbsp;Sys&nbsp;Mode&nbsp;and&nbsp;set&nbsp;its&nbsp;Stack&nbsp;Pointer<br />;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MSR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CPSR_c,&nbsp;#Mode_SYS:OR:I_Bit:OR:F_Bit<br />;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SP,&nbsp;StackSys<br /><br />;&nbsp;&nbsp;Enter&nbsp;User&nbsp;Mode&nbsp;and&nbsp;set&nbsp;its&nbsp;Stack&nbsp;Pointer<br />;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MSR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CPSR_c,&nbsp;#Mode_USR&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MSR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CPSR_c,&nbsp;#Mode_SYS:OR:F_Bit<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SP,&nbsp;=StackUsr<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TargetResetInit&nbsp;<br />;&nbsp;Enter&nbsp;the&nbsp;C&nbsp;code<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R0,&nbsp;=__main<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BX&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R0<br />;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;__main<br /><br />;//&nbsp;&lth&gt&nbsp;Heap&nbsp;Configuration<br />;//&nbsp;&nbsp;&nbsp;&lto&gt&nbsp;&nbsp;Heap&nbsp;Size&nbsp;(in&nbsp;Bytes)&nbsp;&lt0x0-0xFFFFFFFF&gt<br />;//&nbsp;&lt/h&gt<br /><br />;&nbsp;User&nbsp;Initial&nbsp;Stack&nbsp;&&nbsp;Heap<br />;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AREA&nbsp;&nbsp;&nbsp;&nbsp;|.text|,&nbsp;CODE,&nbsp;READONLY<br />__user_initial_stackheap&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;R0,=bottom_of_heap&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;heap基地址<br />&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;r1,=StackUsr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;栈基地址<br />&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;r2,=top_of_heap&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;heap长度限制值<br />&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;r3,=bottom_of_Stacks&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;栈长度限制值<br />&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;&nbsp;pc,lr<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />StackSvc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SvcStackSpace&nbsp;+&nbsp;(SVC_STACK_LEGTH&nbsp;-&nbsp;1)*&nbsp;4<br />StackIrq&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IrqStackSpace&nbsp;+&nbsp;(IRQ_STACK_LEGTH&nbsp;-&nbsp;1)*&nbsp;4<br />StackFiq&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FiqStackSpace&nbsp;+&nbsp;(FIQ_STACK_LEGTH&nbsp;-&nbsp;1)*&nbsp;4<br />StackAbt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AbtStackSpace&nbsp;+&nbsp;(ABT_STACK_LEGTH&nbsp;-&nbsp;1)*&nbsp;4<br />StackUnd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UndStackSpace&nbsp;+&nbsp;(UND_STACK_LEGTH&nbsp;-&nbsp;1)*&nbsp;4<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;IF&nbsp;:DEF:&nbsp;EN_CRP<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IF&nbsp;&nbsp;.&nbsp;&gt=&nbsp;0x1fc<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INFO&nbsp;&nbsp;&nbsp;&nbsp;1,&quot;\nThe&nbsp;data&nbsp;at&nbsp;0x000001fc&nbsp;must&nbsp;be&nbsp;0x87654321.\nPlease&nbsp;delete&nbsp;some&nbsp;source&nbsp;before&nbsp;this&nbsp;line.&quot;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ENDIF<br />CrpData<br />&nbsp;&nbsp;&nbsp;&nbsp;WHILE&nbsp;.&nbsp;&lt&nbsp;0x1fc<br />&nbsp;&nbsp;&nbsp;&nbsp;NOP<br />&nbsp;&nbsp;&nbsp;&nbsp;WEND<br />CrpData1<br />&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x87654321&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;/*When&nbsp;the&nbsp;Data&nbsp;is&nbsp;为0x87654321,user&nbsp;code&nbsp;be&nbsp;protected.&nbsp;当此数为0x87654321时,用户程序被保护&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;ENDIF<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />;/*&nbsp;分配堆栈空间&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AREA&nbsp;&nbsp;&nbsp;&nbsp;MyStacks,&nbsp;DATA,&nbsp;NOINIT,&nbsp;ALIGN=2<br />SvcStackSpace&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SPACE&nbsp;&nbsp;&nbsp;SVC_STACK_LEGTH&nbsp;*&nbsp;4&nbsp;&nbsp;;Stack&nbsp;spaces&nbsp;for&nbsp;Administration&nbsp;Mode&nbsp;管理模式堆栈空间<br />IrqStackSpace&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SPACE&nbsp;&nbsp;&nbsp;IRQ_STACK_LEGTH&nbsp;*&nbsp;4&nbsp;&nbsp;;Stack&nbsp;spaces&nbsp;for&nbsp;Interrupt&nbsp;ReQuest&nbsp;Mode&nbsp;中断模式堆栈空间<br />FiqStackSpace&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SPACE&nbsp;&nbsp;&nbsp;FIQ_STACK_LEGTH&nbsp;*&nbsp;4&nbsp;&nbsp;;Stack&nbsp;spaces&nbsp;for&nbsp;Fast&nbsp;Interrupt&nbsp;reQuest&nbsp;Mode&nbsp;快速中断模式堆栈空间<br />AbtStackSpace&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SPACE&nbsp;&nbsp;&nbsp;ABT_STACK_LEGTH&nbsp;*&nbsp;4&nbsp;&nbsp;;Stack&nbsp;spaces&nbsp;for&nbsp;Suspend&nbsp;Mode&nbsp;中止义模式堆栈空间<br />UndStackSpace&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SPACE&nbsp;&nbsp;&nbsp;UND_STACK_LEGTH&nbsp;*&nbsp;4&nbsp;&nbsp;;Stack&nbsp;spaces&nbsp;for&nbsp;Undefined&nbsp;Mode&nbsp;未定义模式堆栈<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AREA&nbsp;&nbsp;&nbsp;&nbsp;Heap,&nbsp;DATA,&nbsp;NOINIT,&nbsp;ALIGN=3<br />bottom_of_heap&nbsp;&nbsp;&nbsp;&nbsp;SPACE&nbsp;&nbsp;&nbsp;1<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AREA&nbsp;&nbsp;&nbsp;&nbsp;StackBottom,&nbsp;DATA,&nbsp;NOINIT,&nbsp;ALIGN=3<br />bottom_of_Stacks&nbsp;&nbsp;&nbsp;&nbsp;SPACE&nbsp;&nbsp;&nbsp;1<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AREA&nbsp;&nbsp;&nbsp;&nbsp;HeapTop,&nbsp;DATA,&nbsp;NOINIT,&nbsp;ALIGN=3<br />top_of_heap&nbsp;&nbsp;&nbsp;&nbsp;SPACE&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AREA&nbsp;&nbsp;&nbsp;&nbsp;Stacks,&nbsp;DATA,&nbsp;NOINIT,&nbsp;ALIGN=3<br />StackUsr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SPACE&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;END<br /><br />scatter文件:<br />ROM_LOAD&nbsp;0x0<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;ROM_EXEC&nbsp;0x0<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Startup_a.o&nbsp;(RESET,&nbsp;+First)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;(+RO)<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;ERAM&nbsp;0x40000000&nbsp;UNINIT<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;(+RW,+ZI)<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;MYSTACKS&nbsp;+0&nbsp;UNINIT<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Startup_a.o&nbsp;(MyStacks)<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;HEAP&nbsp;+0&nbsp;UNINIT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Startup_a.o&nbsp;(Heap)<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;HEAP_BOTTOM&nbsp;+256&nbsp;UNINIT&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Startup_a.o&nbsp;(HeapTop)<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;USERSTACKS&nbsp;+0&nbsp;UNINIT<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Startup_a.o&nbsp;(StackBottom)<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;STACKS_BOTTOM&nbsp;0x40002000&nbsp;UNINIT&nbsp;&nbsp;&nbsp;;//LPC2364<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Startup_a.o&nbsp;(Stacks)<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br />}<br /><br />启动代码和scatter文件都是仿照ZLG2200模板写的。<br />
sxggj 发表于 2008-7-11 10:42 | 显示全部楼层

感觉应该跟LDR和B有关,试着改成B试试

而且是不是用LDR时后面的操作数加=
 楼主| 云痕 发表于 2008-7-11 11:14 | 显示全部楼层

应该不是这个问题

启动跳转这写代码,参照了ZLG和优龙的,都是这样的。而且该跳不跳,也不是一直发生。之前发生过,后来莫名其妙没这问题了,现在又出现了的
sxggj 发表于 2008-7-11 11:21 | 显示全部楼层

开头就是一个跳转指令,你直接跳不就得了,整的这么麻烦

  
 楼主| 云痕 发表于 2008-7-11 13:32 | 显示全部楼层

开头已经就是个跳转啊LDR PC, Reset_Addr

sxggj&nbsp;发表于&nbsp;2008-7-11&nbsp;11:21&nbsp;ARM&nbsp;论坛&nbsp;←返回版面&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />4楼:&nbsp;开头就是一个跳转指令,你直接跳不就得了,整的这么麻烦&nbsp;<br /><br />开头已经就是跳转啊,LDR&nbsp;&nbsp;&nbsp;PC,&nbsp;Reset_Addr&nbsp;之前都是一些声明而已。仿真时,加载后箭头就是在这行行首的。只是执行起来不是跳转,而是顺序罢了
 楼主| 云痕 发表于 2008-7-11 13:53 | 显示全部楼层

换了一块板子试试,还是如此

  
sxggj 发表于 2008-7-11 14:21 | 显示全部楼层

我也是初学者

不过觉得你最好开头直接用个B命令跳到该跳的地方,不一定所有的仿真器都能在开头用LDR命令
bald 发表于 2008-7-11 14:26 | 显示全部楼层

可能是程序载入错误

打开&nbsp;Interleave&nbsp;Disassebly&nbsp;看看,反汇编程序和原程序肯定不一样。<br /><br />也可以用&nbsp;ARMUL&nbsp;仿真一下看看,如果没问题有可能是硬件问题<br />可能原因有:<br />内存地址配置<br />BMS&nbsp;设置<br />REMAP<br />仿真器启动了MMU而页表没有载入<br /><br />
sxggj 发表于 2008-7-11 14:32 | 显示全部楼层

还有你的DCD指令用法对吗???????

  
 楼主| 云痕 发表于 2008-7-13 18:17 | 显示全部楼层

贴下汇编代码

Reset&nbsp;&nbsp;&nbsp;&nbsp;[0xe59ff018]&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pc,ResetAddr&nbsp;;&nbsp;=&nbsp;#ResetAddr<br />00000004&nbsp;&nbsp;&nbsp;&nbsp;[0xe59ff018]&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pc,UndefinedAddr&nbsp;;&nbsp;=&nbsp;#UndefinedAddr<br />00000008&nbsp;&nbsp;&nbsp;&nbsp;[0xe59ff018]&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pc,SWI_Addr&nbsp;;&nbsp;=&nbsp;#SWI_Addr<br />0000000c&nbsp;&nbsp;&nbsp;&nbsp;[0xe59ff018]&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pc,PrefetchAddr&nbsp;;&nbsp;=&nbsp;#PrefetchAddr<br />00000010&nbsp;&nbsp;&nbsp;&nbsp;[0xe59ff018]&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pc,DataAbortAddr&nbsp;;&nbsp;=&nbsp;#DataAbortAddr<br />00000014&nbsp;&nbsp;&nbsp;&nbsp;[0xb8a06f58]&nbsp;&nbsp;&nbsp;dcd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0xb8a06f58&nbsp;&nbsp;Xo..<br />00000018&nbsp;&nbsp;&nbsp;&nbsp;[0xe59ff018]&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pc,IRQ_Addr&nbsp;;&nbsp;=&nbsp;#IRQ_Addr<br />0000001c&nbsp;&nbsp;&nbsp;&nbsp;[0xe59ff018]&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pc,FIQ_Addr&nbsp;;&nbsp;=&nbsp;#FIQ_Addr<br /><br />ResetAddr&nbsp;&nbsp;&nbsp;&nbsp;[0x00001548]&nbsp;&nbsp;&nbsp;dcd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x00001548&nbsp;&nbsp;H...<br />UndefinedAddr&nbsp;&nbsp;&nbsp;&nbsp;[0x00001414]&nbsp;&nbsp;&nbsp;dcd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x00001414&nbsp;&nbsp;....<br />SWI_Addr&nbsp;&nbsp;&nbsp;&nbsp;[0x00001418]&nbsp;&nbsp;&nbsp;dcd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x00001418&nbsp;&nbsp;....<br />。。<br />ResetInit&nbsp;&nbsp;&nbsp;&nbsp;[0x2001fb77]&nbsp;&nbsp;&nbsp;andcs&nbsp;&nbsp;&nbsp;&nbsp;pc,r1,r7,ror&nbsp;r11<br />。。<br /><br />InitStack<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x000000c0:&nbsp;&nbsp;&nbsp;&nbsp;e1a0000e&nbsp;&nbsp;&nbsp;&nbsp;....&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,r14&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />从汇编代码看,ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pc,ResetAddr&nbsp;;&nbsp;加载ResetAddr&nbsp;标号地址内容,此标号地址存放的是指令dcd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x00001548&nbsp;,pc直接跳转0x00001548,实际仿真结果也是这样<br />但源码中,&nbsp;<br />LDR&nbsp;PC,&nbsp;ResetAddr&nbsp;<br />&nbsp;。。<br />ResetAddr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;ResetInit&nbsp;<br />。。<br />ResetInit&nbsp;&nbsp;&nbsp;BL&nbsp;InitStack&nbsp;;初始化堆栈&nbsp;Initialize&nbsp;the&nbsp;stack&nbsp;<br />感觉汇编和源码不对应。然后把projiect_data文件夹删除了,然后重新编译,还是如此。<br /><br />AXD改ARMUL模式脱离硬件调试时,调用的是同一个.axf文件,跳转是正确的,<br />在ARMUL模式下,ResetAddr&nbsp;&nbsp;&nbsp;&nbsp;[0x000000f8]&nbsp;&nbsp;&nbsp;dcd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x000000f8&nbsp;&nbsp;...这条指令和H-JTAG下的汇编指令不同.,弄不明白。可不可能是JTAG头的问题?<br /><br />
 楼主| 云痕 发表于 2008-7-13 20:22 | 显示全部楼层

LPC2364片内没MMU的

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

本版积分规则

28

主题

75

帖子

0

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