關(guān)于功能安全編程的軟件實現(xiàn)方法_第1頁
關(guān)于功能安全編程的軟件實現(xiàn)方法_第2頁
關(guān)于功能安全編程的軟件實現(xiàn)方法_第3頁
關(guān)于功能安全編程的軟件實現(xiàn)方法_第4頁
關(guān)于功能安全編程的軟件實現(xiàn)方法_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、Author: Zhanzr21 21ic BBS功能安全與信息安全其實是兩個概念,兩者都很重要但相互獨立.在汽車電子設(shè)計中,兩個安全都很重要,但是功能安全往往涉及到很嚴重的事故,所以顯得更為重要.功能安全-一般使用Safety這個詞信息安全-使用這個詞:Security但是到了中文兩者都是安全,本文只涉及到功能安全,也就是前者Safety.關(guān)于功能安全,業(yè)界一直在積極研究與推行相關(guān)標準.比如IEC,VDE.應(yīng)該說功能安全的研究與發(fā)展永遠不會停止,因為沒有任何一種設(shè)計能夠達到百分百的絕對安全標準.功能安全與EMC測試聯(lián)系較為緊密,因為電磁輻射會影響其他部件或者使用者的健康,而如何防范EMC噪音

2、也是評價功能安全的一項指標.兼容IEC,VDE的標準IEC(International Electrotechnical Commission)是一個非營利,非政府的標準制定組織.IEC制定的標準主要關(guān)注安全,性能,環(huán)保,電氣能效與再生能力.IEC與ISO和ITU有著緊密聯(lián)系.這些制定的標準不僅包括對硬件的規(guī)定也有軟件方面的.另外這些標準一般會根據(jù)應(yīng)用場景細化為若干子標準.除了老資格,國際化的IEC之外,這個領(lǐng)域中比較知名的,認可度較高還有德國的VDE,英國的IET,美國的IEEE.其中VDE還包括一個測試與認證機構(gòu)專注于軟件功能安全方面的前沿性研究.該機構(gòu)屬于德國的國家注冊的認證機構(gòu).其主要

3、目的在于給各家電子制品廠商提供標準符合與質(zhì)量檢驗服務(wù).IEC的標準中最為人熟知的是IEC 60335-1.這個標準主要覆蓋家用或類似場合的電子制品的功能安全與信息安全規(guī)范.其原則:被測品應(yīng)該在各種元器件失效的情況下保持安全.從此標準的角度觀察,微控制器(MCU)也屬于眾多器件之一.如果電子器件影響到最終產(chǎn)品的安全性,那么在連續(xù)的兩次失效后該制品依然能夠保持安全.這意味著該制品必須在微控制器不工作(正在復(fù)位或者運行異常)且硬件發(fā)生失效的情況下依然能保持安全.如果安全取決于軟件,那么軟件被當做第二次失效來考慮.該標準規(guī)定了三種軟件的安全類型:Class A: 安全根本不取決于軟件Class B:

4、軟件能夠防范不安全的操作Class C: 軟件主動防范特殊危險一般而言,軟件設(shè)計中談到的功能安全都是指的Class B,對于Class C,則需要額外的措施,比如雙控制器冗余設(shè)計,本文暫不涉及.是否符合Class B的認定與硬件軟件都相關(guān).與微控制器相關(guān)的因素被分為兩組來考慮:微控制器相關(guān)與應(yīng)用相關(guān).應(yīng)用相關(guān)的部分依賴于用戶的應(yīng)用結(jié)構(gòu),必須由用戶負責(通信,IO控制,中斷,模擬輸入與輸出),微控制器相關(guān)的部分則純粹與微控制器的結(jié)構(gòu)相關(guān),能夠以一般的方法來進行(內(nèi)核自診斷,揮發(fā)性與非揮發(fā)性存儲器完整性檢查,時鐘系統(tǒng)測試等等).對于英飛凌的微控制器產(chǎn)品來講,微控制器部分的測試有著強大的硬件功能支持

5、.比如Lock-Step內(nèi)核的設(shè)計能夠防范極為難以追鐘的主控制器失效,Aurix系列的處理器都有豐富的存儲器ECC校驗功能,還有看門狗,SMU等等.需要注意的是,除了IEC之外,還有數(shù)家其他機構(gòu)在此領(lǐng)域的標準也是業(yè)內(nèi)較為認可的:比如剛剛提到的德國VDE,主要描述IEC的標準.其他組織的相關(guān)標準的方法與原理與之類似,但是細節(jié)可能有所差異.英飛凌的軟硬件產(chǎn)品設(shè)計過程與此幾家機構(gòu)都有緊密的合作與聯(lián)系.與此同時,一些國家自己制定的標準也向國際標準借鑒.比如UL 60335-1,CSA 60335-1與EN-60335-1都是基于IEC 60335-1制定的.為甚么一些國家不直接使用國際標準而進行自定標

