共6条
1/1 1 跳转至页
[原创] VxWorks系统分析工具Spy和WindView
VxWorks系统分析工具Spy和WindView
VxWorks及其调试环境提供两种工具,可用于对多任务系统的分析: Spy和WindView。WindView
具有图形界面,可用于上下文切换、任务状态迁移及其它系统事件的分析和纪录,但要求集成开发环
境Tornado的支持。Spy相对而言功能单一且使用简单,主要用于统计各任务和中断的CPU占用率。
Spy使用指南
A. 关于辅助时钟
Spy需要一个独立于系统时钟的辅助时钟来为其任务统计提供计时。该辅助时钟的中断频率不能
低于100ticks/sec。对于PowerPC860系统而言,VxWorks本身提供了辅助时钟驱动程序的源代码:
[Tornado]\target\src\drv\timer\ppc860Timer.c,该源码使用CPM Timer2作为时钟源。如果
在系统设计中CPM Timer2并没有其它用途,那么对于辅助时钟驱动程序可不加修改而直接引用。
B. 配置VxWorks
使用Tornado的图形化工具配置VxWorks。将以下两项包含进去:
development tool components --> spy
hardware --> peripherals --> clocks --> AUX clock
如果通过手工修改配置文件,则需增加以下宏定义,并生成新的project:
#define INCLUDE_SPY
#define INCLUDE_AUX_CLK
在调试阶段,为了使调试工具(如Shell)能找到Spy,还需要修改symbol表的配置,加入以下项目:
development tool components --> symbol table components --> symbol table initialization components -->
select symbol table initialization --> built-in symbol table
C. Spy的使用
可试验在Shell中直接调用Spy工具。使用方法有两种:
a. spy(freq, ticksPerSec)
该函数会启动一个task:spyTask()来执行统计和报告,每freq秒报告一次。ticksPerSec是辅助时钟每秒中断次数。
b. spyClkStart(intsPerSec) 和 spyReport()
先调用spyClkStart来启动辅助时钟,intsPerSec是辅助时钟每秒中断次数。然后可不定时地调用spyReport观看
统计结果,包括自上次调用spyClkStart以来的统计数据和自上次调用spyReport以来的统计数据。
spy将统计结果输出到target system console或target shell。也可以在host端的调试工具Shell和 Virtual Console
Window里观察其输出。统计结果中包含了各Task、中断服务例程、Kernel和Idle所分别占用的时间百分比和ticks数。以上
详见Tornado Online Manuals。
WindView使用指南
A. 配置VxWorks
1. include "development tool components -> Windview components";
2. include "development tool components -> WDB agent components
-> WDB agent services -> WDB target server file system";
若要使View Graph的Timeline刻度为时间坐标(seconds),而不是缺省的
sequence numbers坐标,还需如下配置(需BSP和硬件支持):
3. include "hardware -> peripherals -> clocks -> high resolution
timestamping";
4. change "development tool components -> Windview components
-> select timestamping" from "sequential timestamping" to
"system-defined timestamping";
B. 配置Target Server
1. Tools -> Target Server -> Configure...
2. 在对话框Configure Target Servers中选择TSFS:
Target Server Properties -> Target Server File System
3. 配置如下:
check "Enable File System";
enter the root path(用于存放Log File);
select "Read / Write" option(若不使用WindView,TSFS的访问权限
应设为"Read Only");
C. 配置WindView
1. Tools -> WindView -> Configuration...
2. 在对话框WindView Collection Configuration中配置Logging Level:
a. Context Switch Event-Logging Level (CSE)
记录当前程序的上下文,以及上下文切换的位置,如任务切换,
中断/异常处理程序的进入和退出等。
b. Task State Transition Event-Logging Level (TST)
纪录CSE Level的所有信息(所有的上下文切换都伴随有任务状态的
迁移,然而任务状态的迁移却并非总会导致上下文切换)。
记录任务状态的迁移,以及引起任务状态迁移的事件,如semTake(),
semGive, taskDelay()等。
c. Additional Instrumentation Event-Logging Level (AIL)
纪录CSE Level和TST Level的所有信息。
纪录对所选instrumented library(taskLib, semLib, msgQLib,
wdLib, memLib, sigLib)中的对象的所有操作,不论其是否引起上下文
切换或任务状态迁移。
3. 在对话框WindView Collection Configuration中点击按钮Properties,
弹出对话框WindView Control Properties:
a. 配置Ring Buffer: 缺省值。
b. 配置Upload Path:
(1) Direct to Graph: 将数据直接显示在host的View Graph中;
(2) File via TSFS: 将数据上传并存放在/tgtsvr/eventLog.wvr;
(3) Socket via TSFS: 将数据上传到/tgtsvr/TCP:hostname:6164;
(4) Socket via TCP/IP:将数据上传到hostname/6164;
(5) NFS to File: 将数据上传并存放在/eventLog.wvr;
注:
使用方式(4)时,需在配置VxWorks时包含"development tool
components -> Windview components -> upload path(s) -> TCP/IP
socket upload path initialization",缺省情况下是没有的。
使用方式(5)时,需先在target上配置好NFS。
方式(1)、(3)和(4)的上传目的地是View Graph,直接显示数据,
不涉及文件操作。使用方式(3)和(4)时,需先用File -> New创建一个
WindView Log,以便显示上传的数据。使用方式(1)时系统会自动Launch
一个View Graph。
方式(2)和(5)的上传目的地是文件,数据不直接显示,需在上传完毕
之后用File -> Open打开所保存的WindView Log文件(*.wvr)进行分析。
方式(1)、(2)和(3)的上传路径是Target Server,方式(4)和(5)的
上传路径是Network Facilities。
c. 配置Upload Mode:
(1) Deferred: 先采集,再上传;
特点:数据量受target的memory限制;对target性能影响较小;
(2) Continuous: 边采集,边上传;
特点:数据量不受target的memory限制;对target性能影响较大;
(3) Post-Mortem:用于死机或复位问题的分析;
特点:数据存放在位于User Reserved Memory区域的Ring Buffer中,
留待系统重启之后,将之上传到host并进行分析。
注: User Reserved Memory位于sysMemTop和sysPhysMemTop之间,
在系统boot期间不被清空,并且不可cache。
D. 使用WindView
1. Tools -> WindView -> Launch...
2. 在对话框Launch WindView中选择Target: TargetServerName@Hostname
3. 对话框WindView Control TargetServerName@Hostname:
按钮GO: 开始采集数据;
按钮STOP: 停止采集数据;
按钮UPLOAD:上传所采集的数据。
4. 另两种使用WindView的方法:
a. 通过Triggering控制WindView的数据采集;
b. 在WindSh或Source Code中调用WindView API: wvOn() and wvOff()。
ryansheng@sina.com
2003/04/22
关键词: 原创 VxWorks 系统分析 工具 WindVi
共6条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
与电子爱好者谈读图二被打赏50分 | |
【FRDM-MCXN947评测】Core1适配运行FreeRtos被打赏50分 | |
【FRDM-MCXN947评测】双核调试被打赏50分 | |
【CPKCORRA8D1B评测】---移植CoreMark被打赏50分 | |
【CPKCORRA8D1B评测】---打开硬件定时器被打赏50分 | |
【FRDM-MCXA156评测】4、CAN loopback模式测试被打赏50分 | |
【CPKcorRA8D1评测】--搭建初始环境被打赏50分 | |
【FRDM-MCXA156评测】3、使用FlexIO模拟UART被打赏50分 | |
【FRDM-MCXA156评测】2、rt-thread MCXA156 BSP制作被打赏50分 | |
【FRDM-MCXN947评测】核间通信MUTEX被打赏50分 |