【導(dǎo)讀】采用ARM處理器是越來(lái)越多的程序設(shè)計(jì)人員設(shè)計(jì)時(shí)需要的!范圍也遍及醫(yī)療、運(yùn)輸、航空電子與工業(yè)領(lǐng)域。這也使得處理器所執(zhí)行的軟件也受到更為嚴(yán)格的檢查,為什么呢?因?yàn)樾″e(cuò)誤就可能造就很?chē)?yán)重的后果!那么該怎么好好的利用呢?
越來(lái)越多程序設(shè)計(jì)人員在設(shè)計(jì)安全相關(guān)應(yīng)用程序時(shí)采用ARM處理器,范圍遍及醫(yī)療、運(yùn)輸、航空電子與工業(yè)領(lǐng)域。因此,透過(guò)這些處理器所執(zhí)行的軟件也受到更為嚴(yán)格的檢查,因?yàn)槿魏我粋€(gè)小錯(cuò)誤都有可能導(dǎo)致嚴(yán)重后果。
為了避免導(dǎo)致這樣的后果,包括IEC 61508,還有最近才通過(guò)的汽車(chē)業(yè)ISO 26262等安全標(biāo)準(zhǔn)應(yīng)運(yùn)而生,以確保開(kāi)發(fā)人員與客戶在軟件方面能符合業(yè)界最先進(jìn)的最佳實(shí)務(wù)準(zhǔn)則。
即便如此,要決定標(biāo)準(zhǔn)當(dāng)中有哪些元素適用,哪些不適用,接下來(lái)還要確保整體設(shè)計(jì)符合標(biāo)準(zhǔn),整個(gè)過(guò)程非常耗時(shí)以致于令人卻步。由于消費(fèi)類(lèi)器件的設(shè)計(jì)周期極短且逐漸與汽車(chē)安全系統(tǒng)整合,開(kāi)發(fā)人員也因此面臨更大的時(shí)間壓力,必須在日益緊迫的設(shè)計(jì)周期期限前完成設(shè)計(jì)改動(dòng)。
所幸針對(duì)軟件開(kāi)發(fā)工具與相關(guān)作業(yè),軟件系列工具廠商具備一般軟件開(kāi)發(fā)人員所沒(méi)有的信息與知識(shí),因此在市場(chǎng)中具有獨(dú)特定位,能為所有安全相關(guān)軟件開(kāi)發(fā)人員提供支持。
對(duì)編譯器來(lái)說(shuō)更是如此,因?yàn)榫幾g器能直接影響系統(tǒng)安全性,而且其有可能產(chǎn)生的注入錯(cuò)誤,后續(xù)功能設(shè)計(jì)測(cè)試卻無(wú)法檢測(cè)。因此,系列軟件工具組很適合那些使用基于ARM核心處理器的開(kāi)發(fā)人員,能使開(kāi)發(fā)人員確保系統(tǒng)符合法規(guī)規(guī)范,并同時(shí)應(yīng)付日益增加的產(chǎn)品上市時(shí)間的壓力。
ARM 處理器逐漸拓展應(yīng)用
伴隨移動(dòng)的風(fēng)潮,加上持續(xù)擴(kuò)展的生態(tài)系統(tǒng)提供支持,基于ARM核心處理器的應(yīng)用已從智能手機(jī)與嵌入式等器件,拓展到基礎(chǔ)架構(gòu)設(shè)備及數(shù)據(jù)服務(wù)器?,F(xiàn)在,設(shè)計(jì)人員也逐漸開(kāi)始將它們導(dǎo)入安全相關(guān)的應(yīng)用。
這類(lèi)應(yīng)用涵蓋了工業(yè)(馬達(dá)控制、工廠自動(dòng)化、遠(yuǎn)距監(jiān)控);汽車(chē)(底盤(pán)控制、車(chē)身與安全、儀表板、智能傳感器、引擎控制、防抱死剎車(chē));醫(yī)療(注入泵、起搏器、病患監(jiān)控);鐵路(信號(hào)與通訊控制);核能(控制面板、馬達(dá)控制、系統(tǒng)監(jiān)控)與航空電子等領(lǐng)域。
圖 1 : ARM處理器橫跨消費(fèi)類(lèi)與數(shù)據(jù)服務(wù)器應(yīng)用領(lǐng)域,打入汽車(chē)電子、工業(yè)電子等各種產(chǎn)業(yè),然而在這些領(lǐng)域當(dāng)中,IEC 61508、ISO 26262等標(biāo)準(zhǔn)所規(guī)范的功能性安全需求,為微控制器軟件開(kāi)發(fā)社群帶來(lái)了新的壓力。
整體而言,系統(tǒng)對(duì)智能功能的需求增加,帶動(dòng)了ARM處理器為市場(chǎng)所廣泛采用,但這也要求業(yè)者必須具備整合能力與彈性以降低成本,提供更多功能,并隨時(shí)更新系統(tǒng)。與此同時(shí),許多采用硬編碼邏輯來(lái)提供各種功能的設(shè)計(jì),現(xiàn)在都逐漸整合到由軟件所控制的32位微控制器,從而又產(chǎn)生出新的問(wèn)題。
設(shè)計(jì)重心逐漸移轉(zhuǎn)至微控制器與程序編碼功能,也同時(shí)將安全問(wèn)題推向軟件領(lǐng)域,讓安全應(yīng)用程序符合IEC 61508標(biāo)準(zhǔn)的責(zé)任,也因此落在軟件開(kāi)發(fā)人員的肩上。這套標(biāo)準(zhǔn)原本規(guī)范的是電氣與/或電子系統(tǒng)的功能安全性,現(xiàn)在則同時(shí)涵蓋安全系統(tǒng)的電子組件。
圖 2 : IEC 61508及相關(guān)產(chǎn)業(yè)專(zhuān)用標(biāo)準(zhǔn),能協(xié)助安全相關(guān)的電氣、電子與可編程系統(tǒng)符合最新要求。
功能性安全能讓安全相關(guān)系統(tǒng)針對(duì)輸入做出正確響應(yīng),進(jìn)而避免不必要的直接或間接風(fēng)險(xiǎn)以及損傷。
由于IEC 61508標(biāo)準(zhǔn)用語(yǔ)模糊,因此衍生出各種產(chǎn)業(yè)專(zhuān)用的標(biāo)準(zhǔn),例如專(zhuān)供鐵路運(yùn)輸使用的EN50126/8/9、醫(yī)療器件專(zhuān)用的IEC 60601、核能專(zhuān)用的IEC 60880,還有陸上交通工具專(zhuān)用的ISO 26262。 ISO 26262適用于3,500公斤以下量產(chǎn)客用車(chē)的安全相關(guān)系統(tǒng),但不包括殘障專(zhuān)用等特殊用途車(chē)輛。
一般汽車(chē)?yán)锏奈⒖刂破魍噙_(dá)150個(gè),而隨著消費(fèi)者導(dǎo)向的導(dǎo)航系統(tǒng)被整合到駕駛輔助、運(yùn)動(dòng)檢測(cè)系統(tǒng)、推進(jìn)、車(chē)載動(dòng)態(tài)控制與主動(dòng)/被動(dòng)安全系統(tǒng)時(shí),汽車(chē)逐漸成為運(yùn)算裝置涉足安全系統(tǒng)的一個(gè)研究案例。
[page]
安全系統(tǒng)開(kāi)發(fā)人員所面臨的壓力與日俱增,汽車(chē)也成為典型案例。相較于過(guò)去動(dòng)輒長(zhǎng)達(dá)3到10年的產(chǎn)品生命周期,現(xiàn)在還得配合消費(fèi)類(lèi)裝置(12到18個(gè)月)的設(shè)計(jì)周期。
汽車(chē)?yán)锏?50個(gè)微控制器都仰賴(lài)軟件程序運(yùn)轉(zhuǎn),有時(shí)甚至像編譯器這樣的基本組件也會(huì)造成系統(tǒng)故障,只因注入了不容易發(fā)現(xiàn)的錯(cuò)誤,并在功能測(cè)試階段有可能無(wú)法檢測(cè)。
這會(huì)對(duì)系統(tǒng)持續(xù)造成風(fēng)險(xiǎn),但只要符合IEC 61508標(biāo)準(zhǔn),再加上ISO 26262,就能將風(fēng)險(xiǎn)降至可以容忍的程度。舉例來(lái)說(shuō),IEC 61508最佳實(shí)務(wù)準(zhǔn)則建議一開(kāi)始就要使用可以信賴(lài)的工具。
一般普遍認(rèn)為編譯器是T3分類(lèi)的離線支持工具,表示編譯器會(huì)直接或間接影響安全系統(tǒng)的可執(zhí)行代碼,因此選擇編譯器“是有其正當(dāng)性的”。[IEC 61508-3 Section 7.4.4.3]
我們可以藉由通過(guò)驗(yàn)證且正在使用的實(shí)證,來(lái)展現(xiàn)工具的成熟度與穩(wěn)定性,再加上來(lái)自業(yè)界專(zhuān)家的第三方評(píng)估以及廠商擔(dān)保,藉此證明選擇的正當(dāng)性。
最佳實(shí)務(wù)準(zhǔn)則還能加以延伸,用來(lái)驗(yàn)證輸出以及語(yǔ)言子集的使用,像是MISRA C/C++。測(cè)試目標(biāo)所使用的軟件自然重要,但要如何得知已經(jīng)測(cè)試了每種可能發(fā)生的狀況?畢竟沒(méi)有執(zhí)行的程序代碼就無(wú)法測(cè)試。這時(shí)就要利用代碼覆蓋率分析,來(lái)辨識(shí)尚未執(zhí)行的程序代碼,進(jìn)而確保整個(gè)應(yīng)用程序均已測(cè)試完畢。分析代碼覆蓋率可利用源代碼插裝或跟蹤數(shù)據(jù),因?yàn)榇鞲櫟挠绊懗潭茸钚 ?/div>
至于語(yǔ)言子集,在許多案例當(dāng)中,高階程序設(shè)計(jì)語(yǔ)言的定義不完整或模糊不清,造成不同編譯器的行為也有所不同。
“嚴(yán)格模式”,還有MISRA C/C++之類(lèi)的語(yǔ)言子集,就是為了消除這些模棱兩可的狀況所設(shè)計(jì),同時(shí)還能:確保使用的語(yǔ)言與標(biāo)準(zhǔn)語(yǔ)言一致;替未定義的行為設(shè)定規(guī)則;移除免工具使用選項(xiàng);強(qiáng)制統(tǒng)一編碼式樣(例如:/*...*/ versus //);改善可讀性;并縮小整體所需測(cè)試范圍。
ISO 26262比IEC 61508更進(jìn)一步,提供的架構(gòu)更講究細(xì)節(jié),在這樣的架構(gòu)下可考慮采用以其它技術(shù)為基礎(chǔ)所開(kāi)發(fā)的安全系統(tǒng)。涵蓋范圍從產(chǎn)品周期管理到供貨商關(guān)系,但對(duì)于軟件開(kāi)發(fā)人員來(lái)說(shuō),它提供了一種專(zhuān)為汽車(chē)設(shè)計(jì)、以風(fēng)險(xiǎn)為基礎(chǔ)的方法來(lái)評(píng)判完整性,而這套方法就稱(chēng)為汽車(chē)安全完整性等級(jí)(Automotive Safety Integrity Levels; ASILs)。
使用ASILs明確定義ISO 26262的適用要求,以避免不合理的剩余風(fēng)險(xiǎn),同時(shí)提供驗(yàn)證需求與確認(rèn)措施,以確保達(dá)到足夠且可接受的安全程度。
建議:遵守默認(rèn)標(biāo)準(zhǔn)
好消息是,在ISO 26262公布后才開(kāi)始的設(shè)計(jì),并不一定要遵循其設(shè)計(jì)指南,才能成就“最先進(jìn)”的設(shè)計(jì)準(zhǔn)則并取得法律保護(hù)。不過(guò)聰明的業(yè)者會(huì)強(qiáng)制遵循其廣泛的標(biāo)準(zhǔn),因?yàn)閭鹘y(tǒng)上說(shuō)這確實(shí)是一種好的做法也能確保一致性,同時(shí)還能降低成本,因?yàn)槟壳安话ㄔ跇?biāo)準(zhǔn)里的要求,很可能明天就會(huì)被列入,所以最好從一開(kāi)始就加以制度化。
但要同時(shí)符合IEC 61508與ISO 26262,每個(gè)步驟都必須準(zhǔn)備說(shuō)明文件,從離線工具使用的合理性,一直到工具行為、手冊(cè)、危險(xiǎn)分析、編譯器缺失報(bào)告、歷史版本、測(cè)試報(bào)告,還有實(shí)際及預(yù)期結(jié)果的差異報(bào)告,都只是其中少數(shù)幾個(gè)項(xiàng)目。
這樣的說(shuō)明文件需要投入極大心力,花費(fèi)時(shí)間且成本昂貴,這時(shí)軟件系列工具供貨商就能派上用場(chǎng)。他們是工具的專(zhuān)家。舉例來(lái)說(shuō),他們熟知編譯器如何運(yùn)作、如何利用安全應(yīng)用程序,也了解如何利用它來(lái)取得既定輸出并利于安全相關(guān)開(kāi)發(fā)。
ARM Compiler系列軟件工具就是一個(gè)很好的使用案例,它最近取得了德國(guó)安全技術(shù)檢驗(yàn)機(jī)構(gòu)TüV SüD的認(rèn)證。取得該認(rèn)證后客戶便能將ARM Compiler建立工具應(yīng)用在安全相關(guān)開(kāi)發(fā),最高可達(dá)安全完整性等級(jí)第三級(jí)(SIL3, IEC 61508)以及汽車(chē)SILD(ASILD, ISO 26262),而無(wú)須進(jìn)行其他合格驗(yàn)證。還有ARM Compiler 規(guī)范套件可擴(kuò)充TüV SüD驗(yàn)證功能,其中包括安全手冊(cè)、缺失報(bào)告、測(cè)試報(bào)告與開(kāi)發(fā)程序報(bào)告做為支持?jǐn)?shù)據(jù)。
圖 3 : 對(duì)于生產(chǎn)汽車(chē)應(yīng)用程序可編程系統(tǒng)的業(yè)者來(lái)說(shuō),要符合IEC 61508與ISO 26262軟件功能安全要求,就必須提供大量說(shuō)明文件與報(bào)告。
這樣的第三方認(rèn)證與支持廠商保證,能即時(shí)節(jié)省人員工時(shí)、投入心力與相關(guān)成本,同時(shí)還能讓產(chǎn)品或設(shè)計(jì)更快上市,甚至可以保證應(yīng)用程序設(shè)計(jì)還會(huì)繼續(xù)被市場(chǎng)所采用,因?yàn)樵诳焖僭O(shè)計(jì)周期的時(shí)代,時(shí)間就是一切。