6、準? 一般而言是為了設(shè)定貿(mào)易壁壘,保護本國的廠家.這些標準總體來講跟國際標準非常類似,差別可以說幾乎沒有.但是認證方法,途徑等等有一些本國化的特點.如果要進行本地標準的認證,最好找一些當?shù)氐膶iT從事該業(yè)務(wù)的機構(gòu)進行合作.如果產(chǎn)品設(shè)計是根據(jù)國際標準來的,通過本地化的標準基本是沒有問題的,只是要走個流程而已圖 MCU中被Class B規(guī)范考慮的因素為符合Class B的規(guī)范,軟件上一般要考慮如下因素: CPU寄存器測試 時鐘監(jiān)視 RAM功能檢測 Flash校驗和完整性檢測 看門狗自測 棧溢出監(jiān)視其中最后兩條并非標準明文規(guī)定的,但是擁有這兩條功能會提高軟件的整體健壯性.這些測試的一般工程實踐:測試項

7、目工程實踐CPU寄存器測試啟動時檢測core寄存器的讀寫,定期檢測棧指針,一旦發(fā)生錯誤立即跳轉(zhuǎn)至Fail Safe處理函數(shù).程序計數(shù)器(PC)主要由看門狗來防止程序跑飛尋址與數(shù)據(jù)路徑此項由RAM功能,Flash完整性測試與棧檢查組成,棧底的最末端會寫入一種特定的內(nèi)容用于檢測棧溢出,棧頂也會寫入另一種特定內(nèi)容用于檢測棧underflow時鐘兩組獨立的時鐘源相互檢驗NV存儲程序啟動時即將整個NV空間進行CRC校驗,如果有NV空間用作參數(shù)保持會在運行時被修改則也要考慮此因素,另外部分內(nèi)容定期被檢查.程序在燒寫的時候一般會將計算好的CRC燒寫在特定位置以作校驗之用.RAM存儲啟動時即要進行遍歷檢查,另

8、外關(guān)鍵變量使用雙反向冗余方法進行保護(位相反的值被存儲在非相鄰的區(qū)域用作校驗).為了提升用戶通過Class B認證的速度,英飛凌為其微控制器提供了已經(jīng)通過認證的Class B軟件庫供用戶集成.(Aurix/Tricore與特定型號的相關(guān)庫要通過廠商認證才能獲取).當然需要提醒的一點是,用戶即使使用已經(jīng)認證的廠家軟件庫,整體應(yīng)用是否符合認證要求依舊需要通過相應(yīng)的機構(gòu)進行認證.至于以下內(nèi)容屬于應(yīng)用相關(guān)的因素: 模擬:ADC/DAC GPIO 中斷與外部通信 定時器 外部存儲器尋址模擬器件(ADC/DAC)與用戶應(yīng)用場景,特定的型號的外設(shè)能力相關(guān)度較大.一般而言應(yīng)該定期檢查相應(yīng)的管腳.一些多余的模擬

9、引腳可用于檢測額外設(shè)定的檢測點.如果使用了內(nèi)部參考源,則該參考源也應(yīng)當定期檢測.對于GPIO,Class B規(guī)定必須偵測到任何數(shù)據(jù)IO的失效.這一點可以配合其他應(yīng)用部分進行檢測,比如關(guān)掉一個制冷/加熱開關(guān),用模擬采樣值來回來驗證該開關(guān)是否失效.如果數(shù)字部分與模擬部分是相互獨立供電,則此點需要額外小心兩者電壓上的差異.對于中斷與外部通信接口,可也通過設(shè)定一個軟件計數(shù)器來檢驗中斷與通信發(fā)生的次數(shù),在通過經(jīng)驗檢驗過的時鐘源來通過該計數(shù)器的結(jié)果來判定被測試的中斷與通信接口是否正常工作.對于定時器,可以通過某函數(shù)在指定的時間范圍內(nèi)運行的次數(shù)來驗證.也可以通過不同的時鐘源來交叉驗證定時器.定時器與應(yīng)用的耦

