IAR Embedded Workbench把程序写入目标芯片后,CPU下一步是停在复位入口、运行到main暂停,还是脱离调试器后自行启动,和C-SPY的下载方式、Run to配置以及硬件调试驱动的复位策略都有关系。程序能够正常编译和写入Flash,却在下载后一直停着,先别急着改启动代码,可以先确认当前执行的是下载还是调试启动,再检查复位后的PC、SP和程序入口。
IAR Embedded Workbench中的器件、宏、链接文件和优化级别都会影响最终程序。无优化时运行正常,切换发布配置后出现死机、变量异常或外设时序错误,应先固定配置差异,再逐级缩小问题范围。围绕“IAR Embedded Workbench怎么配置编译选项IAR编译优化后程序运行异常如何排查”,配置阶段需要保证环境一致,排查阶段则要避免同时修改过多选项。
下面按IAR Embedded Workbench for Arm里最常见的Cortex-M工程来写。IAR官方文档明确说明,Cortex-M的中断函数进入和返回方式与普通函数一致,不使用__irq、__fiq这类关键字;同时,异常名和默认向量代码由cstartup_M.c或cstartup_M.s提供。也就是说,IAR里的中断配置,核心不是“给函数加特殊修饰”,而是把启动文件、向量表、链接地址和NVIC设置对齐。