《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 解決方案 > 充分應用功能安全性開發環境中集成的代碼分析工具

充分應用功能安全性開發環境中集成的代碼分析工具

2021-11-14
來源:IAR

  目前,越來越多的汽車、工業和其他應用都在強調功能安全性(functional safety),其開發過程也需要先進和完善的工具鏈支持,以及一些重要的開發工具使用經驗。作為功能安全性產品的研發工程師,一定聽說過類似MISRA C的靜態代碼檢查,以及其他一些代碼標準和自動化檢查工具。但是,在日常的開發流程中,僅僅知道這些標準并不代表著能夠高效地讓代碼符合代碼標準。

  本文將從代碼標準本身、以及配套的檢查工具如何使用及流程兩方面,通過以業界常見的IAR開發工具鏈為例來提供一些思路,解釋為什么在開發需要安全認證的產品時,推薦使用其自帶的代碼分析工具。在實際應用中,針對Renesas RX和Arm系列內核,C-STAT 靜態代碼分析和 C-RUN 運行時分析組件往往都作為插件,被添加到IAR Embedded Workbench開發環境中。

  功能安全標準與代碼分析

  在 IEC 61508 2.0 版的第 3 部分中,對安全類系統的軟件作出了規定,要求必須采用可靠良好的開發流程。例如,第 7 部分“技術和措施概述”的第 C.4.2 節中指出要使用編程語言子集:

  目的:降低引入編程錯誤的概率,并增加發現殘余錯誤的概率。

  描述:對編程語言進行檢查,比如使用靜態分析法來確定容易出錯或難以分析的編程結構。然后定義編程語言子集來排除此類編程結構。

  第 C.4.2 節還指出,如果軟件的安全完整性等級 (SIL) 高于 1,則不建議在未設定此類限制的情況下使用 C 語言進行編程。換言之,如果您想使用C/C++ 軟件開發 SIL 2-4 認證系統,則基本上都需要使用靜態分析工具。

  類似地,對于運行時分析,第 7 部分“技術和措施概述”的第 B.6.5 節“動態分析和測試”指出:

  目的:通過對即將完成的原型進行動態行為檢查,檢測是否存在規范失效問題。

  描述:對安全類系統進行動態分析的方法是,在安全類系統的基本可運行原型上,運行目標環境中的典型輸入數據。如果經觀察,安全類系統的行為符合所要求的行為,則表明系統通過了分析檢查。如果安全類系統出現任何失效問題,則必須予以糾正,然后重新分析新的可運行版本。

  下面我們來看看 C-RUN 是如何滿足此類分析需求的:

  C-RUN 是集成在編譯器和 C-SPY 調試器中的工具。借助此工具,可在運行時觀察可執行代碼,并報告代碼在運行時出現的異常行為。C-RUN 會執行算術檢查、邊界檢查和堆檢查,并且可在 IAR Embedded Workbench 的工程設置中輕松進行配置:  

1.jpg

  運行時分析工具的一般特點是誤報率低,C-RUN 也不例外。換言之,C-RUN 報告的錯誤很可能是真的錯誤,因為執行和分析的均為真實代碼,并且是在真實的目標系統上進行的。C-RUN 可查看有關應用程序狀態的所有信息,并會報告實際發生的錯誤。盡管如此,在執行過程中,您可設置適當的 C-SPY 消息規則,讓檢測到的錯誤通過檢查,如下圖所示。  

2.jpg

  不過,運行時分析也有一些不足。首先,使用這種方法時,通常要到軟件開發流程的后期才能發現問題,因為運行時分析工具需要使用代碼的可執行文件。此外,運行時分析僅對實際運行的應用程序部分進行檢查。如果無法觸發所有條件使得應用程序的全部代碼都得到分析,則最終將有部分代碼處于未經測試的狀態。盡管如此,C-RUN 仍可提供非常有價值的反饋,并且由于其與 IAR Embedded Workbench 深度集成,所以非常易用。

  接下來說說 C-STAT,這是一種靜態分析工具,可通過執行一項或多項規則檢查來發現是否存在偏離編碼規則的問題。C-STAT 檢查代碼是否符合 MISRA C:2012、MISRA C++:2008 和 MISRA C:2004 規定的規則,以及對應 CWE 和 CERT C/C++ 所涵蓋的各種問題的檢查。跟 C-RUN 一樣,在 IAR Embedded Workbench 的工程設置中也可輕松地對 C-STAT 進行配置。  

