Percepio Tracealyzer已經(jīng)在600多個支持Zephyr的開發(fā)板上完成了驗證,可以幫助開發(fā)人員改進Zephyr應(yīng)用的調(diào)試和性能分析。
Zephyr結(jié)構(gòu)良好的構(gòu)建系統(tǒng)和配置框架使得跨硬件平臺的調(diào)試和跟蹤變得更加容易。最新的測試表明,Tracealyzer與我們測試的649塊電路板中的617塊兼容。不兼容的主板大多有內(nèi)存限制(可用于跟蹤的內(nèi)存少于32KB),或者是需要額外主機編譯器配置的模擬系統(tǒng)。
開發(fā)板列表:https://docs.zephyrproject.org/latest/boards/index.html#
對于Zephyr開發(fā)者來說,如果你正在使用的開發(fā)板已在支持列表中,那么現(xiàn)在就可以使用Tracealyzer在基于時間軸的直觀界面可視化系統(tǒng)運行行為,包括線程執(zhí)行、CPU使用情況及內(nèi)核事件。
在Zephyr中使用Tracealyzer
為Zephyr設(shè)置Tracealyzer跟蹤很簡單,在Zephyr應(yīng)用中啟用Tracealyzer快照跟蹤的步驟如下:
? 確保硬件有足夠的內(nèi)存。為了有效跟蹤,建議至少使用32KB。
? 修改Zephyr配置,在project.conf添加:
CONFIG_TRACING=y CONFIG_PERCEPIO_TRACERECORDER=y CONFIG_PERCEPIO_TRC_CFG_STREAM_PORT_RINGBUFFER=y CONFIG_PERCEPIO_TRC_START_MODE_START=y
? 如果內(nèi)存緊張,可以減少RingBuffer的大?。?/p>
CONFIG_PERCEPIO_TRC_CFG_STREAM_PORT_RINGBUFFER_SIZE = 5120
? 構(gòu)建并運行應(yīng)用程序,Tracealyzer將收集分析數(shù)據(jù),后續(xù)可以分析這些數(shù)據(jù)了解系統(tǒng)行為。
有關(guān)更詳細的指南,可以查看Zephyr設(shè)置文檔:https://percepio.com/getstarted/latest/html/zephyr.html#using-the-syscall-extension-zephyr-3-4-0-and-later。
用Tracealyzer調(diào)試
Zephyr中的優(yōu)先級反轉(zhuǎn)
在像Zephyr這樣的實時系統(tǒng)中,一個常見的問題是優(yōu)先級反轉(zhuǎn),因為低優(yōu)先級的任務(wù)占用了高優(yōu)先級任務(wù)需要的資源導(dǎo)致高優(yōu)先級任務(wù)被阻塞。如果任務(wù)調(diào)度和同步行為不可見,很難檢測到這個問題。
診斷優(yōu)先級反轉(zhuǎn)示例
在一個基于Zephyr的應(yīng)用程序中,其中高優(yōu)先級的DataProcessingTask任務(wù)應(yīng)該立即運行,但意外地延遲了。低優(yōu)先級的SensorTask持有互斥信號量,阻止了DataProcessingTask任務(wù)的執(zhí)行。
原則上,高優(yōu)先級任務(wù)(上圖的H)不應(yīng)該被低優(yōu)先級任務(wù)阻塞。在實踐中,某些設(shè)計決策無論可能會導(dǎo)致這種情況發(fā)生,這種情況被稱為優(yōu)先級反轉(zhuǎn)。
通過Tracealyzer跟蹤調(diào)試
1 捕獲跟蹤數(shù)據(jù):運行啟用了Tracealyzer跟蹤功能的應(yīng)用程序,收集系統(tǒng)執(zhí)行的快照信息。
2 分析執(zhí)行時間軸:在Tracealyzer中打開跟蹤文件并查看任務(wù)執(zhí)行圖。
3 識別阻塞依賴:使用Tracealyzer可視化工具查找DataProcessingTask任務(wù)正在等待的位置,并查看哪個低優(yōu)先級任務(wù)正在占用資源。
4 確認優(yōu)先級反轉(zhuǎn):如果低優(yōu)先級任務(wù)(SensorTask)阻塞了高優(yōu)先級任務(wù)(DataProcessingTask),檢查是否啟用了優(yōu)先級繼承機制。
5 解決問題
啟用互斥信號量的優(yōu)先級繼承(在prj.conf中設(shè)置CONFIG_PRIORITY_CEILING=y)。
優(yōu)化任務(wù)調(diào)度,減少阻塞時間。
考慮分解長時間運行的低優(yōu)先級任務(wù)。
使用Tracealyzer,這種類型的分析變得簡單明了,幫助用戶快速查明和解決優(yōu)先級反轉(zhuǎn)問題。
多任務(wù)軟件系統(tǒng)在運行時的實際行為,取決于許多因素,比如任務(wù)和中斷的時間、它們的相互作用和輸入。憑借Zephyr的強大架構(gòu)和我們驗證的開發(fā)板支持,通過Tracealyzer跟蹤工具,用戶可以更好地了解Zephyr系統(tǒng)的運行時世界。
麥克泰技術(shù)代理Tracealyzer,具有豐富的RTOS分析軟件與調(diào)試工具使用方面的知識和經(jīng)驗,歡迎咨詢info@bmrtech.com。
-
調(diào)試
+關(guān)注
關(guān)注
7文章
602瀏覽量
34407 -
開發(fā)板
+關(guān)注
關(guān)注
25文章
5389瀏覽量
100885 -
編譯器
+關(guān)注
關(guān)注
1文章
1652瀏覽量
49729 -
Zephyr
+關(guān)注
關(guān)注
0文章
34瀏覽量
6178
原文標題:使用Tracealyzer跟蹤Zephyr調(diào)試
文章出處:【微信號:麥克泰技術(shù),微信公眾號:麥克泰技術(shù)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
RTOS應(yīng)用中的優(yōu)先級反轉(zhuǎn)問題
嵌入式實時系統(tǒng)中的優(yōu)先級反轉(zhuǎn)是什么?
如何理解任務(wù)優(yōu)先級反轉(zhuǎn)?
干貨 | RTOS應(yīng)用中的優(yōu)先級反轉(zhuǎn)問題
如何使用Tracealyzer理解多任務(wù)調(diào)度?
嵌入式系統(tǒng)優(yōu)先級反轉(zhuǎn)問題的分析

關(guān)于嵌入式系統(tǒng)優(yōu)先級反轉(zhuǎn)的原因及解決方法探討

嵌入式系統(tǒng)中優(yōu)先級反轉(zhuǎn)的產(chǎn)生原因及2種解決方案

uC/OS-II學(xué)習(xí)筆記——優(yōu)先級反轉(zhuǎn)與優(yōu)先級繼承機制

中斷優(yōu)先級處理的原則及配置 搶占優(yōu)先級和響應(yīng)優(yōu)先級的區(qū)別

具有固定優(yōu)先級調(diào)度程序RTOS的優(yōu)先級倒置

Free RTOS的優(yōu)先級翻轉(zhuǎn)

什么是優(yōu)先級反轉(zhuǎn)

評論