更多课程 选择中心

嵌入式培训
达内IT学院

400-111-8989

在调试嵌入式软件时,使用追踪工具发现了这些.......

  • 发布:江文瑞
  • 来源:嵌入式资讯精选
  • 时间:2018-09-07 17:53

在调试嵌入式软件时,也就基本进入了软件上线前的最后检查阶段了,结果使用追踪工具发现了这些典型错误!

众所周知,单独的源代码并不给出基于RTOS的固件实际行为的全貌表现。实时行为还取决于许多其他因素,如任务和中断的定时,输入和实时操作系统的配置。

Tracealyzer提供了前所未有的洞察基于RTOS的软件的运行世界功能,从而改善开发效率,减少上市时间,及更好的软件质量。使用Tracealyzer,可以记录RTOS及应用的实时行为,并具有强大的可视化功能,提供前所未有的洞察运行时状态的能力。这有助于加速基于RTOS的软件开发、验证和调试。

Tracealyzer支持FreeRTOS,uC/OS-III,VxWorks以及Linux的跟踪。

调试嵌入式软件,嵌入式培训

近日,由《嵌入式系统编程》杂志的前任主编兼行业资深人士迈克尔•巴尔(Michael Barr)撰写的三本关于软件漏洞主题的书籍,不仅列出了错误,还提出了避免它们的设计模式。

良好的设计模式是非常宝贵的,但无论如何错误总是难以避免的。在调试嵌入式软件时,使用Percepio Tracealyzer等RTOS跟踪工具可以找到并分析这些错误中的至少五个。

1、抖动

如果软件系统中有一项需要定期执行的任务,例如每10毫秒读取一次模数转换器,那么它就拥有一个对随机延迟敏感的系统 - 也称为抖动。如果10 ms间隔降低到10±2 ms,则计算精度会相应降低。

为了最大限度地减少抖动,迈克尔•巴尔指出需要微调任务优先级,并可能使用定时器中断来处理最敏感的代码。Tracealyzer在定位系统中的抖动方面非常有用。

2、优先级分配不正确

设置合适的任务优先级对于基于RTOS的系统的性能和可靠性至关重要,因为采用过高优先级运行的任务可能会导致其他任务中出现无法接受的延迟。

迈克尔•巴尔指出,速率单调分析(RMA)是一种在具有固定优先级和抢占式调度的系统中分配任务优先级的正式方法。但是,这需要有足够的有关任务行为的信息,并且任务的行为符合此分析方法的假设。

找到在所有情况下都能正常工作的任务优先级的正确组合可能非常困难,除非有一个良好的跟踪工具来显示RTOS中正在发生的事情。 Tracealyzer允许检查执行时间,执行模式以及任务的最终响应时间。这使开发者可以评估和优化其优先级分配,以实现更快的响应时间和更可靠的行为。

3、优先级反转

具有固定优先级调度程序的RTOS的核心思想是,应该在具有较低优先级的任务之前安排高优先级任务,但是当两个或多个任务需要协调其工作与全局数据区等共享资源或外围设备时,可能会导致系统出错。

其中一个可能出错的事情就是优先级反转(priority inversion),低优先级任务无意中阻止了具有更高优先级的任务。 如果你意识到这个陷阱,这也很容易地避免。 但是,如果发现系统的响应性偶尔会出现延迟,则可能是因为优先级反转。 使用Tracealyzer,可以通过绘制任务的响应时间来发现此类延迟。 要查看此图中任何极端值的原因,只需双击以显示相应的任务执行跟踪。

4、死锁

死锁是两个或多个任务之间的循环依赖。 例如,如果任务1已经获得A,并且被阻止等待B,而任务2先前已获得B,并且被阻止等待A,则这两个任务都不会被唤醒。 尽管没有更高优先级的任务正在运行,但是当多个任务突然停止执行时,可能是出现死锁问题的明确迹象。 同样,死锁的检测是Tracealyzer可以展示的内容。

如果希望避免死锁,首先要注意的是,只有当任务试图同时持有两个资源时才会发生死锁。 因此:构建代码时,使任何任务在同一时间都不会持有多个共享资源,这样不会产生死锁。

5、内存泄漏

通常不建议在嵌入式软件中进行动态内存分配,但有时会出于各种原因(对或错)进行动态内存分配。问题在于,如果使用它,则必须确保一旦内存块不再使用时,就释放每个已分配的内存块。如果在某些情况下遗漏了这一点,就会出现内存泄漏,并最终耗尽内存。请记住:即使在项目中禁止动态内存分配,也可能有第三方软件库或外部开发团队在不知情的情况下使用动态内存分配。

如果内存泄漏只是偶尔发生,那么它就特别危险,因为在功能测试期间很容易错过“缓慢”的内存泄漏,但在部署单元一段时间后,可能会导致严重错误。考虑到许多嵌入式系统的长期运行特性,以及一些安全关键系统可能存在的致命或严重故障,内存泄漏是绝对不希望在软件中出现的一个错误。

Tracealyzer可以监视RTOS对动态内存分配的调用,并可以突出显示可疑的内存泄漏。

感谢您的阅读,任何影响性能、体验等的错误我们都应该在产品面向用户之前进行扼杀,调试嵌入式软件,使用跟踪工具可以找到一些典型错误,也让我们及早发现问题,不至于造成更大的损失!好了,更多嵌入式相关的内容尽在达内嵌入式培训,敬请关注!

免责声明:内容和图片源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

预约申请免费试听课

填写下面表单即可预约申请免费试听!怕钱不够?可就业挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:达内嵌入式培训2018年8月免费训练营课程表
下一篇:自学嵌入式难吗?如何快速入门嵌入式?

什么是嵌入式?嵌入式的三重境界是什么?

嵌入式开发与单片机哪个更难?听听高手怎么说!

有哪些编码习惯有利于我们写出漂亮的嵌入式C代码?

嵌入式硬件设计中需要注意什么?

  • 扫码领取资料

    回复关键字:视频资料

    免费领取 达内课程视频学习资料

  • 搜索抖音号

    搜索抖音号:1821685962

    免费领取达内课程视频学习资料

Copyright © 2021 Tedu.cn All Rights Reserved 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有

选择城市和中心
黑龙江省

吉林省

河北省

湖南省

贵州省

云南省

广西省

海南省