SEGGER-SystemView集成使用文档_第1页
SEGGER-SystemView集成使用文档_第2页
SEGGER-SystemView集成使用文档_第3页
SEGGER-SystemView集成使用文档_第4页
SEGGER-SystemView集成使用文档_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

文件编号Doc.No.文件版本Doc.VerV1.0文件密级SecretLevel秘密(内部公开)模板版本Temp.VerV1.0发放范围ReleaseScope开发部第SEGGERSystemView集成使用文档.docx相关项目名称:BMAP20拟制人:苏小红所属部门:技术开发部编写日期:2018.4.25标准化:批准:

修订记录Revisionrecord日期Date版本Revision描述Description作者Author2018/4/25V1.0初稿苏小红

目录TOC\o"1-3"\h\u1概述 51.1SEGGERSystemView简介 51.2SystemView工作方式 61.3SystemView目标板资源需求 61.4SystemView特点 72开发环境和工具 72.1集成相关 72.2调试使用 83开发工具安装使用 83.1安装JLINK驱动 83.2SystemView运行 104软件集成(FreeRTOS系统) 124.1软件包获取 124.2拷贝需要的文件到目标程序中 124.3工程建立文件链接 134.4配置FreeRTOS相关文件 134.5编译后运行 144.6FreeRTOS打补丁支持Systick和Scheduler 145调试使用 155.1SystemView界面介绍 155.1.1界面简介 155.1.2EventView 175.1.3SystemView 185.1.4TimeView(Timeline) 195.1.5CPULoadView 215.1.6ContextsView 215.1.7TerminalView 225.1.8LogView 245.2基本功能使用 245.2.1录制 245.2.2数据保存 255.2.3读取保存数据 265.2.4数据分析 275.2.5SystemView操作列表 275.2.6命令行选项 315.3调试语句 335.3.1跟踪打印 335.3.2中断调试相关 335.3.3事件调试 345.3.4SystemViewAPI函数汇总表 386常见问题 416.1J-LinkLibrarynotfouond 416.2Couldnotconnect 426.3RTTControlBlocknotfound 426.4调试时报OverflowEvents 446.5调试时1000000events,Recordingstopped 446.6... 44

概述本文简述SEGGER推出的SystemView工具软件集成和使用调试方法,按照指导文档能尽快使用SystemView进行开发调试工作。SEGGERSystemView简介SEGGERSystemView是一款用于多种CPU运行时进行实时性记录和分析的软件,它以最小的代码花销和最简单的硬件支持即可分析CPU上的代码运行情况,并且以图表形式展现给用户,用户可以很直观的看到了自己写的某个线程或者某个中断运行情况,以及前后台切换以及线程切换的时间点。SystemView是一个用于虚拟分析嵌入式系统的工具包。SystemView可以完整的深入观察一个应用程序的运行时行为,这远远超出一个调试器所能提供的。这在开发和处理具有多个线程和事件的复杂系统时尤其有效。SystemView可以用在任何CPU上。连续实时的记录可以在任何支持J-LinkRTT技术的系统上进行。RTT需要在程序执行过程中通过调试接口读取内存,通常支持ARMCortex-M0、M0+、M1、M3、M4处理器以及所有的RenesasRX设备。SystemView工作方式需要在目标板上调用一个小的软件模块,它包含了SYSTEMVIEW和RTT。SYSTEMVIEW模块用于收集和格式化监视数据,并将数据传送给RTT。RTT模块可以将数据保存在目标板的buffer中,使用J-Link可以实现连续的记录数据,用户可以选择覆盖式记录或者不覆盖记录方式(阻塞方式)。

