章节3 SystemView PC端应用程序 - Segger SystemView使用手册(译文)

本文博客链接:http://blog.csdn.net/bjr2016,作者:bjr2016,未经允许不得转载.

章节3 SystemView PC端应用程序


本节描述SystemView分析和可视化工具。

3.1 介绍

这里写图片描述
SystemView 程序
这个SystemView程序是SEGGER SystemView主机端可视化工具软件。它和目标板通过J-Link连接,控制跟踪并读取应用程序的数据。实时分析监视数据并显示在SystemView不同的窗口中。再跟踪停止后,数据可以保存成一个文件以便于后续分析。

如何启动SystemView,请参考前面的章节。

SystemView提供不同的窗口来展示系统的运行,测量时间并分析CPU负载。所有窗口都是同步的,以获得当前选定状态的所有信息。

有关应用程序窗口的描述,请参阅以下部分。

使用SystemView,可以通过监视的数据跟踪系统中发生的情况。

3.2 时间轴窗口(Timeline)

以下时间轴全部表示为Timeline
SystemView时间轴
SystemView Timeline

Timeline窗口在一个界面中集中了所有系统信息。它在系统时间线上显示了系统活动(任务、中断、调度器、定时器和空闲)。它显示在被监视的应用程序中使用的所有上下文项,且每行显示一个上下文项。

在鼠标经过上下文项时,会有tip工具显示更多的细节和运行时信息。

在鼠标经过活动上下文时,tip工具提示显示当前事件的详细信息和当前活动的函数(如果可用的话)。

在上下文上面的那个尺子标记了当前活动的时间段范围。

存在的任务会被标记为浅色的背景,提供了从它第一次运行一直到它结束期间的每一次运行。

上下文切换会被现实为连接线,以便于地识别哪些事件导致上下文切换,并且何时发生。

处于ready状态的任务,在开始执行前会被显示在浅灰色的栏中。

上下文是按优先级排序的。第一行显示了一个统一上下文中的所有活动。列表的顶部是中断,用Id来排序的,接下来是scheduler调度器和软件定时器(如果在系统中使用这些的话)。在调度器(和定时器)下面,任务按优先级排序。当没有其他上下文处于活动状态时,底层上下文显示空闲时间。

Timeline是和事件列表Events list同步显示的。在光标(蓝色行)下面的事件是列表中被选中的事件。

光标可以固定在10%到90%的窗口,并在滚动时间线时更新列表中的选择。

可以将事件拖放到事件列表中,来选择事件列表中的相应事件,反之亦然。

时间轴视图可以放大或缩小,来了解整个系统的概况,或者查看事件的确切时间。

要跳转到上下文的下一个或之前的活动,可以用鼠标单击左侧的箭头或者右侧的箭头。

3.3 Events 窗口

这里写图片描述
SystemView Events窗口

Events窗口显示系统发送的所有事件,并显示它们的信息。每个事件都有以下几项:

  • 在目标时间或记录时间内的时间戳,可以用微秒或纳秒分辨率显示
  • 创建Events的上下文,即运行的任务。
  • Event描述,和事件类型一起显示,(IRS进入和退出,任务活动,API调用)。
  • Event细节描述事件的参数,即API调用参数。
  • 在列表中定位事件的ID。

Event窗口允许通过列表,跳转到下一个或之前的上下文,或跳转到下一个或之前的类似事件。Timeline和CPU负载窗口同步显示当前选中的Event。

Events列表中的时间戳可以相对于记录的开始或者系统发送的目标系统时间。Event可以设置为跟踪事件的时间引用,以便在Event发生后可以轻松地测量Event。

SystemView包括一个Events筛选器来选择show或hide api、ISRs、系统信息、消息、任务和用户事件。

3.4 Terminal窗口

这里写图片描述
SystemView Terminal窗口

终端窗口显示来自目标应用程序的printf输出,以及发出log输出的任务上下文,以及发送消息时的时间戳。双击消息,可以显示出该消息在事件列表中的所有信息。
Timeline窗口显示的是输出的指示器,根据级别排序(错误总是排在顶部)。显示的日志级别可以通过View -> Message Indicators… 来配置。
这里写图片描述
Message Indicator 对话框

