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

關于嵌入式系統優先級反轉的原因及解決方法探討

嵌入式系統中優先級反轉的產生原因及2種解決方案

uC/OS-II學習筆記——優先級反轉與優先級繼承機制

評論