Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

Embedded Coder ディクショナリ

モデル データおよび関数のコード生成を制御するためのコード定義を作成します。

説明

Embedded Coder ディクショナリは、カスタム コード定義を作成するためのグラフィカル インターフェイスです。ディクショナリ構成のコード定義のセットは、生成されたアプリケーション コードとプラットフォームの相互作用を定義するため、"アプリケーション プラットフォーム定義" と呼ばれます。プラットフォーム定義をモデルに適用することで、特定のソフトウェア アーキテクチャに既定で準拠するコードを生成できます。たとえば、独自のストレージ クラスを作成して、そのクラスをルートレベルの入力などのモデル データのカテゴリ、またはパラメーターなどの個々のデータ要素に既定で適用できます。

次のタイプのコード定義を作成できます。

  • ストレージ クラス。モデル データ用に生成されたコードを制御します。

  • 関数カスタマイズ テンプレート。model_step などのモデルのエントリポイント関数の命名を制御します。テンプレートでは、メモリ セクションもエントリポイント関数に適用します。

  • メモリ セクション。メモリにおけるデータおよび関数の配置を制御します。生成コードには、プラグマなどの、指定した構文をもつカスタムの装飾が含まれます。

コード生成定義の作成に関する一般的な詳細については、Define Service Interfaces, Storage Classes, Memory Sections, and Function Templates for Software Architectureを参照してください。

Embedded Coder® ディクショナリには、コード定義の各タイプのペインがあります。右側のペインを使用して各定義のプロパティを設定します。プロパティを構成したときに結果を確認するには、疑似コードのプレビューを使用します。

コード マッピング エディターを使用して、ディクショナリで作成した定義をモデル要素に適用できます (Configure Default C Code Generation for Categories of Data Elements and Functionsを参照)。コード マッピング エディター外で使用できるストレージ クラスとメモリ セクションを作成するには、カスタム ストレージ クラス デザイナーを使用します (Create Code Definitions for External Data Objectsを参照)。

Embedded Coder ディクショナリ を開く

  • Embedded Coder ディクショナリを開くには、モデル ウィンドウの [C コード] タブで [コード インターフェイス][Embedded Coder ディクショナリ] を選択します。

    [Embedded Coder ディクショナリ] ウィンドウには、モデル ファイルに保存されているコード生成定義が表示されます。モデルがデータ ディクショナリにリンクされている場合は、そのデータ ディクショナリ、または参照ディクショナリ (該当する場合) に保存されている定義もウィンドウに表示されます。[ソース] 列には、各定義の保存場所が示されます。

  • Simulink® データ ディクショナリで Embedded Coder ディクショナリを開くには、モデル エクスプローラーの [モデルの階層構造] ペインで、次の操作を行います。

    1. ディクショナリ ノードの下で、[Embedded Coder] ノードを選択します。

      ノードが表示されない場合は、ディクショナリ ノードを右クリックして [空のセクションを表示] を選択します。

    2. [ダイアログ] ペイン (右側のペイン) で、[Embedded Coder ディクショナリを開く] をクリックします。

ストレージ クラスの作成および検証

