加速cortex-欧洲杯足彩官网

1顶
0踩

加速cortex-m mcu调试的五个技巧

2016-05-16 16:39 by 副主编 mengyidan1988 评论(0) 有6304人浏览
引用

原文链接:
作者:jacob beningo
译者:刘帝伟 审校:刘翔宇
责编:周建丁(zhoujd@csdn.net)

调试嵌入式软件是我最不喜欢的行为,不幸地是,它却是必要的。值得庆幸地是,技术和工具链创新的进步衍生出大量的新技术,从而大大地加快了调试过程。下面让我们来看看其中一些方法,从传统的断点调试出发到更先进的仪器跟踪技术。

技巧1# - 传统的断点调试
每个开发人员都熟悉传统的调试技术,设置断点、执行代码,然后单步调试代码进行监视,同时监视寄存器和变量值。断点调试是我看到的使用最多的技术。然而,结果却不甚乐观,因为断点调试的效率较低,通常会产生次优的结果。

既然如此,为什么大家还如此频繁地使用断点调试呢?主要原因似乎是断点调试便于使用,易于理解,并且开发人员都乐观地认为,对于工作而言,断点是正确的工具。这种乐观需要校验。断点有可能破坏系统的实时性能,同时会将开发者吸进一个黑洞,使其无休止地去单步执行代码,盲目地寻找问题的一种解决方法。

技巧2#- ide值图
如今,几乎所有的现代调试器和ide都允许开发者监视存储在内存中的变量值。开发人员可以选择内存位置以及值刷新率,然后启动调试会话。一些ide自身就有能力监视内置到ide的值,而另外一些ide则需要依靠外部软件。

值监测非常有用,如果将监测到的数据与图形化表示关联到一起,其带来的价值则更大。对实时的数据绘制值图对于发现意想不到的变化和验证特定波形的生成极其有用。例如,一个三相无刷直流电机(bldc motor)。开发人员如果想要监测每个电机支架的电流和电压,则需要驱动电机所形成的非常具体的波形。绘制每个电机支架电流和电压能够让开发人员实时看到发生的事情。

技巧3#-从printf到swo
在高端的arm cortex-m系列配件中,如m3/m4,它为开发人员提供了额外的调试能力,即串行线查看器(serial wire viewer,swv)。swv还包括除串行线输出(swo)以外的标准串行线调试。swo可以用来做很酷的东西,如程序检索计数器,事件计数器,及数据追踪等。开发者还可以对它们进行自定义,设置自己想要在swo中传送的信息。

许多开发者为了从他们的嵌入式系统中获取调试信息通常会设置printf。实际上则并不是在单片机中使用串口引脚,而是开发人员可以使用swo通过调试器重新路由printf信息。以这种方式使用调试器可以保存专用串行接口的需要,同时消除了开发uart和usb设备的时间,效率更高。现在通过swo和调试硬件将最初被应用程序所使用的开销卸去,缩减了那些有可能被应用程序代码使用的宝贵的时钟周期。

技巧4#-rtos跟踪
试图透过表像看清一个实时操作系统中(rtos)的本质可以说是相当具有挑战性。开发者并不想扰乱实时系统的性能,但仍然需要一些方法来了解系统的行为。这也是blinky led经常使用的把戏,但最近开发者的工具箱中增加了更多惊人的跟踪工具。例如免费的商用rtos工具,如tracex、systemview和tracealyzer等等。

当rtos闲置,或是有任务进入和退出时,跟踪工具允许开发者进行追踪分析。开发人员可以监控系统的异常,响应时间,执行时间,以及正确开发一个嵌入式系统所需的许多其他关键细节。rtos跟踪工具最酷的功能是它们能够展示系统内部发生了什么。实时地或是在日志文件中进行审查和时序图监视,能够让开发者确定一个置信水平,用以估量系统是否能够按预期正常运行,或者帮助他们发现一些小问题,否则将花费大量的时间去寻找。

技巧5 #- 使用指令追踪技术(etm / etb / etm)
有时开发人员面临的调试问题,只是在处理器中所能想象到的最低层面的问题。跟踪技术的存在,可以监视处理器执行的单个指令。在测试和验证软件时这种低水平跟踪对于监测分支覆盖非常有用。用于指令跟踪的调试工具不同于那些开发人员使用的串行线查看,而且成本略高。

结束语
调试工具和技术在过去几年里迅速发展,特别是高端微控制器。一般来讲,工程师都是视觉型生物,工具供应商正在寻找方法以刺激视觉的方式来揭示一个实时系统究竟发生什么。配置调试工具可能需要做一些前期工作,但是在设计上多花一点时间可以换来更少的调试时间,确实是一笔非常值得的时间投资。开发人员至少应该熟悉不同的调试工具和可用的功能,以便在出现问题,系统需要调试时,他们可以选择合适的工具完成任务。你有用过其它可以帮助工程师更快、更有效率地调试他们系统的技术么?
引用

