收藏官网首页
查看: 8047|回复: 1

如何在EWARM环境下使用汇编给STM32

1

主题

2

帖子

20

积分

新手上路

Rank: 1

积分
20
发表于 2019-4-11 11:00:15 | 显示全部楼层 |阅读模式
汉枫LPB120模块
本问题受到如下限制:
1、开发环境不能变,必须是IAR的EWARM;
2、开发语言不能变,必须使用纯汇编,不可使用C/C++;
3、目标是cortex-m3,目前选的STM32f103c8;
劝我换环境的退散,问为啥不能换的退散。
未连接开发板,仅在本地软件调试。

因为找不到能用的汇编代码实例,
所以用IAR8.32.1建立了一个汇编的工程想在上边修改后编译运行调试,
IDE提供了一套默认的代码:
  1. PUBLIC  __iar_program_start
  2.         PUBLIC  __vector_table

  3.         SECTION .text:CODE:REORDER(1)
  4.         
  5.         ;; Keep vector table even if it's not referenced
  6.         REQUIRE __vector_table
  7.         
  8.         THUMB
  9.         
  10. __iar_program_start
  11.         
  12. main    LDR   R0, =0x1
  13.         NOP
  14.         NOP
  15.         B       main

  16.         ;; Forward declaration of sections.
  17.         SECTION CSTACK:DATA:NOROOT(3)
  18.         SECTION .intvec:CODE:NOROOT(2)
  19.         
  20.         DATA

  21. __vector_table
  22.         DCD     sfe(CSTACK)
  23.         DCD     __iar_program_start
  24.         DCD     NMI_Handler
  25.         DCD     HardFault_Handler
  26.         DCD     MemManage_Handler
  27.         DCD     BusFault_Handler
  28.         DCD     UsageFault_Handler
  29.         DCD     0
  30.         DCD     0
  31.         DCD     0
  32.         DCD     0
  33.         DCD     SVC_Handler
  34.         DCD     DebugMon_Handler
  35.         DCD     0
  36.         DCD     PendSV_Handler
  37.         DCD     SysTick_Handler

  38. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  39. ;;
  40. ;; Default interrupt handlers.
  41. ;;

  42.         PUBWEAK NMI_Handler
  43.         PUBWEAK HardFault_Handler
  44.         PUBWEAK MemManage_Handler
  45.         PUBWEAK BusFault_Handler
  46.         PUBWEAK UsageFault_Handler
  47.         PUBWEAK SVC_Handler
  48.         PUBWEAK DebugMon_Handler
  49.         PUBWEAK PendSV_Handler
  50.         PUBWEAK SysTick_Handler

  51.         SECTION .text:CODE:REORDER:NOROOT(1)
  52.         THUMB

  53. NMI_Handler
  54. HardFault_Handler
  55. MemManage_Handler
  56. BusFault_Handler
  57. UsageFault_Handler
  58. SVC_Handler
  59. DebugMon_Handler
  60. PendSV_Handler
  61. SysTick_Handler
  62. Default_Handler
  63. __default_handler
  64.         CALL_GRAPH_ROOT __default_handler, "interrupt"
  65.         NOCALL __default_handler
  66.         B __default_handler

  67.         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的可以编译,但是运行时提示
无标题.png
User error: Stack pointer is setup to incorrect alignment.  Stack addr = 0xCDCDCDCD

目测是个运行时错误;

问题是:
对for m3的代码如何修改才能开始调试?
或者
哪里能找到IAR下边纯汇编的m3代码实例?

1

主题

2

帖子

20

积分

新手上路

Rank: 1

积分
20
 楼主| 发表于 2019-4-11 11:01:08 | 显示全部楼层
第一行格式没问题,是我贴的时候不小心删了空格。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入Q群 返回顶部

版权与免责声明 © 2006-2024 Gizwits IoT Technology Co., Ltd. ( 粤ICP备11090211号 )

快速回复 返回顶部 返回列表