Tracealyzer是一个用于RTOS系统的跟踪和可视化分析工具,对系统运行时的行为提供了前所未有的洞察方法。以往需要几天甚至更长时间才能解决的问题,可以使用Tracealyzer快速解决。加速了调试及减少对系统验证和性能优化所需要的时间。但不少用户对于使用Tracealyzer时将造成多大的处理器开销有着担忧,本文将回答这一问题。 基于软件的数据跟踪始终会存在一些处理器开销,其确切的数量为f和e的乘积f * e,其中f是平均事件频率,e是用于存储事件的平均执行时间。这两个参数的值依赖于用户具体的应用程序和处理器。应用程序中的RTOS调用越多,则数据追踪的处理器开销也越大。使用的处理器运行速度越快,则开销越少。 下面以一些具体的参数来进行分析。在32位MCU上,存储某一事件需要耗费的时间通常为几微秒,假设e的值为3 us。平均事件速率则通常为每秒几千次,假设f的值约为5000 Hz。根据上述f*e的公式计算: 5000 Hz x 0.000003 s= 1.5% 由上述计算可知,基于软件的RTOS跟踪并不会造成过高的处理器开销,用户可依据自己具体的应用程序和处理器运行速度进行处理器开销的计算。 若想进一步减少RTOS数据追踪的处理器开销,可尝试以下方式: • 确保至少开启了低级别的编译器优化选项 • 如果使用快照模式进行数据追踪,可以排除掉一些不太重要的事件的记录 • 使用流模式而不是快照模式。快照模式针对内存效率进行了优化,而流模式则针对速度进行了优化且速度明显加快。流可以通过流端口进行自定义,用于各种目标主机接口,甚至可以令数据传输到设备文件系统 • 如果使用流模式,请确保在缓冲区已满的情况下数据传输不会阻塞。使用非阻塞传输模式时,如果Tracealyzer随后报告事件丢失,则数据吞吐量过小通常是问题所在。通过调整流端口设置(如使用较大的缓冲区)或使用更快的传输通道(如使用USB或更好的调试器)来解决此问题。 Tracealyzer不需要额外的跟踪硬件,这意味着可以在产品部署时使用。用户可尝试在应用程序的最终版本中任保留RTOS跟踪的设计,例如将快照模式作为系统运行的记录模块,这样Tracealyzer记录器就成为系统应用程序的一部分而不是额外的开销了。且这样的方式可以帮助用户记录一些产品在现场实际运行过程中的问题,而这些问题通常是难以复现的,这将对厂商解决产品实际问题时带来相当大的改变。 |