3.jpg

  與 C-RUN 不同的是,C-STAT 無需實際運行應用程序,即可檢查代碼是否存在缺陷。它能在不依賴程序的執行路徑及所使用的數據集的情況下找到錯誤。C-STAT 可在軟件開發流程的早期發現錯誤和缺陷,實際上從開發的第 1 天就可以使用,而且不會影響系統性能。

  雖然市面上有幾款獨立的靜態分析工具可供 C/C++ 開發人員使用,但 C-STAT 的一大優勢在于可直接投入使用,無需進行繁瑣的配置。而且,它能理解和分析專為高效嵌入式編程設計的各種 IAR Systems特定的C/C++ 語言結構。將 C-STAT 集成到日常開發中,就可以輕松地檢查代碼是否符合大部分重要編碼規則。這樣就能為后期的測試和調試省下更多的時間和資源。

  C-STAT 可集成到 IAR Embedded Workbench IDE 中,與常規的構建工具一樣簡單易用:  4.jpg

  對于檢測到的每個錯誤,在線幫助系統中都會有相應的描述,按下 F1,就可看到對應的規則說明和相應的示例代碼來說明如何滿足該規則: 

5.jpg

  可生成 HTML 格式的報告,用以記錄測試結果:  

6.jpg

  結語

  回到本文第一部分談到的功能安全標準,來看看上述工具如何幫助您的軟件達到規定標準。

  第 7 部分“技術和措施概述”的第 C.4.2 節中指出要使用編程語言子集:對編程語言進行檢查,比如使用靜態分析法來確定容易出錯或難以分析的編程結構。然后定義編程語言子集來排除此類編程結構。

  對此,C-STAT 能夠派上用場,可檢查代碼是否符合 MISRA 規定的規則。如前所述,如果想使用 C/C++ 軟件開發 SIL 2-4 認證系統,則確實需要使用靜態分析工具。

  再來看第 B.6.5 節“動態分析和測試”:對安全類系統進行動態分析的方法是,在安全類系統的基本可運行原型上,運行目標環境中的典型輸入數據。如果經觀察,安全類系統的行為符合所要求的行為,則表明系統通過了分析檢查。如果安全類系統出現任何失效問題,則必須予以糾正,然后重新分析新的可運行版本。

  用于運行時分析的 C-RUN 雖然無法全面檢查整個安全類系統中的所有動態行為,但它仍是一個非常好用的工具,至少能在安全類系統的軟件部分中找到真實存在的和潛在的錯誤。需要記住的是,必須將安全概念與系統的危險失效率關聯起來,而不僅僅是組件(如軟件)的失效率。

  用于運行時分析的 C-RUN 和用于靜態分析的 C-STAT 是兩類不同的代碼質量分析工具,在安全類軟件的開發中都非常有用,二者不形成競爭關系,而是構成優勢互補。因此,IAR的C-RUN 和 C-STAT工具 能為開發人員帶來互補的代碼檢查能力,自然而然地集成到日常的開發流程中。在IAR的評估版工具中自帶C-RUN和C-STAT插件,歡迎工程師朋友們試用。




圖片.jpg


