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

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

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

分享配置Polyspace分析C代碼的方法和簡介

MATLAB ? 來源:djl ? 作者:龔小平 ? 2019-09-16 16:28 ? 次閱讀

Polyspace可以分析C、C++以及Ada代碼,本文以嵌入式系統(tǒng)中最為常見的C代碼分析為例說明Polyspace配置一個工程的過程和注意事項。

1. 配置語言和處理器類型

C語言由于其靈活性,在不同的編譯器中有不同的約束和擴展,會影響最終生成的目標碼的行為。Polyspace分析C代碼時首先要最大程度和目標編譯器的行為保持一致,這樣才能保持代碼分析的意義。因此在開始創(chuàng)建Polyspace工程時,我們需要配置編譯器和處理器類型:

分享配置Polyspace分析C代碼的方法和簡介

所選用的C語言標準:C90/C99

所用編譯器類型:Keil/Tasking/Diab/IAR…

(編譯器通常定義了標準C語言之外的擴展,如關(guān)鍵字sfr、sbit等。選定編譯器類型相當(dāng)于告知了Polyspace在遇到此類非標擴展時如何解釋其行為。)

目標處理器類型:定義不同數(shù)據(jù)類型的大小和字節(jié)順序類型,如mpc5xx系列處理器定義如下:

分享配置Polyspace分析C代碼的方法和簡介

(某些運行時錯誤檢查與此有關(guān),如同一變量在Int定義為16位時會發(fā)生溢出,而在Int定義為32位時不會發(fā)生溢出。)

其他編譯器行為設(shè)定:如負除取整方向、有符號數(shù)右移邏輯、枚舉類型定義方式等。

2.選擇驗證分析模式

Polyspace有兩種基本的驗證分析模式:應(yīng)用級分析和模塊級分析,可以分別對應(yīng)于集成測試和單元測試。

所謂應(yīng)用級分析指用戶待分析的源代碼中包含了 main函數(shù),選擇應(yīng)用級分析即分析進程從用戶main函數(shù)入口,為了更好地模擬實際程序運行和調(diào)度情形,有時需要進行多任務(wù)(Multitasking)設(shè)置,有機會在以后再進一步介紹。

模塊級分析通常待分析代碼不包含main函數(shù),Polyspace會自動打樁生成main函數(shù)并建立待分析函數(shù)的調(diào)用關(guān)系進行分析,并可進一步根據(jù)需要細化配置。如對于以下被調(diào)函數(shù)Function_sub和主調(diào)函數(shù)Function_top,可以設(shè)置為以下兩種分析入口形式:

Function_sub(){ ……};

Function_top(){……

Function_sub();

……};

自動生成的main函數(shù)中只調(diào)用Function_top:在分析Function_top的進程中分析Function_sub,即Function_sub在Function_top的上下文中被分析。

自動生成的main函數(shù)中同時調(diào)用Function_top和Function_sub:Function_sub除了在Function_top的上下文中被分析,也會在直接在main函數(shù)上下文中被分析。對應(yīng)的可能場景是Function_sub會被其他函數(shù)調(diào)用,需要更為魯棒地分析其安全性。

分享配置Polyspace分析C代碼的方法和簡介

— 總結(jié) —

Polyspace的配置是一個既簡單又靈活的過程,通過對編譯器行為的模擬和分析模型的選擇,我們可以得到更為有意義和更符合需要的結(jié)果。

往期 | 代碼分析驗證

Polyspace應(yīng)用到軟件開發(fā)和驗證流程

淺談Polyspace的靜態(tài)分析

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

    關(guān)注

    68

    文章

    19286

    瀏覽量

    229852
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1634

    瀏覽量

    49133
  • C代碼
    +關(guān)注

    關(guān)注

    1

    文章

    89

    瀏覽量

    14302
