Main Content

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

Embedded Coder ディクショナリ

コード定義を作成し、モデル データおよび関数に対応するコード生成を制御する

説明

Embedded Coder ディクショナリは、カスタム コード定義の作成のためのグラフィカル インターフェイスです。これらの定義をモデル内で適用することにより、既定で特定のソフトウェア アーキテクチャに準拠するコードを生成できます。たとえば、ルートレベルの入力などのモデル データのカテゴリに既定で適用できる独自のストレージ クラスを作成できます。

次の種類のコード定義を作成できます。

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

  • 関数カスタマイズ テンプレート。model_step のような、モデル エントリポイント関数の命名を制御します。テンプレートによって、エントリポイント関数へのメモリ セクションの適用も行われます。

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

コード生成定義の作成についての詳細は、Define 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 ディクショナリを開くには、次のいずれかの手法を使用します。

    • コード マッピング エディターで (Code Mappings Editorを参照)、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. モデル ブロック線図の下部のコード マッピング エディターで、[Data Defaults] タブを選択します。

  4. Embedded Coder ディクショナリのアイコン をクリックします。[Embedded Coder ディクショナリ] ウィンドウに、モデル ファイルに格納されているコード生成定義が表示されます。

  5. [Embedded Coder ディクショナリ] ウィンドウで、[追加] をクリックします。

  6. リストの一番下に表示される、StorageClass1 という新しいストレージ クラスを選択します。右側の [プロパティ インスペクター] ペインで、次の表にリストされているプロパティ値を設定します。

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

    変更を行った後、下部のペインで、予期した内容が疑似コードのプレビューに反映されていることを検証します。

  7. コード マッピング エディターに戻ります。[Internal data] の行を選択し、[Storage Class][InternalStruct] に設定します。

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

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

  10. 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_;

  11. ファイル 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 ディクショナリを開きます。

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

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

    • [名前]myFunctions

    • [関数名]func_$N_$R

    変更を行った後、予期した内容が疑似コードのプレビューに反映されていることを検証します。

  7. [Function Defaults] タブの [Initialize/Terminate] 行と [Execution] 行で、[Function Customization Template][myFunctions] に設定します。

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

  9. コード パースペクティブの右側にある [コード] ビュー ペインで、ファイル rtwdemo_mrmtbb.c を開いて検証します。ファイルは、2 つの実行関数 func_step0_rtwdemo_mrmtbb および func_step1_rtwdemo_mrmtbb を定義します。これらの名前は、関数テンプレートで指定したルールに準拠します。

メモリ セクションの作成

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

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

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

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

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

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

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

  3. モデル ブロック線図の下部にあるコード マッピング エディターで、Embedded Coder ディクショナリのアイコンをクリックします。

  4. Embedded Coder ディクショナリで [追加] をクリックします。

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

    • [名前]SigsStates

    • [ヘッダー ファイル]$R_my_data.h

    • [定義ファイル]$R_my_data.c

    既定では、[データの初期化] プロパティは [動的] に設定されます。これは、このストレージ クラスが信号、状態、データ ストアでの使用に適していることを意味します。

    変更を行った後、予期した内容が疑似コードのプレビューに反映されていることを検証します。

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

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

    • [名前]Params

    • [データの初期化][Static]

    変更を行った後、予期した内容が疑似コードのプレビューに反映されていることを検証します。

