|
本问题受到如下限制:
1、开发环境不能变,必须是IAR的EWARM;
2、开发语言不能变,必须使用纯汇编,不可使用C/C++;
3、目标是cortex-m3,目前选的STM32f103c8;
劝我换环境的退散,问为啥不能换的退散。
未连接开发板,仅在本地软件调试。
因为找不到能用的汇编代码实例,
所以用IAR8.32.1建立了一个汇编的工程想在上边修改后编译运行调试,
IDE提供了一套默认的代码:
- PUBLIC __iar_program_start
- PUBLIC __vector_table
- SECTION .text:CODE:REORDER(1)
-
- ;; Keep vector table even if it's not referenced
- REQUIRE __vector_table
-
- THUMB
-
- __iar_program_start
-
- main LDR R0, =0x1
- NOP
- NOP
- B main
- ;; Forward declaration of sections.
- SECTION CSTACK:DATA:NOROOT(3)
- SECTION .intvec:CODE:NOROOT(2)
-
- DATA
- __vector_table
- DCD sfe(CSTACK)
- DCD __iar_program_start
- DCD NMI_Handler
- DCD HardFault_Handler
- DCD MemManage_Handler
- DCD BusFault_Handler
- DCD UsageFault_Handler
- DCD 0
- DCD 0
- DCD 0
- DCD 0
- DCD SVC_Handler
- DCD DebugMon_Handler
- DCD 0
- DCD PendSV_Handler
- DCD SysTick_Handler
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;;
- ;; Default interrupt handlers.
- ;;
- PUBWEAK NMI_Handler
- PUBWEAK HardFault_Handler
- PUBWEAK MemManage_Handler
- PUBWEAK BusFault_Handler
- PUBWEAK UsageFault_Handler
- PUBWEAK SVC_Handler
- PUBWEAK DebugMon_Handler
- PUBWEAK PendSV_Handler
- PUBWEAK SysTick_Handler
- SECTION .text:CODE:REORDER:NOROOT(1)
- THUMB
- NMI_Handler
- HardFault_Handler
- MemManage_Handler
- BusFault_Handler
- UsageFault_Handler
- SVC_Handler
- DebugMon_Handler
- PendSV_Handler
- SysTick_Handler
- Default_Handler
- __default_handler
- CALL_GRAPH_ROOT __default_handler, "interrupt"
- NOCALL __default_handler
- B __default_handler
- END
复制代码 我查了一下,这个是IAR自带的asm.s程序,在IDE文件夹里分为for arm和for m3。
分别在:C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.2\arm\config\template\project\asm\asm (ARM)
和C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.2\arm\config\template\project\asm\asm (Cortex-M)
其中for ARM的是可以直接编译运行调试的。
但是for m3的可以编译,但是运行时提示
User error: Stack pointer is setup to incorrect alignment. Stack addr = 0xCDCDCDCD
目测是个运行时错误;
问题是:
对for m3的代码如何修改才能开始调试?
或者
哪里能找到IAR下边纯汇编的m3代码实例?
|
|