SystemView printf的输出是由通过用户应用程序格式化的,也可以所有参数先不格式化,而通过SystemView应用程序进行格式化。

3.5 CPU Load窗口

这里写图片描述
CPU Load窗口

CPU load窗口显示了一个周期内上下文占用的CPU时间。CPU负载是用一个使用Timeline当前分辨率的bin的宽度来测量的,因此与缩放级别是同步的。

可以通过选择bin的数量用来测量较短或较长时期的负载。使用一个bin,就可以在整个可见的时间轴上测量CPU负载。

3.6 Context窗口

这里写图片描述
Context窗口

Context窗口显示上下文的统计信息(任务、中断、调度器和空闲)。每个上下文项可以通过它的名称和类型来标识。类型包括任务的优先级和中断的ID。(例如,cortex-m的SysTick是中断ID # 15)。

Context窗口信息包括以下内容:

  • 上下文名称和类型。
  • 任务堆栈信息。(如果有的话)
  • 上下文的活动计数。
  • 活动频率。
  • 总的运行时间和最后运行时间。
  • 每秒当前的、最小和最大运行时间,单位是ms和%。

在记录时,上下文窗口是实时更新的,而当前上下文可以通过选择行来指示。

3.7 系统信息(System information)窗口

这里写图片描述
系统信息窗口

右上角的窗口显示:

  • 系统的一些信息,是由应用程序发送用来识别该系统的。
  • 记录属性,可由用户设置。
  • 有关任务、中断、SystemView事件和记录吞吐量的统计信息。

系统信息包括应用程序名称、使用的OS、目标设备和时间信息。有关任务开关和中断频率的附加信息提供了系统的快速概览。

这里写图片描述
记录属性对话框

记录的属性可以由用户在保存时进行设定,并和记录一起存储,并允许在加载后识别记录,以便稍后进行分析。

3.8 事件过滤器 Event Filter

事件窗口对事件进行筛选。这可以用于隐藏中断事件或只显示任务执行。
可以设定不同的组过滤SystemView事件:

  • api - OS或模块生成事件。
  • ISRs - 进出中断。
  • 消息 - 终端输出。
  • 系统事件 - 系统和任务信息。
  • 任务 - 任务执行。
  • 用户事件 - 用户事件启动和停止。

SystemView PRO还提供自定义过滤器,它允许选择显示或隐藏的任何事件。使用curstom过滤器,可以单独选择所有系统事件和注册的操作系统和中间件事件。

3.9 触发模式(Trigger Modes)

当SystemView在连续模式下记录时,记录的事件会实时分析和显示。触发器模式允许在发生特定事件时自动选择事件。

触发器模式可以在工具栏中选择,也可以在任务的右键菜单中选择,并在Timeline窗口中中断。

在手动滚动模式下,选择不会自动更新。在记录时用户可以滚动事件,分析系统。

在自动滚动模式下,自动同步成100ms的时间步伐。会自动选择在最后一个100ms记录的事件。

在连续触发器模式下,用户可以配置上下文(任务或中断),以及触发哪个事件。然后SystemView总是选择最后发生的符合配置条件的事件。

在单触发器模式下,SystemView只选择一次满足配置条件的事件,并自动切换回手动滚动模式。

3.10 界面操作

SystemView可以通过鼠标和键盘来控制,也可以通过菜单来控制。最重要的控件也可在工具栏中访问。

下表描述了SystemView的操作:

记录数据
含义菜单快捷键
目标板开始记录Target->Start RecordingF5
停止记录Target->Stop RecordingF9
从系统读取先前的或者单次数据Target->Read Recorded DataCtrl+F5
保存记录的数据到一个文件中File->Save DataCtrl+S,F2
加载一个记录文件File->Load DataCtrl+O,F3
加载一个最近使用的文件File->Recent Files
加载一个示例记录File->Sample Recordings
查看/修改记录属性File->Recording PropertiesCtrl+Shift+R
查看
含义菜单快捷键
设定/清除当前事件作为时间参考View->Toggle ReferenceR
移除所有时间参考View->Clear ReferencesCtrl+Shift+R
显示目标的时间戳View->Display Target Time
显示从记录起始所有时间戳View->Display Recording Time
设定时间戳分辨率为1usView->Resolution:1us
设定时间戳分辨率为100nsView->Resolution:100ns
设定时间戳分辨率为10nsView->Resolution:10ns
设定时间戳分辨率为1nsView->Resolution:1ns
放大View->Zoom->Zoom InCtrl++,滚轮向上
缩小View->Zoom->Zoom OutCtrl–,滚轮向下
Timeline(时间轴)显示到XX usView->Zoom->XX us Window
Timeline(时间轴)显示到XX msView->Zoom->XX ms Window
Timeline(时间轴)显示到XX sView->Zoom->XX s Window
在Timeline显示所有记录View->Zoom->Full Recording
将光标设定到Timeline(时间轴)的10%View->Cursor->Cursor at 10%1
将光标设定到Timeline(时间轴)的20%View->Cursor->Cursor at 20%2
将光标设定到Timeline(时间轴)的30%View->Cursor->Cursor at 30%3
将光标设定到Timeline(时间轴)的40%View->Cursor->Cursor at 40%4
将光标设定到Timeline(时间轴)的50%View->Cursor->Cursor at 50%5
将光标设定到Timeline(时间轴)的60%View->Cursor->Cursor at 60%6
将光标设定到Timeline(时间轴)的70%View->Cursor->Cursor at 70%7
将光标设定到Timeline(时间轴)的80%View->Cursor->Cursor at 80%8
将光标设定到Timeline(时间轴)的90%View->Cursor->Cursor at 90%9
在1个bin中测量CPU负载View->CPU Load->Single Bin
在10个bin中测量CPU负载View->CPU Load->10 Bins
在50个bin中测量CPU负载View->CPU Load->50 Bins
在100个bin中测量CPU负载View->CPU Load->100 Bins
在200个bin中测量CPU负载View->CPU Load->200 Bins
显示/隐藏事件列表中的API调用事件View->Event Filter->Show APIsShift+A
显示/隐藏事件列表中的中断进出事件View->Event Filter->Show ISRsShift+I
显示/隐藏事件列表中的消息(Message)View->Event Filter->Show MessagesShift+M
显示/隐藏事件列表中的系统事件View->Event Filter->Show System EventsShift+S
显示/隐藏事件列表中的任务活动事件View->Event Filter->Show TasksShift+T
显示/隐藏事件列表中的用户事件View->Event Filter->Show User EventsShift+U
在事件列表中只显示API调用事件View->Event Filter->Show APIs onlyCtrl+Shift+S
在事件列表中只显示中断进出事件View->Event Filter->Show ISRs onlyCtrl+Shift+I
在事件列表中只显示消息MessageView->Event Filter->Show Messages onlyCtrl+Shift+M
在事件列表中只显示任务活动事件View->Event Filter->Show Tasks onlyCtrl+Shift+T
在事件列表中只显示用户事件View->Event Filter->Show User Events onlyCtrl+Shift+U
复位所有事件过滤器View->Event Filter->Reset all FiltersCtrl+Shift+Space
自动滚动到新事件上的最后一项View->Auto Scroll
选择要在时间轴上显示的消息指示器View->Message IndicatorsCtrl+M
在记录时,手动滚动事件工具条Ctrl+1
在记录时,自动滚动事件工具条Ctrl+2
在记录时,不停地触发和滚动一个条件工具条Ctrl+3
在记录时,单次触发和滚动一个条件工具条Ctrl+4
配置触发条件工具条Ctrl+T
运行
含义菜单快捷键
跳到下一个上下文切换Go->ForwardF
跳到前一个上下文切换Go->BackB
跳到下一个相似事件Go->Next [Event]N
跳到前一个相似事件Go->Previous [Event]P
跳到同一个上下文中的下一个相似事件Go->Next [Event] in [Context]Shift+N
跳到同一个上下文中的前一个相似事件Go->Previous [Event] in [Context]Shift+P
打开根据Id跳转到事件的对话框Go->Go to Event…Ctrl+G
打开根据时间戳跳转到事件的对话框Go->Go to Timestamp…Ctrl+Shift+G
向前方滚动(未来)Go->Scroll Forward左键,Ctrl+滚轮向上滚,单击并拖动
向后方滚动(以前)Go->Scroll Back右键,Ctrl+滚轮向下滚,单击并拖动
窗口
含义菜单快捷键
显示/隐藏 事件窗口Window->Events ViewE
显示/隐藏 Timeline(时间轴)窗口Window->Time ViewT
显示/隐藏 CPU Load(CPU负载)窗口Window->CPU Load ViewL
显示/隐藏 Contexts(上下文)窗口Window->Context ViewC
显示/隐藏 Terminal(终端)窗口Window->Terminal ViewM
显示/隐藏 System information(系统信息)窗口Window->Sytem ViewS
显示/隐藏 Log(日志)窗口Window->Log ViewO
显示/隐藏 状态栏Window->Show/Hide Status Bar
显示/隐藏 工具栏Window->Show/Hide Tool Bar
打开程序首选项对话框Tool->PreferencesAlt+,
帮助
含义菜单快捷键
打开SystemView手册(即本手册)Help->SystemView ManualF11
显示SystemView版本信息Help->About SystemViewF12

3.11 命令行选项

SystemView可以通过命令行选项进行控制和配置。在启动记录时要跳过配置对话框,可以通过命令行选项给出目标配置。

C:> SystemView.exe [-usb [<SN>]]|[-ip <Host>] [-device <Device>] [-if SWD|
JTAG|FINE] [-speed <Speed>] [-rttcbaddr <Addr>]|[-rttcbrange auto|<Range>] [-
single [-port <Port>] [-wait]] [-start|-stop|-read|-quit|-save [<Filename>]|-
load[<Filename>]]
Command Line Options:
-usb    Connect to J-Link via USB. Parameter: S/N of JLink. (Optional)
(要连接的J-Link S/N号,参数为J-Link的S/N号,可选)

-ip     Connect to J-Link via IP. Parameter: IP or S/N of J-Link.
(通过IP地址连接J-Link,参数为IP地址或者J-Link的S/N号)

-device     Set the target device. Parameter: Device name as supported by J-Link.
(目标设备名,参数为J-Link支持的设备名,一般为芯片型号)

-if         Set the target interface. Parameter: SWD, JTAG,or FINE.
(目标板连接接口。参数为:SWD,JTAG或者FINE)

-speed      Set the target interface speed. Parameter: Speed in kHz.
(目标板接口连接速率。参数为:速率,单位是kHz)

-jtagconf   Set the JTAG scan chain configuration. Parameter: IRPre and DRPRe of the target device.
(设定JTAG扫描链配置。参数为:目标设备的IRPre和DRPRe)

-rttcbaddr      Set the RTT Control Block address. Parameter: Address in hexadecimal.
(RTT控制块地址。参数为:十六进制地址)

-rttcbrange     Set the search range for RTT Control Block. Parameter: auto or ranges as "<Address> <Size>".
(RTT控制块寻址范围。参数为:auto或者表示成"<Address><Size>".)

-single     Start SystemView in single instance mode.
(单一实例模式下的单启动系统视图。)

-port       Set local port for single instance mode. Parameter: Port.
(设定单实例模式下的本地端口。参数为:端口号)

-wait       Wait for first instance to return result.
(等待第一个实例返回结果)

-start      Start recording.
(启动记录)
-stop       Stop recording.
(停止记录)

-read       Read recorded data from target.
(从目标板读取记录)

-quit       Quit SystemView.
(退出SystemView)

-save       Save current recording. Parameter: File to save to. (Optional)
(保存当前记录到文件,参数为:要保存到的文件名。(可选))

-load       Load a recording from file. Parameter: File to
(从文件中加载一个记录,参数为:要加载的文件名)

load.       (Optional)
  • 10
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值