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