<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

測量嵌入式系統中的代碼覆蓋率

星星科技指導員 ? 來源:microchip ? 作者:microchip ? 2023-04-23 10:50 ? 次閱讀

許多 軟件 開發 人員 測量 嵌入式 系統 中 的 代碼 覆蓋 率 使用 的 測試 系統 與 其 原始 設計 非常 不同。工程師知道這是一種糟糕的方法,但它很容易發生。就像沸騰的青蛙寓言一樣,不被注意的增量溫度變化會導致可憐的青蛙死亡。..。..

讓我們探討一下軟件開發人員的困境。

代碼覆蓋率通常發生在開發過程的后期。此時,硬件和軟件都針對成本進行了優化,系統緊密滿足了指定的要求。在此階段開始代碼覆蓋率分析通常意味著將“printf”語句或某種類型的串行傳輸代碼添加到代碼的每個功能中,以便微控制器可以說“程序計數器= X”。在整個項目中添加這些代碼段后,代碼資源要求通常會超過成本優化控制器的限制。一種替代方法是用更大的內存變體替換微控制器(希望在同一封裝中提供一種)。執行速度可能會因額外的代碼而陷入困境,因此也許可以提高MCU時鐘速度以提高系統性能?

該設備還需要一個通信通道來輸出信息。需要電線來拼接通信端口和收發器,以便計算機捕獲輸出流。如果沒有額外的引腳可用,則需要一塊新板來容納引腳數更高的微控制器?;蛘?,所需的功能可以替換為代碼覆蓋例程,這需要多個軟件版本來測試塊中的代碼。

現在,代碼覆蓋功能已經(痛苦地)添加,生成的數據日志文件非常龐大,笨拙,難以與原始源代碼相關聯。任何 注重 質量 的 開發 人員 都會 問 “這個 測試 系統 如何 代表 原始 設計?

讓我們來看看代碼覆蓋率的優點和局限性,MPLAB?代碼覆蓋率的工作原理,以及如何使用它來衡量嵌入式系統中的代碼覆蓋率。

優點和局限性

適當的測試方法對于開發強大的嵌入式系統至關重要,正確使用代碼覆蓋率工具是確保測試完成工作的唯一方法。明智的代碼開發人員明白“未經測試的代碼是損壞的代碼”。任何經歷過產品召回的人都了解代碼覆蓋率對提高產品質量帶來的價值。

具有最低代碼覆蓋率要求的代碼開發人員通常會驚訝于其初始代碼覆蓋率結果的低。編寫涵蓋特定流的測試代碼也可能非常困難。使用需要對原始設計進行大量修改的工具會使這項工作進一步復雜化。

代碼覆蓋率是一個看似簡單的等式:

執行

的代碼量 ______ 代碼

總量 一個精明的工程師用 C 編寫嵌入式代碼,或者C++知道他們的代碼編譯成匯編代碼,可能會問:“計算哪個代碼?這是一個需要理解的重要問題,因為答案因工具提供商而異,并且會顯著影響此等式的結果。我們l 在本博客后面介紹 MPLAB 代碼覆蓋率實現。

一個常見的誤解是,覆蓋率為 100% 的代碼比覆蓋率為 95% 的代碼“更好”。代碼覆蓋率百分比指示測試套件對應用程序的執行程度。它沒有指示代碼效率低下、缺少功能、性能或正確性。

將測試方法與代碼覆蓋率工具區分開來也很重要。在互聯網上搜索,您可以找到聲稱語句覆蓋率、函數覆蓋率、分支覆蓋率、MC/DC 等的代碼覆蓋率工具。這些類型的描述可能會令人困惑,因為供應商正在使用測試方法術語來描述其代碼覆蓋率工具。這是兩個不同的概念。分支覆蓋或 MC/DC 等測試方法描述了如何執行源代碼。相反,代碼覆蓋率工具確定執行了哪些機器指令。由于一行高級源代碼可以生成多個機器指令,因此該工具可以將一行源代碼指示為完全或部分執行或根本不執行。

MPLAB 代碼覆蓋

