加速cortex-买球官网平台

1顶
0踩

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

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

原文链接:
作者:jacob beningo
译者:刘帝伟 审校:刘翔宇
责编:周建丁([email protected]

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

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

发表评论

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

相关推荐

  • 虽然使用cortex-m3的mcu有两三几年了,但主要是基于c语言开发,而且因为网络上资源非常多,官方提供的project也比较多,导致并未对mcu的运行原理进行详细的分析过。最近在使用uc-osii做一些功能,发现如果想把uc-os...

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

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

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

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

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

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

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

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

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

  • 随着半导体技术的不断进步(按照摩尔定律),mcu内部集成的逻辑功能外设越来越多,存储器也越来越大。消费者对于汽车节能(经济和法规对排放的要求)型、舒适性、互联性、安全性(功能安全和信息安全)的要求越来越...

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

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

  • 随着半导体技术的不断进步(按照摩尔定律),mcu内部集成的逻辑功能外设越来越多,存储器也越来越大。消费者对于汽车节能(经济和法规对排放的要求)型、舒适性、互联性、安全性(功能安全和信息安全)的要求越来越...

global site tag (gtag.js) - google analytics