10、合度屬于較高的部分.對于外部存儲器尋址,大多數(shù)英飛凌的微控器型號不涉及到這點.涉及到的型號請參考RAM/Flash檢測的方法.以下是一種內(nèi)存分配方法舉例,關(guān)鍵變量以互補的形式在不同的RAM區(qū)間被保留了兩份以互相校驗.另外堆棧也做了特殊處理已檢測Stack Overflow與under Flow的情況.一種檢測程序執(zhí)行流程的方法對于程序執(zhí)行的各個階段都分配一個不同的數(shù)字進行編碼.這些變量以雙互補形式進行冗余存儲.當一個程序的階段被執(zhí)行,進行一種四步對稱檢測.前兩步檢測該程序階段被正確調(diào)用(在調(diào)用該程序段與返回的地方執(zhí)行).后兩步檢測該程序是否被正確執(zhí)行(該程序段的入口與出口).這種檢測方法對CP

11、U負載影響不大,因為每次檢測只需操作互補變量對的其中一個.因為調(diào)用/返回與入口/出口總是配對出現(xiàn)的,故此互補變量對的互補關(guān)系總是被保持.之后安排數(shù)個檢測點對非預(yù)料性結(jié)果進行檢測,一旦發(fā)生非預(yù)料結(jié)果及跳入FailSafe模式.此例子中該程序階段的關(guān)鍵數(shù)字是5,而該被執(zhí)行的程序段為7.集成之后的程序流程示例:其中開機自檢一般安排在c_startup之前,因為c startup就假定所有的部件運行正常.兩個獨立時鐘互相校驗:一般是用高低速時鐘分別做定時中斷,高速時鐘中斷增加計數(shù)器,低速時鐘ISR中校驗高速時鐘計數(shù)器是否為預(yù)料誤差之中.提高EMC性能的軟件技巧要提高EMC性能,軟件硬化是很關(guān)鍵的一個步

12、驟.在軟件設(shè)計階段就考慮防范EMC干擾是非常重要的,也是成本最低的做法.一般而言要考慮的EMC干擾源:微控制器不響應(yīng)輸入程序跑飛執(zhí)行未預(yù)料的指令野指針子程序執(zhí)行錯誤寄生復(fù)位/中斷單元配置錯亂I/O狀態(tài)被錯誤配置可能的后果:產(chǎn)品產(chǎn)生非預(yù)料的響應(yīng)丟失上下文狀態(tài)分支錯誤中斷丟失數(shù)據(jù)完整性丟失讀入錯誤的輸入狀態(tài)本文介紹兩種措施:1.預(yù)防性措施,可以在現(xiàn)有設(shè)計上添加這些措施以增強軟件的健壯性2.自動恢復(fù)措施,當檢測到錯誤狀態(tài),進行記錄(如有需要可以進行錯誤提示),Fail-Safe操作,之后進行嘗試自動恢復(fù)到已知狀態(tài),理想狀況是最終的用戶感覺不到這個過程預(yù)防性措施:使用看門狗或者類似的定時方法看門狗的原

13、理很簡單,一旦開啟了,那么防止其復(fù)位微控制器的惟一方法就是在其復(fù)位操作之前進行喂狗操作.但是開啟看門狗與喂狗操作的位置必須正確設(shè)計,否則看門狗起不到預(yù)防錯誤的目的.下圖是兩種常見的錯誤看門狗使用方法:圖 看門狗使能過晚,導致在初始化階段程序就跑飛了圖 程序跑飛了,但是看門狗在中斷中喂,結(jié)果是看門狗不能正確復(fù)位針對以上兩種經(jīng)典錯誤,以下兩點需注意:1.看門狗越早使能越好,某些處理器如Aurix系列在復(fù)位之后看門狗就是自動開啟的為理想狀態(tài)2.不要在中斷或者未被超時機制保護的程序點進行喂狗操作兩次喂狗之間的間隔需要精心計算,中斷也需要被考慮進去.看門狗能起到的最小的作用就是能復(fù)位整個程序,這也意味著

14、程序執(zhí)行的上下文與數(shù)據(jù)完整性發(fā)生丟失.所以在程序啟動的時候,需要借助一些狀態(tài)位來判斷復(fù)位源.正確的看門狗使用示意:預(yù)防性措施: 對未用的程序空間進行處理基本上所有的應(yīng)用中,微控制器的代碼空間是沒有使用完全的.不管它的話,那么它的內(nèi)容為雜亂的數(shù)據(jù)(新MCU第一次燒寫程序的話,這些未使用的代碼空間為0xff,但MCU產(chǎn)品大多會進行出廠測試,所以0xff也是不能保證的).保險的做法就是將這些未使用的空間填充為跳轉(zhuǎn)至某已知地址的指令,這樣保證程序即使跑飛了也能跳回到已知的位置.對于Aurix處理器,可以填充為未知指令觸發(fā)trap,或者直接填充非法指令以引發(fā)trap,還有MPU也可以應(yīng)用起來觸發(fā)trap

