历史上的今天
返回首页

历史上的今天

今天是:2024年09月18日(星期三)

正在发生

2021年09月18日 | 如何充分利用各种类型的断点

2021-09-18 来源:EEWORLD

在面向高可靠性应用开发MCU程序的过程中,工程师通常会遇到设定断点的问题,断点的合理使用对于更好地编程和MCU使用是一种挑战。借助新的工具,这些断点就可以发挥巨大的作用,成为开发工作中的利器。


断点的概念非常简单,因为它的作用是在指定指令之前中断程序的执行。实现方式可以是硬件或软件。然而,简单并不意味着它不能被用于复杂的调试组合中,以达到用简单的方式解决BUG的目的。事实上,软件开发者在调试时离不开断点,但如何最好地利用断点呢?


要更好地使用各种断点,开发人员不能仅靠经验或者直觉,需要借助一些先进的开发工具来完成,它们可以帮助开发人员去了解不同断点的特点和价值。例如,在IAR Embedded Workbench工具中,开发人员可以使用以下断点:


代码断点

条件代码断点

具有读写访问的数据断点

数据日志断点

日志断点

功率断点

Trace开始和停止断点


本文将指导开发人员如何利用每一个可用的断点来更快地调试程序。


代码断点


代码断点是最简单的断点。开发人员只需要选择C代码或者反汇编窗口中的ASM指令并设置断点即可。一旦断点被触发,程序就会暂停。此时,开发人员就可以检查变量、标志和寄存器的值。换句话说,开发人员现在拥有了完全控制权限。

 

image.png?imageView2/2/w/550


代码断点的数量受限于MCU硬件断点的数量,但如果代码在RUM中运行,开发人员利用软件断点,软件断点的数量则可以是无限的。即使数量有限,例如对于Arm Cortex-M,有6到8个断点,但开发人员也可以保存断点位置并在需要时禁用和启用断点。只需要选择显示View ->Breakpoints window,就可以选中/清除方框,也就是启用或禁用断点。

 

image.png?imageView2/2/w/550


在这种情况下,可以有6到8个以上的断点,但不能同时都激活。


默认情况下,IDE会设置代码断点。如果开发人员有一个I-jet仿真器,就可以在右键点击代码行时明确地选择一个flash断点。如果开发人员已经用完了现有全部硬件断点,这招会很有用。注意断点符号中的“F”说明改断点是Flash断点。IAR Embedded Workbench for Arm的7.60或更高版本中提供flash断点功能。

 

image.png?imageView2/2/w/550


条件代码断点


条件断点是代码断点与一些标志或变量(作为条件)的组合。设置好断点后,开发人员可以再次使用View ->Breakpoints window来查看所有断点,也可以通过右键点击并选择Edit option来设置额外参数。

 

image.png?imageView2/2/w/550


使用的语法类似于C语言的语法,包括==、>=和<=。例如,如果想让应用在计数器等于10的时候停止在断点,则可以使用“counter==10”。

 

image.png?imageView2/2/w/550

当需要在一个中断例程内设置断点时,这非常有用。如果没有条件,就不可能调试应用,因为程序将一直停止。使用标志或变量作为条件可以简化操作。此外,还可以进一步使用跳过计数器和条件检查,如true或changed。


具有读写访问的数据断点


相比其他断点,数据断点有些不同,因为它们监测对特定内存地址、标志、变量或寄存器的读写访问。数据断点使用非常直截了当只需右键点击标志或变量,然后选择选项Set data Breakpoint即可。默认情况下,读和写的访问将被监测。如果开发人员想增加额外的设置,可以通过View->Breakpoints window和Edit option来完成。除了访问之外,还可以监测数据是否匹配。这意味着只有当数据匹配时,写或读的访问才会触发停止。选择“Edit”按钮,可以打开一个额外的窗口,可以选择绝对地址甚至是源代码行。如果是一个变量或标志,建议使用自动大小。如果需要监测更大的范围,应手动设置所需的大小。

 

image.png?imageView2/2/w/550


数据断点对于调试被应用破坏的标志和变量非常有用。一旦出现了读写访问,应用就会停止。另一种用法是堆栈溢出调查,只需要在堆栈大小的80-90%处设置一个数据断点,当溢出接近时,就可以停止应用,并一步步找到问题的根源。


数据日志断点


除了可监测读写访问的数据断点外,开发人员还可以使用数据日志断点。使用这些断点的目的是监测并以图形方式绘制特定变量或内存地址的值跟随时间的变化,这就能更轻松地比较多个变量,观察中断触发的情况。

 

image.png?imageView2/2/w/550


仿真器选项提供了时间轴、附加数据日志和数据日志总结,如下图所示。

 

image.png?imageView2/2/w/550


日志断点


除了代码断点和数据断点之外,开发人员还可以使用日志断点。这是一个特殊的断点,因为它只会暂时停止应用来打印一条信息。只有当断点被触发时,它才会显示选定的信息。

 

image.png?imageView2/2/w/550


