調試嵌入式 Linux 非常復雜,即使是最有經驗的嵌入式系統開發人員也面臨許多挑戰。但是,專門支持嵌入式 Linux 的可視化跟蹤診斷工具可以大大簡化這項工作。
我的任務是開發一個定制的 Linux 驅動程序來使用外部設備流式傳輸的數據。雖然 Linux 內核有一些原生機制來確保驅動程序的功能是正確的,但調試和評估性能遠非簡單。這就是為什么我決定測試新的跟蹤工具(例如支持嵌入式 Linux 的 Tracealyzer)是否以及如何幫助我,從分析驅動程序和中斷處理程序,到檢查用戶空間應用程序和編譯器選項。
我將跟蹤工具與基于 Yocto 的 Linux 發行版一起使用,首先在板支持包上構建自定義層以啟用開源LTTng庫。這為作為 Linux 系統(包括內核)的一部分執行驅動程序提供了許多有價值的觀點。它還讓我對驅動程序有了更全面的了解,以確保沒有性能瓶頸或確定任何瓶頸的原因。
診斷跟蹤工具還可以幫助發現 IRQ 處理程序中的性能問題,而無需使用可怕的 printk 語句。就我而言,它發現需要通過 I2C 總線確認設備中斷以防止抖動。如果不使用跟蹤工具,這個隱藏的錯誤直到發布前不久移除無關的 printk 調用時才會被發現或顯現出來。該工具還揭示了在中斷處理程序中包含 printk 的嚴重影響。使用跟蹤工具有效地避免了在后期修改驅動程序的需要,這會導致大量的延誤和成本。
使用跟蹤工具,我還能夠測試我的假設,即設置進程的 CPU 親和性將如何影響其性能。分析正常和高強度條件下不同執行元素之間的交互,顯示了 Linux 內核的盡力而為算法。這確定了 Linux 內核調度程序和 iperf 代碼庫的某些區域以供進一步調查。
在評估用戶空間性能時,跟蹤工具可以更加強大。像大多數嵌入式軟件開發人員一樣,我開發針對 Linux 系統的用戶空間應用程序。將跟蹤工具的輸出與 LTTng 跟蹤點結合起來提供了一種寶貴的方法來幫助我確定我的應用程序的執行情況、識別任何異常行為并提供高級時序統計信息。然后,我可以使用該工具進一步解決任何計時問題并提高應用程序的性能。
我還發現跟蹤工具和 LTTng 庫的結合非常強大,可以幫助我快速了解某些編譯器選項對執行浮點計算的用戶空間應用程序性能的影響。通常,這種分析是在應用程序完成但應用程序性能不佳時進行的,并且可能需要很多時間。在開發過程中使用該工具來驗證軟件時序幫助我避免了對性能的影響。
總而言之,我發現 Tracealyzer 等跟蹤工具可以成為發現隱藏錯誤和優化嵌入式 Linux 系統性能的強大元素。
諸如用于自上而下探索性分析的高級概述等功能,包括進程交互、進程分叉、CPU 使用率、RAM 使用率、I/O 使用率、文件使用率、狀態機和用戶定義的指標,提供了寶貴且直觀的跟蹤視圖,用于顯示細節,在響應性和清晰度方面可擴展到大型 Linux 跟蹤。當通過可定制的事件解釋適應特定用例時,任何用戶定義的數據集(例如間隔和狀態機)都可以顯示在高度可配置的視圖中。最后,使用開源 LTTng 庫打開了廣泛的功能來探索嵌入式 Linux 設計的各個方面,從驅動程序和中斷處理程序到用戶空間應用程序和編譯器選項。在開發過程中使用這種組合不僅可以提高可見性,而且可以在過程的早期解決問題。從我經驗豐富的開發人員的角度來看,這避免了隱藏的錯誤并節省了項目后期的時間和成本。
圖1。在評估自定義 Linux 內核(如圖)時,將開源 LTTng 庫與跟蹤工具結合使用可以揭示性能問題。
圖 2:此垂直跟蹤視圖使用垂直時間線顯示事件流。它從頂部開始,時間向下增長。每列代表系統中的單個執行上下文——通常是任務或中斷處理程序——列中的矩形顯示特定任務何時運行。水平標簽(左)標記記錄的軟件事件。該圖是完全響應的,因此放大可以顯示更多細節。
審核編輯:郭婷
-
嵌入式
+關注
關注
5096文章
19189瀏覽量
308028 -
cpu
+關注
關注
68文章
10911瀏覽量
213150 -
Linux
+關注
關注
87文章
11351瀏覽量
210512
發布評論請先 登錄
相關推薦
新手怎么學嵌入式?
嵌入式工程師都在找的【Linux內核調試技術】建議收藏!
掌握調試技巧是攻克嵌入式學習難點的關鍵
![掌握<b class='flag-5'>調試</b>技巧是攻克<b class='flag-5'>嵌入式</b>學習難點的關鍵](https://file1.elecfans.com/web2/M00/0B/D6/wKgZomc6sJiACVBUAAAhMBxuL2Q238.png)
什么是嵌入式操作系統?
嵌入式 Linux 操作系統配置
【北京迅為】i.mx8mm嵌入式linux開發指南第四篇 嵌入式Linux系統移植篇第六十九章uboot移植
![【北京迅為】i.mx8mm<b class='flag-5'>嵌入式</b><b class='flag-5'>linux</b>開發指南第四篇 <b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>系統移植篇第六十九章uboot移植](https://file1.elecfans.com/web1/M00/F3/6E/wKgaoWcXSkGAbkAIAADLyCAJHk8578.png)
嵌入式系統的未來趨勢有哪些?
嵌入式linux開發的基本步驟有哪些?
嵌入式linux開發板怎么操作
嵌入式linux開發板芯片的工作原理
專家力薦|《嵌入式系統原理與開發——基于RISC-V和Linux系統》新書發售
![專家力薦|《<b class='flag-5'>嵌入式</b>系統原理與開發——基于RISC-V和<b class='flag-5'>Linux</b>系統》新書發售](https://file.elecfans.com/web2/M00/1A/02/poYBAGF47iiANcvqAABSphpOXQU436.jpg)
評論