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设置对齐。