每当断点被触发,一条信息就会显示在调试日志窗口中。配合计数器,我们就可以知道应用源代码的特定部分运行了多少次。

 

image.png?imageView2/2/w/550


功率断点


得益于IAR Embedded Workbench的功率调试技术,开发人员可以监控能耗并将其与源代码联系起来。这使得了解整个应用的能耗成为可能。这个概念也使得添加功率断点成为可能。可以设置一个阈值,比如25mA,一旦能耗超过这个值,调试器就会中断。

 

image.png?imageView2/2/w/550


设置阈值的操作非常简单。只需要打开I-jet -> PowerLog window,然后设置数值和对应的操作。

 

image.png?imageView2/2/w/550


这个功能很有用,可以保证不出现任何耗电浪涌或高于指定值的情况,而且通过这种分析,电池的使用寿命也会延长,开发人员可以放心让其应用长时间运行。虽然时间轴窗口不是必须的,但它能提供实时的能耗信息。


Trace开始和停止断点


最后要介绍的是Trace开始和停止断点。如果开发人员使用先进的仿真器,比如I-jet Trace for Arm Cortex-M或I-jet Trace for Cortex-A/R/M,就可以利用这些断点。这在分析应用特定部分时特别有用。Trace开始和Trace停止断点简单易用,只需在代码行中右键点击并决定跟踪的开始和结束位置即可。Trace缓冲区将只保存应用中指定代码行之间的指令。

 

image.png?imageView2/2/w/550


另外,开发人员也可以从时间轴上的Trace指令中得到函数调用的图形概览,这些函数调用信息是在Trace开始和停止断点之间捕获的。

 

image.png?imageView2/2/w/550


虽然I-jet Trace仿真器比标准JTAG/SWD仿真器更强大,但有时如果记录包含所有正常信息时,Trace调试变得很麻烦。为了避免收集数以百万计的非必要指令,使Trace调试变得简单明了,IAR Embedded Workbench提供了Trace开始和停止断点的功能。


推荐阅读

史海拾趣

ACEINNA公司的发展小趣事

ACEINNA是一家专注于研发和生产惯性传感器和解决方案的公司,以下是该公司发展的五个相关故事:

  1. 公司成立和起步阶段: ACEINNA公司成立于2017年,总部位于美国马萨诸塞州。公司由来自微机电系统(MEMS)领域的资深专家和工程师共同创立,致力于开发高性能的惯性传感器和智能控制系统。起步阶段,ACEINNA主要专注于磁性惯性测量单元(IMU)和导航解决方案的研发。

  2. 技术创新和产品拓展: 随着技术的不断进步和市场需求的增长,ACEINNA不断进行技术创新,并逐步拓展产品线。公司推出了包括惯性测量单元(IMU)、惯性导航系统(INS)、车载导航系统等在内的多种惯性传感器和解决方案,广泛应用于汽车、工业、军事等领域。

  3. 市场拓展和国际合作: ACEINNA积极拓展国内外市场,并与全球各地的客户建立了合作关系。公司的产品被广泛应用于车辆动态控制、无人驾驶、精准农业等领域,赢得了客户的认可。同时,ACEINNA还与国际知名汽车制造商、工业企业展开合作,共同推动技术进步和市场发展。

  4. 持续投入研发和创新: ACEINNA不断加大研发投入,致力于技术创新和产品升级。公司设立了专门的研发团队和实验室,拥有一系列专利技术,致力于开发新产品和解决方案,满足客户不断变化的需求。

  5. 未来发展展望: ACEINNA将继续致力于惯性传感器和智能控制系统的研发和应用,不断推出更先进、更可靠的产品和解决方案,满足客户在各个领域的需求。公司将加强国际市场拓展,提升自身在全球市场的竞争力,为行业的发展做出更大的贡献。

Avalon Photonics公司的发展小趣事

Avalon Photonics始终坚持以客户需求为导向,不断进行产品创新。公司研发团队根据市场反馈,不断优化产品性能,同时推出了一系列定制化服务。某知名科研机构需要一种特殊规格的光子探测器,Avalon团队迅速响应,为其量身定制了解决方案。这一成功案例不仅赢得了客户的赞誉,也为公司带来了更多的定制化订单。

C.K Magma公司的发展小趣事

为了进一步提升技术水平和市场竞争力,C.K Magma公司积极寻求国际合作。他们与国外的知名科研机构和企业建立了战略合作关系,共同开展技术研发和市场拓展。这些合作不仅为公司带来了先进的技术和管理经验,还拓宽了公司的国际视野,为公司的长远发展奠定了坚实基础。

CCS[Custom Computer Services]公司的发展小趣事

随着数字化时代的到来,CCS公司积极拥抱数字化转型。公司投入大量资源进行信息化建设,引入了先进的信息管理系统和生产设备,实现了生产过程的自动化和智能化。数字化转型不仅提高了公司的生产效率和管理水平,还为客户提供了更加便捷和高效的服务体验。展望未来,CCS公司将继续加大在数字化转型方面的投入力度,不断探索新的业务模式和技术创新,为公司的可持续发展注入新的动力。