モデルで、ブロックの状態を含む内部モデル データを、制御できる特性をもつ構造体に集約するストレージ クラスを作成します。その後に、モデルからコードを生成してストレージ クラスを検証します。

  1. モデル例 rtwdemo_roll を開きます。

    rtwdemo_roll

  2. モデルが Embedded Coder アプリで開かない場合は、アプリを開いて、[C コード] タブをクリックします。

  3. [C コード] タブで [コード インターフェイス][Embedded Coder ディクショナリ] を選択します。[Embedded Coder ディクショナリ] ウィンドウには、モデル ファイルに保存されているコード生成定義が表示されます。

  4. 左側のペインで、[ストレージ クラス] をクリックします。[ストレージ クラス] セクションで、[作成] をクリックします。

  5. リストの末尾に表示されている新しいストレージ クラス StorageClass1 を選択します。右側のペインで、次の表にリストされているプロパティ値を設定します。

    プロパティ
    名前InternalStruct
    ヘッダー ファイルinternalData_$R.h
    定義ファイルinternalData_$R.c
    ストレージ タイプStructured
    [構造体のプロパティ][タイプ名]internalData_T_$M
    [構造体のプロパティ][インスタンス名]internalData_$M

    変更後、下部のペインで、疑似コードのプレビューに想定どおりの内容が反映されているか確認します。

  6. モデル エディターに戻ります。インターフェイス エディターを開くには、キャンバスの下で、[コード マッピング] をダブルクリックします。[データの既定の設定] タブで、[信号] セクションを展開します。[Signals, states, and internal data] 行を選択し、[ストレージ クラス][InternalStruct] に設定します。

  7. [コンフィギュレーション パラメーター] ダイアログ ボックスの [コード生成][コード配置] ペインで、[ファイル パッケージ化形式][モジュラー] に設定します。

  8. コードを生成します。

  9. Simulink エディターのコード ビューで、internalData_rtwdemo_roll.h ファイルを開いて検証します。このファイルでは、構造体型 internalData_T_ を定義しています。そのフィールドはモデル内のブロックの状態を表します。

    /* Storage class 'InternalStruct', for system '<Root>' */
    typedef struct {
      real32_T FixPtUnitDelay1_DSTATE;     /* '<S7>/FixPt Unit Delay1' */
      real32_T Integrator_DSTATE;          /* '<S1>/Integrator' */
      int8_T Integrator_PrevResetState;    /* '<S1>/Integrator' */
    } internalData_T_;

    また、このファイルでは internalData_ という名前のグローバル構造体変数も宣言しています。

    /* Storage class 'InternalStruct' */
    extern internalData_T_ internalData_;

  10. ファイル internalData_rtwdemo_roll.c を開いて検証します。このファイルでは、internalData_ にメモリを割り当てています。

    /* Storage class 'InternalStruct' */
    internalData_T_ internalData_;

関数カスタマイズ テンプレートの作成

関数テンプレートを使用して、生成されたエントリポイント関数の名前を制御する規則を指定できます。この手法を使うと、エクスポート関数モデルやマルチレートでマルチタスクのモデルなど、多くのエントリポイント関数があるモデルで時間を節約し、保守作業を削減できます。

この例は、命名規則 func_$N_$R を指定する関数テンプレートを作成する方法を示しています。$N は生成される各関数のベース名で、$R は Simulink モデルの名前です。

  1. モデル例 rtwdemo_mrmtbb を開きます。

  2. ブロック線図を更新します。このマルチタスク モデルには 2 つの実行レートがあるため、生成されるコードには対応する 2 つのエントリポイント関数が含まれます。

  3. モデルで、モデル コンフィギュレーション パラメーター [システム ターゲット ファイル]ert.tlc に設定します。関数カスタマイズ テンプレートを使用するには、ERT ベースのシステム ターゲット ファイルを使用する必要があります。

  4. Simulink エディターで、Embedded Coder アプリを開いて、Embedded Coder ディクショナリを開きます。

  5. Embedded Coder ディクショナリの [関数カスタマイズ テンプレート] タブで [作成] をクリックします。

  6. 新しい関数テンプレートに対して、次のプロパティを設定します。

    • [名前]myFunctions にします。

    • [関数名]func_$N_$R にします。

    変更後、疑似コードのプレビューに想定どおりの内容が反映されているか確認します。

  7. モデル ウィンドウで、コード マッピング エディターを開きます。[関数の既定の設定] タブの [初期化/終了] 行と [実行] 行で、[関数カスタマイズ テンプレート][myFunctions] に設定します。

  8. コードを生成します。

  9. コード ビューで、rtwdemo_mrmtbb.c ファイルを開いて検証します。このファイルでは、2 つの実行関数 func_step0_rtwdemo_mrmtbbfunc_step1_rtwdemo_mrmtbb を定義しています。その名前は、関数テンプレートで指定した規則に準拠しています。

メモリ セクションの作成方法を示す例については、Control Data and Function Placement in Memory by Inserting Pragmasを参照してください。

静的および動的に初期化されたデータで使用するストレージ クラスの作成

