S32K144作為NXP推出車規級ARM Cortex M4內核MCU,在很多領域開始被廣泛的應用,在其開發過程中,官方支持的S32 Design Studio IDE開發工具可以免費使用,并且集成了ProcessorExpert ,可以很方便的初始化外設并生成驅動。FreeRTOS作為免費的RTOS應用更是廣泛,那么在S32DS中開發使用FreeRTOS的項目,很多情況下需要對OS的運行情況進行了解和分析,此時Segger免費的工具SystemView無疑是最合適的。接下來我們一起學習一下如何在S32DS中使用SystemView分析FreeRTOS。
一、首先下載工具:
S32DS:
https://www.nxp.com/cn/support/developer-resources/run-time-software/s32-design-studio-ide/s32-design-studio-ide-for-arm-based-mcus:S32DS-ARM?tab=Design_Tools_Tab
SystemView:
https://www.segger.com/downloads/free-utilities/#SystemView
McuOnEclipse組件:
https://sourceforge.net/projects/mcuoneclipse/files/PEx%20Components
二、安裝工具
S32DS根據提示安裝即可,SystemView的PC端軟件下載的是壓縮文件,解壓縮后運行可執行程序SystemView.exe即可。這里重點描述一下McuOnEclipse組件,這個組件可以說是NXP為其基于Eclipse的各種IDE開發的組件庫,應用起來非常方便。
啟動S32DS后,在主菜單的Processor Expert中選擇下拉菜單中的import component。
在打開的窗口中找到解壓縮過的McuOnEclipse組件,選擇Part1_Beans_01.07.2018.PEupd,點擊打開進行安裝。
完成后再安裝Part2_Beans_01.07.2018.PEupd,此時默認會把組件安裝到當前用戶目錄的MyComponents目錄中。
安裝完成后,還需要把解壓縮文件夾中的一些頭文件拷貝到安裝目錄響應位置。
三、新建工程
打開S32DS,在File菜單中選擇New/S32DS Application Project。
填寫項目名稱,選擇處理器為S32K144,單擊Next。
SDKs選擇0.8.6,Debugger需要使用SeggerJlink。
生成工程后,配置一個GPIO為輸出,用來控制LED燈。
在main.c中增加初始化代碼,至此,基礎工程創建完成。
四、創建FreeRTOS任務
在組件庫中搜索FreeRTOS,找到新安裝的FreeRTOS,雙擊,會在組件瀏覽中增加FreeRTOS和一些相關的組件。
在McuLibConfig組件右擊選擇inspector,修改組件SDK為S32K SDK。
修改FreeRTOS配置中的處理器架構為Cortex-M4F,生成PE代碼。
添加以下代碼到main.c文件
static void Components_Init(void) { #define CPU_INIT_MCUONECLIPSE_DRIVERS}
復制Cpu.c中的初始化代碼。
粘貼到main.c中,完成初始化工作。
取消 Events.c的編譯。
引入Events.h和Events.c
創建任務,并開啟任務調度器。
編譯下載后,開發板的LED燈已經開始閃爍了,FreeRTOS任務創建成功。
五、添加SystemView
在組件庫中搜索systemview,檢索出SeggerSystemView組件,雙擊添加到工程,這個過程會自動增加一些相關的組件。
修改RTT組件屬性,設置上傳和下載通道都為2。
確保SystemView組件屬性中RTT通道序號為1。
最后,啟用FreeRTOS組件屬性中的Segger System Viewer跟蹤。
重新生成PE代碼后,復制Cpu.c中的初始化代碼。
在main.c中覆蓋之前的初始化代碼。
重新編譯工程,下載到開發板。
在PC上啟動之前下載的SystemView.exe
點擊start recording,彈出對話框,確定即可。
此時SystemView就開始記錄FreeRTOS的所有活動情況了,包括了每個任務的時間占用,任務的調度過程,任務的CPU資源占用。
總結:SystemView是一個非常好用的RTOS分析工具,對于掌握和了解各種RTOS的任務運行情況,內部事件,資源占用等等各種信息非常方便,在項目開發過程中可以很好的幫助開發者分析系統運行狀況,并依據具體狀況對系統的任務進行調節和應用。
評論