查看: 545|回复: 0

[原创] 出现“丢失事件”?看Tracealyzer流模式如何调优

[复制链接]
  • TA的每日心情
    开心
    2023-6-12 14:34
  • 签到天数: 165 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2021-2-19 11:03:37 | 显示全部楼层 |阅读模式
    分享到:
    Tracealyzer 针对FreeRTOS和 Micrium µC/OS的记录器库可以配置成通过可用的通信接口(例如串口)来传输跟踪数据。用户通过提供一个自定义的“流端口”(stream port)来实现,需要在trcStreamingPort.h中实现这些I/O功能,供记录器库使用。流端口的示例在记录器库的“streamport”目录中提供。

    流端口需要有足够的数据吞吐量,以保证传输的可靠。你在使用自己定义的流端口实现流跟踪时,如果Tracealyzer提示了“丢失事件”,那么你可以参照以下几种方法,来提升流端口的性能。

    潜在的问题可以分成3类:
    1、跟踪记录时没有足够的临时缓存空间;
    2、系统产生的事件数据超过了流端口的处理能力;
    3、传输时存在随机错误,比如波特率设置的太高。

    缓存写满
    我们先从第一类问题开始。多数情况下,流端口在记录器中使用了位于内部RAM的缓存,事件先存储在缓存,再由TzCtrl任务(Tracealyzer创建的专有任务,用于传输流数据)周期性的更新到流端口。这么做有两个目的:平滑数据输出速率和避免在RTOS内核中调用流端口函数。
    1.png
    内部的缓存被分成了几个部分,称之为页。记录器库的TzCtrl任务会定期的传输所有已经写满的页,但记录器正在写的页除外。所以,如果只使用了2个页的最小设置,TzCtrl任务每次运行只能传输一个页的内容。

    内部缓存可以在trcStreamingConfig.h中进行配置:
    2.png
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-10-18 18:26 , Processed in 0.115008 second(s), 17 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.