この例では、名前がモデル名に依存しているファイルにグローバル変数の定義と宣言を保存するストレージ クラスを作成する方法を示します。ストレージ クラスのコピーを 2 つ作成して、1 つのコピーをパラメーター データ (データ カテゴリ [モデル パラメーター]) で使用し、もう 1 つのコピーを他のデータで使用できるようにします。

通常、生成されたコードは、パラメーター データを関数外で静的に初期化し、他のデータをモデル初期化関数で動的に初期化します。カスタム ストレージ クラス デザイナーまたは Embedded Coder ディクショナリを使用してストレージ クラスを作成する場合は、[データの初期化] プロパティを設定して初期化メカニズムを指定します。

Embedded Coder ディクショナリでは、ストレージ クラスごとに、[静的] または [動的] の初期化を選択しなければなりません。ストレージ クラスはパラメーター データ用 ([静的]) と他のデータ用 ([動的]) に 1 つずつコピーを作成することを検討してください。

ストレージ クラスの作成
  1. モデル例 rtwdemo_roll を開きます。

  2. [C コード] タブが開いていない場合は、Embedded Coder アプリを開いて、[C コード] タブをクリックします。

  3. [コード インターフェイス][Embedded Coder ディクショナリ]を選択します。

  4. 左側のペインで、[ストレージ クラス] をクリックします。[ストレージ クラス] セクションで、[作成] をクリックします。

  5. 新しいストレージ クラスの場合は、次のプロパティを設定します。

    • [名前]SigsStates にします。

    • [ヘッダー ファイル]$R_my_data.h にします。

    • [定義ファイル]$R_my_data.c にします。

    • [データの初期化][動的] にします。

    変更後、疑似コードのプレビューに想定どおりの内容が反映されているか確認します。

  6. [複製] をクリックします。新しいストレージ クラス SigsStates_copy が表示されます。

  7. 新しいストレージ クラスの場合は、次のプロパティを設定します。

    • [名前]Params にします。

    • [データの初期化][静的] にします。

    疑似コードのプレビューに想定どおりの内容が反映されているか確認します。

ストレージ クラスの適用とコードの生成
  1. モデルで、コード マッピング エディターを開きます。モデル キャンバスの下で、[コード マッピング - コンポーネント インターフェイス] をダブルクリックします。

  2. [データの既定の設定] タブで、[パラメーター][モデル パラメーター] 行の [ストレージ クラス] 列にある [Params] を選択します。

  3. [信号][Signals, states, and internal data] の行で、[ストレージ クラス][SigsStates] に設定します。

  4. モデルでいくつかのパラメーター データ要素を構成して、最適化によってこれらの要素が生成されたコードから除去されないようにします。[モデル化] タブで、[設計][モデル ワークスペース] をクリックします。

  5. モデル エクスプローラーの中央のペインで、モデル ワークスペースの変数 dispGainintGainrateGain に対応する 3 つの行を選択します。

  6. 行の 1 つを右クリックして、[パラメーター オブジェクトに変換] をクリックします。モデル データ エディターにより、ワークスペース変数が Simulink.Parameter オブジェクトに変換されます。

  7. dispGain パラメーター行の [ストレージ クラス] 列で、[構成] をクリックします。モデル ウィンドウのコード マッピング エディターに dispGain パラメーターの行が強調表示されます。

  8. 変数ごとに、[ストレージ クラス] 列で、[Model default:Params] を選択します。これは、[モデル パラメーター] で指定した既定のストレージ クラスを取得することを表します。

  9. [コンフィギュレーション パラメーター] ダイアログ ボックスの [コード生成][コード配置] ペインで、[ファイル パッケージ化形式][モジュラー] に設定します。

  10. コードを生成します。

  11. コード ビューで、rtwdemo_roll_my_data.c ファイルと rtwdemo_roll_my_data.h ファイルを開いて検証します。これらのファイルでは、パラメーター オブジェクトおよび一部のブロックの状態 (BasicRollMode サブシステム内の Integrator ブロックの状態など) に対応するグローバル変数を定義して宣言します。

    /* Storage class 'SigsStates' */
    real32_T rtFixPtUnitDelay1_DSTATE;
    real32_T rtIntegrator_DSTATE;
    int8_T rtIntegrator_PrevResetState;
    
    /* Storage class 'Params' */
    real32_T dispGain = 0.75F;
    real32_T intGain = 0.5F;
    real32_T rateGain = 2.0F;

