Tracealyzer是一款RTOS行为分析工具,支持包括VxWorks、μC/OS-III、FreeRTOS在内的众多RTOS,以及Linux系统。
Tracealyzer能够分析RTOS和中间件协议栈中的软件事件,并且提供了许多专门的可视化视图展示,如任务调度,中断、任务之间的交互。视图之间直观的链接在一起,相关事件突出显示,使得理解问题和验证方案变得更加容易。
使用Tracealyzer对RTOS进行分析,需要掌握基础的概念 01 Actor 被定义为任务/线程或者ISR。一个任务,一个中断服务程序都是一个Actor。 02 Instance 实例。Actor的一次执行,在时间轴视图上以带颜色的矩形表示,矩形的长度代表着执行的时间长度。矩形中阴影部分表示任务处于就绪态,但是期间CPU正被就绪的更高优先级任务占用。
03 与实例相关的时间 时间是Tracealyzer的核心,几乎所有的视图都依赖于时间戳。通过时间才能知晓任务调度的时机,系统服务调用的时间点。
图 2 实例信息中的时间
a、Start and End Times:起始和结束时间。 b、Execution Time:执行时间。一个实例使用的CPU时间量,不包括任务抢占的时间。 c、Response Time:响应时间。从实例开始到结束的时间。更准确地说应该是:任务的响应时间是从任务准备执行时开始计算的(即内核将任务的调度状态设置为就绪的时刻)。 d、Wait Time:等待时间。这是响应时间减去执行时间(Response Time - Execution Time)。即当Actor未执行时,实例(instance)所消耗的时间。 e、Startup Time:启动时间。从任务就绪到执行开始的时间。
图 3 响应时间与执行时间、启动时间的关系 04 Fragmentation Actor实例执行的片段数量(由于任务/中断抢占,执行过程被打断)。如果一个Actor实例完全执行而没有抢占,这个实例的片段将是1。
05 View Ports and Sync 视区与同步。视区是Tracealyzer当前视图窗口所显示的内容时长(与时间的分辨率相关)。默认的“Details”视区,显示100ms时长的内容;默认的“Overview”视区,显示10s时长的内容。时间轴同步到Details或者Overview视区,各视图窗口放大、缩小和滚动都是联动的,除非选择Unsynchronized,将当前视图独立。
图 4 默认Details视区(窗口显示100ms时长)
图 5 默认的Overview视区(窗口显示10s时长)
以上是使用Tracealyzer分析RTOS系统时所需要掌握的几个基础概念。在此之上,我们可以查看任务或者ISR的详细时间,便于分析错误和对系统进行调优。
|