針對狀態圖產生最佳化由上而下的程式碼

對於使用 C 語言在 Rational Rhapsody 中透過 MicroC 設定檔建立的專案,您可以使用一種特性,以更有效率地針對目標微控制器產生狀態圖程式碼。 在此實作中,產生的狀態圖程式碼會使用可最佳處理轉移的由上而下演算法。就 RAM、ROM 耗用及程式碼大小而言,會取得效率。

針對狀態圖產生最佳化由上而下程式碼的功能會透過 C_CG::Configuration::StatechartImplementation 內容啟動,該內容必須設為 OptimizedTopDown。啟動此功能之後,請使用 C_CG::OptimizedTopDownStatechart meta 類別中的內容來控制針對狀態圖產生之由上而下程式碼的最佳化。

最佳化

最佳化的由上而下狀態圖功能包含擴充程式碼文件以及透過內容控制的各種程式碼最佳化。這些最佳化會透過 C_CG::OptimizedTopDownStatechart::AllowCodeOptimization 內容啟用,該內容必須設為 Checked

對於程式碼文件,請使用 C_CG::OptimizedTopDownStatechart::AddCodeDocumentation 內容,這樣可讓最佳化的由上而下狀態圖包括狀態圖實作函數、狀態轉移及狀態中靜態回應的註解。

對於程式碼最佳化,請使用 C_CG::OptimizedTopDownStatechart meta 類別中的下列內容:
  • ClutchEntranceToStateHierarchy - 設為 Checked 可容許對最佳化的由上而下狀態圖程式碼進行最佳化,以在可能時輸入狀態階層中的最內層狀態。
  • EmptyOverlappingTestsForStateHierarchy - 設為 Checked 可容許對最佳化的由上而下狀態圖程式碼進行最佳化,以在存在狀態階層的情況下跳過重疊的比較,以便在未輸入周圍狀態時,控制項無法處於內部狀態。
  • InlineEnteringExitingReactions - 設為 Checked 可容許對最佳化的由上而下狀態圖程式碼進行最佳化,以嘗試列入輸入的及現有的狀態回應,以便避免產生輸入的及現有的回應函數。
  • InlineMaxTranstionsCriteria - 設為數字可容許按如下方式對最佳化的由上而下狀態圖程式碼進行最佳化:在狀態圖程式碼的結尾,有一個用來測試是否在現行步驟中進行轉移的區段。測試是否需要另一個步驟將會使用儲存所輸入狀態之相關資訊的狀態變數。選取此選項時,會將標示需要另一個步驟的程式碼放在轉移程式碼的行內,進而不再需要狀態變數。選取時,使用者可以輸入要容許的轉移數上限。如果實際轉移數大於此數目,則不會執行最佳化。
  • InlineRootStateDefaultTransitionTest - 設為 Checked 可容許對最佳化的由上而下狀態圖程式碼進行最佳化,以將對預設轉移的測試列入其他轉移的測試中。
  • MergeStateSequenceWithNoGuard - 設為 Checked 可容許對最佳化的由上而下狀態圖程式碼進行最佳化,以在可能的情況下將轉移時沒有保護的狀態順序合併到一個狀態中。

意見回饋