パッケージ内のコード生成定義の参照

パッケージに保存されているコード生成定義を参照するように Embedded Coder ディクショナリを構成できます (Create Code Definitions for External Data Objectsを参照)。これらの定義は、コード マッピング エディターに選択できる状態で表示されます。この例では、組み込みのパッケージ例 ECoderDemos 内に保存されている定義を参照するように rtwdemo_roll で Embedded Coder ディクショナリを構成します。

  1. rtwdemo_roll の Embedded Coder ディクショナリを開きます。手順については、ストレージ クラスの作成および検証を参照してください。

  2. [Embedded Coder ディクショナリ] ウィンドウで、[パッケージの管理] をクリックします。

  3. [パッケージの管理] ダイアログ ボックスで、[更新] をクリックします。追加オプションが [パッケージの選択] ドロップダウン リストに表示されるまで待ちます。

  4. [パッケージの選択][ECoderDemos] に設定し、[読み込み] をクリックします。

    [Embedded Coder ディクショナリ] ウィンドウの [ストレージ クラス] タブのテーブルに、ECoderDemos パッケージで定義されたストレージ クラスが表示されます。次に、rtwdemo_roll では、コード マッピング エディターの [データの既定の設定] タブでこれらのストレージ クラスを選択できます。

  5. パッケージをアンロードするには、[パッケージの管理] ダイアログ ボックスの [パッケージの選択] ドロップダウン リストでパッケージを選択し、[アンロード] をクリックします。

データ ディクショナリを使用してモデル間でコード生成定義を共有する方法を示す例については、Share Code Interface Configuration Between Modelsを参照してください。

共有 Embedded Coder ディクショナリで既定のコード マッピングを構成する方法を示す例については、Configure Default Code Mapping in a Shared Dictionaryを参照してください。

関連する例

パラメーター

これらのプロパティは、Embedded Coder ディクショナリ ウィンドウの [プロパティ インスペクター] ペインに表示されます。テーブルには、いくつかプロパティが列として表示され、バッチ編集を容易に行うことができます。

ストレージ クラス

ストレージ クラスの名前。名前はディクショナリ内のストレージ クラスで一意である必要があります。

Simulink で提供される組み込みストレージ クラスとストレージ クラスの例のリストについては、生成されたコードでのデータ表示を制御するストレージ クラスの選択を参照してください。

ストレージ クラスの目的および機能を記述するために使用できるカスタム テキスト。

このプロパティは読み取り専用です。

ストレージ クラス定義の場所。

モデルと関連付けられているデータにアクセスするための指定。データに直接 ([Direct])、あるいはカスタマイズ可能な関数 get および set を通じて ([Function])、またはポインターを使用して ([Pointer]) アクセスします。詳細については、Access Data Through Functions by Using Storage Classes in Embedded Coder Dictionaryを参照してください。

依存関係

  • このプロパティを Function または Pointer に設定すると、次のようになります。

    • DataScopeImported に設定されます。

    • マルチインスタンス プロパティを指定できないことを意味します。

    • PreserveDimensions プロパティが false に設定されます。生成コードで多次元配列の次元を保持するには、DataAccessDirect に設定します。

また、このプロパティを Function に設定すると、次のプロパティが有効になります。

  • AccessMode

  • AllowedAccess

  • GetFunctionName

  • SetFunctionName

生成されたコードでデータを定義するか ([Exported]) または外部コードからデータ定義をインポートするか ([Imported]) の指定。組み込みストレージ クラスおよび Simulink などのパッケージ内のストレージ クラスは File などの他のスコープ オプションを使用できます。

