0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

嵌入式Linux調(diào)試變得更容易

星星科技指導員 ? 來源:嵌入式計算設(shè)計 ? 作者:Mohammed Billoo ? 2022-07-04 09:15 ? 次閱讀

調(diào)試嵌入式 Linux 非常復雜,即使是最有經(jīng)驗的嵌入式系統(tǒng)開發(fā)人員也面臨許多挑戰(zhàn)。但是,專門支持嵌入式 Linux 的可視化跟蹤診斷工具可以大大簡化這項工作。

我的任務(wù)是開發(fā)一個定制的 Linux 驅(qū)動程序來使用外部設(shè)備流式傳輸?shù)臄?shù)據(jù)。雖然 Linux 內(nèi)核有一些原生機制來確保驅(qū)動程序的功能是正確的,但調(diào)試和評估性能遠非簡單。這就是為什么我決定測試新的跟蹤工具(例如支持嵌入式 Linux 的 Tracealyzer)是否以及如何幫助我,從分析驅(qū)動程序和中斷處理程序,到檢查用戶空間應(yīng)用程序和編譯器選項。

我將跟蹤工具與基于 Yocto 的 Linux 發(fā)行版一起使用,首先在板支持包上構(gòu)建自定義層以啟用開源LTTng庫。這為作為 Linux 系統(tǒng)(包括內(nèi)核)的一部分執(zhí)行驅(qū)動程序提供了許多有價值的觀點。它還讓我對驅(qū)動程序有了更全面的了解,以確保沒有性能瓶頸或確定任何瓶頸的原因。

診斷跟蹤工具還可以幫助發(fā)現(xiàn) IRQ 處理程序中的性能問題,而無需使用可怕的 printk 語句。就我而言,它發(fā)現(xiàn)需要通過 I2C 總線確認設(shè)備中斷以防止抖動。如果不使用跟蹤工具,這個隱藏的錯誤直到發(fā)布前不久移除無關(guān)的 printk 調(diào)用時才會被發(fā)現(xiàn)或顯現(xiàn)出來。該工具還揭示了在中斷處理程序中包含 printk 的嚴重影響。使用跟蹤工具有效地避免了在后期修改驅(qū)動程序的需要,這會導致大量的延誤和成本。

使用跟蹤工具,我還能夠測試我的假設(shè),即設(shè)置進程的 CPU 親和性將如何影響其性能。分析正常和高強度條件下不同執(zhí)行元素之間的交互,顯示了 Linux 內(nèi)核的盡力而為算法。這確定了 Linux 內(nèi)核調(diào)度程序和 iperf 代碼庫的某些區(qū)域以供進一步調(diào)查。

在評估用戶空間性能時,跟蹤工具可以更加強大。像大多數(shù)嵌入式軟件開發(fā)人員一樣,我開發(fā)針對 Linux 系統(tǒng)的用戶空間應(yīng)用程序。將跟蹤工具的輸出與 LTTng 跟蹤點結(jié)合起來提供了一種寶貴的方法來幫助我確定我的應(yīng)用程序的執(zhí)行情況、識別任何異常行為并提供高級時序統(tǒng)計信息。然后,我可以使用該工具進一步解決任何計時問題并提高應(yīng)用程序的性能。

我還發(fā)現(xiàn)跟蹤工具和 LTTng 庫的結(jié)合非常強大,可以幫助我快速了解某些編譯器選項對執(zhí)行浮點計算的用戶空間應(yīng)用程序性能的影響。通常,這種分析是在應(yīng)用程序完成但應(yīng)用程序性能不佳時進行的,并且可能需要很多時間。在開發(fā)過程中使用該工具來驗證軟件時序幫助我避免了對性能的影響。

總而言之,我發(fā)現(xiàn) Tracealyzer 等跟蹤工具可以成為發(fā)現(xiàn)隱藏錯誤和優(yōu)化嵌入式 Linux 系統(tǒng)性能的強大元素。

諸如用于自上而下探索性分析的高級概述等功能,包括進程交互、進程分叉、CPU 使用率、RAM 使用率、I/O 使用率、文件使用率、狀態(tài)機和用戶定義的指標,提供了寶貴且直觀的跟蹤視圖,用于顯示細節(jié),在響應(yīng)性和清晰度方面可擴展到大型 Linux 跟蹤。當通過可定制的事件解釋適應(yīng)特定用例時,任何用戶定義的數(shù)據(jù)集(例如間隔和狀態(tài)機)都可以顯示在高度可配置的視圖中。最后,使用開源 LTTng 庫打開了廣泛的功能來探索嵌入式 Linux 設(shè)計的各個方面,從驅(qū)動程序和中斷處理程序到用戶空間應(yīng)用程序和編譯器選項。在開發(fā)過程中使用這種組合不僅可以提高可見性,而且可以在過程的早期解決問題。從我經(jīng)驗豐富的開發(fā)人員的角度來看,這避免了隱藏的錯誤并節(jié)省了項目后期的時間和成本。

