0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

在IAR Embedded Workbench中程序连上仿真器调试时不正常的情况

工程师邓生 来源:IAR爱亚系统 作者:IAR爱亚系统 2022-09-02 11:05 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

上期我们介绍了在IAR Embedded Workbench中程序连上仿真器调试时正常但是断开仿真器单独运行时不正常的情况。

嵌入式软件开发中,有时会遇到程序断开仿真器单独运行时正常,但是连上仿真器调试时不正常。本文主要介绍在IAR Embedded Workbench中程序断开仿真器单独运行时正常但是连上仿真器调试时不正常的情况。

程序仿真调试和单独运行的区别

37495768-29de-11ed-ba43-dac502259ad0.png

原因分析及对应策略

1. 程序连上仿真器调试时Flash loader及mac宏会设置对应的寄存器和程序开始运行是通过软复位(Software Reset),而断开仿真器单独运行时需要程序设置对应的寄存器和程序开始运行是通过硬复位 (Hardware Reset)。由于程序断开仿真器单独运行时正常,连上仿真器调试的时候不需要像之前那样不使用Flash loader,只需要在调试开始之前进行一次硬复位 (Hardware Reset)(硬复位让程序在连上仿真器调试时的初始状态与断开仿真器单独运行时硬复位之后的初始状态时一致的)。

下面主要介绍如何在IAR Embedded Workbench中连上仿真器调试时进行硬复位 (Hardware Reset):

下载完成之后让程序停在复位向量而不是main函数

在IAR Embedded Workbench工程选项Options > Debugger > Setup >Run to选项:默认情况下会选中Run to main,调试器下载完成之后,程序会停在main函数。如果不勾选Run to,调试器下载完成之后,程序会停在复位向量,这样就可以从复位向量开始调试。

37730fd6-29de-11ed-ba43-dac502259ad0.png37aa4ea6-29de-11ed-ba43-dac502259ad0.png

下载完成之后通过调试器进行Hardware Reset

如果对应的硬件仿真器支持Hardware Reset并且对应的硬件仿真器的nRESET引脚连接到MCU的复位引脚nRESET, 将Reset类型改成Hardware,然后Reset(模拟程序单独运行时硬复位,并从复位向量开始调试)。

37c47d12-29de-11ed-ba43-dac502259ad0.png

下载完成之后通过外部Reset进行Hardware Reset

如果对应的硬件仿真器不支持Hardware Reset或者并且对应的硬件仿真器的nRESET引脚没有连接到MCU的复位引脚nRESET, 可以通过外部Reset对MCU进行Hardware Reset。但是外部Reset之后,程序需要停在复位向量,然后就可以通过调试器调试。 如果对应的MCU和硬件仿真器支持CORERESET选项 (Options > I-jet > Breakpoints > Catch exceptions > CORERESET),勾选CORERESET之后,调试时如果有外部Reset, 程序会停在复位向量。

注:Vector catch是arm支持的调试特性,更多信息请参考arm相关文档。

388bc4da-29de-11ed-ba43-dac502259ad0.png38b76900-29de-11ed-ba43-dac502259ad0.png

如果对应的MCU或者硬件仿真器不支持CORERESET选项,则需要在复位向量打断点,调试时如果有外部Reset, 程序会停在复位向量。

39359dca-29de-11ed-ba43-dac502259ad0.png

2. 如果Library low-level interface implementation是通过semihosting (Options > General Options > Library low-level interface implementation > Semihosted > Via semihosting)实现:

3976d0a6-29de-11ed-ba43-dac502259ad0.png

而semihosting又是通过SVC指令来实现(非Cortex-M的32位arm内核):

3b205cf6-29de-11ed-ba43-dac502259ad0.png

如果程序里面也使用了SVC,那么连上仿真器调试的时候程序会停在SVC Handler:

3b4be4b6-29de-11ed-ba43-dac502259ad0.png

可以通过将Library low-level interface implementation 设置为None (Options > General Options > Library low-level interface implementation > None):

3b65b3aa-29de-11ed-ba43-dac502259ad0.png

3. 为了提高系统的健壮性,越来越多的MCU内部集成了Watchdog, 可以让MCU在软件出错的时候复位MCU。MCU内部Watchdog控制寄存器一般会有选项可以配置Watchdog在调试模式是否使能:

3bdf2c08-29de-11ed-ba43-dac502259ad0.png3c07805e-29de-11ed-ba43-dac502259ad0.png

当Watchdog配置为调试模式不使能时,Watchdog在调试模式暂停时会停止,不会导致MCU复位。反之,当Watchdog配置为调试模式使能时,Watchdog在调试模式暂停时会继续运行,从而可能会导致MCU复位(因为暂停的时候Watchdog得不到正常的刷新)。在单独运行时,当软件运行正常时,Watchdog会正常的刷新,所以不会复位。

将MCU内部Watchdog配置成在调试模式不使能,这样在调试时,暂停的时候Watchdog会停止,不会复位MCU。

总结

本文主要介绍了在IAR Embedded Workbench中程序断开仿真器单独运行时正常但是连上仿真器调试时不正常的情况。通过分析可能的原因及对应的策略,可以解决断开仿真器单独运行时正常正常但是连上仿真器调试时不正常的问题。


审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    31

    文章

    5589

    浏览量

    129057
  • 仿真器
    +关注

    关注

    14

    文章

    1048

    浏览量

    86759
  • IAR
    IAR
    +关注

    关注

    5

    文章

    400

    浏览量

    38339
  • 调试器
    +关注

    关注

    1

    文章

    325

    浏览量

    24923

原文标题:程序单独运行正常但是仿真调试不正常

