Tool之System Viewer

2021-12-02 12:52:37 浏览数 (2)

如转发 请标明出处!

Wind River提供了一个叫做System Viewer的工具 (VxWorks5时叫做WindView),这就是一个嵌入式软件的逻辑分析器,能够将复杂的Target活动可视化,可用于故障定位

OS、App和HardWare之间的交互通常在限定的时间内发生,其分辨率为微秒或更高。而RTOS领域常用的调试工具,如源代码级调试器,只提供静态信息

有了System Viewer,就可以记录正在运行的Target上的活动,它可以高度配置要查看的数据类型和系统信息,然后这些数据还可以保存下来供后续分析

  • 可视化多核系统行为,例如,识别CPU affinity问题
  • 检测竞争条件、死锁、CPU饥饿以及其它与任务交互相关的问题
  • 确定应用程序响应能力和性能
  • 查看App的循环模式
  • 保存数据以进行延迟分析

在WorkBench3.x VxWorks6.x上一直没有操作成功,捕获的数据总是不完整

那就使用WorkBench4 VxWorks7来试试吧

首先在VSB中包含System Viewer组件

随便写个任务通信的例子

代码语言:javascript复制
#include <taskLib.h>
#include <semLib.h>
#include <sysLib.h>

static SEM_ID mySem;
int myCount = 0;
static void task1()
{
    while(1)
        {
        semTake(mySem, WAIT_FOREVER);
        myCount  ;
        }
    }
static void task2()
{
    while(1)
        {
        semGive(mySem);
        taskDelay(sysClkRateGet());
        }
    }

void test()
{
    mySem = semBCreate(SEM_Q_FIFO, SEM_EMPTY);
    taskSpawn("tTask1",200,0,2000,(FUNCPTR)task1,0,0,0,0,0,0,0,0,0,0);
    taskSpawn("tTask2",200,0,2000,(FUNCPTR)task2,0,0,0,0,0,0,0,0,0,0);
    }

启动Target,连接Connection,执行例子程序

找到Analysis actions,点击Launch System Viewer

在弹出的System Viewer Configuration页面里,根据实际需求定制Event Logging Level,例如Enable All

根据实际需求定制Upload Mode/Buffer Size,建议将Buffer Size改大一些,并选中Use a circular buffer

点击Apply the current configuration to the target

启动System Viewer logging

等待一会儿,观察到buffer的记录

点击Stop,收集到的.wvr文件自动上传并打开了

在Event Graph窗口里,通过Filter或Hide功能,将不关心的Task去掉

在上部的Overview窗口里,通过鼠标拖动,选择有事件的区域,并通过Zoom按钮,调整可视区域

双击某个事件,就可以看到它的属性

或者在Event Table窗口里,可以看到所有事件的列表

事件的属性里,包含了相应Object的ID,可以在Filter中针对这个信息进行定制。例如,只Include某一个Object,这样就可以很清晰地看到任务之间的交互、状态变换等情况了

非常强大的一个工具,可惜我用的不多...

我是泰山 专注VX好多年!

一起学习 共同进步!

0 人点赞