pYYBAGLCP1yAF4lgAACnzn1_cNE933.png

圖1。在評估自定義 Linux 內(nèi)核(如圖)時,將開源 LTTng 庫與跟蹤工具結(jié)合使用可以揭示性能問題。

poYBAGLCP2WAOCuXAAGPdbbHYkA704.png

圖 2:此垂直跟蹤視圖使用垂直時間線顯示事件流。它從頂部開始,時間向下增長。每列代表系統(tǒng)中的單個執(zhí)行上下文——通常是任務(wù)或中斷處理程序——列中的矩形顯示特定任務(wù)何時運行。水平標簽(左)標記記錄的軟件事件。該圖是完全響應(yīng)的,因此放大可以顯示更多細節(jié)。

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5054

    文章

    18917

    瀏覽量

    301023
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10781

    瀏覽量

    210536
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11182

    瀏覽量

    208536
收藏 人收藏

    評論

    相關(guān)推薦

    【北京迅為】i.mx8mm嵌入式linux開發(fā)指南第四篇 嵌入式Linux系統(tǒng)移植篇第六十九章uboot移植

    【北京迅為】i.mx8mm嵌入式linux開發(fā)指南第四篇 嵌入式Linux系統(tǒng)移植篇第六十九章uboot移植
    的頭像 發(fā)表于 10-22 14:46 ?282次閱讀
    【北京迅為】i.mx8mm<b class='flag-5'>嵌入式</b><b class='flag-5'>linux</b>開發(fā)指南第四篇 <b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>系統(tǒng)移植篇第六十九章uboot移植

    嵌入式系統(tǒng)的未來趨勢有哪些?

    會更加模塊化和集成化,允許容易的硬件和軟件的切換和升級。這會提高系統(tǒng)的可維護性和可擴展性,會使得系統(tǒng)能夠適應(yīng)不斷在變化的應(yīng)用需求。 5. 生態(tài)可持續(xù)性與環(huán)保材料 在嵌入式系統(tǒng)的設(shè)計以及在制造過程中
    發(fā)表于 09-12 15:42

    嵌入式linux開發(fā)的基本步驟有哪些?

    嵌入式Linux開發(fā)是一個復雜的過程,涉及到硬件選擇、操作系統(tǒng)移植、驅(qū)動開發(fā)、應(yīng)用程序開發(fā)等多個方面。以下是嵌入式Linux開發(fā)的基本步驟,以及每個步驟的說明。 硬件選擇 在開始
    的頭像 發(fā)表于 09-02 09:11 ?287次閱讀

    嵌入式linux開發(fā)板怎么操作

    嵌入式Linux開發(fā)板是一種基于Linux操作系統(tǒng)的嵌入式系統(tǒng)開發(fā)平臺。它通常包括一個處理器、內(nèi)存、存儲器、輸入/輸出接口等硬件組件,以及一個基于L
    的頭像 發(fā)表于 09-02 09:09 ?274次閱讀

    嵌入式linux開發(fā)板芯片的工作原理

    嵌入式Linux開發(fā)板是一種基于Linux操作系統(tǒng)的嵌入式系統(tǒng)開發(fā)平臺,它廣泛應(yīng)用于工業(yè)控制、智能家居、智能交通、醫(yī)療設(shè)備等領(lǐng)域。 嵌入式
    的頭像 發(fā)表于 09-02 09:07 ?256次閱讀

    【出版發(fā)行】嵌入式系統(tǒng)原理與開發(fā)——基于RISC-V和Linux系統(tǒng)

    【出版發(fā)行】嵌入式系統(tǒng)原理與開發(fā)——基于RISC-V和Linux系統(tǒng)
    的頭像 發(fā)表于 07-26 08:36 ?224次閱讀
    【出版發(fā)行】<b class='flag-5'>嵌入式</b>系統(tǒng)原理與開發(fā)——基于RISC-V和<b class='flag-5'>Linux</b>系統(tǒng)

    專家力薦|《嵌入式系統(tǒng)原理與開發(fā)——基于RISC-V和Linux系統(tǒng)》新書發(fā)售

    當前,嵌入式系統(tǒng)已成為智能設(shè)備的核心之一,RISC-V+Linux的開源力量為嵌入式系統(tǒng)注入強大的創(chuàng)新動力。作為中國RISC-V軟硬件生態(tài)領(lǐng)導者,賽昉科技與業(yè)界專家合作推出《嵌入式系統(tǒng)
    的頭像 發(fā)表于 07-24 08:20 ?429次閱讀
    專家力薦|《<b class='flag-5'>嵌入式</b>系統(tǒng)原理與開發(fā)——基于RISC-V和<b class='flag-5'>Linux</b>系統(tǒng)》新書發(fā)售

    嵌入式軟件開發(fā)應(yīng)該掌握哪些知識?

    知識點學習 熟悉 Linux 的基本使用對于嵌入式軟件開發(fā)至關(guān)重要。包括文件系統(tǒng)的管理、用戶權(quán)限的控制、軟件包管理等。嵌入式開發(fā)人員需要能夠在 Linux 環(huán)境下進行開發(fā)、
    發(fā)表于 02-19 11:23

    嵌入式Linux開發(fā)的三種方式

    嵌入式Linux開發(fā)主要有三種方式:裸機開發(fā)、SDK開發(fā)和驅(qū)動開發(fā)。
    的頭像 發(fā)表于 01-22 14:22 ?883次閱讀

    嵌入式自學好書推薦

    令、編輯器VI、編譯器GCC、調(diào)試器GDB以及Make項目管理工具、Shell和Makefile腳本編寫等知識,并搭建嵌入式開發(fā)環(huán)境。推薦書籍:《Linux從入門到精通》。 無論從就業(yè)市場還是技術(shù)發(fā)展的角度來看,
    發(fā)表于 01-11 15:13

    IAR嵌入式解決方案發(fā)布全新版本

    軟件開發(fā)領(lǐng)域?qū)崿F(xiàn)了顯著進展,引入了一系列增強功能,例如在Linux上進行先進的云調(diào)試和仿真。這次更新還包括Arm虛擬硬件(AVH)的集成和針對Linux的增強的IAR C-SPY調(diào)試
    的頭像 發(fā)表于 12-08 15:17 ?731次閱讀

    嵌入式開發(fā)為什么需要輸出調(diào)試信息?

    嵌入式開發(fā)為什么需要輸出調(diào)試信息? 因為輸出調(diào)試信息是嵌入式開發(fā)中一項非常重要的實踐,它有助于保證軟件的可靠性、穩(wěn)定性和性能,也是故障排查的關(guān)鍵工具之一。
    發(fā)表于 11-28 16:46

    嵌入式程序基于源代碼仿真調(diào)試

    前面一課設(shè)計了51單片機最小系統(tǒng)電路,使用51單片機的I/O口控制發(fā)光二極管的狀態(tài),并裝載運行了使用keil編寫的嵌入式程序。本次實驗應(yīng)用proteus結(jié)合keil對嵌入式C程序進行源代碼級調(diào)試
    的頭像 發(fā)表于 11-01 09:24 ?1051次閱讀
    <b class='flag-5'>嵌入式</b>程序基于源代碼仿真<b class='flag-5'>調(diào)試</b>

    嵌入式軟件與生態(tài)系統(tǒng):為嵌入式開發(fā)者提供必要的組件

    構(gòu)建嵌入式 Linux,經(jīng)驗豐富的用戶可使用 Yocto 為其電路板定制基于 Linux 的操作系統(tǒng)。
    的頭像 發(fā)表于 10-31 16:59 ?589次閱讀
    <b class='flag-5'>嵌入式</b>軟件與生態(tài)系統(tǒng):為<b class='flag-5'>嵌入式</b>開發(fā)者提供必要的組件

    有無操作系統(tǒng)的嵌入式Linux驅(qū)動設(shè)備有何區(qū)別?

    有無操作系統(tǒng)的嵌入式Linux驅(qū)動設(shè)備有何區(qū)別? 嵌入式系統(tǒng)是指集成電子設(shè)備上的計算機系統(tǒng),通常用于控制、監(jiān)測、操作或處理某些物理或機械過程。在嵌入式系統(tǒng)中,涉及到設(shè)備驅(qū)動程序的開發(fā),
    的頭像 發(fā)表于 10-29 17:29 ?660次閱讀