率的工作原理

對于初學者來說,MPLAB 代碼覆蓋率專為小型嵌入式系統而設計。它很特別,因為它利用了只有MPLAB XC編譯器才能掌握的有關您項目的知識。沒有工具比編譯器更了解您的代碼。由于Microchip制造了我們自己的編譯器,因此我們的代碼覆蓋率工具可以利用這些信息。

我們的編譯器知道所需的最小檢測點數量以及放置它們的位置,以最大程度地減少對代碼大小和性能的影響。我們的編譯器還知道有多少數據存儲器可用,并以最佳方式使用它來存儲運行時信息。我們的分析表明,我們的MPLAB代碼覆蓋率工具使用的檢測點是競爭產品的一半到三分之一。而且由于它僅使用單個位集指令作為標記,因此與基于“printf”指令的競爭對手解決方案的比較并不接近。MPLAB 代碼覆蓋率的影響非常小,通常為 《1%,以至于我們找不到無法使用其原始硬件執行分析的項目。

MPLAB 代碼覆蓋率具有用于導航結果的便捷工具。每一行源代碼和匯編指令都被標記為完全或部分執行或根本不執行。為了澄清這個問題,我們的工具分析了匯編指令級別的覆蓋范圍。因此,覆蓋率信息在匯編的MPLAB X集成開發環境(IDE)程序內存窗口中本機顯示,但也被吸收以在源代碼窗口中顯示各種級別的執行。支持源代碼和匯編指令代碼之間的快速跳轉,以快速評估部分覆蓋的代碼。

顯示單個文件和函數以及項目級別的代碼覆蓋率??梢暂p松打開和關閉突出顯示,以便于閱讀。儀表板跟蹤代碼覆蓋率進度,只需按一下按鈕即可生成 HTML 報告。最重要的是,MPLAB代碼覆蓋率完全集成到Microchip的MPLAB X IDE中,可在工具之間輕松切換任務,并在可配置的輸出窗口中顯示結果。

輕松測量嵌入式系統中

的代碼覆蓋率

MPLAB 代碼覆蓋率是市場上最簡單的代碼覆蓋率工具,只需在 MPLAB X IDE 中啟用它,然后構建、編程、練習和讀取您的設備。

該工具巧妙地使用數據存儲器來存儲已解碼并在 IDE 中顯示的覆蓋范圍信息。這個過程非常獨特,受美國專利號10402309保護。它支持Microchip的所有PIC,SAM,AVR和DSPIC產品,適用于MPLAB XC編譯器的免費版和專業版,并可作為工作站許可證提供。

審核編輯:郭婷

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

    關注

    5001

    文章

    18394

    瀏覽量

    291024
  • 測試系統
    +關注

    關注

    6

    文章

    763

    瀏覽量

    61824
  • MPLAB
    +關注

    關注

    8

    文章

    213

    瀏覽量

    66428
