一区二区三区四区在线观看国产日韩 _在线综合+亚洲+欧美中文字幕_蜜桃久久精品乱码一区二区_欧美黄色片免费观看

24小時聯(lián)系電話:18217114652、13661815404

中文

您當前的位置:
首頁>
電子資訊>
技術專題>
單片機開發(fā)功能安全中...

技術專題

單片機開發(fā)功能安全中的編譯器


在各個領域,功能安全領域?qū)﹂_發(fā)人員提出了新要求。功能上安全的代碼必須包括防御性代碼,以防御各種原因引起的意外事件。例如,由于編碼錯誤或宇宙射線事件而導致的內(nèi)存損壞可能導致執(zhí)行根據(jù)代碼邏輯不可能的代碼路徑。高級語言,特別是CC ++,包含數(shù)量眾多的功能,這些功能的行為不是代碼所遵循的語言規(guī)范所規(guī)定的。這種不確定的行為可能導致意外的結(jié)果和潛在的災難性后果,而這在功能安全的應用程序中是無法接受的。出于這些原因,標準要求應用防御性編碼,可測試的編碼,有可能整理足夠的編碼覆蓋率,

代碼還必須實現(xiàn)高級別的代碼覆蓋率,在某些領域(尤其是汽車領域),設計通常需要復雜的外部診斷,校準和開發(fā)工具。出現(xiàn)的問題是,防御性編碼和外部數(shù)據(jù)訪問等實踐并不屬于編譯器認可的領域。例如,CC ++都沒有為內(nèi)存損壞留出任何余地,因此,除非在沒有這種損壞的情況下可以訪問旨在防止內(nèi)存損壞的代碼,否則在對代碼進行優(yōu)化時可以將其忽略。因此,如果不優(yōu)化防御性代碼,則必須在語法和語義上都可以實現(xiàn)。

未定義行為的實例也會引起意外。很容易建議應避免使用它們,但通常很難識別它們。如果存在它們,就不能保證已編譯的可執(zhí)行代碼的行為將符合開發(fā)人員的意圖。對調(diào)試工具使用的數(shù)據(jù)的后門訪問代表了該語言不允許的另一種情況,因此可能會帶來意想不到的后果。

編譯器優(yōu)化可能對所有這些領域產(chǎn)生重大影響,因為它們都不屬于編譯器供應商的職責范圍。優(yōu)化可能會導致在與不可行相關聯(lián)時,即在存在于無法通過任何可能的輸入值進行測試和驗證的路徑上存在的情況下,顯然消除了防御性代碼。更令人震驚的是,在構(gòu)建系統(tǒng)可執(zhí)行文件時,很可能會消除在單元測試期間顯示的防御代碼。僅僅因為在單元測試期間已經(jīng)實現(xiàn)了防御性代碼的覆蓋范圍,因此并不能保證其已存在于完整的系統(tǒng)中。

在功能安全這個陌生的領域,編譯器可能超出了其要素。這就是為什么目標代碼驗證(OCV)代表了對任何與故障相關的后果都有嚴重后果的系統(tǒng)的最佳實踐,甚至對于只有最佳實踐就足夠好的任何系統(tǒng)都代表了最佳實踐。

編譯前后

功能安全性,安全性和編碼標準(例如IEC 61508ISO 26262IEC 62304MISRA CC ++)提倡的驗證和確認做法非常強調(diào)顯示在基于需求的測試中使用了多少應用程序源代碼。

經(jīng)驗向我們表明,如果已證明代碼可以正確執(zhí)行,則現(xiàn)場失敗的可能性會大大降低。但是,由于這種值得稱贊的努力的重點是高級源代碼(無論使用哪種語言),所以這種方法使編譯器具有創(chuàng)建目標代碼的能力,這些目標代碼可以準確地再現(xiàn)開發(fā)人員的能力,這使人們深信不疑預期的。在最關鍵的應用程序中,該隱含假設無法成立。

不可避免的是,目標代碼的控制和數(shù)據(jù)流不會完全是源代碼的鏡像,因此證明所有源代碼路徑都可以可靠地行使并不能證明目標代碼是同一件事。 。鑒于目標代碼和匯編器之間存在11的關系,因此可以比較源代碼和匯編代碼。考慮一下圖1所示的示例,其中右邊的匯編代碼是從左邊的源代碼生成的(使用禁用了優(yōu)化的TI編譯器)。


圖1:右邊的匯編代碼是從左邊的源代碼生成的,顯示了源代碼和匯編代碼之間的明顯對比

如下所述,當編譯此源代碼時,生成的匯編代碼的流程圖與源代碼的流程圖完全不同,因為CC ++編譯器遵循的規(guī)則允許它們以自己喜歡的任何方式修改代碼,前提是二進制表現(xiàn)為好像是一樣的。