收藏 人收藏

    評論

    相關(guān)推薦

    三星貼片電容識別容值代碼方法

    三星貼片電容的容值代碼識別方法主要基于其型號編碼中的特定部分。以下是一個詳細的識別步驟和說明: ? ?一、識別容值代碼的基本步驟 ? ?查看型號編碼: ? ?三星貼片電容的型號編碼通常包含多個部分
    的頭像 發(fā)表于 12-13 16:17 ?155次閱讀
    三星貼片電容識別容值<b class='flag-5'>代碼</b><b class='flag-5'>方法</b>

    閃電定位儀的日常維護方法簡介

    閃電定位儀的日常維護方法簡介
    發(fā)表于 11-13 16:32 ?0次下載

    AIC3254的miniDSP編寫代碼和編寫C5502代碼有什么區(qū)別?

    問題:AIC3254的miniDSP編寫代碼和編寫C5502代碼有什么區(qū)別,執(zhí)行速度和代碼量來進行分析吧,謝謝回復(fù)
    發(fā)表于 11-06 07:22

    一種簡單高效配置FPGA的方法

    本文描述了一種簡單高效配置FPGA的方法,該方法利用微處理器從串行外圍接口(SPI)閃存配置FPGA設(shè)備。這種方法減少了硬件組件、板空間和成
    的頭像 發(fā)表于 10-24 14:57 ?604次閱讀
    一種簡單高效<b class='flag-5'>配置</b>FPGA的<b class='flag-5'>方法</b>

    Linux環(huán)境變量配置方法

    Linux上環(huán)境變量配置分為設(shè)置永久變量和臨時變量兩種。環(huán)境變量設(shè)置方法同時要考慮環(huán)境Shell類型,不同類型的SHELL設(shè)置臨時變量方法和設(shè)置永久變量對應(yīng)的配置文件不同。Linux環(huán)
    的頭像 發(fā)表于 10-23 13:39 ?171次閱讀

    hex文件如何查看原c語言代碼

    是處理器可以直接執(zhí)行的指令,而 C 語言代碼則是人類可讀的高級編程語言代碼。 然而,如果你想要從 .hex 文件中獲取一些有用的信息或者對程序進行分析,你可以考慮以下幾種
    的頭像 發(fā)表于 09-02 10:37 ?2307次閱讀

    如何使用Polyspace Code Prover來統(tǒng)計堆棧

    前一篇文章介紹了堆棧和內(nèi)存的一些背景知識。本次介紹如何使用 Polyspace Code Prover來統(tǒng)計堆棧,如何使用這些數(shù)據(jù)為軟件優(yōu)化服務(wù)。
    的頭像 發(fā)表于 07-25 14:06 ?529次閱讀
    如何使用<b class='flag-5'>Polyspace</b> Code Prover來統(tǒng)計堆棧

    歐姆龍EtherCAT配置方法

    歐姆龍EtherCAT配置方法
    的頭像 發(fā)表于 06-13 16:03 ?1045次閱讀
    歐姆龍EtherCAT<b class='flag-5'>配置</b><b class='flag-5'>方法</b>

    TSMaster VLAN配置方法

    ,以太網(wǎng)目錄Catalog1.VLAN的配置方法2.TCP/IP通訊帶VLAN測試1.TSMaster配置VLANVLAN配置流程如下:1)VLAN
    的頭像 發(fā)表于 05-18 08:21 ?484次閱讀
    TSMaster VLAN<b class='flag-5'>配置</b><b class='flag-5'>方法</b>

    手柄控制代碼及使用方法

    手柄控制代碼及使用方法
    的頭像 發(fā)表于 05-15 10:19 ?1828次閱讀

    訊飛星火API接入機體設(shè)備的方法代碼

    訊飛星火API接入機體設(shè)備的方法代碼
    的頭像 發(fā)表于 05-15 09:56 ?944次閱讀

    C/C++代碼動態(tài)測試工具VectorCAST插樁功能演示#代碼動態(tài)測試 #C++

    C++代碼
    北匯信息POLELINK
    發(fā)布于 :2024年04月18日 11:57:45

    雅特力AT32F423時鐘配置

    介紹如何結(jié)合雅特力提供的V2.x.x的板級支持包(BSP)來配置時鐘。以下介紹時鐘配置方法主要分兩種:1、以手動編寫代碼調(diào)用BSP中提供的驅(qū)動函數(shù)接口來進行時鐘配
    的頭像 發(fā)表于 02-19 13:26 ?595次閱讀
    雅特力AT32F423時鐘<b class='flag-5'>配置</b>

    GD32固件庫里時鐘配置時的神秘代碼?高頻切低頻時芯片會發(fā)生什么

    在GD固件庫的時鐘配置函數(shù)里看到這樣一段神秘代碼,研究分析后不得不佩服原廠固件庫里的細節(jié)處理
    的頭像 發(fā)表于 02-19 09:44 ?710次閱讀
    GD32固件庫里時鐘<b class='flag-5'>配置</b>時的神秘<b class='flag-5'>代碼</b>?高頻切低頻時芯片會發(fā)生什么

    BQ3588C_代碼下載

    BQ3588C_代碼下載
    的頭像 發(fā)表于 01-10 15:09 ?520次閱讀