啟用產生 MISRA C 相容程式碼

您可以使用兩種支援 MISRA C 的解決方案:物件執行架構 (OXF) 及 MicroC-MXF 解決方案。

關於這項作業

對於 Rhapsody OXF 解決方案:
  • 如果您將 MISRA C 設定及 MISRA C 類型新增至 IBM® Rational® Rhapsody® 模型,則您可以產生 MISRA C 相容程式碼。
對於 Rhapsody MicroC-MXF 解決方案:
  • 您可以使用具有 IBM® Rational® Rhapsody®-C 模型的 MicroC-MXF,來產生 MISRA C 相容程式碼。

本文件說明關於具有 Rational Rhapsody 最新版本之 MicroC-MXFMISRA-98MISRA-2004 相符性現行評量。

程序

  1. 建立 MicroC 專案,並開發應用程式。MicroC 已併入關於 MISRA C 的各種類型及設定。
  2. 不應該新增 MISRA C 設定或 MisraTypes 套件。MicroC 已內建 MISRA 設定。

下一步

註: 必須避免下列建模建構,以產生 MISRA 相容程式碼:
對於 MicroC 及 MISRA C:
  • 與無限制對應關係的關係,例如 "*"。
  • 使用動態記憶體配置,以及在執行時期期間實例化。
僅限 MicroC:
  • 使用下列內容的 RiCString、RiCMap、RiCStack、RiCCollection、RiCMemoryManager 及 MemAlloc:
    • CG::Framework::RiCStack = "Exclude"
    • CG::Framework::RiCMap = "Exclude"
    • CG::Framework::RiCList = "Exclude"
    • CG::Framework::RiCCollection = "Exclude"
  • 使用 Rapid-Ports(其使用內容 CG::Framework::RapidPorts = "NO_RAPID_PORTS")。
  • 使用 "IS_IN" 及 "IS_COMPLETED" 狀態運算子,其使用以下內容:
    • CG::Framework::RiCReactiveStateMacros = "Exclude"
    • CG::Framework::RiCReactiveGenMacros = "Exclude"
  • 透過 GUI 運算子而不是透過寫在程式中方式使用 "RiCGen"。
  • 使用內容 C_CG:Class::InlineActiveBaseDoExecute = "True" 列入 RiCTaskEM_doExecute()。
  • 並非完全相容的 mxf 建構:
    • RiCString:存在與 RiCString(.c, h) 相關聯的 MISRA 違規,很可能是由於標準程式庫不相符。
    • RiCMap:存在與 RiCMap(.c, h) 相關聯的一些 MISRA 違規,很可能是因為使用對映排序演算法。
    • RiCStack、RiCCollection、RiCHeap 和 RiCQueue:存在與那些模組 (.c, h) 相關聯的 MISRA 違規。

回饋