您的位置 首页 电源

加快调试嵌入式软件的五个技巧

调试嵌入式软件是我最不喜欢的行为,不幸地是,它却是必要的。值得庆幸地是,技术和工具链创新的进步衍生出大量的新技术,从而大大地加快了调试过程。

调试嵌入式软件是我最不喜爱的行为,不幸地是,它却是必要的。值得幸亏地是,技能和东西链立异的前进衍生出很多的新技能,然后大大地加快了调试进程。下面让我们来看看其间一些办法,从传统的断点调试出发到更先进的仪器盯梢技能。

技巧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)

有时开发人员面对的调试问题,只是在处理器中所能幻想到的最低层面的问题。盯梢技能的存在,能够监督处理器履行的单个指令。在测验和验证软件时这种低水平盯梢关于监测分支掩盖十分有用。用于指令盯梢的调试东西不同于那些开发人员运用的串行线检查,并且本钱略高。

结束语

调试东西和技能在曩昔几年里迅速发展,特别是高端微控制器。一般来讲,工程师都是视觉型生物,东西供货商正在寻觅办法以影响视觉的办法来提醒一个实时体系终究产生什么。装备调试东西或许需求做一些前期作业,但是在规划上多花一点时刻能够换来更少的调试时刻,确实是一笔十分值得的时刻出资。开发人员至少应该了解不同的调试东西和可用的功用,以便在出现问题,体系需求调试时,他们能够挑选适宜的东西完成使命。你有用过其它能够协助工程师更快、更有功率地调试他们体系的技能么?

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/dianyuan/144601.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部