程序仿真调试正常但是单独运行不正常

您所在的位置:网站首页 时序仿真不能正常运行 程序仿真调试正常但是单独运行不正常

程序仿真调试正常但是单独运行不正常

2024-07-17 12:19:18| 来源: 网络整理| 查看: 265

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

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

在IAR Embedded Workbench中程序连上仿真器调试和断开仿真器单独运行的主要区别:

原因分析及对应策略

1. 检查调试下载时是否使用了 flash loader(Options > Debugger > Download> Use flash loader(s))。如果配置了 flash loader,可能意味着使用了 flash loader 的.mac宏文件。检查对应.board 和.flash 文件中的.mac宏文件。如果对应.mac宏文件里面的操作在断开仿真器单独运行程序时也需要执行,则需要在程序中添加对应的代码来完成对应的操作。

可以通过不使用flash loader来下载调试,查看对应的问题:

注意:需要先使用flash loader把程序下载到对应的Flash,然后接下来调试就可以不使用flash loader来下载程序了(因为程序已经在Flash里面了),对应.board 和.flash 文件中的.mac宏文件也就不会被调用。

也可以通过Debug without Downloading直接进行调试,查看对应的问题:

2.检查在调试的时候是否使用了相关的.mac宏文件(Options > Debugger > Setup > Setup macros > Use macro file(s))。如果对应.mac宏文件里面的操作在断开仿真器单独运行程序时也需要执行,则需要在程序中添加对应的代码来完成对应的操作。

可以通过不使用相关的.mac宏文件来调试,查看对应的问题:

3.如果程序里面使用了printf,而printf是通过semihosting (Options > General Options > Library low-level interface implementation > Semihosted > Via semihosting)实现的,程序里面本身没有重定向printf,那么在连上仿真器调试时会通过semihosting将printf打印的信息输出到Terminal I/O窗口,而在断开仿真器单独运行时程序会被挂起,不能正常运行。

如果程序里面本身没有重定向printf,build的时候会报下面的错误,提示需要重定向printf:

注意:printf重定向需要在程序里面提供__write函数的实现:   

对应包含__write函数的示例在安装目录下面的arm\src\lib\file\write.c

对于支持SWO(Serial Wire Output)模式的MCU,也可以将Library low-level interface implementation 设置为SWO (Options > General Options > Library low-level interface implementation > Semihosted > Via SWO)。这样printf打印的信息会通过SWO输出(调试的时候会输出在Terminal I/O窗口,单独运行时没有办法显示出来,但是不会影响程序正常运行)。

4. 由于连上仿真器调试时程序开始运行通过软复位,而断开仿真器单独运行时程序开始运行通过硬复位 。为了在连上仿真器调试时模拟断开仿真器单独运行时的程序开始运行过程,可以通过下面的方法。 

在下载完成之后对目标系统进行一次硬复位,然后再运行:

不要勾选Run to 选项(Options > Debugger > Setup > Run to),这样复位之后程序会停在Reset Handler,而不是main,可以从Reset Handler开始调试:

也可以不通过调试器,而是从外部对目标系统进行硬复位(比如给MCU的RESETn引脚一个低电平脉冲),目标系统硬复位之后会全速跑,调试器会跟随目标系统的状态:

总结

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

参考文献:

1.Why is the application not running stand-alone? https://www.iar.com/knowledge/support/technical-notes/debugger/application-does-not-run-stand-alone/

2.Flash Loader Development Guide (The IAR Flash Loader process)

3.C-SPY® Debugging Guide

4.IAR C/C++ Development Guide (semihosting, retargeting)



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


    图片新闻

    实验室药品柜的特性有哪些
    实验室药品柜是实验室家具的重要组成部分之一,主要
    小学科学实验中有哪些教学
    计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
    实验室各种仪器原理动图讲
    1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
    高中化学常见仪器及实验装
    1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
    微生物操作主要设备和器具
    今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
    浅谈通风柜使用基本常识
     众所周知,通风柜功能中最主要的就是排气功能。在

    专题文章

      CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