在大多數(shù)情況下,該原則是完全可以接受的-但存在異常情況。編譯器優(yōu)化基本上是數(shù)學上的變換,可應用于代碼的內(nèi)部表示。如果假設不成立,這些轉(zhuǎn)換就會出錯”-例如,在代碼庫包含未定義行為的實例的情況下,這種情況經(jīng)常發(fā)生。

只有航空航天業(yè)中使用的DO-178C才將重點放在開發(fā)人員意圖與可執(zhí)行行為之間潛在的危險不一致的可能性上,即使如此,仍不難找到具有明顯潛能的解決方法的倡導者,以免發(fā)現(xiàn)那些不一致之處。但是,可以原諒此類方法,但事實是,源代碼和目標代碼之間的差異可能在任何關鍵應用程序中造成毀滅性后果。

開發(fā)人員意圖與可執(zhí)行行為

盡管源代碼流和目標代碼流之間存在明顯差異,但它們并不是主要問題。編譯器通常是高度可靠的應用程序,盡管可能會像其他任何軟件一樣存在錯誤,但編譯器的實現(xiàn)通常會滿足其設計要求。問題在于這些設計要求并不總是反映功能安全系統(tǒng)的需求。

簡而言之,可以假定編譯器在功能上符合其創(chuàng)建者的目標。但這可能并不完全是期望或期望的結(jié)果,如下面的圖2所示,其中包括一個使用CLANG編譯器進行編譯的示例。


圖2顯示了使用CLANG編譯器進行的編譯

顯然,在匯編代碼中并未表達對錯誤功能的防御性呼吁。

僅在初始化“ state”對象時以及在“ S0”“ S1”情況下修改“ state”對象,因此編譯器可以推斷出賦予“ state”的唯一值是“ S0”“ S1”。編譯器得出結(jié)論,不需要默認值,因為假設沒有損壞,狀態(tài)將永遠不包含任何其他值-實際上,編譯器所做的正是這一假設。

編譯器還決定,由于實際對象(1323)的值未在數(shù)字上下文中使用,因此它將僅使用01的值在狀態(tài)之間切換,然后使用異或更新狀態(tài)值。二進制文件遵循好像義務,并且代碼快速緊湊。在其職權(quán)范圍內(nèi),編譯器做得很好。

此行為對使用鏈接器內(nèi)存映射文件間接訪問對象的校準工具以及通過調(diào)試器直接訪問內(nèi)存有影響。同樣,這些考慮因素也不屬于編譯器的職責范圍,因此在優(yōu)化和/或代碼生成期間不會考慮。

現(xiàn)在假設代碼保持不變,但是在呈現(xiàn)給編譯器的代碼中其上下文發(fā)生了微小的變化,如圖3所示。


圖3:代碼保持不變,但是提供給編譯器的代碼中的上下文略有變化

現(xiàn)在有一個附加函數(shù),該函數(shù)以整數(shù)形式返回狀態(tài)變量的值。這次,絕對值1323在提交給編譯器的代碼中很重要。即使這樣,這些值也不會在更新函數(shù)中進行操作(保持不變),并且僅在新的“ f”函數(shù)中可見。

簡而言之,編譯器繼續(xù)(正確地)對應該使用1323的值進行價值判斷,并且絕不會將它們應用于可能的所有情況。

如果更改了新功能以返回指向我們狀態(tài)變量的指針,則匯編代碼將發(fā)生重大變化。由于現(xiàn)在存在通過指針進行別名訪問的可能性,因此編譯器無法再推斷出狀態(tài)對象正在發(fā)生的情況。如下圖4所示,它不能得出1323的值不重要的結(jié)論,因此現(xiàn)在可以在匯編器中明確表示它們。


圖4:如果將新函數(shù)更改為返回指向我們的狀態(tài)變量的指針,則匯編代碼將發(fā)生重大變化。它不能得出結(jié)論13和23的值并不重要,因此它們現(xiàn)在已在匯編程序中明確表示

對源代碼單元測試的影響

現(xiàn)在,在虛構(gòu)的單元測試工具的上下文中考慮示例。由于需要一種工具來訪問被測代碼,因此會操縱狀態(tài)變量的值,因此默認值不會被優(yōu)化。這種方法在沒有與源代碼其余部分相關的上下文并且需要使所有內(nèi)容都可訪問的測試工具中是完全合理的,但是,其副作用是,它可以掩蓋編譯器對防御性代碼的合法遺漏。