收藏 人收藏

    評論

    相關推薦

    測量嵌入式軟件的代碼覆蓋率

    度還是從功能安全角度。 對于安全可靠的嵌入式設備,測試是質量保證不可或缺的一部分。 安全關鍵型軟件開發標準對測試方法和測試覆蓋率設定了精確要求,這并非沒有道理。 通常,應用程序越關鍵,對代碼
    發表于 07-14 14:50 ?1140次閱讀
    <b class='flag-5'>測量</b><b class='flag-5'>嵌入式</b>軟件的<b class='flag-5'>代碼</b><b class='flag-5'>覆蓋率</b>

    如何改善5G覆蓋率?

    改善5G覆蓋率的方法
    發表于 12-15 07:52

    如何提高DFT設計測試覆蓋率?

    提高DFT設計測試覆蓋率的有效方法是什么
    發表于 05-07 06:37

    如何對嵌入式軟件進行覆蓋測試?

    嵌入式軟件的覆蓋測試原理是什么?嵌入式實時操作系統覆蓋測試工具是什么?Logiscope在嵌入式
    發表于 05-13 07:30

    嵌入式仿真平臺SkyEye的覆蓋率分析相關資料下載

    代碼執娜行覆蓋情況的功能,來檢測代碼未執行覆蓋情況。在覆蓋率分析時需要分析
    發表于 12-17 07:27

    關于SpinalHDL的驗證覆蓋率收集簡單說明

    在做RTL仿真驗證時,覆蓋率收集往往是我們在驗證需要注意的地方,本篇就SpinalHDL的驗證覆蓋率收集做一個簡單說明。sbt配置在SpinalHDL里進行仿真驗證時,我們的待測試
    發表于 06-24 15:56

    重點厘清覆蓋率相關的概念以及在芯片開發流程中跟覆蓋率相關的事項

    全盤考量。而覆蓋率,就是芯片工程,評審體系需要重點參考的一項技術指標,但也只是驗證相關的其中一項。目前被業界廣泛采用的覆蓋率指標有功能覆蓋率(Function Coverage)和
    發表于 09-14 11:57

    Systemverilog覆蓋率的合并和計算方式

      在systemverilog,對于一個covergroup來說,可能會有多個instance,我們可能需要對這些instance覆蓋率進行操作?! ≈槐4鎐overgroup type的覆蓋率
    發表于 03-21 14:24

    Verilog代碼覆蓋率檢查

    Verilog代碼覆蓋率檢查是檢查驗證工作是否完全的重要方法,代碼覆蓋率(codecoverge)可以指示Verilog代碼描述的功能有多少
    發表于 04-29 12:35 ?8008次閱讀

    嵌入式代碼覆蓋率統計方法和經驗

    代碼覆蓋率是衡量軟件測試完成情況的指標,通?;跍y試過程中已檢查的程序源代碼比例計算得出。代碼覆蓋率可以有效避免包含未測試
    的頭像 發表于 01-06 15:06 ?2882次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>代碼</b><b class='flag-5'>覆蓋率</b>統計方法和經驗

    嵌入式代碼覆蓋率如何進行統計有哪些方法和經驗

    代碼覆蓋率是衡量軟件測試完成情況的指標,通?;跍y試過程中已檢查的程序源代碼比例 計算得出。代碼覆蓋率可以有效避免包含未測試
    的頭像 發表于 01-09 11:12 ?2853次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>代碼</b><b class='flag-5'>覆蓋率</b>如何進行統計有哪些方法和經驗

    統計嵌入式代碼覆蓋率的方法和經驗

    代碼覆蓋率是衡量軟件測試完成情況的指標,通?;跍y試過程中已檢查的程序源代碼比例計算得出。代碼覆蓋率可以有效避免包含未測試
    的頭像 發表于 03-29 11:58 ?1651次閱讀
    統計<b class='flag-5'>嵌入式</b><b class='flag-5'>代碼</b><b class='flag-5'>覆蓋率</b>的方法和經驗

    覆蓋率的Verilog代碼的編寫技巧

    設計工程師需要關心的主要有行覆蓋率(Block),條件覆蓋率(Expression),翻轉覆蓋率(Toggle),狀態機覆蓋率。本文從ASIC設計的角度上來討論,如何寫出高
    的頭像 發表于 05-26 17:30 ?3785次閱讀

    更好地測量代碼覆蓋率的 9 個技巧

    測量代碼覆蓋率對于嵌入式系統來說越來越重要,但需要一些經驗。這是因為有一些障礙需要克服,尤其是小目標。但是,使用正確的方法和合適的工具,無需
    的頭像 發表于 07-14 15:58 ?2493次閱讀
    更好地<b class='flag-5'>測量</b><b class='flag-5'>代碼</b><b class='flag-5'>覆蓋率</b>的 9 個技巧

    代碼覆蓋率記錄

    為確保具體的產品(例如,醫療或航空電子市場)質量合格, 通常需要提供語句覆蓋與判定覆蓋認證證明。對于各種嵌 入式系統,規范要求高度優化的代碼需要實時測試。禁止
    發表于 11-03 11:02 ?0次下載
    <b class='flag-5'>代碼</b><b class='flag-5'>覆蓋率</b>記錄
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>