这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » [原创] VxWorks系统分析工具Spy和WindView

共6条 1/1 1 跳转至

[原创] VxWorks系统分析工具Spy和WindView

菜鸟
2003-04-23 22:58:36     打赏
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    

菜鸟
2003-04-24 01:12:00     打赏
2楼
不错不错:)

菜鸟
2003-04-25 23:54:00     打赏
3楼
组件配置窗口呀

菜鸟
2003-04-26 05:03:00     打赏
4楼
workspace窗口[vxworks] tab下 我自己看不明白上面这句,郁闷,怎么描述列

菜鸟
2003-04-26 05:56:00     打赏
5楼
是啊, 怎么描述呢? :-)

菜鸟
2003-04-26 22:42:00     打赏
6楼
哦,你建的downable工程,没有组件配置 bootable工程才可配置组件, 不过现在spy可以不用预先配置,你要使用时, 主机会自动下载spy.o到目标机,完成spy功能

共6条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]