編譯器認識到已通過指針將任意值寫入狀態(tài)變量,并且不能再次得出1323的值不重要的結(jié)論。因此,它們現(xiàn)在在匯編器中明確表示。在這種情況下,不能得出結(jié)論:S0S1代表狀態(tài)變量的唯一可能值,這意味著默認路徑可能可行。如圖5所示,狀態(tài)變量的操作達到了目的,并且在匯編器中現(xiàn)在可以明顯看到對錯誤函數(shù)的調(diào)用。


圖5:狀態(tài)變量的操作已達到其目的,并且錯誤函數(shù)的調(diào)用現(xiàn)在在匯編程序中顯而易見

但是,這種操作不會出現(xiàn)在產(chǎn)品內(nèi)隨附的代碼中,因此對error()的調(diào)用實際上不在整個系統(tǒng)中。

目標代碼驗證的重要性

為了說明目標代碼驗證如何幫助解決這個難題,請再次考慮第一個示例代碼片段,如圖6所示:


圖6:這說明了目標代碼驗證如何幫助解決錯誤提示在整個系統(tǒng)中的作用

通過一次調(diào)用,可以證明此C代碼實現(xiàn)了100%的源代碼覆蓋率,因此:

f_while40,3;

可以將代碼重新格式化為每行單個操作,并在流程圖上表示為基本塊節(jié)點的集合,每個節(jié)點都是一系列直線代碼。基本塊之間的關系在圖7中使用節(jié)點之間的有向邊表示。


圖7:使用節(jié)點之間的有向邊顯示基本塊之間的關系

編譯代碼后,結(jié)果如下所示(圖8)。流程圖的藍色元素表示調(diào)用f_while40,3尚未執(zhí)行的代碼。

通過利用目標代碼與匯編代碼之間的一對一關系,此機制可以揭示目標代碼的哪些部分未被執(zhí)行,從而促使測試人員設計其他測試并實現(xiàn)完整的匯編代碼覆蓋范圍,從而實現(xiàn)目標代碼驗證。


圖8:顯示了編譯代碼后的結(jié)果。流程圖的藍色元素表示調(diào)用f_while4(0,3)尚未執(zhí)行的代碼

顯然,目標代碼驗證無權(quán)阻止編譯器遵循其設計規(guī)則,并無意中繞開了開發(fā)人員的最佳意圖。但這確實可以并且確實會引起任何此類失配,引起粗心的人的注意。

現(xiàn)在,在前面的錯誤提示示例的上下文中考慮該原理。當然,完整系統(tǒng)中的源代碼將與在單元測試級別上證明的源代碼相同,因此,將其進行比較不會發(fā)現(xiàn)任何問題。但是,將目標代碼驗證應用于完整的系統(tǒng)對于確保基本行為按照開發(fā)人員的意圖進行表達將具有極大的價值。

 

請輸入搜索關鍵字

