MISRA-C再次進化!如果您正使用 C 語言開發安全關鍵型系統,那您可能知道 MISRA-C:2012,但是,您可能也需要了解MISRA-C:2023。

它帶來了一些重要的改變。

MISRA-C 是一套全球公認的編碼指南,旨在使 C 程式碼更安全、更可靠且更易於維護。這些指南源自 MISRA-C:1998,不斷發展以滿足現代發展的需求。那麼為什麼這種情況會不斷演變呢?

簡單的答案是,C也在不斷發展!隨著程式設計環境的變化,MISRA-C 指南進行了調整,以涵蓋C語言的新標準。2012年時,主要標準是C90和C99,其分別於1990年和1999年制定。此後,C11(2011)和C18(2018)等新標準出現,提供了多執行緒和泛型表達式等強大功能。這些新增內容(尤其是 C11 中的新增內容)為編寫安全可靠的程式碼帶來了新的挑戰,在處理並發和共享資料時尤其如此。

MISRA-C:2012 不再能夠完全包含這些新標準的最新功能。MISRA-C:2023 出現,將範圍縮小到四個 C 語言版本:C90、C99、C11 和 C18。與 C11 相比,C18 提供了最小的功能更改,但這些更新對於確保指令跟上不斷發展的語言及其功能甚為重要。

MISRA-C:2023 的主要功能之一是支援新語言語法和隨附規則。例如,考慮 C11 中引入的原子類型,這對於安全多執行緒應用程式至關重要。這些規則可協助您安全地管理多個執行緒之間的共用變數。然而,如果濫用它們也會帶來潛在風險,因此 MISRA-C:2023 包括以下更新規則:

規則 12.6 原子物件的結構和聯合成員不得直接存取

以下範例展示了 C11 中引入的原子類型修飾符的使用。然而,這並不符合前面提到的規則。

如果您的開發涉及多執行緒或多核心系統,則必須當心。隨著業界接受這種程式設計範式,利用 C11 和 C18 提供的新語法將變得至關重要。這些能力非常強大,但當然也伴隨著責任。如果您不遵循最新的 MISRA 指南,您就有可能在程式碼中引入細微的錯誤或未定義的行為。

當然,了解規則只是成功的一半。確保您的程式碼遵守規則也同樣重要。靜態分析工具非常寶貴,可以幫助您在違規行為造成代價高昂的錯誤之前發現它們。作為嵌入式開發領域的領導者,IAR 很快就採用了 MISRA-C:2023。 IAR Embedded Workbench 的 IAR C-STAT 插件在版本 9.60.2 中引入。 

有了它,您現在可以根據最新指南驗證您的程式碼,以確保您的專案合規。

<新增了 C-STAT 工具(與 MISRA-C:2023 相關)>

MISRA-C:2023代表在安全關鍵領域工作的C程式設計者邁出重要一步。

更新後的指南涵蓋了 C 語言的最新功能,可協助您編寫不僅實用,而且安全、穩定且因應未來的程式碼。如果您已經在使用 MISRA-C:2012,現在便是升級並利用嵌入式專案最新標準的最佳時機。

採用新的指南和工具(例如 IAR 的 C-STAT)可以幫助您因應下一代嵌入式開發挑戰。

有關 C-STAT 的更多資訊請參閱https://www.iar.com/products/c-stat/

作者:Hiroki Akaboshi / FAE / IAR SYSTEMS JAPAN

本文由IAR提供