目标板可以某些场合中调用SYSTEMVIEW函数来监视事件,例如中断开始和中断结束时。SystemView将这些事件以及一个可配置的高精度时间戳一起保存到RTT的目标缓冲区中。时间戳可以精确到1个CPU周期(在200MHz的CPU上是5ns)。图SEQ图\*ARABIC1HowSystemViewworkswithJ-LinkSystemView目标板资源需求RTT和SYSTEMVIEW模块的ROM需求小于2 KB。在典型的系统中,大约600 字节的RAM就足以实现使用J-Link进行连续记录。对于系统触发的记录,缓冲区大小取决于记录的时间以及事件的数量。不需要其他硬件。对于典型的事件记录,CPU只需要低于1us的时间来处理(基于200 MHzCortex-M4CPU),也就是说,在系统每秒10000个事件的系统中,只需要不到1%的开销。由于调试接口(JTAG,SWD,FINE)用于传输数据,因此不需要额外的引脚。SystemView特点可支持多种CPU硬件支持简单,只需要用J-Link即可分析;支持持续性的实时记录以及在线分析,最大可支持到1000000个事件;支持多种实时操作系统,例如UCOS,FreeRTOS,也可支持裸机程序;该软件为免费软件,不需要有任何花费;开发环境和工具SEGGERSystemView程序包提供了Windows、OSX和Linux系统下安装程序以及可移植存档。程序包官网下载地址:/systemview.html注意:本文档所有内容基于Windows平台进行说明描述。集成相关官方程序包:SystemView_VXXX.zip集成代码(下载程序包中):相应目录下文件。Windows平台运行工具软件(下载程序包中):SystemView.exe调试使用调试工具:J-LINK仿真器(需要安装更新SEGGER新版本jlink驱动,本地调试正常使用版本为JLink_V632)硬件:能够正常运行的Cortex(本地调试使用BMU05硬件)程序:已集成好SystemView的工程程序及程序调试刷写工具(本地调试使用KEIL5软件进行编译调试和刷写)Windows平台运行工具主程序:SystemView.exe开发工具安装使用安装JLINK驱动获取地址:运行JLink_Windows_V632.exe下一步默认安装驱动程序即可:安装完成目录:SystemView运行这里仅介绍运行,具体调试使用方法见后面章节。双击运行SystemView.exe启动StartRecording,软件集成(FreeRTOS系统)全新工程需要使用安装包重新集成使用,若已经集成好的项目,可忽略本章节。另外,本章节仅FreeRTOS系统的集成,其他系统可参考集成,或参考其他相关资料。软件包获取SEGGER官网/products/development-tools/systemview/下载软件包拷贝需要的文件到目标程序中主要文件在软件包的Src目录下:工程建立文件链接工程建立C和H文件的链接:配置FreeRTOS相关文件FreeRTOSConfig.h文件的末尾添加#include"SEGGER_SYSVIEW_FreeRTOS.h"相应平台设备目录下的FreeRTOSConfig.h头文件FreeRTOSConfig.h中添加INCLUDE_xtaskgetidletaskhandle和INCLUDE_pxTaskGetStackStart并定义为1。

