您可以使用兩種支援 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-MXF 的 MISRA-98 及 MISRA-2004 相符性現行評量。
程序
- 建立 MicroC 專案,並開發應用程式。MicroC 已併入關於
MISRA C 的各種類型及設定。
- 不應該新增 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 違規。