依存関係

  • このプロパティを [インポート] に設定した場合:

    • [定義ファイル] が無効になります。ビルド プロセスに外部ソース コード ファイルを含めるには、モデル コンフィギュレーション パラメーターを使用します。例については、データ インターフェイスの構成を参照してください。

    • $N トークンは使用できても、[ヘッダー ファイル]$N.h に設定できないことを意味します。

  • このプロパティを [エクスポート] に設定するには、[ヘッダー ファイル] の値でトークン $N または $R のいずれかを使用しなければなりません。

データを宣言するヘッダー ファイルの名前。名前または命名規則として指定します。命名規則には、テキストとトークンの組み合わせが含まれます。有効なトークンを次の表に示します。

トークン説明
$Rルート モデルの名前
$N関連付けられたデータ要素の名前
$Gストレージ クラスの名前
$Uユーザー トークン テキスト。Identifier Format Controlの説明に従ってモデルに対して指定します。

依存関係

  • [データ スコープ][エクスポート] に設定する場合は、このプロパティの値にトークン $R または $N のいずれかを使用しなければなりません。

  • [データ スコープ][インポート] に設定する場合は、このプロパティの値をトークン $N.h に設定できませんが、$N は使用できます。

データを定義するソース ファイルの名前。名前または命名規則として指定します。命名規則には、テキストとトークンの組み合わせが含まれます。有効なトークンを次の表に示します。

トークン説明
$Rルート モデルの名前
$N関連付けられたデータ要素の名前
$Gストレージ クラスの名前
$Uユーザー トークン テキスト。Identifier Format Controlの説明に従ってモデルに対して指定します。

依存関係

[データ スコープ][インポート] に設定すると、[定義ファイル] が無効になります。ビルド プロセスに外部ソース コード ファイルを含めるには、モデル コンフィギュレーション パラメーターを使用します。例については、データ インターフェイスの構成を参照してください。

[値] または [ポインター] を使用して、関数を通じてモデルと関連付けられているデータにアクセスするためのストレージ クラスの指定。詳細については、Access Data Through Functions by Using Storage Classes in Embedded Coder Dictionaryを参照してください。

依存関係

このプロパティは、[データ アクセス][関数] に設定されている場合にのみ有効です。

データに対する読み取りと書き込み ([Read/Write])、読み取り専用 ([Read Only])、または書き込み専用 ([Write Only]) のアクセスを許可するためのストレージ クラスの指定。

依存関係

このプロパティは、[データ アクセス][関数] に設定されている場合にのみ有効です。

関連付けられたデータを取得する関数 get の名前。名前または命名規則として指定します。命名規則には、テキストとトークンの組み合わせが含まれます。有効なトークンを次の表に示します。

トークン説明
$N関連付けられたデータ要素の名前 (必須)
$Rルート モデルの名前
$M一意性を確保するマングル テキスト
$Uユーザー トークン テキスト。Identifier Format Controlを参照してください。

依存関係

このプロパティは、[データ アクセス][関数] に設定されている場合にのみ有効です。

変更するデータを取得する関数 set の名前。名前または命名規則として指定します。命名規則には、テキストとトークンの組み合わせが含まれます。有効なトークンを次の表に示します。

トークン説明
$N関連付けられたデータ要素の名前 (必須)
$Rルート モデルの名前
$M一意性を確保するマングル テキスト
$Uユーザー トークン テキスト。Identifier Format Controlを参照してください。

依存関係

このプロパティは、[データ アクセス][関数] に設定されている場合にのみ有効です。

[単一インスタンス ストレージ] セクションで指定したストレージ設定または [マルチインスタンス ストレージ] セクションで指定したストレージ設定のいずれかを使用するためのストレージ クラスの指定。ストレージ クラスをデータ項目に適用すると、Embedded Coder ディクショナリは、データのタイプとモデル参照階層におけるモデルのコンテキストに応じて、単一インスタンス ストレージ クラスまたはマルチインスタンス ストレージ クラスのどちらであるか判断します。

依存関係

このプロパティを選択すると、[単一インスタンス ストレージ] セクションと [マルチインスタンス ストレージ] セクションが有効になります。プロパティ [ストレージ タイプ][タイプ名]、および [インスタンス名] は、[単一インスタンス ストレージ][マルチインスタンス ストレージ] の両方のセクションに表示されます。