main.c中添加#include"SEGGER_SYSVIEW.h"并在系统调度之前添加SEGGER_SYSVIEW_Conf();编译后运行编译通过后,通过J-link下载到硬件,运行下载软件包中的SystemView.exe进行调试使用。运行配置见SystemView运行章节。调试运行方法,见后面调试使用章节。FreeRTOS打补丁支持Systick和Scheduler将FreeRTOSV9_Core.patch补丁到系统文件工具中,主要涉及几个文件:FreeRTOS/Source/include/FreeRTOS.hFreeRTOS/Source/include/task.hFreeRTOS/Source/portable/RVDS/ARM_CM4F/port.cFreeRTOS/Source/portable/RVDS/ARM_CM4F/portmacro.hFreeRTOS/Source/tasks.c调试使用SystemView界面介绍界面简介主界面主要几个大的窗口:EventsView,SystemView(默认隐藏),TimeView(Timeline),CPULoadView,ContextsView,TerminalView,LogView(主要显示工具运行Log,默认隐藏)跳转菜单,可以调整某个位置的数据:EventView事件窗口右击鼠标,可以选择只显示某些事件,或不显示哪些事件事件(Events)列表显示了从系统发送的所有事件,并显示它们的信息,包括事件的时间戳、活动上下文、事件类型和事件细节。它与时间轴同步。可以通过View->Events->ToggleReference、右键->ToggleReference或者快捷键R为事件设定一个参考时间点,之后的事件列表中的所有时间戳都将以最新的参考时间点作为0时间点。Events窗口显示系统发送的所有事件,并显示它们的信息。每个事件都有以下几项:在目标时间或记录时间内的时间戳,可以用微秒或纳秒分辨率显示创建Events的上下文,即运行的任务。Event描述,和事件类型一起显示,(IRS进入和退出,任务活动,API调用)。Event细节描述事件的参数,即API调用参数。在列表中定位事件的ID。SystemView系统信息对话框提供了对记录的概述。它显示有关目标系统的信息、任务的记录和统计信息、中断和事件。系统信息由应用程序发送,因此SystemView不需要任何额外的配置来分析和显示系统行为。系统的一些信息,是由应用程序发送用来识别该系统的。记录属性,可由用户设置。有关任务、中断、SystemView事件和记录吞吐量的统计信息。系统信息包括应用程序名称、使用的OS、目标设备和时间信息。有关任务开关和中断频率的附加信息提供了系统的快速概览。记录的属性可以由用户在保存时进行设定,并和记录一起存储,并允许在加载后识别记录,以便稍后进行分析。TimeView(Timeline)时间轴窗口显示完整的监控数据。对应到Events列表中,滚动到第一项开始。时间轴窗口通过系统时间将系统活动可视化(任务、中断、调度器和空闲)。每行引用一个上下文项(每一个系统任务),我们可以看到在被监视的应用程序中使用的所有项。每个任务用不同背景颜色标注。时间轴数据缩放:使用鼠标滚轮,工具栏项,[Ctrl]+[+]/[-]键,或View->ZoomIn,View->ZoomOut来缩放。将鼠标移动到背景名称上,可以获得有关context类型的更多信息和运行时间信息。双击某个任务色块,可以选择该项,并移动到垂直线处。光标移动到任务色块,会显示任务持续时间,及EVENT的详细信息。光标移动到左边任务上,会显示任务详细信息。从下面放大图可以看到SysTick中断返回到OS调度器,这使得Daemon任务就绪(Ready),由Daemon任务行中的灰色条表示,并让它运行(TaskRun)。Daemon任务从embOSAPI函数os_waiteventTimed中返回,返回值0,表示在当前的时间点没有事件发生。Daemon任务调用vTaskDelayUntil后,激活了调度器,使任务失效,并使系统处于空闲状态(idle)。IP_Task调用了另外三个具有快速返回和os_waiteventTimed的embOSAPI函数,它激活了调度器,使任务失效,并使系统切换运行VCU_COMM任务。当事件发生时,或者超时之后,Daemon将再次激活。从时间轴我们知道应用程序使用了哪些任务和中断,并且分析任务执行的状态。任务被SysTick中断任务打断:Timeline是和事件列表Eventslist同步显示的CPULoadViewCPUload窗口显示了一个周期内上下文占用的CPU时间。CPU负载是用一个使用Timeline当前分辨率的bin的宽度来测量的,因此与缩放级别是同步的。可以通过选择bin的数量用来测量较短或较长时期的负载。使用一个bin,就可以在整个可见的时间轴上测量CPU负载。(窗口右击鼠标,可以弹出Bin设置)ContextsViewContext窗口显示上下文的统计信息(任务、中断、调度器和空闲)。每个上下文项可以通过它的名称和类型来标识。类型包括任务的优先级和中断的ID。(例如,cortex-m的SysTick是中断ID#15)。Context窗口信息包括以下内容:上下文名称和类型。任务堆栈信息。(如果有的话)上下文的活动计数。活动频率。总的运行时间和最后运行时间。每秒当前的、最小和最大运行时间,单位是ms和%。在记录时,上下文窗口是实时更新的,而当前上下文可以通过选择行来指示。TerminalView终端窗口显示来自目标应用程序的printf输出,以及发出log输出的任务上下文,以及发送消息时的时间戳。双击消息,可以显示出该消息在事件列表中的所有信息。