文章出处:【微信号:IAR爱亚系统,微信公众号:IAR爱亚系统】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    如何使用CMSIS DAP仿真器调试,通过NucleiStudio调试蜂鸟SOC

    如标题所示,我们分享如何使用CMSIS DAP仿真器调试,通过NucleiStudio调试蜂鸟SOC 我们先介绍一下CMSIS DAP仿真器: 他的功能如下: 可以看到,它支持JT
    发表于 10-21 12:05

    如何在 IAR Embedded Workbench for ARM 开发环境中启用可配置数据闪存并设置大小?

    如何在 IAR Embedded Workbench for ARM 开发环境中启用可配置数据闪存并设置大小?
    发表于 08-26 07:49

    请问如何在 IAR Embedded Workbench for ARM 开发环境中启用可配置数据闪存并设置大小?

    如何在 IAR Embedded Workbench for ARM 开发环境中启用可配置数据闪存并设置大小?
    发表于 08-20 06:23

    「芯生态」杰发科技AC7870携手IAR开发工具链,助推汽车电子全栈全域智能化落地

    IAR Embedded Workbench for Arm已全面支持杰发科技AutoChips车规级MCU AC7870,为其提供涵盖开发、调试、优化等一站式服务
    的头像 发表于 07-22 12:06 482次阅读
    「芯生态」杰发科技AC7870携手<b class='flag-5'>IAR</b>开发工具链,助推汽车电子全栈全域智能化落地

    第三章 仿真器介绍

    本篇文章我们介绍了W55MH32板载的WIZ-Link仿真器的使用方法,让我们一起插上USB线开始下载、调试程序吧!
    的头像 发表于 05-21 11:54 723次阅读
    第三章 <b class='flag-5'>仿真器</b>介绍

    基于 IAR Embedded Workbench 的自研 MCU 芯片软件函数与变量内存布局优化精控方法

    嵌入式软件开发领域,MCU芯片软件的架构设计与内存布局的精细规划对系统性能和稳定性起着关键作用。本文档聚焦于IAR Embedded Workbench环境下,为自研MCU芯片软件提
    的头像 发表于 04-30 16:38 588次阅读
    基于 <b class='flag-5'>IAR</b> <b class='flag-5'>Embedded</b> <b class='flag-5'>Workbench</b> 的自研 MCU 芯片软件函数与变量内存布局优化精控方法

    用stsw-link004这个软件配合仿真器程序后,直接运行程序程序运行不正常是什么原因?

    用stsw-link004这个软件配合仿真器程序后,直接运行程序程序运行不正常,必须对电路板进行完全重新上电,
    发表于 03-07 07:00

    如何将项目从IAR迁移到Embedded Studio

    本文描述如何将IAR EWARM项目迁移到SEGGER Embedded Studio(简称SES)中。
    的头像 发表于 02-25 17:11 1054次阅读
    如何将项目从<b class='flag-5'>IAR</b>迁移到<b class='flag-5'>Embedded</b> Studio

    ADS1298 CONFIG2读取初始值不正常是什么原因引起的?

    你好,我从贵公司申请了几片ADS1298的芯片,使用后发现以下问题:1。芯片ID,CONFIG2读取初始值不正常2。前四个通道控制寄存读写正常,后四个通道寄存无法读写,请问是否出
    发表于 02-13 08:02

    变频输出波形不正常原因及解决方法

          变频作为现代工业控制领域的核心设备之一,其稳定性和可靠性直接关系到生产线的正常运行和设备的使用寿命。然而,实际应用中,变频输出波形
    的头像 发表于 02-06 15:48 1630次阅读
    变频<b class='flag-5'>器</b>输出波形<b class='flag-5'>不正常</b>原因及解决方法

    是什么原因使ADS4145 VCM脚输出电压不正常

    这两天调试高速模数转换ADS4145。我将ADS4145的DFS脚接0.65V((3/8) AVDD ± 100mV),OE接 1.8V,时钟脚CLKP输入1.8V 80MHz时钟。 我用
    发表于 01-10 08:09

    使用ADS8688时读出数据不正常,SDO线出现毛刺的原因?

    ,但是现在读出的数只有前12位变,后四位一直是0,应该是数据显示不正常。 (3)同一通道多次读数显示数据不同有很大偏差,用AUTO模式读8个通道(8个通道接成相同电压)读数也各不相同。 请问这是怎么回事啊,求指点~ 跪谢~~
    发表于 01-08 06:54

    ADS1274使用SPI读取,如何改进才能消除DRDY信号不正常的问题呢?

    DRDY,蓝色为SCLK: 当SCLK和FCLK都为1.3125 MHZ时的DRDY波形就不正常了,如下图,黄色为DRDY,蓝色为SCLK: “tDS”也变得不正常,如下图,黄色为DRDY,蓝色为
    发表于 12-27 07:11

    为什么你的网卡工作会不正常?(上)

    导读网卡的正常运作对于系统网络功能的实现至关重要。本文深入剖析因复位时间不足致网卡故障情形,解读不同网卡芯片复位要求及电路设计、驱动配合要点,为工程师提供网卡设计调试参考,助力保障网络系统稳定
    的头像 发表于 12-23 11:35 1837次阅读
    为什么你的网卡工作会<b class='flag-5'>不正常</b>?(上)

    伺服电机振动不正常原因和维修及案例分析

          伺服电机作为自动化系统中的关键组件,其稳定运行对于整个生产线的效率和稳定性至关重要。然而,伺服电机在运行过程中可能会遇到振动不正常的问题,这不仅影响电机的性能,还可能对机械系统造成损害
    的头像 发表于 12-18 09:22 1809次阅读
    伺服电机振动<b class='flag-5'>不正常</b>原因和维修及案例分析