<output id="yn1pw"></output>
    <wbr id="yn1pw"></wbr>

    <form id="yn1pw"><legend id="yn1pw"></legend></form>

  1. 更多課程 選擇中心

    嵌入式培訓
    達內IT學院

    400-111-8989

    在調試嵌入式軟件時,使用追蹤工具發現了這些.......

    • 發布:江文瑞
    • 來源:嵌入式資訊精選
    • 時間:2018-09-07 17:53

    在調試嵌入式軟件時,也就基本進入了軟件上線前的最后檢查階段了,結果使用追蹤工具發現了這些典型錯誤!

    眾所周知,單獨的源代碼并不給出基于RTOS的固件實際行為的全貌表現。實時行為還取決于許多其他因素,如任務和中斷的定時,輸入和實時操作系統的配置。

    Tracealyzer提供了前所未有的洞察基于RTOS的軟件的運行世界功能,從而改善開發效率,減少上市時間,及更好的軟件質量。使用Tracealyzer,可以記錄RTOS及應用的實時行為,并具有強大的可視化功能,提供前所未有的洞察運行時狀態的能力。這有助于加速基于RTOS的軟件開發、驗證和調試。

    Tracealyzer支持FreeRTOS,uC/OS-III,VxWorks以及Linux的跟蹤。

    調試嵌入式軟件,嵌入式培訓

    近日,由《嵌入式系統編程》雜志的前任主編兼行業資深人士邁克爾?巴爾(Michael Barr)撰寫的三本關于軟件漏洞主題的書籍,不僅列出了錯誤,還提出了避免它們的設計模式。

    良好的設計模式是非常寶貴的,但無論如何錯誤總是難以避免的。在調試嵌入式軟件時,使用Percepio Tracealyzer等RTOS跟蹤工具可以找到并分析這些錯誤中的至少五個。

    1、抖動

    如果軟件系統中有一項需要定期執行的任務,例如每10毫秒讀取一次模數轉換器,那么它就擁有一個對隨機延遲敏感的系統 - 也稱為抖動。如果10 ms間隔降低到10±2 ms,則計算精度會相應降低。

    為了最大限度地減少抖動,邁克爾?巴爾指出需要微調任務優先級,并可能使用定時器中斷來處理最敏感的代碼。Tracealyzer在定位系統中的抖動方面非常有用。

    2、優先級分配不正確

    設置合適的任務優先級對于基于RTOS的系統的性能和可靠性至關重要,因為采用過高優先級運行的任務可能會導致其他任務中出現無法接受的延遲。

    邁克爾?巴爾指出,速率單調分析(RMA)是一種在具有固定優先級和搶占式調度的系統中分配任務優先級的正式方法。但是,這需要有足夠的有關任務行為的信息,并且任務的行為符合此分析方法的假設。

    找到在所有情況下都能正常工作的任務優先級的正確組合可能非常困難,除非有一個良好的跟蹤工具來顯示RTOS中正在發生的事情。 Tracealyzer允許檢查執行時間,執行模式以及任務的最終響應時間。這使開發者可以評估和優化其優先級分配,以實現更快的響應時間和更可靠的行為。

    3、優先級反轉

    具有固定優先級調度程序的RTOS的核心思想是,應該在具有較低優先級的任務之前安排高優先級任務,但是當兩個或多個任務需要協調其工作與全局數據區等共享資源或外圍設備時,可能會導致系統出錯。

    其中一個可能出錯的事情就是優先級反轉(priority inversion),低優先級任務無意中阻止了具有更高優先級的任務。 如果你意識到這個陷阱,這也很容易地避免。 但是,如果發現系統的響應性偶爾會出現延遲,則可能是因為優先級反轉。 使用Tracealyzer,可以通過繪制任務的響應時間來發現此類延遲。 要查看此圖中任何極端值的原因,只需雙擊以顯示相應的任務執行跟蹤。

    4、死鎖

    死鎖是兩個或多個任務之間的循環依賴。 例如,如果任務1已經獲得A,并且被阻止等待B,而任務2先前已獲得B,并且被阻止等待A,則這兩個任務都不會被喚醒。 盡管沒有更高優先級的任務正在運行,但是當多個任務突然停止執行時,可能是出現死鎖問題的明確跡象。 同樣,死鎖的檢測是Tracealyzer可以展示的內容。

    如果希望避免死鎖,首先要注意的是,只有當任務試圖同時持有兩個資源時才會發生死鎖。 因此:構建代碼時,使任何任務在同一時間都不會持有多個共享資源,這樣不會產生死鎖。

    5、內存泄漏

    通常不建議在嵌入式軟件中進行動態內存分配,但有時會出于各種原因(對或錯)進行動態內存分配。問題在于,如果使用它,則必須確保一旦內存塊不再使用時,就釋放每個已分配的內存塊。如果在某些情況下遺漏了這一點,就會出現內存泄漏,并最終耗盡內存。請記住:即使在項目中禁止動態內存分配,也可能有第三方軟件庫或外部開發團隊在不知情的情況下使用動態內存分配。

    如果內存泄漏只是偶爾發生,那么它就特別危險,因為在功能測試期間很容易錯過“緩慢”的內存泄漏,但在部署單元一段時間后,可能會導致嚴重錯誤。考慮到許多嵌入式系統的長期運行特性,以及一些安全關鍵系統可能存在的致命或嚴重故障,內存泄漏是絕對不希望在軟件中出現的一個錯誤。

    Tracealyzer可以監視RTOS對動態內存分配的調用,并可以突出顯示可疑的內存泄漏。

    感謝您的閱讀,任何影響性能、體驗等的錯誤我們都應該在產品面向用戶之前進行扼殺,調試嵌入式軟件,使用跟蹤工具可以找到一些典型錯誤,也讓我們及早發現問題,不至于造成更大的損失!好了,更多嵌入式相關的內容盡在達內嵌入式培訓,敬請關注!

    免責聲明:內容和圖片源自網絡,版權歸原作者所有,如有侵犯您的原創版權請告知,我們將盡快刪除相關內容。

    預約申請免費試聽課

    填寫下面表單即可預約申請免費試聽!怕錢不夠?可就業掙錢后再付學費! 怕學不會?助教全程陪讀,隨時解惑!擔心就業?一地學習,可全國推薦就業!

    上一篇:達內嵌入式培訓2018年8月免費訓練營課程表
    下一篇:自學嵌入式難嗎?如何快速入門嵌入式?

    什么是嵌入式?嵌入式的三重境界是什么?

    嵌入式開發與單片機哪個更難?聽聽高手怎么說!

    有哪些編碼習慣有利于我們寫出漂亮的嵌入式C代碼?

    嵌入式硬件設計中需要注意什么?

    • 掃碼領取資料

      回復關鍵字:視頻資料

      免費領取 達內課程視頻學習資料

    • 視頻學習QQ群

      添加QQ群:1143617948

      免費領取達內課程視頻學習資料

    Copyright ? 2021 Tedu.cn All Rights Reserved 京ICP備08000853號-56 京公網安備 11010802029508號 達內時代科技集團有限公司 版權所有

    選擇城市和中心
    黑龍江省

    吉林省

    河北省

    湖南省

    貴州省

    云南省

    廣西省

    海南省

    高清在线不卡一区二区_2019最新国产高清不卡a_亚洲欧洲日本aⅴ 百度 好搜 搜狗
    <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>