ストレージ クラスの適用とコードの生成
  1. コード マッピング エディターに戻ります。

  2. [Data Defaults] タブの [Model parameters] 行の [Storage Class] 列で、[Params] を選択します。

  3. [Internal data] の行の [Storage Class][SigsStates] に設定します。

  4. モデル内の一部のパラメーター データ要素を構成し、最適化によってこれらが生成コードから削除されないようにします。モデル データ エディターを開きます。

  5. [パラメーター] タブを選択します。

  6. モデルで BasicRollMode サブシステム内に移動します。

  7. ブロック線図を更新します。これで、データ テーブルには、モデルによって使用されるワークスペース変数に対応する行が含まれます。

  8. [コンテンツのフィルター] ボックスの横にある [選択を使用してフィルター処理します] ボタンを有効にします。

  9. モデルで 3 つの Gain ブロックを選択します。

  10. ブロック線図を更新します。

  11. モデル データ エディターのデータ テーブルで、モデル ワークスペースの変数 dispGainintGain および rateGain に対応する 3 つの行を選択します。

  12. 各変数について、[Storage Class] 列で [Convert to parameter object] を選択します。

    モデル データ エディターにより、ワークスペース変数が Simulink.Parameter オブジェクトに変換されます。新しいオブジェクトは、ストレージ クラス [Model Default] を使用します。これは、コード マッピング エディターで [Model parameters] に指定した既定のストレージ クラスを取得することを意味します。

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

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

  15. [コード] ビューで、ファイル 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 で、これらのストレージ クラスをコード マッピング エディターの [Data Defaults] タブで選択できます。

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

Simulink データ ディクショナリを使用したモデル間のコード生成定義の共有

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

共有された Coder ディクショナリでの既定のコード マッピングの構成

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

関連する例

パラメーター

これらのプロパティは、[Embedded Coder ディクショナリ] ウィンドウの [プロパティ インスペクター] ペインに表示されます。表では、一括編集がしやすいように一部のプロパティが列として表示されます。

ストレージ クラス

ストレージ クラスの名前。名前は、ディクショナリのストレージ クラス内で一意でなければなりません。

Simulink が提供する組み込みストレージ クラス、およびストレージ クラスの例のリストについては、Choose Storage Class for Controlling Data Representation in Generated Codeを参照してください。

ストレージ クラスの目的および機能について説明するために使用できるカスタム テキスト。

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

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

モデルに関連付けられたデータにアクセスする指定。データに直接アクセスするか (Direct)、カスタマイズ可能な関数 get と関数 set (Function) を介してアクセスします。詳細については、Access Data Through Functions by Using Storage Classes in Embedded Coder Dictionaryを参照してください。

依存関係

  • このプロパティを [関数] に設定すると、次のようになります。

    • [データ スコープ][インポート] に設定します。

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

    • 以下のプロパティを有効にします。

      • アクセス モード

      • 許可するアクセス

      • getter の名前

      • setter の名前

    • [配列の次元を保持] プロパティを無効にします。生成されたコード内で多次元配列の次元を保持するには、[データ アクセス][直接] に設定します。

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

依存関係

  • このプロパティを [インポート] に設定すると、次のようになります。

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

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

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

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

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

依存関係

  • [データ スコープ][Exported] に設定すると、$R または $N のどちらかのトークンを使用しなければなりません。

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

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

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

依存関係

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

[値] または [ポインター] を使用し、モデルに関連付けられているデータに関数を介してストレージ クラスからアクセスする指定。詳細については、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] に設定すると、このプロパティが有効になります。

生成コードによるデータ初期化の指定。

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

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

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

依存関係

  • [const] をオンにすると、このプロパティを [Dynamic] に設定できません。

  • このプロパティを [Dynamic] に設定すると [const] が無効になります。

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

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

const 修飾子のデータへの適用の指定。

依存関係

  • このプロパティをオンにすると、[データの初期化][Dynamic] に設定できません。

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

volatile 修飾子のデータへの適用の指定。

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

このプロパティを使用して、キーワード static を適用しないでください。代わりに、コード マッピング エディターを使用して適用できない、組み込みストレージ クラス FileScope を使用します。Choose Storage Class for Controlling Data Representation in Generated Codeを参照してください。

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

依存関係

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

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

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

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

依存関係

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

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

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

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

テンプレートの名前。名前は、ディクショナリの関数テンプレート内で一意でなければなりません。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 ディクショナリで定義したメモリ セクションを使用します。

  • コード生成定義を .mdl モデル ファイル内に作成することはできません。

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

R2018a で導入