如何使用MISRA改進嵌入式程式設計

創提科技
2022/07/27

分享到

嵌入式程式設計主要用於驅動安裝在大型設備(如汽車、飛機或醫療設備)旨在執行特定的專用功能的系統。
 
每個專用功能都是通過嵌入式程式設計實現的。這些程式碼必須是可靠且無誤的,因為任何漏洞都可能對嵌入式系統的安全造成毀滅性的後果。因此,應用像MISRA這樣的編碼規範來確保程式碼的可靠性和高品質是非常必要的。
 
在這裡,我們將闡釋如何使用MISRA改進嵌入式程式設計。


本文將包含如下幾個部分:
 
     • 為什麼可靠的程式碼對嵌入式程式設計至關重要
 
     • 2種適用於嵌入式程式設計和系統的關鍵程式設計語言
 
     • 如何使用MISRA改進嵌入式程式設計
 
     • 如何使用MISRA實現嵌入式程式設計合規


為什麼可靠的程式碼對嵌入式程式設計至關重要
 
世界上最重要的系統都使用嵌入式軟體來實現功能。
 
嵌入式軟體用於:
 
    • 人們每天駕駛的汽車。
 
    • 維持生命的心臟監護器(和其他醫療設備)。
 
    • 環球飛行的飛機。
 
編碼錯誤不容妥協。
 
這就是嵌入式程式設計需要遵循指南的原因。這確保了程式碼是安全、可靠的。但是,這些指南可能會因所使用的程式設計語言而有所不同。


2種適用於嵌入式程式設計和系統的關鍵程式設計語言
 
大多數嵌入式系統是使用C和C++語言編寫程式的。
 
這是因為C和C++支援對硬體進行低級別控制。C和C++支援嵌入式軟體的複雜性。同時,使用C和C++語言可以生成高效的程式碼。
 
另外,從事C/C++研發的程式師人數眾多。他們能夠維護最佳的性能——這是嵌入式系統的關鍵。


如何使用MISRA改進嵌入式程式設計
 
許多嵌入式行業都有嚴格的安全合規標準。這些標準通常需要使用編碼規範。
 
嵌入式軟體有幾種可用於C和C++的不同的編碼規範。但MISRA®是最值得信賴的編碼規範之一。MISRA規則可以確保程式碼符合行業標準,幫助您減少圈複雜度,並提高程式碼的品質。
 
下面是不同行業的開發人員如何使用MISRA提高程式碼品質的三個示例。


1. 使用MISRA提供更好的嵌入式汽車程式碼
 
汽車開發人員信賴MISRA以開發出更好的程式碼。這是因為MISRA是汽車行業的品質與合規基準。
 
“MISRA被公認為事實上的基準,並已被日本整個汽車行業採用,橫跨從主機廠(OEM)到晶片的整個供應鏈。”— Socionext


ISO 26262合規
 
汽車行業需要遵循ISO 26262功能安全標準。
 
ISO 26262有嚴格的汽車安全完整性等級(Automotive Safety Integrity Levels, 簡稱ASIL)要求——包括四個級別,即 A-D。ISO 26262建議使用編碼規範來確保符合ASIL,並重點強調了MISRA編碼規範。
 
Protean Electric使用Helix QAC應用MISRA C規則。這有助於他們遵循ISO 26262。另外,Helix QAC還能發現其他工具忽略的問題。所以,Protean不必擔心漏報。


一致的程式碼品質
 
Delphi Automotive也使用Helix QAC應用MISRA C規則。這有助於開發人員採用最佳編碼實踐,確保所有開發人員的程式碼品質保持一致性——而不管個人的經驗如何。


2. 使用MISRA提供更好的嵌入式軌道交通程式碼
 
軌道交通系統開發人員也相信MISRA能提供更好的程式碼。
 
“MISRA顯然是最合適的選擇。MISRA最初由汽車行業創立,是創立時間最長、最著名的規則之一,而且已在多個安全相關市場得到了廣泛的採用。”— Viveris Technologies


EN 50128合規
 
軌道交通行業需要遵循EN 50128功能安全標準。
 
EN 50128軟體安全完整性等級(Software Safety Integrity Levels, 簡稱SSIL)包括五個級別,即SSIL0-SSIL4。若要符合所有的SSIL,建議使用編碼規範——但要符合SSIL3和SSIL4,則必須使用編碼規範。
 
編碼規範必須能夠:
 
    • 防止使用未定義或未指明的行為。
 
    • 防止程式師犯常見的錯誤。
 
    • 限制某些架構的使用。
 
    • 消除潛在的歧義。
 
    • 限制庫的使用。
 
MISRA能滿足這些需求,並説明確保軟體的品質。
 
Viveris Technologies使用Helix QAC應用MISRA規則並滿足EN 50128的合規要求。這確保了其無人駕駛列車——Lyon Metro——是安全、可靠的。


準確的診斷
 
對於Viveris來說,準確的程式碼診斷與合規一樣重要。
 
通過使用Helix QAC,Viveris獲得了比使用其他工具更好的MISRA C規則覆蓋率。真正的問題得以確定並修復了,誤報也更少了。
 
因此,Viveris的程式碼品質更好,開發效率更高。


3. 使用MISRA開發更好的嵌入式航空航太程式碼
 
航空航太開發人員也信賴MISRA以開發更好的程式碼。
 
MISRA規則集是由一批全球頂級編碼專家制定的,適用於(並廣泛應用於)任務關鍵型和安全關鍵型行業,包括航空航太。


DO-178C合規
 
航空航太行業需要遵循DO-178C功能安全標準。
 
DO-178C包括五個安全級別——A-E。符合這些安全級別需要遵循一定的編碼規範,比如MISRA。
 
Selex ES使用MISRA C++作為編碼規範,並使用Helix QAC來確保符合MSIRA。


品質—甚至在自動生成的程式碼中
 
Selex ES還使用Helix QAC和MISRA C、C++規則,以確保其嵌入式程式設計的品質。Selex ES甚至在自動生成的程式碼中使用Helix QAC和MISRA C、C++規則。這意味著他們可以確保嵌入式軟體的品質並加快開發的速度。


如何使用MISRA實現嵌入式程式設計合規
 
為了符合MISRA編碼規範,您需要應用MISRA規則。這可以在程式碼審查期間人工完成,也可以使用靜態程式碼分析工具自動完成。
 
然而,靜態程式碼分析工具卻不盡相同。對於MISRA,一些工具比其他工具更準確。而Helix QAC是適用於MISRA C和C++的最準確的靜態程式碼分析工具。
 
若您想深入瞭解適用於MISRA的Helix QAC,立刻註冊申請免費試用吧。