很久以前,汽車工程師從機械化控制轉向軟件組件和編碼,并發展到C語言。C編程語言本身非常流行,以至于整個Linux都是用C編寫的。然而,C語言的標準是不完整的,并且有很多未定義/未指定的行為,其中標準導致高度的不確定性。使用 C 語言的關鍵問題是,開發人員需要編寫代碼的地方沒有運行時錯誤檢查。
MISRA C作為嵌入式系統可靠指南的演變
C編程語言的靈活性伴隨著未定義和不確定行為的權衡,如果軟件失敗,這些行為可能無法以可預測的方式運行。為了確保關鍵嵌入式系統中的軟件安全性和可靠性,汽車行業軟件可靠性協會(MISRA)創建了一套正式的軟件開發指南,用于C語言的可預測子集,并開發安全可靠的嵌入式應用程序。下面描述了MISRA C從1998年到2020年的演變。
如今,MISRA C 在許多嵌入式行業中被廣泛接受并被稱為事實上的標準,例如航空航天、電信、汽車、醫療設備、國防、鐵路、互聯消費電子產品、過程控制、核電等等。
大型汽車公司采用MISRA C
汽車行業的一些傳奇人物,如日產汽車有限公司、菲亞特汽車有限公司、豐田汽車公司、通用汽車公司、福特汽車公司等,在不同的基于車輛軟件的系統中都面臨著軟件故障問題。事實上,大多數車輛系統,如自動緊急制動系統、加速系統、發動機開/關等,都由軟件解決方案監控和控制。因此,當軟件未能按照設計進行監視或控制時,關鍵車輛系統將立即停止工作,這可能導致錯誤事故。
NHTSA(美國國家公路交通安全管理局)針對汽車故障事件的關鍵措施
在這種情況下,NHTSA可能會要求汽車公司召回他們的車輛,并解決與召回相關的巨額成本和汽車公司聲譽堆棧可能帶來的問題。
然而,在過去,由于由一家著名汽車公司設計的某些汽車中的自動緊急制動 (AEB) 系統的軟件故障,NHTSA 被報告了大約 14 起撞車事故和 5 起受傷事故。AEB系統使用攝像頭或雷達掃描前方道路,如果檢測到與其他物體發生碰撞,則自動制動。AEB系統中的軟件故障可能會將情況讀取為緊急情況,并觸發AEB系統自動制動,從而導致車輛突然停止并防止意外車禍。
根據規章制度,汽車制造商對機動車輛的安全負責。他們還對由于汽車車輛中的軟件故障而導致的乘員車輛的任何碰撞或傷害負責。汽車行業軟件可靠性協會(MISRA)積極致力于解決由于使用C語言設計的軟件故障而發生的碰撞或傷害的挑戰。MISRA致力于處理C語言的未定義和未指定行為,并為開發人員提出了MISRA C指南,以設計和開發最安全可靠的汽車行業軟件。
由于在汽車軟件開發
中疏忽MISRA C指南,可能會出現挑戰
汽車網絡安全問題:NHTSA報告了其中一個事實,即兩名黑客能夠入侵由大型汽車制造商之一設計的汽車系統。這些黑客能夠禁用汽車的制動器并控制方向盤。這是發生在汽車行業的一個令人大開眼界的事件,汽車制造商需要積極主動地設計最安全的嵌入式軟件,并為買家提供更多的安全性和信心。
電子油門控制系統的意外加速:電子油門控制系統(ETCS)具有巡航控制功能,該功能旨在學習駕駛員在用戶駕駛車輛時使用油門踏板的行為,并通過使用執行器產生相同的加速度來復制相同的行為,這有助于保持車輛的速度,并確保舒適性和放松感,即使是長時間的放松駕駛。NHTSA報告了ETCS軟件故障,該故障會產生意外加速,只有當駕駛員將腳完全從制動踏板上移開時才能避免該軟件
被發現出現故障,因為違反了MISRA C規則之一,導致其中一個遞歸例程中的堆棧溢出并最終導致數據損壞, 因此,該軟件根據自動加速做出決定
碰撞期間安全氣囊展開故障:安全氣囊展開系統是汽車行業最重要的乘員安全系統之一。NHTSA報告了其中一家汽車巨頭制造的車輛的此類案例,其中安全氣囊系統的軟件無法在特定駕駛條件下檢測到碰撞狀況,并且未能展開安全氣囊并導致乘員的生命在堆棧上
點火開/關系統中的軟件故障:這種情況過去也發生過,汽車軟件出現故障,即使他們取下鑰匙,也不允許汽車的乘員關閉發動機。
汽車行業需求的增加給制造商和開發人員帶來了確保軟件質量(包括用戶安全)的挑戰。這可以實現,或者可以使用MISRA C的定義準則在更大程度上最小化概率。
審核編輯:郭婷
-
嵌入式
+關注
關注
5087文章
19158瀏覽量
306441 -
編程語言
+關注
關注
10文章
1949瀏覽量
34850
發布評論請先 登錄
相關推薦
評論