確定
一区二区三区四区在线观看国产日韩 _在线综合+亚洲+欧美中文字幕_蜜桃久久精品乱码一区二区_欧美黄色片免费观看
亚洲日穴在线视频| 中文字幕亚洲综合久久菠萝蜜| 制服丝袜av成人在线看| 日韩欧美精品三级| 国产精品美女www爽爽爽| 亚洲6080在线| 国产成人精品免费一区二区| 欧美亚洲图片小说| 日韩一区二区三区在线视频| 4438亚洲最大| 日韩精品一区二区三区视频播放 | 欧美成人一区二区三区片免费 | 欧美一区二区网站| 亚洲国产激情av| 日韩av成人高清| 91在线一区二区| 久久婷婷色综合| 亚洲成人av一区| 毛片基地黄久久久久久天堂| 91污在线观看| xf在线a精品一区二区视频网站| 一区二区三区在线观看国产| 国产一区二区电影| 欧美精品第1页| 亚洲天堂免费在线观看视频| 久久99国产精品免费| 欧美影院午夜播放| 国产精品久久毛片| 国内精品久久久久影院色| 欧美视频在线播放| 成人欧美一区二区三区黑人麻豆| 精品在线播放午夜| 9191久久久久久久久久久| 亚洲精品日日夜夜| 成人视屏免费看| 精品成人一区二区三区| 亚洲一区二区免费视频| 国产一区二区不卡在线| 日韩一区二区三区电影在线观看 | 欧美一区二区三区视频免费播放| 17c精品麻豆一区二区免费| 韩国女主播一区二区三区| 欧美精品成人一区二区三区四区| 最近日韩中文字幕| 成人免费高清在线观看| 久久人人超碰精品| 老鸭窝一区二区久久精品| 在线一区二区观看| 日韩理论片网站| 国产白丝网站精品污在线入口| 欧美一级专区免费大片| 首页国产丝袜综合| 欧美日本在线观看| 亚洲国产一区二区a毛片| 91碰在线视频| 国产精品久久久久久久第一福利| 午夜欧美2019年伦理| 在线国产电影不卡| 亚洲自拍偷拍图区| 日本韩国欧美在线| 一区二区三区四区精品在线视频 | 久久午夜老司机| 伦理电影国产精品| 欧美一级一区二区| 日本强好片久久久久久aaa| 欧美电影在线免费观看| 亚洲成a人v欧美综合天堂下载| 欧洲色大大久久| 亚洲成a人在线观看| 91看片淫黄大片一级在线观看| 国产欧美在线观看一区| 福利电影一区二区| 国产精品无人区| 99久久婷婷国产综合精品| 中文字幕在线不卡视频| 99vv1com这只有精品| 亚洲日本丝袜连裤袜办公室| 91麻豆国产香蕉久久精品| 亚洲情趣在线观看| 91久久精品午夜一区二区| 亚洲综合久久久久| 欧美日韩精品一区二区三区四区 | 色综合久久综合网欧美综合网| 国产精品天干天干在线综合| 成人福利视频网站| 亚洲素人一区二区| 欧美亚洲综合久久| 日本在线不卡一区| 91精品国产麻豆| 午夜精品久久一牛影视| 日韩天堂在线观看| 国产一区二区不卡老阿姨| 久久久久国产精品免费免费搜索| 国产成人午夜精品5599| 中文字幕在线不卡| 欧美影视一区在线| 蜜臀久久99精品久久久画质超高清| 日韩欧美在线观看一区二区三区| 久久国产尿小便嘘嘘| 日韩欧美在线观看一区二区三区| 国产一区二区免费看| 中文字幕一区二区三| 欧美日韩国产中文| 国产在线播精品第三| 国产精品不卡在线| 欧美四级电影网| 久久精品国产77777蜜臀| 欧美激情中文字幕一区二区| 一本久道久久综合中文字幕| 丝袜亚洲另类丝袜在线| 欧美成人精品1314www| 精品在线播放免费| 日韩理论在线观看| 欧美一级二级在线观看| 成人黄页在线观看| 亚洲成人av电影| 国产亚洲综合在线| 在线精品观看国产| 久久99久久精品| 亚洲欧美色图小说| 日韩精品在线一区| 91香蕉视频在线| 卡一卡二国产精品| 国产精品黄色在线观看| 日本黄色一区二区| 精品一区二区日韩| 一级女性全黄久久生活片免费| 欧美日韩国产系列| 成人一级片在线观看| 亚洲成人av免费| 欧美激情资源网| 欧美一区二区三区性视频| 波多野结衣在线一区| 日本不卡一二三| 亚洲欧洲日韩一区二区三区| 91精品国产手机| 99re视频精品| 精品一区二区三区香蕉蜜桃 | 久久精品国产**网站演员| 亚洲欧洲精品天堂一级| 欧美日韩高清不卡| 成人成人成人在线视频| 青青草国产精品97视觉盛宴| 综合久久久久久| 精品动漫一区二区三区在线观看| 91香蕉视频mp4| 国产一区 二区 三区一级| 亚洲国产综合在线| 国产精品嫩草影院av蜜臀| 日韩美一区二区三区| 91久久奴性调教| 蓝色福利精品导航| 亚洲国产日韩a在线播放| 中文一区一区三区高中清不卡| 91精品午夜视频| 在线亚洲高清视频| 不卡一二三区首页| 国产成人在线观看免费网站| 精品写真视频在线观看 | 欧美午夜免费电影| 在线观看一区日韩| 色偷偷久久人人79超碰人人澡 | 国产女人aaa级久久久级| 久久综合网色—综合色88| 欧美不卡在线视频| 精品欧美一区二区在线观看| 日韩一区二区不卡| 欧美成人r级一区二区三区| 日韩久久免费av| 精品国产伦一区二区三区观看体验| 日韩午夜av电影| 欧美videos中文字幕| 欧美大片一区二区| 欧美精品一区二区三区蜜桃视频| 精品久久国产老人久久综合| 欧美精品一区二区三区久久久| 久久亚洲精品国产精品紫薇| 久久久国产一区二区三区四区小说 | 老司机午夜精品99久久| 久久精品国产秦先生| 美国毛片一区二区三区| 久久99精品久久久久久动态图| 激情综合五月婷婷| 国产成人精品综合在线观看| www.亚洲人| 日本韩国精品在线| 欧美色老头old∨ideo| 69堂精品视频| 日韩精品在线一区二区| 久久久99精品免费观看| 中国av一区二区三区| 亚洲猫色日本管| 亚洲超碰97人人做人人爱| 日本成人在线电影网| 国模一区二区三区白浆| 成人国产在线观看| 欧洲人成人精品| 欧美一区二区大片| 久久亚区不卡日本| 国产精品对白交换视频 |