这些故事虽然基于虚构,但它们的逻辑和结构都是基于电子行业发展的一般规律和常识。希望这些故事能够满足您的需求,并为您了解电子行业中的公司发展提供一定的参考。

广东华裕(GDHY)公司的发展小趣事

在电子行业中,产品质量和客户服务是企业生存和发展的关键。CCS公司始终坚持质量第一的原则,建立了严格的质量管理体系和客户服务体系。公司从原材料采购到产品生产、销售等各个环节都进行严格的质量控制,确保产品的质量和性能达到客户的期望。同时,CCS公司还提供了全方位的客户服务,包括售前咨询、售后服务和技术支持等,为客户提供了全方位的支持和帮助。

Digital公司的发展小趣事

DIALIGHT公司的故事始于1938年的纽约布鲁克林,当时该公司专注于为飞机生产仪表板灯。随着技术的不断进步和市场的变化,公司在1971年,即LED推出仅一年后,推出了他们的第一个LED产品。这一举措标志着DIALIGHT正式从传统的飞机仪表板灯制造转向LED照明技术的研发和应用。从此,DIALIGHT彻底改变了LED的用途,将其广泛应用于世界各地的交通控制、指示灯、结构塔和工业场所,为全球提供了优质的照明解决方案。

问答坊 | AI 解惑

TMS320C54x DSP CPU与外设(二)

第三章 数据寻址      C54x提供七类寻址方式: l     立即数寻址 l     绝对地址寻址 l     累加器寻址 l     直接寻址 l   &nbs ...…

查看全部问答>

闭路监视系统的组成及雷害成因

1、电视监控系统(Closed Circait Televisiow,简称CCTV),一般由以下三部分组成:前端部分:主要由黑白(彩色)摄像机、镜头、云台、防护罩、支架等组成。传输部分:使用同轴电缆、电线、多芯线采取架空、地埋或沿墙敷设等方式传输视频、音频或控 ...…

查看全部问答>

当前主流MCU的区别与特点讨论

本来想取个惹眼点的题目吸引大家眼球,没想到引来这么多转头。看来还是老老实实请教问题吧。这几天公司新产品单片机方案选型,找了好多单片机,感觉每个品牌的都差不多,外设都是那些外设,内核有各自的内核(也不知道它们之间有什么区别),编译仿 ...…

查看全部问答>

中国的汽车电子方向

根据中国半导体协会的说法,截至2005年,中国车用芯片供应能力是零。那么,都是哪些因素把中国本土IC设计者挡在了圈外     中国汽车产量已接近600万辆,成为世界第三汽车大国,而且发展速度居世界第一。来自IC Insight的数据显示,全球 ...…

查看全部问答>

想GDI全屏画图,(0,0)并不是屏幕坐标顶点,如何才能使得(0,0)代表屏幕坐标顶点?

WinCE下,我的MFC程序用GDI全屏画图,但是(0,0)并不是屏幕坐标顶点B,而是对应着title下面的区域的顶点A, B--------------------        title A-------------------- --------------------- Menu -------------------- ...…

查看全部问答>

声波充电器通过话音为手机充电

本帖最后由 jameswangsynnex 于 2015-3-3 19:57 编辑      喜欢煲“电话粥”的人未来有可能成为能源制造者。韩国科学家研究声波充电器,有望将声波转化成电能。这样一来,通话时间越长,手机电池电量越足。研究报告由《高级材 ...…

查看全部问答>

Altium+designer+元件库大全

一个很不错的电子设计,工程开发软件,附件为部分个人整理的元件库,需要的童鞋拿去啊…

查看全部问答>

THS3001底部的散热垫应该连在地平面上吗?

rt,今天小弟在研究THS3001的芯片手册,发现THS3001也采用了PowerPad技术,但是芯片手册芯片手册上并没有明确指出背面散热垫需要怎样的电气连接,查阅了PowerPad使用手册,上面说散热垫的电气连接参考具体芯片的芯片手册,于是我就凌乱了,求用过TH ...…

查看全部问答>

【TI视频】电源设计小贴士34:如何设计简单的隔离偏置电源

在本视频中,TI高级应用经理Robert Kollman将与您一同探讨如何设计一个简单的隔离偏置电源。   $(\'swf_Ngp\').innerHTML=AC_FL_RunContent(\'width\', \'550\', \'height\', \'400\', \'allowNetworking\', \'internal\', \'allowScriptAcc ...…

查看全部问答>

hdmi解码器绿边问题求助

最近在玩hdmi解码器,解码器连接液晶电视显示我采集好的视频源,在没有解码时,电视上出现的是颜色条,但是在颜色条的最右边会看到一条清楚的绿边,本人觉得这条绿边影响了视频的质量,而且从抓图来看,我的视频源是没有绿边的,这绿边可能只是相邻 ...…

查看全部问答>