ストレージ クラスを使用するデータを生成されたコード内の構造体に集約するための指定。各データ要素は、構造体のフィールドとしてコードに表示されます。構造体を作成するには、[Structured] を使用します。

依存関係

このプロパティを [Structured] に設定すると、[タイプ名][インスタンス名] が有効になります。

生成コード内の構造体型の名前。名前または命名規則として指定します。命名規則には、テキストとトークンの組み合わせが含まれます。有効なトークンを次の表に示します。

トークン説明
$Rルート モデルの名前
$Nstep など、関連付けられた関数のベース名
$Gストレージ クラスの名前
$Uユーザー トークン テキスト。Identifier Format Controlの説明に従ってモデルに対して指定します。
$M名前の競合を回避するために、必要に応じて挿入される名前マングリング テキスト

依存関係

[ストレージ タイプ][Structured] に設定すると、このプロパティが有効になります。

生成コード内の構造体変数の名前。名前または命名規則として指定します。命名規則には、テキストとトークンの組み合わせが含まれます。有効なトークンを次の表に示します。

トークン説明
$Rルート モデルの名前
$Nstep など、関連付けられた関数のベース名
$Gストレージ クラスの名前
$Uユーザー トークン テキスト。Identifier Format Controlの説明に従ってモデルに対して指定します。
$M名前の競合を回避するために、必要に応じて挿入される名前マングリング テキスト

依存関係

[ストレージ タイプ][Structured] に設定すると、このプロパティが有効になります。

生成コードでデータを初期化することの指定。

  • Auto — 生成されたコードは、パラメーター データを静的に初期化し、信号および状態データを動的に初期化します。

  • Dynamic — 生成されたコードは、データをモデルの初期化エントリポイント関数の一部として初期化します。

  • Static — 生成されたコードは、データに対してメモリを定義して割り当てる同じステートメントでデータを初期化します。代入ステートメントは、.c または .cpp ソース ファイルの上部の関数の外側に表示されます。

  • None — 生成されたコードはデータを初期化しません。

依存関係

  • [Const] を選択した場合、このプロパティは [動的] に設定できません。

  • このプロパティを [動的] に設定すると、[Const] は無効になります。

データを割り当てるメモリ内の場所。[メモリ セクション] タブで Embedded Coder ディクショナリに存在するメモリ セクションとして指定します。メモリ セクションについては、Control Data and Function Placement in Memory by Inserting Pragmasを参照してください。

生成コードで多次元配列の次元を保持するためのストレージ クラスの指定。詳細については、Preserve Dimensions of Multidimensional Arrays in Generated Codeを参照してください。

const 修飾子をデータに適用するための指定。

依存関係

  • このプロパティを選択する場合は、[データの初期化][動的] に設定できません。

  • [データの初期化][動的] に設定すると、このプロパティは無効になります。

volatile 修飾子をデータに適用するための指定。

カスタム修飾子をデータに適用するための指定。たとえば、一部のメモリ アーキテクチャでは、修飾子 far および huge がサポートされます。

このプロパティを使用してキーワード static を適用しないでください。代わりに、組み込みストレージ クラス FileScope を使用します。これはコード マッピング エディターでは適用できません。生成されたコードでのデータ表示を制御するストレージ クラスの選択を参照してください。

モデル パラメーターでのストレージ クラスの使用を許可するかどうかを示す指定。

依存関係

  • [データの初期化][静的] に設定すると、このプロパティが有効になります。

  • [データの初期化][動的] に設定すると、このプロパティは無効になります。

  • このプロパティの値を設定するには、[データの初期化][なし] に設定します。

モデル信号でのストレージ クラスの使用を許可するかどうかを示す指定。

依存関係

  • [データの初期化][動的] に設定すると、このプロパティは有効になります。

  • [データの初期化][静的] に設定すると、このプロパティは無効になります。

  • このプロパティの値を設定するには、[データの初期化][なし] に設定します。

関数カスタマイズ テンプレート

テンプレートの名前。名前はディクショナリ内の関数テンプレートで一意である必要があります。Embedded Coder は、次の表に示される組み込みテンプレートを提供します。

