IAR中文网站 > 新手入门 > IAR怎么设置下载与复位方式 IAR下载程序后无法自动运行如何处理
教程中心分类
IAR怎么设置下载与复位方式 IAR下载程序后无法自动运行如何处理
发布时间:2026/08/27 13:58:37

  IAR Embedded Workbench把程序写入目标芯片后,CPU下一步是停在复位入口、运行到main暂停,还是脱离调试器后自行启动,和C-SPY的下载方式、Run to配置以及硬件调试驱动的复位策略都有关系。程序能够正常编译和写入Flash,却在下载后一直停着,先别急着改启动代码,可以先确认当前执行的是下载还是调试启动,再检查复位后的PC、SP和程序入口。

  一、IAR怎么设置下载与复位方式

 

  IAR的下载和复位配置主要集中在【Debugger】选项中。I-jet、J-Link、CMSIS-DAP等驱动提供的复位项目并不完全相同,设置时应以当前工程实际选择的调试驱动为准。

 

  1、配置Flash下载方式

 

  ①打开IAR工程,进入【Project】→【Options】。

 

  ②打开【General Options】→【Target】,确认【Device】与目标板上的芯片型号对应。

 

  ③切换到【Debugger】→【Setup】。

 

  ④在【Driver】中选择当前使用的调试器,例如【I-jet】【J-Link/J-Trace】或【CMSIS-DAP】。

 

  ⑤进入【Debugger】→【Download】。

 

  ⑥程序需要写入片内Flash时,勾选【Use flash loader(s)】。

 

  ⑦打开【Flash Loader Overview】,检查当前使用的Flash Loader和目标存储区域。

 

  ⑧项目没有特殊Flash布局时,可以继续使用器件默认的.board配置。

 

  ⑨程序放在自定义Flash区域时,再进入【Flash Loader Configuration】核对【Memory range】。

 

  ⑩保存设置后执行【Project】→【Rebuild All】,再启动下载。

 

  如果工程已经正确选择目标Device,IAR通常会使用对应的Flash Loader。手工修改过Flash起始位置、Bootloader分区或外部Flash配置时,要把下载区域和链接地址一起核对。

 

  2、选择合适的复位策略

 

  以Cortex-M配合CMSIS-DAP为例,可以在驱动设置中看到多种Reset方式。

 

  ①进入【Project】→【Options】。

 

  ②打开【Debugger】→【CMSIS-DAP】→【Setup】。

 

  ③找到【Reset】。

 

  ④希望复位内核和外设时,可以选择【System】。

 

  ⑤通过目标板复位引脚操作时,可以选择【Hardware】。

 

  ⑥只调整程序计数器时,可查看【Software】。

 

  ⑦调试器很难在程序跑飞前连接目标板时,可以尝试【Connect during reset】。

 

  ⑧芯片带ROM Bootloader并要求执行后再停住时,检查驱动是否提供【Reset and halt after bootloader】。

 

  ⑨修改后重新进入C-SPY,查看复位后的PC位置。

 

  使用J-Link时名称会有所变化,例如【Normal】【Core】【Core and peripherals】【Reset Pin】等。不要照搬另一种调试器的Reset名称。

 

  3、设置复位后停在main还是复位入口

 

  ①进入【Project】→【Options】→【Debugger】→【Setup】。

 

  ②找到【Run to】。

 

  ③勾选【Run to】后,把位置设置为【main】。

 

  ④执行【Download and Debug】。

 

  ⑤C-SPY完成复位和启动代码执行后,会在main处暂停。

 

  ⑥要观察芯片从复位入口开始执行的过程,可以取消【Run to】。

 

  ⑦重新进入调试,此时PC会停在常规复位地址附近。

 

  ⑧按【F5】继续运行程序。

 

  【Run to】默认目标通常就是main,因此下载进入调试后看到程序停在main,并不表示程序启动失败,只是C-SPY按设置停下来等调试操作。

 

  二、IAR下载程序后无法自动运行如何处理

 

  碰到下载成功但程序没有继续运行,可以先看自己用了哪一种下载命令。单独下载程序和启动C-SPY调试会话的行为不同,这一步分清以后,后面的检查范围会小很多。

 

  1、检查使用的是Download还是Download and Debug

 

  ①查看刚才执行的操作。

 

  ②如果使用【Debug】→【Download】→【Download active application】,IAR只负责把当前应用写入目标设备,并不会启动完整调试会话。

 

  ③下载结束后,按目标板【RESET】键测试一次。

 

  ④也可以给目标板重新上电,观察程序能否从Flash启动。

 

  ⑤如果使用【Download and Debug】,进入C-SPY后查看当前PC。

 

  ⑥PC停在【main】时按【F5】继续执行。

 

  ⑦PC停在复位入口时,检查【Run to】是否被关闭。

 

  这样可以区分“程序没有运行”和“调试器主动让CPU暂停”这两种现象。

  2、重新上电后仍然没有运行

 

  重新上电仍无动作,就要继续检查程序是否被链接到芯片能够启动的位置。

 

  ①进入【Project】→【Options】→【General Options】→【Target】,再次确认【Device】。

 

  ②打开【Linker】→【Config】,确认当前使用的ICF文件。

 

  ③检查ICF中的Flash起始地址。

 

  ④打开链接生成的【.map】文件。

 

  ⑤查看中断向量表所在地址。

 

  ⑥检查Reset Handler的地址是否落在有效Flash区域。

 

  ⑦工程带Bootloader时,确认应用程序起始地址和Bootloader跳转地址相同。

 

  ⑧进入C-SPY查看复位后的【PC】和【SP】。

 

  ⑨确认PC位于有效代码区域,SP位于实际RAM范围。

 

  Flash下载正常,只能说明数据已经写进去。向量表或应用入口地址和芯片启动配置不对应时,重新上电仍可能跑不到main。

  3、程序只在某一种Reset方式下能运行

 

  ①记录当前可以正常启动的【Reset】方式。

 

  ②切换到【System】重新测试。

 

  ③再用【Hardware】或当前驱动提供的复位引脚方式做一次对照。

 

  ④如果软件复位能运行,硬件复位后却失败,进入启动代码检查时钟初始化。

 

  ⑤再检查外部RAM、外部Flash和内存控制器初始化。

 

  ⑥查看目标板RESET信号有没有正常释放。

 

  ⑦程序启用了Watchdog时,检查启动阶段有没有被连续复位。

 

  ⑧在Reset Handler设置断点,查看硬件复位后程序停在哪一步。

 

  硬件复位会影响更多外设状态,而软件复位可能只改变CPU执行状态,两者结果不同的时候,更适合去查低层初始化。

 

  三、设置修改后怎么确认启动状态

 

  下载与复位参数改完以后,可以把C-SPY调试启动和脱机启动分别跑一遍。两边都能进入应用程序,才能排除调试器设置对结果的干扰。

 

  1、先验证C-SPY下的启动过程

 

  ①执行【Project】→【Download and Debug】。

 

  ②确认Flash Loader没有返回下载错误。

 

  ③取消【Run to】后重新复位。

 

  ④查看PC能否进入Reset Handler。

 

  ⑤单步执行启动代码。

 

  ⑥继续运行到【main】。

 

  ⑦按【F5】让程序继续执行。

 

  ⑧再执行一次【Debug】→【Reset】,检查第二次启动结果。

 

  如果第一次可以启动,执行Reset后却停住,可以继续对比当前Reset strategy和低层初始化流程。

 

  2、再验证脱离调试器后的启动

 

  ①结束当前C-SPY会话。

 

  ②使用【Debug】→【Download】→【Download active application】重新写入程序。

 

  ③下载完成后断开调试连接。

 

  ④给目标板重新上电。

 

  ⑤检查已有LED、串口或其他程序运行现象。

 

  ⑥按一次硬件RESET再次测试。

 

  ⑦如果C-SPY中运行正常,而脱离调试器后没有启动,重点检查复位向量、Bootloader、启动脚和硬件初始化。

 

  3、调试器连接困难时改用复位连接

 

  ①进入当前硬件驱动的【Setup】。

 

  ②把Reset strategy切换到【Connect during reset】。

 

  ③重新启动C-SPY。

 

  ④观察调试器能否在用户程序执行前接管CPU。

 

  ⑤连接成功后暂停在Reset Handler附近。

 

  ⑥检查程序是否在初始化阶段修改调试接口、进入低功耗或者快速复位。

 

  ⑦修正程序后再恢复原来的Reset方式测试。

  总结

 

  IAR下载程序后没有自行运行时,要把C-SPY暂停状态、目标板重新上电后的启动状态以及芯片真实复位行为分开判断。调试状态下能跑、脱离调试器后不能跑,通常还要继续核对启动地址和低层初始化;不同复位方式得到的结果不一样,则更适合检查硬件复位后外设和时钟的初始条件。如需进一步了解IAR程序下载、C-SPY复位设置与程序启动异常排查方法,欢迎联系咨询。

读者也访问过这里:
135 2431 0251