0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用Percepio Tracealyzer等RTOS跟踪工具可以找到并分析调试嵌入式软件时的错误

5RJg_mcuworld 来源:未知 作者:李倩 2018-09-12 16:43 次阅读

众所周知,单独的源代码并不给出基于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对动态内存分配的调用,并可以突出显示可疑的内存泄漏。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式软件
    +关注

    关注

    4

    文章

    240

    浏览量

    26620
  • RTOS
    +关注

    关注

    22

    文章

    809

    浏览量

    119439

原文标题:在调试嵌入式软件时,使用跟踪工具可以找到一些典型错误!

文章出处:【微信号:mcuworld,微信公众号:嵌入式资讯精选】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Tracealyzer 技术分享

    为什么要使用Tracealyzer???1.在使用FreeRTOS的系统进行开发的时候,在多任务开发的时候,多时序紊乱,导致系统异常Tracealyzer是一个很好的嵌入式OS时序分析
    发表于 01-04 21:10

    教你快递入门-Tracealyzer跟踪记录库移植

    PercepioTracealyzer是一个强大的工具可以在运行时跟踪和可视化分析RTOS系统。超过30种视图,对系统的实时行为提供了惊人
    发表于 07-31 14:08

    浅谈基于RTOS系统开发调试的难题

    调试器(J-Link)或者串口通信接口,实时的将数据传输到PC端的分析软件,实现长时间的实时跟踪
    发表于 04-28 13:28

    使用Tracealyzer跟踪FreeRTOS内核

    模式,可以跟踪单个任务和特定内核函数的内存分配和内存共享,使用这个工具可以很方便的找到内存错误
    发表于 12-01 14:57

    如何使用Tracealyzer流模式跟踪ThreadX?

    TracealyzerPercepio 公司开发的一款用于RTOS嵌入式软件系统的可视化跟踪
    发表于 09-23 13:25

    使用PercepioTracealyzer和DevAlert实现FreeRTOS的可观察性!

    Percepio是著名的Tracealyzer背后的公司。Tracealyzer是一款桌面应用程序,方便嵌入式工程师通过追踪直观地诊断软件
    发表于 05-18 13:41

    如何在VIM中对嵌入式软件进行调试

    GNU免费提供了一整套工具链,为嵌入式Linux程序的开发和调试提供了完整的支持。其强大的gdb调试工具可以方便地对
    发表于 06-30 10:39 1134次阅读
    如何在VIM中对<b class='flag-5'>嵌入式</b><b class='flag-5'>软件</b>进行<b class='flag-5'>调试</b>

    UltraSoC与Percepio结盟为实时系统提供第一个完整的嵌入式分析平台

    领先的嵌入式分析技术供应商UltraSoC与领先的实时操作系统软件跟踪工具专业厂商Percepio
    发表于 02-09 15:25 237次阅读
    UltraSoC与<b class='flag-5'>Percepio</b>结盟为实时系统提供第一个完整的<b class='flag-5'>嵌入式</b><b class='flag-5'>分析</b>平台

    UltraSoC联手Percepio 嵌入式调试工具实时交流和分享重要信息

    领先的嵌入式分析技术供应商UltraSoC与领先的实时操作系统软件跟踪工具专业厂商Percepio
    发表于 12-19 16:30 890次阅读

    哪些工具可以可以发现基于RTOS的程序错误

    、饥饿、死锁、优先级反转bug。 一些专门设计的工具可以帮助基于RTOS的程序开发人员发现一些难以发现的错误
    的头像 发表于 04-12 10:46 1922次阅读
    哪些<b class='flag-5'>工具</b><b class='flag-5'>可以</b><b class='flag-5'>可以</b>发现基于<b class='flag-5'>RTOS</b>的程序<b class='flag-5'>错误</b>?

    基于RTOS嵌入式系统软件的设计讲解

    基于RTOS嵌入式系统软件的设计讲解(树莓派嵌入式开发板)-该文档为基于RTOS嵌入式系统
    发表于 07-30 10:03 8次下载
    基于<b class='flag-5'>RTOS</b>的<b class='flag-5'>嵌入式</b>系统<b class='flag-5'>软件</b>的设计讲解

    如何使用Tracealyzer的流模式来跟踪ThreadX应用

    TracealyzerPercepio 公司开发的一款用于RTOS嵌入式软件系统的可视化跟踪
    的头像 发表于 09-16 11:14 1375次阅读

    如何通过Tracealyzer导出的跟踪数据对任务进行分析

    TracealyzerPercepio 公司开发的一款用于RTOS的可视化跟踪工具, 目前Tracea
    的头像 发表于 02-06 14:13 1071次阅读

    使用PercepioTracealyzer和DevAlert实现FreeRTOS的可观察性

    执行过程中解释系统状态。在对意外行为进行故障排除时,使用FreeRTOS分析基于微控制器的应用程序的追踪可以节省嵌入式工程师大量时间和精力。如需将此工具与FreeRTOS应用程序一起使
    的头像 发表于 05-16 14:17 1711次阅读
    使用<b class='flag-5'>Percepio</b>的<b class='flag-5'>Tracealyzer</b>和DevAlert实现FreeRTOS的可观察性

    Percepio Tracealyzer 4.9版本改善Linux用户体验

    嵌入式边缘系统工具解决方案的领先供应商Percepio AB宣布提供Tracealyzer4.9版本——这是其嵌入式
    的头像 发表于 10-22 14:08 292次阅读