テンプレート説明
ModelFunctionコード マッピング エディターで、初期化、実行、終了、およびリセットのエントリポイント関数に使用します (Configure Default Code Generation for Functionsを参照)。
UtilityFunctionコード マッピング エディターで、共有ユーティリティ関数に使用します (Configure Default Code Generation for Functionsを参照)。

関数テンプレートの目的と機能を記述するために使用できるカスタム テキスト。

このプロパティは読み取り専用です。

関数テンプレート定義の場所。

  • モデル名 — Simulink モデルで定義されます。

  • ディクショナリ名 — Simulink データ ディクショナリで定義されます (データ ディクショナリとはを参照)。

生成コード内の関数の名前。命名規則として指定します。命名規則には、テキストとトークンの組み合わせが含まれます。有効なトークンを次の表に示します。

トークン説明
$Rルート モデルの名前
$Nstep など、関連付けられた関数のベース名
$Uユーザー トークン テキスト。Identifier Format Controlの説明に従ってモデルに対して指定します。
$C共有ユーティリティ関数。名前の競合を回避するためにチェックサムが挿入されます
$M名前の競合を回避するために、必要に応じて挿入される名前マングリング テキスト

関数を割り当てるメモリ内の場所。[メモリ セクション] タブで Embedded Coder ディクショナリに存在するメモリ セクションとして指定します。メモリ セクションについては、Control Data and Function Placement in Memory by Inserting Pragmasを参照してください。

メモリ セクション

メモリ セクションの名前。名前はディクショナリ内のメモリ セクションで一意である必要があります。Embedded Coder は、次の表に示される組み込みメモリ セクションを提供します。

メモリ セクション説明
MemConstストレージ型修飾子 const をデータに適用します。
MemVolatileストレージ型修飾子 volatile をデータに適用します。
MemConstVolatileストレージ型修飾子 const および volatile をデータに適用します。

メモリ セクションの目的と機能を記述するために使用できるカスタム テキスト。

このプロパティは読み取り専用です。

メモリ セクションの定義の場所。

[ステートメントの前] および [ステートメントの後] で指定したプラグマまたはその他の装飾とともにコード ジェネレーターに含まれるコード コメント。

メモリ セクション内にあるデータまたは関数の定義および宣言の前に挿入される、プラグマなどのコード。

トークン $R を使用して、メモリ セクションを使用するモデルの名前を表すことができます。

[ステートメントを囲む文字][各変数] に設定する場合は、トークン $N を使用して、メモリ セクションを使用する各変数または関数の名前を表すことができます。

メモリ セクション内にあるデータまたは関数の定義および宣言の後に挿入される、プラグマなどのコード。

トークン $R を使用して、メモリ セクションを使用するモデルの名前を表すことができます。

[ステートメントを囲む文字][各変数] に設定する場合は、トークン $N を使用して、メモリ セクションを使用する各変数または関数の名前を表すことができます。

コード ステートメントを挿入する ([ステートメントの前] および [ステートメントの後]) ための指定:

  • メモリ セクションを使用する各変数および関数を囲む形。[各変数] を選択します。

  • 1 回のみ、メモリ セクション全体を囲む形。生成されたコードでは、変数および関数定義を連続するコード ブロックに集約し、ブロックをステートメントで囲みます。[変数のグループ] を選択します。

制限

  • Embedded Coder ディクショナリで作成するストレージ クラスまたは関数カスタマイズ テンプレートでは、パッケージから読み込むメモリ セクションを使用できません (パッケージ内のコード生成定義の参照を参照)。Embedded Coder ディクショナリで定義されたメモリ セクションを使用します。

  • [関数] データ アクセスが設定された Embedded Coder ディクショナリで作成するストレージ クラスは、データ ストアのストレージ クラスでサポートされません。

  • .mdl モデル ファイルでコード生成定義を作成できません。

データ ディクショナリ (.sldd ファイル) の Embedded Coder ディクショナリ内のコード生成定義に関する追加の制限については、Deploy Code Generation Definitionsを参照してください。

バージョン履歴

R2018a で導入