本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲欧美日本日韩| 欧美日韩国产综合新一区| 艳女tv在线观看国产一区| 久久国产高清| 午夜在线一区二区| 亚洲午夜视频在线| 一本色道久久综合亚洲精品不| 亚洲欧洲视频在线| 亚洲人成7777| 亚洲激情图片小说视频| 亚洲激情国产精品| 亚洲精品美女久久7777777| 亚洲国产日韩美| 亚洲国产日韩精品| 91久久精品日日躁夜夜躁欧美 | 一本色道久久综合狠狠躁篇怎么玩 | 欧美jizzhd精品欧美喷水| 麻豆免费精品视频| 模特精品裸拍一区| 欧美国产丝袜视频| 欧美日韩免费观看中文| 欧美日韩中文另类| 国产精品成人免费精品自在线观看| 欧美日韩国产页| 欧美日韩在线免费观看| 国产精品久久久久婷婷| 国产精品视频网| 国产一区二区成人| 娇妻被交换粗又大又硬视频欧美| 亚洲大胆在线| 亚洲久久一区二区| 99热这里只有精品8| 亚洲一区二区三区高清不卡| 性欧美xxxx大乳国产app| 久久精精品视频| 亚洲乱码国产乱码精品精天堂| 一区二区三区精品久久久| 亚洲女优在线| 久久久国产亚洲精品| 欧美91大片| 欧美视频不卡| 国产日韩欧美日韩| 亚洲第一视频| 一区二区三区毛片| 午夜精品福利在线| 久久黄色网页| 一区二区免费在线播放| 欧美一区二区三区视频在线观看 | 99视频有精品| 午夜国产精品影院在线观看| 久久九九免费| 欧美精选在线| 国产欧美精品一区aⅴ影院| 一色屋精品亚洲香蕉网站| 日韩午夜电影| 午夜精品美女久久久久av福利| 亚洲福利视频三区| 宅男精品视频| 久久久噜噜噜久久| 欧美精品v日韩精品v国产精品| 国产精品久久久久久久免费软件 | 制服诱惑一区二区| 久久美女性网| 国产精品mm| 亚洲国产精品成人久久综合一区| 欧美亚洲综合网| 久久久亚洲成人| 欧美日韩国产bt| 国产亚洲一二三区| 日韩视频一区二区在线观看 | 亚洲国产精品久久久久秋霞影院 | 久久成人18免费观看| 欧美国产日韩一区二区在线观看| 国产精品视频999| 亚洲国产精品第一区二区三区| 亚洲专区在线| 夜夜嗨av色综合久久久综合网| 久久国产精品久久久久久久久久| 欧美久久在线| 加勒比av一区二区| 亚洲欧美日韩国产| 一本久道久久综合中文字幕| 久久天天躁夜夜躁狠狠躁2022 | 亚洲国产mv| 欧美一级大片在线观看| 欧美日本国产| 亚洲国产高潮在线观看| 欧美一区二区三区视频| 亚洲一区二区三区激情| 欧美激情第3页| 伊人春色精品| 久久er精品视频| 先锋影音网一区二区| 欧美日韩999| 亚洲国产日韩欧美一区二区三区| 久久国产乱子精品免费女 | 欧美日韩免费区域视频在线观看| 黄色成人在线观看| 中文一区字幕| 一片黄亚洲嫩模| 欧美成人精品三级在线观看| 国内精品视频一区| 欧美亚洲一区二区在线| 亚洲国产精品久久| 亚洲第一二三四五区| 久久爱另类一区二区小说| 国产精品久久网站| 亚洲最快最全在线视频| 99在线精品视频在线观看| 蜜桃av一区二区三区| 黄色亚洲精品| 欧美在线不卡| 久久精品视频免费播放| 国产精品你懂的| 亚洲无限av看| 亚洲欧美韩国| 国产精品自拍网站| 新片速递亚洲合集欧美合集| 午夜精品久久久久影视| 国产精品美女主播在线观看纯欲| 一本色道久久加勒比精品| 国产精品99久久久久久人| 欧美日韩日本视频| 日韩一级免费| 亚洲一区精品视频| 国产精品久久99| 亚洲专区一区| 久久国产精品网站| 国产一区二区三区在线观看免费视频| 午夜激情综合网| 久久九九99| 1204国产成人精品视频| 亚洲清纯自拍| 欧美女激情福利| 一本到12不卡视频在线dvd| 亚洲免费在线视频| 国产精品一区二区在线观看| 香蕉亚洲视频| 毛片av中文字幕一区二区| 亚洲国产人成综合网站| 亚洲视频久久| 国产精品综合不卡av| 欧美一区二区视频网站| 麻豆精品精华液| 亚洲日本黄色| 亚洲欧美综合一区| 国产在线欧美| 99精品国产一区二区青青牛奶| 欧美三日本三级少妇三2023 | 亚洲国产一二三| 欧美护士18xxxxhd| 亚洲视频大全| 久久免费视频网| 亚洲国产高清一区| 亚洲手机在线| 国产日韩亚洲欧美综合| 亚洲国产日日夜夜| 欧美日韩一区二区精品| 亚洲在线观看| 久久影视三级福利片| 日韩视频免费大全中文字幕| 性娇小13――14欧美| 激情视频一区| 一个人看的www久久| 国产欧美精品| 亚洲欧洲日产国码二区| 欧美亚一区二区| 欧美主播一区二区三区| 欧美激情影音先锋| 亚洲一级黄色| 免费欧美电影| 亚洲香蕉网站| 农村妇女精品| 亚洲一区二区三区乱码aⅴ蜜桃女| 久久免费精品视频| 一本久久知道综合久久| 久久人91精品久久久久久不卡| 亚洲人成在线观看网站高清| 午夜精品久久久久久久99樱桃| 在线观看日产精品| 香蕉久久久久久久av网站| 欧美精品一区二| 欧美一区在线看| 欧美日韩激情小视频| 欧美一区二区精美| 欧美日韩国产大片| 久久精品夜色噜噜亚洲a∨| 欧美日韩亚洲一区三区| 久久av最新网址| 国产精品成人免费视频| 亚洲精美视频| 国产伦精品一区二区三区高清版 | 久久国产主播精品| 日韩午夜av电影| 美女图片一区二区| 亚洲欧美一区二区三区久久| 欧美顶级艳妇交换群宴| 午夜视频精品| 欧美亚洲成人免费| 亚洲精品资源美女情侣酒店|