Timeline窗口显示的是输出的指示器,根据级别排序(错误总是排在顶部)。显示的日志级别可以通过View->MessageIndicators…来配置。Timeline窗口右击鼠标,弹出保存输出,设置后,会以TXT文本形式保存输出的信息:保存的文件数据:LogView基本功能使用录制点击开始录制(StarrtRecording)-->填写目标设备、仿真参数、RTT地址。注意:RTT地址,请与目标板设置的RTT存储地址一致。可以直接使用目标板的内存全地址进行搜索。J-LINK不能在KEIL仿真调试与SystemView录制同时使用。数据保存选择目录存放,存储为.SVDat格式。读取保存数据以保存的文件,可以重新读取分析,打开存储.SVDat格式文件。数据分析这里只做大概简述,详细操作,看界面介绍相应章节。主要数据分析使用下面四个窗口,其中EventView、Timeline、CPULoadView是同步的。EventView窗口:显示系统发送的所有事件,并显示它们的信息。TimeView(Timeline)时间轴窗口:通过系统时间将系统活动可视化(任务、中断、调度器和空闲)。每行引用一个上下文项(每一个系统任务),我们可以看到在被监视的应用程序中使用的所有项。从时间轴我们知道应用程序使用了哪些任务和中断,并且分析任务执行的状态。TerminalView窗口:显示来自目标应用程序的printf输出,以及发出log输出的任务上下文,以及发送消息时的时间戳CPULoadView窗口:显示了一个周期内上下文占用的CPU时间。SystemView操作列表记录数据含义菜单快捷键目标板开始记录Target->StartRecordingF5停止记录Target->StopRecordingF9从系统读取先前的或者单次数据Target->ReadRecordedDataCtrl+F5保存记录的数据到一个文件中File->SaveDataCtrl+S,F2加载一个记录文件File->LoadDataCtrl+O,F3加载一个最近使用的文件File->RecentFiles无加载一个示例记录File->SampleRecordings无查看/修改记录属性File->RecordingPropertiesCtrl+Shift+R查看含义菜单快捷键设定/清除当前事件作为时间参考View->ToggleReferenceR移除所有时间参考View->ClearReferencesCtrl+Shift+R显示目标的时间戳View->DisplayTargetTime无显示从记录起始所有时间戳View->DisplayRecordingTime无设定时间戳分辨率为1usView->Resolution:1us无设定时间戳分辨率为100nsView->Resolution:100ns无设定时间戳分辨率为10nsView->Resolution:10ns无设定时间戳分辨率为1nsView->Resolution:1ns无放大View->Zoom->ZoomInCtrl++,滚轮向上缩小View->Zoom->ZoomOutCtrl–,滚轮向下Timeline(时间轴)显示到XXusView->Zoom->XXusWindow无Timeline(时间轴)显示到XXmsView->Zoom->XXmsWindow无Timeline(时间轴)显示到XXsView->Zoom->XXsWindow无在Timeline显示所有记录View->Zoom->FullRecording无将光标设定到Timeline(时间轴)的10%View->Cursor->Cursorat10%1将光标设定到Timeline(时间轴)的20%View->Cursor->Cursorat20%2将光标设定到Timeline(时间轴)的30%View->Cursor->Cursorat30%3将光标设定到Timeline(时间轴)的40%View->Cursor->Cursorat40%4将光标设定到Timeline(时间轴)的50%View->Cursor->Cursorat50%5将光标设定到Timeline(时间轴)的60%View->Cursor->Cursorat60%6将光标设定到Timeline(时间轴)的70%View->Cursor->Cursorat70%7将光标设定到Timeline(时间轴)的80%View->Cursor->Cursorat80%8将光标设定到Timeline(时间轴)的90%View->Cursor->Cursorat90%9在1个bin中测量CPU负载View->CPULoad->SingleBin无在10个bin中测量CPU负载View->CPULoad->10Bins无在50个bin中测量CPU负载View->CPULoad->50Bins无在100个bin中测量CPU负载View->CPULoad->100Bins无在200个bin中测量CPU负载View->CPULoad->200Bins无显示/隐藏事件列表中的API调用事件View->EventFilter->ShowAPIsShift+A显示/隐藏事件列表中的中断进出事件View->EventFilter->ShowISRsShift+I显示/隐藏事件列表中的消息(Message)View->EventFilter->ShowMessagesShift+M显示/隐藏事件列表中的系统事件View->EventFilter->ShowSystemEventsShift+S显示/隐藏事件列表中的任务活动事件View->EventFilter->ShowTasksShift+T显示/隐藏事件列表中的用户事件View->EventFilter->ShowUserEventsShift+U在事件列表中只显示API调用事件View->EventFilter->ShowAPIsonlyCtrl+Shift+S在事件列表中只显示中断进出事件View->EventFilter->ShowISRsonlyCtrl+Shift+I在事件列表中只显示消息MessageView->EventFilter->ShowMessagesonlyCtrl+Shift+M在事件列表中只显示任务活动事件View->EventFilter->ShowTasksonlyCtrl+Shift+T在事件列表中只显示用户事件View->EventFilter->ShowUserEventsonlyCtrl+Shift+U复位所有事件过滤器View->EventFilter->ResetallFiltersCtrl+Shift+Space自动滚动到新事件上的最后一项View->AutoScroll无选择要在时间轴上显示的消息指示器View->MessageIndicatorsCtrl+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->GotoEvent…Ctrl+G打开根据时间戳跳转到事件的对话框Go->GotoTimestamp…Ctrl+Shift+G向前方滚动(未来)Go->ScrollForward左键,Ctrl+滚轮向上滚,单击并拖动向后方滚动(以前)Go->ScrollBack右键,Ctrl+滚轮向下滚,单击并拖动窗口含义菜单快捷键显示/隐藏事件窗口Window->EventsViewE显示/隐藏Timeline(时间轴)窗口Window->TimeViewT显示/隐藏CPULoad(CPU负载)窗口Window->CPULoadViewL显示/隐藏Contexts(上下文)窗口Window->ContextViewC显示/隐藏Terminal(终端)窗口Window->TerminalViewM显示/隐藏Systeminformation(系统信息)窗口Window->SytemViewS显示/隐藏Log(日志)窗口Window->LogViewO显示/隐藏状态栏Window->Show/HideStatusBar无显示/隐藏工具栏Window->Show/HideToolBar无打开程序首选项对话框Tool->PreferencesAlt+,帮助含义菜单快捷键打开SystemView手册(即本手册)Help->SystemViewManualF11显示SystemView版本信息Help->AboutSystemViewF12命令行选项SystemView可以通过命令行选项进行控制和配置。在启动记录时要跳过配置对话框,可以通过命令行选项给出目标配置。列出仅供参考:C:>SystemView.exe[-usb[<SN>]]|[-ip<Host>][-device<Device>][-ifSWD|JTAG|FINE][-speed<Speed>][-rttcbaddr<Addr>]|[-rttcbrangeauto|<Range>][-single[-port<Port>][-wait]][-start|-stop|-read|-quit|-save[<Filename>]|-load[<Filename>]]CommandLineOptions:-usbConnecttoJ-LinkviaUSB.Parameter:S/NofJLink.(Optional)(要连接的J-LinkS/N号,参数为J-Link的S/N号,可选)-ipConnecttoJ-LinkviaIP.Parameter:IPorS/NofJ-Link.(通过IP地址连接J-Link,参数为IP地址或者J-Link的S/N号)-deviceSetthetargetdevice.Parameter:DevicenameassupportedbyJ-Link.(目标设备名,参数为J-Link支持的设备名,一般为芯片型号)-ifSetthetargetinterface.Parameter:SWD,JTAG,orFINE.(目标板连接接口。参数为:SWD,JTAG或者FINE)-speedSetthetargetinterfacespeed.Parameter:SpeedinkHz.(目标板接口连接速率。参数为:速率,单位是kHz)-jtagconfSettheJTAGscanchainconfiguration.Parameter:IRPreandDRPReofthetargetdevice.(设定JTAG扫描链配置。参数为:目标设备的IRPre和DRPRe)-rttcbaddrSettheRTTControlBlockaddress.Parameter:Addressinhexadecimal.(RTT控制块地址。参数为:十六进制地址)-rttcbrangeSetthesearchrangeforRTTControlBlock.Parameter:autoorrangesas"<Address><Size>".(RTT控制块寻址范围。参数为:auto或者表示成"<Address><Size>".)-singleStartSystemViewinsingleinstancemode.(单一实例模式下的单启动系统视图。)-portSetlocalportforsingleinstancemode.Parameter:Port.(设定单实例模式下的本地端口。参数为:端口号)-waitWaitforfirstinstancetoreturnresult.(等待第一个实例返回结果)-startStartrecording.(启动记录)-stopStoprecording.(停止记录)-readReadrecordeddatafromtarget.(从目标板读取记录)-quitQuitSystemView.(退出SystemView)-saveSavecurrentrecording.Parameter:Filetosaveto.(Optional)(保存当前记录到文件,参数为:要保存到的文件名。(可选))-loadLoadarecordingfromfile.Parameter:Fileto(从文件中加载一个记录,参数为:要加载的文件名)load.(Optional)调试语句跟踪打印通用打印函数如下,还有些扩展打印接口,需要定义SEGGER_SYSVIEW_EXCLUDE_PRINTF,这里不做介绍://File:SEGGER_SYSVIEW.hvoidSEGGER_SYSVIEW_Print(constchar*s);voidSEGGER_SYSVIEW_Warn(constchar*s);voidSEGGER_SYSVIEW_Error(constchar*s);示例://"SelfTest"任务中函数中,加入不同打印: SEGGER_SYSVIEW_Print("TASK_SelfTestRun,TestPrint");//测试 SEGGER_SYSVIEW_Warn("TASK_SelfTestRun,TestWarn");//测试 SEGGER_SYSVIEW_Error("TASK_SelfTestRun,TestError");//测试不同级别打印调试效果如下:中断调试相关//File:SEGGER_SYSVIEW_FreeRTOS.h#definetraceISR_EXIT_TO_SCHEDULER()SEGGER_SYSVIEW_RecordExitISRToScheduler()#definetraceISR_EXIT()SEGGER_SYSVIEW_RecordExitISR()#definetraceISR_ENTER()SEGGER_SYSVIEW_RecordEnterISR()示例:中断事件效果:事件调试事件分类SystemView分为如下几类:APIEvents,ISREvents,MessageEvents,SystemEvents,TaskEvents,UserEvents.APIEvents:显示API事件,Event的ID,显示发送详细信息的16进制数据上图中ID说明:#defineapiID_XTASKNOTIFYSTATECLEAR(35u)#defineapiID_XTASKGETCURRENTTASKHANDLE(36u)#1024为自定义ID,用户自定义ID范围:1024..2047ISREvents:显示中断事件MessageEvents:显示应用层调用打印相关函数传递的消息事件。与Terminal窗口一致SystemEvents:系统事件。包括系统信息,系统配置等。TaskEvents:任务事件,任务就绪,任务运行,任务挂起,任务调度等事件。UserEvents:用户事件,应用程序调用用户事件记录函数产生的事件。用户事件开始,用户事件结束2)调用用户事件记录函数//File:SEGGER_SYSVIEW.hvoidSEGGER_SYSVIEW_OnUserStart(unsignedintUserId);//Startofuserdefinedevent(suchasasubroutinetoprofile)voidSEGGER_SYSVIEW_OnUserStop(unsignedintUserId);//Startofuserdefinedevent示例: SEGGER_SYSVIEW_OnUserStart(enEventType); sprintf(strSysOut,"%d%d%d%d%d",enEventType,uiSubType,uiPara1,uiPara2,uiPara4); SEGGER_SYSVIEW_Print(strSysOut); SEGGER_SYSVIEW_OnUserStop(enEventType);界面显示效果:调用用户事件记录函数,可以方便调试某个代码段开始,结束时间,及执行的时间3)自定义事件SEGGER_SYSVIEW.c中描述了事件ID定义:PacketIDs:0..31:Standardpackets,knownbySystemViewer.32..1023:OS-definablepackets,describedinaSystemViewdescriptionfile.1024..2047:User-definablepackets,describedinaSystemViewdescriptionfile.2048..32767:Undefined.按照C文件中DEMO,可自定义发送事件,当前测试事件通过API事件显示,且消息显示为16进制数据。#defineMY_ID 0x400 //Anyvaluebetween0x400and0x7FF#defineMAX_STR_LEN (128)voidSendMyPacket(unsignedPara0,unsignedPara1,constchar*s){U8aPacket[SEGGER_SYSVIEW_INFO_SIZE+2*SEGGER_SYSVIEW_QUANTA_U32+MAX_STR_LEN+1];U8*pPayload;pPayload=SEGGER_SYSVIEW_PREPARE_PACKET(aPacket); //PreparethepacketforSystemViewpPayload=SEGGER_SYSVIEW_EncodeU32(pPayload,Para0); //AddthefirstparametertothepacketpPayload=SEGGER_SYSVIEW_EncodeU32(pPayload,Para1); //AddthesecondparametertothepacketpPayload=SEGGER_SYSVIEW_EncodeString(pPayload,s,MAX_STR_LEN);//AddthestringtothepacketSEGGER_SYSVIEW_SendPacket(&aPacket[0],pPayload,MY_ID); //SendthepacketwithEventId=MY_ID}#defineMY_ID_10x401voidSendOnePara(unsignedPara0){SEGGER_SYSVIEW_RecordU32(MY_ID_1,Para0);}显示效果:SystemViewAPI函数汇总表应用程序调用的控制函数函数描述SEGGER_SYSVIEW_Init()初始化SYSVIEW模块SEGGER_SYSVIEW_Start()开始录制SystemView事件SEGGER_SYSVIEW_Stop()停止录制SystemView事件SEGGER_SYSVIEW_EnableEvents()使能产生标准SystemView事件功能SEGGER_SYSVIEW_DisableEvents()禁止产生标准SystemView事件功能应用程序系统调用的配置函数通常包括在系统回调函数中。函数描述SEGGER_SYSVIEW_SetRAMBase()设置RAM基地址,这是为了节省带宽而从IDs中减去的地址SEGGER_SYSVIEW_SendTaskList()向主机发送所有任务描述SEGGER_SYSVIEW_SendTaskInfo()发送一个任务信息包,包含任务ID、任务优先级和任务名称SEGGER_SYSVIEW_SendSysDesc()向主机发送系统描述字符串SEGGER_SYSVIEW_NameResource()发送用于在SystemView中显示的资源名称中间层模块注册和配置函数函数描述SEGGER_SYSVIEW_RegisterModule()注册一个中间层模块,以记录它的事件SEGGER_SYSVIEW_RecordModuleDescription()向主机发送已注册模块的详细信息操作系统相关的事件记录函数函数描述SEGGER_SYSVIEW_OnIdle()记录一次空闲事件SEGGER_SYSVIEW_OnTaskCreate()记录任务创建事件SEGGER_SYSVIEW_OnTaskStartExec()记录任务开始执行事件SEGGER_SYSVIEW_OnTaskStartReady()记录任务准备好开始事件SEGGER_SYSVIEW_OnTaskStopExec()记录任务停止执行事件SEGGER_SYSVIEW_OnTaskStopReady()记录任务准备好停止事件SEGGER_SYSVIEW_OnTaskTerminate()记录任务终止事件操作系统或者模块调用的生成事件记录函数函数描述SEGGER_SYSVIEW_RecordEndCallU32()格式化并发送带有返回值的API调用结束事件SEGGER_SYSVIEW_RecordEndCall()格式化并发送无返回值的API调用结束事件SEGGER_SYSVIEW_RecordEnterISR()格式化并发送进入中断服务函数事件SEGGER_SYSVIEW_RecordEnterTimer()格式化并发送进入定时器函数事件SEGGER_SYSVIEW_RecordExitISRToScheduler()格式化并发送退出中断函数进入调度器事件SEGGER_SYSVIEW_RecordExitISR()格式化并发送中断服务函数退出事件SEGGER_SYSVIEW_RecordExitTimer()格式化并发送定时器退出事件SEGGER_SYSVIEW_RecordString()格式化并发送包含一串字符的SystemView包SEGGER_SYSVIEW_RecordSystime()格式化并发送包含单个U64或者U32类型的参数的SystemView系统时间SEGGER_SYSVIEW_RecordVoid()格式化并发送不包含有效数据的SystemView包SEGGER_SYSVIEW_RecordU32()格式化并发送包含单个U32类型的有效参数的SystemView包SEGGER_SYSVIEW_RecordU32X10()格式化并发送包含10个U32类型的有效参数的SystemView包SEGGER_SYSVIEW_RecordU32X2()格式化并发送包含2个U32类型的有效参数的SystemView包SEGGER_SYSVIEW_RecordU32X3()格式化并发送包含3个U32类型的有效参数的SystemView包SEGGER_SYSVIEW_RecordU32X4()格式化并发送包含4个U32类型的有效参数的SystemView包SEGGER_SYSVIEW_RecordU32X5()格式化并发送包含5个U32类型的有效参数的SystemView包SEGGER_SYSVIEW_RecordU32X6()格式化并发送包含6个U32类型的有效参数的SystemView包SEGGER_SYSVIEW_RecordU32X7()格式化并发送包含7个U32类型的有效

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论