




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
文件編號Doc.No.文件版本Doc.VerV1.0文件密級SecretLevel秘密(內(nèi)部公開)模板版本Temp.VerV1.0發(fā)放范圍ReleaseScope開發(fā)部第SEGGERSystemView集成使用文檔.docx相關(guān)項(xiàng)目名稱:BMAP20擬制人:蘇小紅所屬部門:技術(shù)開發(fā)部編寫日期:2018.4.25標(biāo)準(zhǔn)化:批準(zhǔn):
修訂記錄Revisionrecord日期Date版本Revision描述Description作者Author2018/4/25V1.0初稿蘇小紅
目錄TOC\o"1-3"\h\u1概述 51.1SEGGERSystemView簡介 51.2SystemView工作方式 61.3SystemView目標(biāo)板資源需求 61.4SystemView特點(diǎn) 72開發(fā)環(huán)境和工具 72.1集成相關(guān) 72.2調(diào)試使用 83開發(fā)工具安裝使用 83.1安裝JLINK驅(qū)動 83.2SystemView運(yùn)行 104軟件集成(FreeRTOS系統(tǒng)) 124.1軟件包獲取 124.2拷貝需要的文件到目標(biāo)程序中 124.3工程建立文件鏈接 134.4配置FreeRTOS相關(guān)文件 134.5編譯后運(yùn)行 144.6FreeRTOS打補(bǔ)丁支持Systick和Scheduler 145調(diào)試使用 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數(shù)據(jù)保存 255.2.3讀取保存數(shù)據(jù) 265.2.4數(shù)據(jù)分析 275.2.5SystemView操作列表 275.2.6命令行選項(xiàng) 315.3調(diào)試語句 335.3.1跟蹤打印 335.3.2中斷調(diào)試相關(guān) 335.3.3事件調(diào)試 345.3.4SystemViewAPI函數(shù)匯總表 386常見問題 416.1J-LinkLibrarynotfouond 416.2Couldnotconnect 426.3RTTControlBlocknotfound 426.4調(diào)試時報OverflowEvents 446.5調(diào)試時1000000events,Recordingstopped 446.6... 44
概述本文簡述SEGGER推出的SystemView工具軟件集成和使用調(diào)試方法,按照指導(dǎo)文檔能盡快使用SystemView進(jìn)行開發(fā)調(diào)試工作。SEGGERSystemView簡介SEGGERSystemView是一款用于多種CPU運(yùn)行時進(jìn)行實(shí)時性記錄和分析的軟件,它以最小的代碼花銷和最簡單的硬件支持即可分析CPU上的代碼運(yùn)行情況,并且以圖表形式展現(xiàn)給用戶,用戶可以很直觀的看到了自己寫的某個線程或者某個中斷運(yùn)行情況,以及前后臺切換以及線程切換的時間點(diǎn)。SystemView是一個用于虛擬分析嵌入式系統(tǒng)的工具包。SystemView可以完整的深入觀察一個應(yīng)用程序的運(yùn)行時行為,這遠(yuǎn)遠(yuǎn)超出一個調(diào)試器所能提供的。這在開發(fā)和處理具有多個線程和事件的復(fù)雜系統(tǒng)時尤其有效。SystemView可以用在任何CPU上。連續(xù)實(shí)時的記錄可以在任何支持J-LinkRTT技術(shù)的系統(tǒng)上進(jìn)行。RTT需要在程序執(zhí)行過程中通過調(diào)試接口讀取內(nèi)存,通常支持ARMCortex-M0、M0+、M1、M3、M4處理器以及所有的RenesasRX設(shè)備。SystemView工作方式需要在目標(biāo)板上調(diào)用一個小的軟件模塊,它包含了SYSTEMVIEW和RTT。SYSTEMVIEW模塊用于收集和格式化監(jiān)視數(shù)據(jù),并將數(shù)據(jù)傳送給RTT。RTT模塊可以將數(shù)據(jù)保存在目標(biāo)板的buffer中,使用J-Link可以實(shí)現(xiàn)連續(xù)的記錄數(shù)據(jù),用戶可以選擇覆蓋式記錄或者不覆蓋記錄方式(阻塞方式)。
目標(biāo)板可以某些場合中調(diào)用SYSTEMVIEW函數(shù)來監(jiān)視事件,例如中斷開始和中斷結(jié)束時。SystemView將這些事件以及一個可配置的高精度時間戳一起保存到RTT的目標(biāo)緩沖區(qū)中。時間戳可以精確到1個CPU周期(在200MHz的CPU上是5ns)。圖SEQ圖\*ARABIC1HowSystemViewworkswithJ-LinkSystemView目標(biāo)板資源需求RTT和SYSTEMVIEW模塊的ROM需求小于2?KB。在典型的系統(tǒng)中,大約600?字節(jié)的RAM就足以實(shí)現(xiàn)使用J-Link進(jìn)行連續(xù)記錄。對于系統(tǒng)觸發(fā)的記錄,緩沖區(qū)大小取決于記錄的時間以及事件的數(shù)量。不需要其他硬件。對于典型的事件記錄,CPU只需要低于1us的時間來處理(基于200?MHzCortex-M4CPU),也就是說,在系統(tǒng)每秒10000個事件的系統(tǒng)中,只需要不到1%的開銷。由于調(diào)試接口(JTAG,SWD,F(xiàn)INE)用于傳輸數(shù)據(jù),因此不需要額外的引腳。SystemView特點(diǎn)可支持多種CPU硬件支持簡單,只需要用J-Link即可分析;支持持續(xù)性的實(shí)時記錄以及在線分析,最大可支持到1000000個事件;支持多種實(shí)時操作系統(tǒng),例如UCOS,FreeRTOS,也可支持裸機(jī)程序;該軟件為免費(fèi)軟件,不需要有任何花費(fèi);開發(fā)環(huán)境和工具SEGGERSystemView程序包提供了Windows、OSX和Linux系統(tǒng)下安裝程序以及可移植存檔。程序包官網(wǎng)下載地址:/systemview.html注意:本文檔所有內(nèi)容基于Windows平臺進(jìn)行說明描述。集成相關(guān)官方程序包:SystemView_VXXX.zip集成代碼(下載程序包中):相應(yīng)目錄下文件。Windows平臺運(yùn)行工具軟件(下載程序包中):SystemView.exe調(diào)試使用調(diào)試工具:J-LINK仿真器(需要安裝更新SEGGER新版本jlink驅(qū)動,本地調(diào)試正常使用版本為JLink_V632)硬件:能夠正常運(yùn)行的Cortex(本地調(diào)試使用BMU05硬件)程序:已集成好SystemView的工程程序及程序調(diào)試刷寫工具(本地調(diào)試使用KEIL5軟件進(jìn)行編譯調(diào)試和刷寫)Windows平臺運(yùn)行工具主程序:SystemView.exe開發(fā)工具安裝使用安裝JLINK驅(qū)動獲取地址:運(yùn)行JLink_Windows_V632.exe下一步默認(rèn)安裝驅(qū)動程序即可:安裝完成目錄:SystemView運(yùn)行這里僅介紹運(yùn)行,具體調(diào)試使用方法見后面章節(jié)。雙擊運(yùn)行SystemView.exe啟動StartRecording,軟件集成(FreeRTOS系統(tǒng))全新工程需要使用安裝包重新集成使用,若已經(jīng)集成好的項(xiàng)目,可忽略本章節(jié)。另外,本章節(jié)僅FreeRTOS系統(tǒng)的集成,其他系統(tǒng)可參考集成,或參考其他相關(guān)資料。軟件包獲取SEGGER官網(wǎng)/products/development-tools/systemview/下載軟件包拷貝需要的文件到目標(biāo)程序中主要文件在軟件包的Src目錄下:工程建立文件鏈接工程建立C和H文件的鏈接:配置FreeRTOS相關(guān)文件FreeRTOSConfig.h文件的末尾添加#include"SEGGER_SYSVIEW_FreeRTOS.h"相應(yīng)平臺設(shè)備目錄下的FreeRTOSConfig.h頭文件FreeRTOSConfig.h中添加INCLUDE_xtaskgetidletaskhandle和INCLUDE_pxTaskGetStackStart并定義為1。
main.c中添加#include"SEGGER_SYSVIEW.h"并在系統(tǒng)調(diào)度之前添加SEGGER_SYSVIEW_Conf();編譯后運(yùn)行編譯通過后,通過J-link下載到硬件,運(yùn)行下載軟件包中的SystemView.exe進(jìn)行調(diào)試使用。運(yùn)行配置見SystemView運(yùn)行章節(jié)。調(diào)試運(yùn)行方法,見后面調(diào)試使用章節(jié)。FreeRTOS打補(bǔ)丁支持Systick和Scheduler將FreeRTOSV9_Core.patch補(bǔ)丁到系統(tǒng)文件工具中,主要涉及幾個文件: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調(diào)試使用SystemView界面介紹界面簡介主界面主要幾個大的窗口:EventsView,SystemView(默認(rèn)隱藏),TimeView(Timeline),CPULoadView,ContextsView,TerminalView,LogView(主要顯示工具運(yùn)行Log,默認(rèn)隱藏)跳轉(zhuǎn)菜單,可以調(diào)整某個位置的數(shù)據(jù):EventView事件窗口右擊鼠標(biāo),可以選擇只顯示某些事件,或不顯示哪些事件事件(Events)列表顯示了從系統(tǒng)發(fā)送的所有事件,并顯示它們的信息,包括事件的時間戳、活動上下文、事件類型和事件細(xì)節(jié)。它與時間軸同步??梢酝ㄟ^View->Events->ToggleReference、右鍵->ToggleReference或者快捷鍵R為事件設(shè)定一個參考時間點(diǎn),之后的事件列表中的所有時間戳都將以最新的參考時間點(diǎn)作為0時間點(diǎn)。Events窗口顯示系統(tǒng)發(fā)送的所有事件,并顯示它們的信息。每個事件都有以下幾項(xiàng):在目標(biāo)時間或記錄時間內(nèi)的時間戳,可以用微秒或納秒分辨率顯示創(chuàng)建Events的上下文,即運(yùn)行的任務(wù)。Event描述,和事件類型一起顯示,(IRS進(jìn)入和退出,任務(wù)活動,API調(diào)用)。Event細(xì)節(jié)描述事件的參數(shù),即API調(diào)用參數(shù)。在列表中定位事件的ID。SystemView系統(tǒng)信息對話框提供了對記錄的概述。它顯示有關(guān)目標(biāo)系統(tǒng)的信息、任務(wù)的記錄和統(tǒng)計(jì)信息、中斷和事件。系統(tǒng)信息由應(yīng)用程序發(fā)送,因此SystemView不需要任何額外的配置來分析和顯示系統(tǒng)行為。系統(tǒng)的一些信息,是由應(yīng)用程序發(fā)送用來識別該系統(tǒng)的。記錄屬性,可由用戶設(shè)置。有關(guān)任務(wù)、中斷、SystemView事件和記錄吞吐量的統(tǒng)計(jì)信息。系統(tǒng)信息包括應(yīng)用程序名稱、使用的OS、目標(biāo)設(shè)備和時間信息。有關(guān)任務(wù)開關(guān)和中斷頻率的附加信息提供了系統(tǒng)的快速概覽。記錄的屬性可以由用戶在保存時進(jìn)行設(shè)定,并和記錄一起存儲,并允許在加載后識別記錄,以便稍后進(jìn)行分析。TimeView(Timeline)時間軸窗口顯示完整的監(jiān)控數(shù)據(jù)。對應(yīng)到Events列表中,滾動到第一項(xiàng)開始。時間軸窗口通過系統(tǒng)時間將系統(tǒng)活動可視化(任務(wù)、中斷、調(diào)度器和空閑)。每行引用一個上下文項(xiàng)(每一個系統(tǒng)任務(wù)),我們可以看到在被監(jiān)視的應(yīng)用程序中使用的所有項(xiàng)。每個任務(wù)用不同背景顏色標(biāo)注。時間軸數(shù)據(jù)縮放:使用鼠標(biāo)滾輪,工具欄項(xiàng),[Ctrl]+[+]/[-]鍵,或View->ZoomIn,View->ZoomOut來縮放。將鼠標(biāo)移動到背景名稱上,可以獲得有關(guān)context類型的更多信息和運(yùn)行時間信息。雙擊某個任務(wù)色塊,可以選擇該項(xiàng),并移動到垂直線處。光標(biāo)移動到任務(wù)色塊,會顯示任務(wù)持續(xù)時間,及EVENT的詳細(xì)信息。光標(biāo)移動到左邊任務(wù)上,會顯示任務(wù)詳細(xì)信息。從下面放大圖可以看到SysTick中斷返回到OS調(diào)度器,這使得Daemon任務(wù)就緒(Ready),由Daemon任務(wù)行中的灰色條表示,并讓它運(yùn)行(TaskRun)。Daemon任務(wù)從embOSAPI函數(shù)os_waiteventTimed中返回,返回值0,表示在當(dāng)前的時間點(diǎn)沒有事件發(fā)生。Daemon任務(wù)調(diào)用vTaskDelayUntil后,激活了調(diào)度器,使任務(wù)失效,并使系統(tǒng)處于空閑狀態(tài)(idle)。IP_Task調(diào)用了另外三個具有快速返回和os_waiteventTimed的embOSAPI函數(shù),它激活了調(diào)度器,使任務(wù)失效,并使系統(tǒng)切換運(yùn)行VCU_COMM任務(wù)。當(dāng)事件發(fā)生時,或者超時之后,Daemon將再次激活。從時間軸我們知道應(yīng)用程序使用了哪些任務(wù)和中斷,并且分析任務(wù)執(zhí)行的狀態(tài)。任務(wù)被SysTick中斷任務(wù)打斷:Timeline是和事件列表Eventslist同步顯示的CPULoadViewCPUload窗口顯示了一個周期內(nèi)上下文占用的CPU時間。CPU負(fù)載是用一個使用Timeline當(dāng)前分辨率的bin的寬度來測量的,因此與縮放級別是同步的??梢酝ㄟ^選擇bin的數(shù)量用來測量較短或較長時期的負(fù)載。使用一個bin,就可以在整個可見的時間軸上測量CPU負(fù)載。(窗口右擊鼠標(biāo),可以彈出Bin設(shè)置)ContextsViewContext窗口顯示上下文的統(tǒng)計(jì)信息(任務(wù)、中斷、調(diào)度器和空閑)。每個上下文項(xiàng)可以通過它的名稱和類型來標(biāo)識。類型包括任務(wù)的優(yōu)先級和中斷的ID。(例如,cortex-m的SysTick是中斷ID#15)。Context窗口信息包括以下內(nèi)容:上下文名稱和類型。任務(wù)堆棧信息。(如果有的話)上下文的活動計(jì)數(shù)?;顒宇l率??偟倪\(yùn)行時間和最后運(yùn)行時間。每秒當(dāng)前的、最小和最大運(yùn)行時間,單位是ms和%。在記錄時,上下文窗口是實(shí)時更新的,而當(dāng)前上下文可以通過選擇行來指示。TerminalView終端窗口顯示來自目標(biāo)應(yīng)用程序的printf輸出,以及發(fā)出log輸出的任務(wù)上下文,以及發(fā)送消息時的時間戳。雙擊消息,可以顯示出該消息在事件列表中的所有信息。
Timeline窗口顯示的是輸出的指示器,根據(jù)級別排序(錯誤總是排在頂部)。顯示的日志級別可以通過View->MessageIndicators…來配置。Timeline窗口右擊鼠標(biāo),彈出保存輸出,設(shè)置后,會以TXT文本形式保存輸出的信息:保存的文件數(shù)據(jù):LogView基本功能使用錄制點(diǎn)擊開始錄制(StarrtRecording)-->填寫目標(biāo)設(shè)備、仿真參數(shù)、RTT地址。注意:RTT地址,請與目標(biāo)板設(shè)置的RTT存儲地址一致??梢灾苯邮褂媚繕?biāo)板的內(nèi)存全地址進(jìn)行搜索。J-LINK不能在KEIL仿真調(diào)試與SystemView錄制同時使用。數(shù)據(jù)保存選擇目錄存放,存儲為.SVDat格式。讀取保存數(shù)據(jù)以保存的文件,可以重新讀取分析,打開存儲.SVDat格式文件。數(shù)據(jù)分析這里只做大概簡述,詳細(xì)操作,看界面介紹相應(yīng)章節(jié)。主要數(shù)據(jù)分析使用下面四個窗口,其中EventView、Timeline、CPULoadView是同步的。EventView窗口:顯示系統(tǒng)發(fā)送的所有事件,并顯示它們的信息。TimeView(Timeline)時間軸窗口:通過系統(tǒng)時間將系統(tǒng)活動可視化(任務(wù)、中斷、調(diào)度器和空閑)。每行引用一個上下文項(xiàng)(每一個系統(tǒng)任務(wù)),我們可以看到在被監(jiān)視的應(yīng)用程序中使用的所有項(xiàng)。從時間軸我們知道應(yīng)用程序使用了哪些任務(wù)和中斷,并且分析任務(wù)執(zhí)行的狀態(tài)。TerminalView窗口:顯示來自目標(biāo)應(yīng)用程序的printf輸出,以及發(fā)出log輸出的任務(wù)上下文,以及發(fā)送消息時的時間戳CPULoadView窗口:顯示了一個周期內(nèi)上下文占用的CPU時間。SystemView操作列表記錄數(shù)據(jù)含義菜單快捷鍵目標(biāo)板開始記錄Target->StartRecordingF5停止記錄Target->StopRecordingF9從系統(tǒng)讀取先前的或者單次數(shù)據(jù)Target->ReadRecordedDataCtrl+F5保存記錄的數(shù)據(jù)到一個文件中File->SaveDataCtrl+S,F(xiàn)2加載一個記錄文件File->LoadDataCtrl+O,F(xiàn)3加載一個最近使用的文件File->RecentFiles無加載一個示例記錄File->SampleRecordings無查看/修改記錄屬性File->RecordingPropertiesCtrl+Shift+R查看含義菜單快捷鍵設(shè)定/清除當(dāng)前事件作為時間參考View->ToggleReferenceR移除所有時間參考View->ClearReferencesCtrl+Shift+R顯示目標(biāo)的時間戳View->DisplayTargetTime無顯示從記錄起始所有時間戳View->DisplayRecordingTime無設(shè)定時間戳分辨率為1usView->Resolution:1us無設(shè)定時間戳分辨率為100nsView->Resolution:100ns無設(shè)定時間戳分辨率為10nsView->Resolution:10ns無設(shè)定時間戳分辨率為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無將光標(biāo)設(shè)定到Timeline(時間軸)的10%View->Cursor->Cursorat10%1將光標(biāo)設(shè)定到Timeline(時間軸)的20%View->Cursor->Cursorat20%2將光標(biāo)設(shè)定到Timeline(時間軸)的30%View->Cursor->Cursorat30%3將光標(biāo)設(shè)定到Timeline(時間軸)的40%View->Cursor->Cursorat40%4將光標(biāo)設(shè)定到Timeline(時間軸)的50%View->Cursor->Cursorat50%5將光標(biāo)設(shè)定到Timeline(時間軸)的60%View->Cursor->Cursorat60%6將光標(biāo)設(shè)定到Timeline(時間軸)的70%View->Cursor->Cursorat70%7將光標(biāo)設(shè)定到Timeline(時間軸)的80%View->Cursor->Cursorat80%8將光標(biāo)設(shè)定到Timeline(時間軸)的90%View->Cursor->Cursorat90%9在1個bin中測量CPU負(fù)載View->CPULoad->SingleBin無在10個bin中測量CPU負(fù)載View->CPULoad->10Bins無在50個bin中測量CPU負(fù)載View->CPULoad->50Bins無在100個bin中測量CPU負(fù)載View->CPULoad->100Bins無在200個bin中測量CPU負(fù)載View->CPULoad->200Bins無顯示/隱藏事件列表中的API調(diào)用事件View->EventFilter->ShowAPIsShift+A顯示/隱藏事件列表中的中斷進(jìn)出事件View->EventFilter->ShowISRsShift+I顯示/隱藏事件列表中的消息(Message)View->EventFilter->ShowMessagesShift+M顯示/隱藏事件列表中的系統(tǒng)事件View->EventFilter->ShowSystemEventsShift+S顯示/隱藏事件列表中的任務(wù)活動事件View->EventFilter->ShowTasksShift+T顯示/隱藏事件列表中的用戶事件View->EventFilter->ShowUserEventsShift+U在事件列表中只顯示API調(diào)用事件View->EventFilter->ShowAPIsonlyCtrl+Shift+S在事件列表中只顯示中斷進(jìn)出事件View->EventFilter->ShowISRsonlyCtrl+Shift+I在事件列表中只顯示消息MessageView->EventFilter->ShowMessagesonlyCtrl+Shift+M在事件列表中只顯示任務(wù)活動事件View->EventFilter->ShowTasksonlyCtrl+Shift+T在事件列表中只顯示用戶事件View->EventFilter->ShowUserEventsonlyCtrl+Shift+U復(fù)位所有事件過濾器View->EventFilter->ResetallFiltersCtrl+Shift+Space自動滾動到新事件上的最后一項(xiàng)View->AutoScroll無選擇要在時間軸上顯示的消息指示器View->MessageIndicatorsCtrl+M在記錄時,手動滾動事件工具條Ctrl+1在記錄時,自動滾動事件工具條Ctrl+2在記錄時,不停地觸發(fā)和滾動一個條件工具條Ctrl+3在記錄時,單次觸發(fā)和滾動一個條件工具條Ctrl+4配置觸發(fā)條件工具條Ctrl+T運(yùn)行含義菜單快捷鍵跳到下一個上下文切換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打開根據(jù)Id跳轉(zhuǎn)到事件的對話框Go->GotoEvent…Ctrl+G打開根據(jù)時間戳跳轉(zhuǎn)到事件的對話框Go->GotoTimestamp…Ctrl+Shift+G向前方滾動(未來)Go->ScrollForward左鍵,Ctrl+滾輪向上滾,單擊并拖動向后方滾動(以前)Go->ScrollBack右鍵,Ctrl+滾輪向下滾,單擊并拖動窗口含義菜單快捷鍵顯示/隱藏事件窗口Window->EventsViewE顯示/隱藏Timeline(時間軸)窗口Window->TimeViewT顯示/隱藏CPULoad(CPU負(fù)載)窗口Window->CPULoadViewL顯示/隱藏Contexts(上下文)窗口Window->ContextViewC顯示/隱藏Terminal(終端)窗口Window->TerminalViewM顯示/隱藏Systeminformation(系統(tǒng)信息)窗口Window->SytemViewS顯示/隱藏Log(日志)窗口Window->LogViewO顯示/隱藏狀態(tài)欄Window->Show/HideStatusBar無顯示/隱藏工具欄Window->Show/HideToolBar無打開程序首選項(xiàng)對話框Tool->PreferencesAlt+,幫助含義菜單快捷鍵打開SystemView手冊(即本手冊)Help->SystemViewManualF11顯示SystemView版本信息Help->AboutSystemViewF12命令行選項(xiàng)SystemView可以通過命令行選項(xiàng)進(jìn)行控制和配置。在啟動記錄時要跳過配置對話框,可以通過命令行選項(xiàng)給出目標(biāo)配置。列出僅供參考: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號,參數(shù)為J-Link的S/N號,可選)-ipConnecttoJ-LinkviaIP.Parameter:IPorS/NofJ-Link.(通過IP地址連接J-Link,參數(shù)為IP地址或者J-Link的S/N號)-deviceSetthetargetdevice.Parameter:DevicenameassupportedbyJ-Link.(目標(biāo)設(shè)備名,參數(shù)為J-Link支持的設(shè)備名,一般為芯片型號)-ifSetthetargetinterface.Parameter:SWD,JTAG,orFINE.(目標(biāo)板連接接口。參數(shù)為:SWD,JTAG或者FINE)-speedSetthetargetinterfacespeed.Parameter:SpeedinkHz.(目標(biāo)板接口連接速率。參數(shù)為:速率,單位是kHz)-jtagconfSettheJTAGscanchainconfiguration.Parameter:IRPreandDRPReofthetargetdevice.(設(shè)定JTAG掃描鏈配置。參數(shù)為:目標(biāo)設(shè)備的IRPre和DRPRe)-rttcbaddrSettheRTTControlBlockaddress.Parameter:Addressinhexadecimal.(RTT控制塊地址。參數(shù)為:十六進(jìn)制地址)-rttcbrangeSetthesearchrangeforRTTControlBlock.Parameter:autoorrangesas"<Address><Size>".(RTT控制塊尋址范圍。參數(shù)為:auto或者表示成"<Address><Size>".)-singleStartSystemViewinsingleinstancemode.(單一實(shí)例模式下的單啟動系統(tǒng)視圖。)-portSetlocalportforsingleinstancemode.Parameter:Port.(設(shè)定單實(shí)例模式下的本地端口。參數(shù)為:端口號)-waitWaitforfirstinstancetoreturnresult.(等待第一個實(shí)例返回結(jié)果)-startStartrecording.(啟動記錄)-stopStoprecording.(停止記錄)-readReadrecordeddatafromtarget.(從目標(biāo)板讀取記錄)-quitQuitSystemView.(退出SystemView)-saveSavecurrentrecording.Parameter:Filetosaveto.(Optional)(保存當(dāng)前記錄到文件,參數(shù)為:要保存到的文件名。(可選))-loadLoadarecordingfromfile.Parameter:Fileto(從文件中加載一個記錄,參數(shù)為:要加載的文件名)load.(Optional)調(diào)試語句跟蹤打印通用打印函數(shù)如下,還有些擴(kuò)展打印接口,需要定義SEGGER_SYSVIEW_EXCLUDE_PRINTF,這里不做介紹://File:SEGGER_SYSVIEW.hvoidSEGGER_SYSVIEW_Print(constchar*s);voidSEGGER_SYSVIEW_Warn(constchar*s);voidSEGGER_SYSVIEW_Error(constchar*s);示例://"SelfTest"任務(wù)中函數(shù)中,加入不同打?。?SEGGER_SYSVIEW_Print("TASK_SelfTestRun,TestPrint");//測試 SEGGER_SYSVIEW_Warn("TASK_SelfTestRun,TestWarn");//測試 SEGGER_SYSVIEW_Error("TASK_SelfTestRun,TestError");//測試不同級別打印調(diào)試效果如下:中斷調(diào)試相關(guān)//File:SEGGER_SYSVIEW_FreeRTOS.h#definetraceISR_EXIT_TO_SCHEDULER()SEGGER_SYSVIEW_RecordExitISRToScheduler()#definetraceISR_EXIT()SEGGER_SYSVIEW_RecordExitISR()#definetraceISR_ENTER()SEGGER_SYSVIEW_RecordEnterISR()示例:中斷事件效果:事件調(diào)試事件分類SystemView分為如下幾類:APIEvents,ISREvents,MessageEvents,SystemEvents,TaskEvents,UserEvents.APIEvents:顯示API事件,Event的ID,顯示發(fā)送詳細(xì)信息的16進(jìn)制數(shù)據(jù)上圖中ID說明:#defineapiID_XTASKNOTIFYSTATECLEAR(35u)#defineapiID_XTASKGETCURRENTTASKHANDLE(36u)#1024為自定義ID,用戶自定義ID范圍:1024..2047ISREvents:顯示中斷事件MessageEvents:顯示應(yīng)用層調(diào)用打印相關(guān)函數(shù)傳遞的消息事件。與Terminal窗口一致SystemEvents:系統(tǒng)事件。包括系統(tǒng)信息,系統(tǒng)配置等。TaskEvents:任務(wù)事件,任務(wù)就緒,任務(wù)運(yùn)行,任務(wù)掛起,任務(wù)調(diào)度等事件。UserEvents:用戶事件,應(yīng)用程序調(diào)用用戶事件記錄函數(shù)產(chǎn)生的事件。用戶事件開始,用戶事件結(jié)束2)調(diào)用用戶事件記錄函數(shù)//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);界面顯示效果:調(diào)用用戶事件記錄函數(shù),可以方便調(diào)試某個代碼段開始,結(jié)束時間,及執(zhí)行的時間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,可自定義發(fā)送事件,當(dāng)前測試事件通過API事件顯示,且消息顯示為16進(jìn)制數(shù)據(jù)。#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函數(shù)匯總表應(yīng)用程序調(diào)用的控制函數(shù)函數(shù)描述SEGGER_SYSVIEW_Init()初始化SYSVIEW模塊SEGGER_SYSVIEW_Start()開始錄制SystemView事件SEGGER_SYSVIEW_Stop()停止錄制SystemView事件SEGGER_SYSVIEW_EnableEvents()使能產(chǎn)生標(biāo)準(zhǔn)SystemView事件功能SEGGER_SYSVIEW_DisableEvents()禁止產(chǎn)生標(biāo)準(zhǔn)SystemView事件功能應(yīng)用程序系統(tǒng)調(diào)用的配置函數(shù)通常包括在系統(tǒng)回調(diào)函數(shù)中。函數(shù)描述SEGGER_SYSVIEW_SetRAMBase()設(shè)置RAM基地址,這是為了節(jié)省帶寬而從IDs中減去的地址SEGGER_SYSVIEW_SendTaskList()向主機(jī)發(fā)送所有任務(wù)描述SEGGER_SYSVIEW_SendTaskInfo()發(fā)送一個任務(wù)信息包,包含任務(wù)ID、任務(wù)優(yōu)先級和任務(wù)名稱SEGGER_SYSVIEW_SendSysDesc()向主機(jī)發(fā)送系統(tǒng)描述字符串SEGGER_SYSVIEW_NameResource()發(fā)送用于在SystemView中顯示的資源名稱中間層模塊注冊和配置函數(shù)函數(shù)描述SEGGER_SYSVIEW_RegisterModule()注冊一個中間層模塊,以記錄它的事件SEGGER_SYSVIEW_RecordModuleDescription()向主機(jī)發(fā)送已注冊模塊的詳細(xì)信息操作系統(tǒng)相關(guān)的事件記錄函數(shù)函數(shù)描述SEGGER_SYSVIEW_OnIdle()記錄一次空閑事件SEGGER_SYSVIEW_OnTaskCreate()記錄任務(wù)創(chuàng)建事件SEGGER_SYSVIEW_OnTaskStartExec()記錄任務(wù)開始執(zhí)行事件SEGGER_SYSVIEW_OnTaskStartReady()記錄任務(wù)準(zhǔn)備好開始事件SEGGER_SYSVIEW_OnTaskStopExec()記錄任務(wù)停止執(zhí)行事件SEGGER_SYSVIEW_OnTaskStopReady()記錄任務(wù)準(zhǔn)備好停止事件SEGGER_SYSVIEW_OnTaskTerminate()記錄任務(wù)終止事件操作系統(tǒng)或者模塊調(diào)用的生成事件記錄函數(shù)函數(shù)描述SEGGER_SYSVIEW_RecordEndCallU32()格式化并發(fā)送帶有返回值的API調(diào)用結(jié)束事件SEGGER_SYSVIEW_RecordEndCall()格式化并發(fā)送無返回值的API調(diào)用結(jié)束事件SEGGER_SYSVIEW_RecordEnterISR()格式化并發(fā)送進(jìn)入中斷服務(wù)函數(shù)事件SEGGER_SYSVIEW_RecordEnterTimer()格式化并發(fā)送進(jìn)入定時器函數(shù)事件SEGGER_SYSVIEW_RecordExitISRToScheduler()格式化并發(fā)送退出中斷函數(shù)進(jìn)入調(diào)度器事件SEGGER_SYSVIEW_RecordExitISR()格式化并發(fā)送中斷服務(wù)函數(shù)退出事件SEGGER_SYSVIEW_RecordExitTimer()格式化并發(fā)送定時器退出事件SEGGER_SYSVIEW_RecordString()格式化并發(fā)送包含一串字符的SystemView包SEGGER_SYSVIEW_RecordSystime()格式化并發(fā)送包含單個U64或者U32類型的參數(shù)的SystemView系統(tǒng)時間SEGGER_SYSVIEW_RecordVoid()格式化并發(fā)送不包含有效數(shù)據(jù)的SystemView包SEGGER_SYSVIEW_RecordU32()格式化并發(fā)送包含單個U32類型的有效參數(shù)的SystemView包SEGGER_SYSVIEW_RecordU32X10()格式化并發(fā)送包含10個U32類型的有效參數(shù)的SystemView包SEGGER_SYSVIEW_RecordU32X2()格式化并發(fā)送包含2個U32類型的有效參數(shù)的SystemView包SEGGER_SYSVIEW_RecordU32X3()格式化并發(fā)送包含3個U32類型的有效參數(shù)的SystemView包SEGGER_SYSVIEW_RecordU32X4()格式化并發(fā)送包含4個U32類型的有效參數(shù)的SystemView包SEGGER_SYSVIEW_RecordU32X5()格式化并發(fā)送包含5個U32類型的有效參數(shù)的SystemView包SEGGER_SYSVIEW_RecordU32X6()格式化并發(fā)送包含6個U32類型的有效參數(shù)的SystemView包SEGGER_SYSVIEW_RecordU32X7()格式化并發(fā)送包含7個U32類型的有效
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 IEC 61754-13:2024 CMV EN Fibre optic interconnecting devices and passive components - Fibre optic connector interfaces - Part 13: Type FC-PC connector family
- 古詩三首登鸛雀樓、靜夜思、望廬山瀑布解析:小學(xué)語文教學(xué)教案
- 寫景色的變化:從冬到春的作文15篇
- 生產(chǎn)原材料采購與庫存管理表
- 應(yīng)急執(zhí)法考試試題及答案
- 音樂理論考試試題及答案
- 移動司機(jī)考試試題及答案
- 宜良農(nóng)機(jī)考試試題及答案
- 六一典禮活動方案
- 六一古箏活動方案
- 第五單元《面積》(教學(xué)設(shè)計(jì))-【大單元教學(xué)】三年級數(shù)學(xué)下冊同步備課系列(人教版)
- 摜蛋考試試題及答案
- GA/T 2159-2024法庭科學(xué)資金數(shù)據(jù)清洗規(guī)程
- 企業(yè)風(fēng)險管理-戰(zhàn)略與績效整合(中文版-雷澤佳譯)
- 業(yè)務(wù)學(xué)習(xí)踝關(guān)節(jié)骨折
- 《醫(yī)療機(jī)構(gòu)重大事故隱患判定清單(試行)》知識培訓(xùn)
- 浙江省杭州市2024年中考英語真題(含答案)
- 《陸上風(fēng)電場工程設(shè)計(jì)概算編制規(guī)定及費(fèi)用標(biāo)準(zhǔn)》(NB-T 31011-2019)
- 羽毛球社團(tuán)教案(共17頁)
- 下肢靜脈曲張?jiān)\斷及治療進(jìn)展PPT學(xué)習(xí)教案
- 裝修管理規(guī)則-城市綜合體---成都租戶指引
評論
0/150
提交評論