在RTOS應(yīng)用的設(shè)計過程中,由于任務(wù)調(diào)度切換是由RTOS任務(wù)調(diào)度器來管理的,RTOS應(yīng)用的源代碼并不能完全反映多任務(wù)系統(tǒng)運(yùn)行時的實(shí)時行為,多任務(wù)系統(tǒng)的實(shí)時行為還取決于任務(wù)、中斷、輸入和他們的相互作用。因此RTOS應(yīng)用的實(shí)時行為對于開發(fā)者而言并不是非常直觀的,此時就可以用到SystemView這樣的RTOS可視化分析工具來幫助分析應(yīng)用的實(shí)際執(zhí)行過程。
SystemView是SEGGER公司開發(fā)的嵌入式系統(tǒng)可視化分析工具,提供了對應(yīng)用程序的完整洞察,包括時間軸、CPU負(fù)載、運(yùn)行時間信息、上下文運(yùn)行時信息等可視化窗口,能夠幫助開發(fā)者獲得對應(yīng)用運(yùn)行時行為的深入理解。SystemView支持μC/OS-II、μC/OS-III、FreeRTOS、embOS和無OS的裸機(jī)系統(tǒng)。
本文將基于STM32F767ZI_Nucleo開發(fā)板的μC/OS-IIII官方移植例程來介紹如何使用Segger SystemView,包含設(shè)備端SystemView相關(guān)應(yīng)用代碼的添加和PC端SystemView軟件的設(shè)置,使用到的μC/OS-III版本是V3.07.03版本。STM32F767ZI_Nucleo開發(fā)板板載的ST-Link可以使用Seggger提供的STLinkReflash軟件將固件更新為J-Link,SystemView支持3種工作模式,持續(xù)記錄模式下SystemView可以在目標(biāo)程序運(yùn)行時實(shí)時地記錄目標(biāo)執(zhí)行情況,本文將使用板載的J-Link調(diào)試器和SEGGER實(shí)時傳輸技術(shù)(RTT)來演示如何使用SystemView跟蹤μC/OS-III。
01目標(biāo)設(shè)備端添加SystemView和RTT的實(shí)現(xiàn)代碼
(1)要使用SEGGER SystemView,首先要把SystemView和RTT源碼文件加到目標(biāo)應(yīng)用工程,SystemView和RTT的源碼包在PC端SystemView軟件的安裝目錄下有提供。
源碼部分包含3個部分:
1)SystemView和RTT實(shí)時傳輸技術(shù)的配置文件:可能需要根據(jù)應(yīng)用需求進(jìn)行一定的修改。
2)SystemView和RTT技術(shù)的具體實(shí)現(xiàn)源碼:通常不需要修改這里的文件。
3)用于多種類型OS及不同版本OS所對應(yīng)的接口文件:根據(jù)應(yīng)用實(shí)際情況選擇對應(yīng)接口文件,本文中我們選擇添加uC/OS-III目錄下對應(yīng)的文件。
將前面提到的配置文件、RTT實(shí)現(xiàn)源碼及OS接口文件加入到工程中后,工程中包含的文件如下,注意還需要在IDE中設(shè)置新添加的這些C文件和匯編代碼文件的包含路徑。
(2)進(jìn)行一些和SystemView相關(guān)的配置
?在os_cfg.h文件中將uC/OS-III的跟蹤功能設(shè)置為1開啟。
#define OS_CFG_TRACE_EN 1u
?在應(yīng)用代碼main.c文件中添加頭文件包含
#include "os_trace.h"
?在os_cfg_trace.h中配置任務(wù)和其他內(nèi)核對象的最大數(shù)量
在SEGGER_SYSVIEW_Config_uCOSIII.c文件中配置系統(tǒng)的時鐘頻率,時間戳計數(shù)器頻率以及芯片RAM內(nèi)存的基地址,如果工程使用HAL庫,可以使用HAL庫中提供的函數(shù)返回這些參數(shù)值。
?在SEGGER_SYSVIEW_Conf.h中設(shè)置事件緩存的大小
#define SEGGER_SYSVIEW_RTT_BUFFER_SIZE 1024
這里的緩存空間大小需要根據(jù)你所使用的J-Link的調(diào)試接口速率,以及所記錄的事件數(shù)量來決定,當(dāng)J-Link速率低,或者記錄的事件較多時需要設(shè)置更大的緩存空間。使用SystemView Single-Shot模式時應(yīng)加大內(nèi)存以盡可能的記錄更長時間。
(3)在任務(wù)創(chuàng)建前調(diào)用SystemView的初始化函數(shù)
在完成芯片的硬件初始化后,uC/OS任務(wù)創(chuàng)建前調(diào)用OS_TRACE_INIT()函數(shù)來初始化SystemView。
02PC端SystemView軟件的安裝和設(shè)置
PC端SystemView軟件可以在Segger官網(wǎng)進(jìn)行下載。
(1) 要利用J-link實(shí)現(xiàn)SystemView持續(xù)記錄,需要在SystemView軟件里的Target->Recorder Configuration選項中設(shè)置目標(biāo)設(shè)置芯片型號、目標(biāo)調(diào)試接口類型(JTAG/SWD)和接口速度。
RTT控制塊的地址檢測選擇Auto,通常情況下由J-Link自動搜索即可檢測成功。
(2)Recorder Configuration設(shè)置完成后,點(diǎn)擊Target->Start Recording選項即可開始跟蹤記錄,在演示中使用到了J-Link,默認(rèn)使用的跟蹤模式是持續(xù)記錄模式,此時跟蹤的開啟和停止將由PC端的SystemView軟件來控制。
進(jìn)入跟蹤后可以得到如圖6所示的可視化跟蹤視圖,每一欄代表應(yīng)用中的中斷或者Task,按優(yōu)先級從高到低排列,圖6直觀的展現(xiàn)了RTOS應(yīng)用中發(fā)生任務(wù)搶占的情形,低優(yōu)先級的DemoTask任務(wù)執(zhí)行過程中被高優(yōu)先級的TestTask任務(wù)搶占。
借助SystemView這樣的可視化分析工具,可以幫助開發(fā)者更好的了解RTOS應(yīng)用的實(shí)時行為,進(jìn)而創(chuàng)造更高質(zhì)量的代碼。本文演示中使用的STM32F767ZI_Nucleo開發(fā)板的uC/OS-III官方移植例程可以在如下鏈接中進(jìn)行下載。
審核編輯:湯梓紅
-
SystemView
+關(guān)注
關(guān)注
5文章
50瀏覽量
24519 -
RTOS
+關(guān)注
關(guān)注
22文章
811瀏覽量
119593 -
源代碼
+關(guān)注
關(guān)注
96文章
2945瀏覽量
66730
原文標(biāo)題:如何使用SystemView跟蹤分析μC/OS-III?
文章出處:【微信號:麥克泰技術(shù),微信公眾號:麥克泰技術(shù)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論