15、.預(yù)防性措施:冗余輸入讀取狀態(tài)的時候,多讀取幾次,尤其是外部信號,多讀取幾次以確認不是電磁干擾引起的錯誤觸發(fā).這個就是最便宜的輸入濾波器的效果!預(yù)防性措施:處理未使用的中斷向量對于tricore內(nèi)核的處理器,中斷向量表是由軟件實現(xiàn)的.那么盡量不要使用多余的向量表項目.比如:預(yù)防性措施:移除關(guān)鍵的指令與非法的指令關(guān)鍵指令關(guān)鍵指令就是狀態(tài)切換,比如正常模式進入低功耗模式的代碼.一般而言程序跑飛了之后,很有可能會讀取到這段指令,可以在其前后加一些NOP指令讓這個位置發(fā)生位移以降低讀取到這段指令的概率.非法指令非法指令就是內(nèi)核不認識的指令,對于Tricore或者大多數(shù)其他內(nèi)核來講執(zhí)行這樣的指令會發(fā)生T

16、rap.處理方式如上.預(yù)防性措施:對AD采樣值進行處理一般而言就是多采樣幾次取平均,也可以參照電視節(jié)目海選評分的做法去除最高分去除最低分再平均以防止讀入受到干擾的值.預(yù)防性措施:配置定期檢查與重新配置一般而言發(fā)生配置丟失,錯亂的事故多發(fā)地在于時鐘與IO的配置,因為這些地方的配置離外部電路的物理位置最近,最易受干擾.對這些配置采取定期檢查并且重新配置可以有效提高EMC性能.與CPU相互獨立,較少受CPU影響如果有低功耗模式,則看門狗要格外留意實施簡單但要精心放置看門狗初始化與喂狗操作快速從跑飛狀態(tài)跳出丟失了執(zhí)行的上下文注意讀取復(fù)位源快速從跑飛狀態(tài)跳出無注意精心設(shè)計相應(yīng)的Trap以使恢復(fù)更加徹底提

17、升了采樣的精度與抗干擾性要多采樣幾次且需要多余的運算注意選取有效值的技巧有效防范誤執(zhí)行相應(yīng)的指令對真正要使用此指令的情況有干擾提升了讀取的穩(wěn)定性要多讀取幾次還要判斷哪種是錯誤的需要軟件決策時間注意選擇決策的判據(jù)防止向量錯誤執(zhí)行無看上文的參考代碼防止重要配置丟失需要軟件工夫只需保護易于丟失的時鐘與IO配置,其他配置可以無需此種考慮表 技巧優(yōu)缺點一覽表預(yù)防性措施:冗余數(shù)據(jù)存儲與交換只要是存儲在片內(nèi)的數(shù)據(jù),那么一定會受到EMC的影響.常見的保護方法包括雙冗余互補存儲,ECC校驗.值的一題的是某些產(chǎn)品硬件上就支持某些冗余與校驗,比如Aurix產(chǎn)品的存儲器都有ECC校驗的硬件特性,可以利用起來.以上是預(yù)

18、防性措施,下面介紹自恢復(fù)技巧.在工程實踐中,非預(yù)料性復(fù)位,PC跑飛與寄生中斷是三種最為常見的EMC造成的結(jié)果.以下的技巧也針對此幾種結(jié)果而試圖自恢復(fù).值的注意的是,這幾種情況中,RAM內(nèi)容,Flash/EEPROM的內(nèi)容一般而言都是完整的(斷電了就另當別論),所以自恢復(fù)要將這特點給利用起來.自恢復(fù)技巧: RAM中保持程序運行的上下文狀態(tài)下圖是一個在RAM中保持當前執(zhí)行狀態(tài)的例子,要點是每次輸出狀態(tài)改了就在RAM中保持其狀態(tài),如果有PWM輸出之類的配置,也加以保持,這樣在發(fā)生看門狗或者其他的復(fù)位之后,程序可以讀取復(fù)位源+當前的執(zhí)行狀態(tài)自動恢復(fù)到跑飛之前的狀態(tài).自恢復(fù)技巧:把看門狗用精確一點大多數(shù)程序員使用看門狗的習慣就是:能喂狗的時候,喂到最飽,在喂狗點將看門狗的值恢復(fù)到最大可允許的數(shù)字以最大限度減少

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論