jacob beningo是beningo engineering(一个嵌入式软件咨询公司)的首席顾问。jacob在开发、查核和批判驱动、为那些对固件有鲁棒性和可扩展性要求的公司设计框架以及编写应用程序代码方面经验丰富。他通过研讨会、网络会议和博客积极提升对升嵌入式软件开发的整体理解。如有您有任何问题,也可随时联系他:jacob@beningo.com,网站www.beningo.com,在这里可以订阅他每月的嵌入式字节快讯。
1
0
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • cortex-m3(转) 首先,在学习cortex-m3时,我们必须要知道必要的缩略语。整理如下:amba:先进单片机总线架构 adk:amba设计套件 ahb:先进高性能总线 ahb-ap:ahb访问端口 apb:先进外设总线 arm arm:arm架构...

  • thumb-2是16位thumb指令集的一个超集,在thumb-2中, 16位指令首次与32位指令并存,结果在thumb状态下可以做的事情一下子丰富了许多,同样工作需要的指令周期数也明显下降。内部的数据路径是32位的,寄存器是32位的...

  • cortex-m3学习笔记(一) 首先,在学习cortex-m3时,我们必须要知道必要的缩略语。整理如下:amba:先进单片机总线架构 adk:amba设计套件 ahb:先进高性能总线 ahb-ap:ahb访问端口 apb:先进外设总线 ...

  • 首先,在学习cortex-m3时,我们必须要知道必要的缩略语。整理如下:amba:先进单片机总线架构 adk:amba设计套件 ahb:先进高性能总线 ahb-ap:ahb访问端口 apb:先进外设总线 arm arm:arm架构参考手册

  • 首先,在学习cortex-m3时,我们必须要知道必要的缩略语。整理如下:amba:先进单片机总线架构 adk:amba设计套件 ahb:先进高性能总线 ahb-ap:ahb访问端口 apb:先进外设总线 arm arm:arm架构参考手册

  • 原来一直在cortex-a8上做相关算法的开发和移植,最近要在cortex-m3上实现一小功能,所以要了解一下cortex-m3 架构,在网上看到这篇blog不错,特转载一下。 ... 首先,在学习cortex-m3时,我们必须要知道必要的缩略语。...

  • 每当需求一下来,我代码很快就可以写完,但是,调试需要花很多时间。这里需要明确的是, 调试的目的不仅仅是调通整个功能需求 。调通功能是最基本的要求,还需要进行优化、完善逻辑、完善异常处理。所以,需要非常长...

  • (在下面这个网站可看到很多mips相关的文章:http://www.embedstudy.com/category-22) 转一篇不错的介绍mips芯片的文章。当然这里面说arm没有影子寄存器是不对的。 wait指令的介绍也不错:m4k内核还通过使用内部...

  • 对于电池供电的互连设备而言,能耗是至关重要的,降低能耗可以最大程度地延长电池的更换时间,甚至让设备在没有环境能量源的情况下运行。...此类方法不仅必须要考虑存储容量、mcu性能和功耗的因素,还必须考虑到无...

  • 破解市场迷思:mips-最适用于设计mcu的处理器 time:2011-04-07 14:26:14 author: source:mips科技公司 关键字:mips科技公司,破解市场迷思,mips,设计mcu的处理器 1 引言 mips科技公司以开发与授

  • ---cortex-m(微控制器/单片机)/cortex-a(应用级,手机、平板)/cortex-r(实时的、工业航天…)… armv8-------cortex-a30、arm cortex-a50、arm cortex-a70 armv9 ############################################# 内核...

  • 首先,在学习cortex-m3时,我们必须要知道必要的缩略语。 在网上看的,觉得挺好的,分享过来了 整理如下: amba:先进单片机总线架构 adk:amba设计套件, ahb:先进高性能总线 ahb-ap:ahb访问端口apb:先进外设...

  • 这篇是在网上看见的,讲的比较好 ... 如果需要转载的请注明出处!...首先,在学习cortex-m3时,我们必须要知道必要的缩略语。整理如下:amba:先进单片机总线架构 adk:amba设计套件 ahb:先进高性能总线 ahb-ap:ahb

  • 引言 1. bootloader的功能 2. 如何建立可靠的总线通信? 3. 解析编程文件(s19/hex/bin) 4. nvm驱动程序开发 ... 开发bootloader需要掌握的知识和调试方法技巧 d.量产时bootloader和应用程序的下载...

  • csdn仅用于增加百度收录权重,排版未优化,日常不维护。... ... 整理buildroot笔记,包含配置选项注释、目录结构分析、常用命令、构建示例、 使用技巧。 1.buildroot基本介绍 buildroot是linu...

  • python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。python社区提供了大量的第三方库,如numpy、pandas和requests,极大地丰富了python的应用领域,从数据科学到web开发。python库的丰富性是python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,matplotlib和seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

  • stm32单片机fpga毕设电路原理论文报告基于ide硬盘的数字图像存储技术研究本资源系百度网盘分享地址

  • 适合rust入门。深入浅出,事无巨细,远胜市面上所有入门书。而且是免费的

  • vb语言vb房屋租凭管理系统毕业设计(源代码 系统)本资源系百度网盘分享地址

global site tag (gtag.js) - google analytics
网站地图