最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。
コード定義を作成し、モデル データおよび関数に対応するコード生成を制御する
Embedded Coder ディクショナリを開くには、次のいずれかの手法を使用します。
コード マッピング エディターで (Code Mappings Editorを参照)、Embedded Coder ディクショナリのアイコン をクリックします。
モデル ウィンドウの [C コード] タブで、[設定]、[Embedded Coder ディクショナリ] を選択します。
[Embedded Coder ディクショナリ] ウィンドウに、モデル ファイルに格納されているコード生成定義が表示されます。モデルがデータ ディクショナリにリンクされている場合、ウィンドウにはそのデータ ディクショナリまたは (該当する場合) 参照ディクショナリに格納されている定義も表示されます。[ソース] 列は各定義が格納されている場所を示します。
Simulink® データ ディクショナリの Embedded Coder ディクショナリを開くには、モデル エクスプローラーの [モデルの階層構造] ペインで、以下を実行します。
ディクショナリ ノードの下の [Embedded Coder] ノードを選択します。
ノードが表示されていない場合、ディクショナリ ノードを右クリックし、[空のセクションを表示] を選択します。
[ダイアログ] ペイン (右側のペイン) で、[Embedded Coder ディクショナリを開く] をクリックします。
モデルでは、ブロックの状態を含む内部モデル データを集計し、特徴を制御できる構造体に設定するストレージ クラスを作成します。次に、モデルからコードを生成してストレージ クラスを検証します。
モデル例 rtwdemo_roll
を開きます。
rtwdemo_roll
モデルがコード パースペクティブで開かれない場合、Embedded Coder アプリを開いて [C コード] タブをクリックします。
モデル ブロック線図の下部のコード マッピング エディターで、[Data Defaults] タブを選択します。
Embedded Coder ディクショナリのアイコン をクリックします。[Embedded Coder ディクショナリ] ウィンドウに、モデル ファイルに格納されているコード生成定義が表示されます。
[Embedded Coder ディクショナリ] ウィンドウで、[追加] をクリックします。
リストの一番下に表示される、StorageClass1
という新しいストレージ クラスを選択します。右側の [プロパティ インスペクター] ペインで、次の表にリストされているプロパティ値を設定します。
プロパティ | 値 |
---|---|
名前 | InternalStruct |
ヘッダー ファイル | internalData_$R.h |
定義ファイル | internalData_$R.c |
ストレージ タイプ | Structured |
[構造体のプロパティ] 、 [タイプ名] | internalData_T_$M |
[構造体のプロパティ] 、 [インスタンス名] | internalData_$M |
変更を行った後、下部のペインで、予期した内容が疑似コードのプレビューに反映されていることを検証します。
コード マッピング エディターに戻ります。[Internal data] の行を選択し、[Storage Class] を [InternalStruct]
に設定します。
[コンフィギュレーション パラメーター] ダイアログ ボックスの [コード生成]、[コード配置] ペインで、[ファイル パッケージ化形式] を [モジュラー]
に設定します。
コードを生成します。
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_;
ファイル internalData_rtwdemo_roll.c
を開いて検証します。ファイルは、internalData_
にメモリを割り当てます。
/* Storage class 'InternalStruct' */ internalData_T_ internalData_;
関数テンプレートを使用して、生成されたエントリポイント関数の名前を制御するルールを指定できます。この手法により、エクスポート関数モデルやマルチレート、マルチタスク モデルなどの多くのエントリポイント関数をもつモデルでの時間および保守労力の軽減が可能です。
この例では、命名規則 func_$N_$R
を指定する関数テンプレートの作成方法を示します。$N
は、生成される関数それぞれのベース名であり、$R
は Simulink モデルの名前です。
モデル例 rtwdemo_mrmtbb
を開きます。
ブロック線図を更新します。このマルチタスク モデルには 2 つの実行レートがあるため、生成コードには、2 つの対応するエントリポイント関数が含まれます。
モデルで、モデル コンフィギュレーション パラメーター [システム ターゲット ファイル] を [ert.tlc
] に設定します。関数カスタマイズ テンプレートを使用するには、ERT ベースのシステム ターゲット ファイルを使用しなければなりません。
Simulink エディターで、コード パースペクティブ モードを有効にして、Embedded Coder ディクショナリを開きます。
Embedded Coder ディクショナリの [関数カスタマイズ テンプレート] タブで、[追加] をクリックします。
新しい関数テンプレートに、次のプロパティを設定します。
[名前] は myFunctions
。
[関数名] は func_$N_$R
。
変更を行った後、予期した内容が疑似コードのプレビューに反映されていることを検証します。
[Function Defaults] タブの [Initialize/Terminate] 行と [Execution] 行で、[Function Customization Template] を [myFunctions]
に設定します。
コードを生成します。
コード パースペクティブの右側にある [コード] ビュー ペインで、ファイル 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 つのコピーを作成することを検討してください。
モデル例 rtwdemo_roll
を開きます。
[C コード] タブが表示されない場合、Embedded Coder アプリを開いて [C コード] タブをクリックします。
モデル ブロック線図の下部にあるコード マッピング エディターで、Embedded Coder ディクショナリのアイコンをクリックします。
Embedded Coder ディクショナリで [追加] をクリックします。
新しいストレージ クラスについて、次のプロパティを設定します。
[名前] は SigsStates
[ヘッダー ファイル] は $R_my_data.h
[定義ファイル] は $R_my_data.c
既定では、[データの初期化] プロパティは [動的]
に設定されます。これは、このストレージ クラスが信号、状態、データ ストアでの使用に適していることを意味します。
変更を行った後、予期した内容が疑似コードのプレビューに反映されていることを検証します。
[複製] をクリックします。新しいストレージ SigsStates_copy
が表示されます。
新しいストレージ クラスについて、次のプロパティを設定します。
[名前] は Params
[データの初期化] は [Static]
変更を行った後、予期した内容が疑似コードのプレビューに反映されていることを検証します。
コード マッピング エディターに戻ります。
[Data Defaults] タブの [Model parameters] 行の [Storage Class] 列で、[Params]
を選択します。
[Internal data] の行の [Storage Class] を [SigsStates]
に設定します。
モデル内の一部のパラメーター データ要素を構成し、最適化によってこれらが生成コードから削除されないようにします。モデル データ エディターを開きます。
[パラメーター] タブを選択します。
モデルで BasicRollMode
サブシステム内に移動します。
ブロック線図を更新します。これで、データ テーブルには、モデルによって使用されるワークスペース変数に対応する行が含まれます。
[コンテンツのフィルター] ボックスの横にある [選択を使用してフィルター処理します] ボタンを有効にします。
モデルで 3 つの Gain ブロックを選択します。
ブロック線図を更新します。
モデル データ エディターのデータ テーブルで、モデル ワークスペースの変数 dispGain
、intGain
および rateGain
に対応する 3 つの行を選択します。
各変数について、[Storage Class] 列で [Convert to parameter object]
を選択します。
モデル データ エディターにより、ワークスペース変数が Simulink.Parameter
オブジェクトに変換されます。新しいオブジェクトは、ストレージ クラス [Model Default]
を使用します。これは、コード マッピング エディターで [Model parameters] に指定した既定のストレージ クラスを取得することを意味します。
[コンフィギュレーション パラメーター] ダイアログ ボックスの [コード生成]、[コード配置] ペインで、[ファイル パッケージ化形式] を [モジュラー]
に設定します。
コードを生成します。
[コード] ビューで、ファイル 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 ディクショナリを構成します。
rtwdemo_roll
の Embedded Coder ディクショナリを開きます。手順については、ストレージ クラスの作成と検証を参照してください。
[Embedded Coder ディクショナリ] ウィンドウで、[パッケージの管理] をクリックします。
[パッケージの管理] ダイアログ ボックスで、[更新] をクリックします。[パッケージの選択] ドロップダウン リストに追加のオプションが表示されるまで待機します。
[パッケージの選択] を [ECoderDemos]
に設定し、[読み込み] をクリックします。
[Embedded Coder ディクショナリ] ウィンドウの [ストレージ クラス] タブで、ECoderDemos
パッケージで定義されたストレージ クラスの表が表示されます。これで、rtwdemo_roll
で、これらのストレージ クラスをコード マッピング エディターの [Data Defaults] タブで選択できます。
パッケージをアンロードするには、[パッケージの管理] ダイアログ ボックスの [パッケージの選択] ドロップダウン リストでパッケージを選択し、[アンロード] をクリックします。
データ ディクショナリを使用してモデル間でコード生成定義を共有する方法を示す例については、Share Embedded Coder Dictionary Definition Between Modelsを参照してください。
共有されている Embedded Coder ディクショナリに既定のコード マッピングを構成する例については、Configure Default Code Mapping in a Shared Dictionaryを参照してください。
これらのプロパティは、[Embedded Coder ディクショナリ] ウィンドウの [プロパティ インスペクター] ペインに表示されます。表では、一括編集がしやすいように一部のプロパティが列として表示されます。
ストレージ クラス名前
— ストレージ クラスの名前StorageClass1
(既定値) | テキストストレージ クラスの名前。名前は、ディクショナリのストレージ クラス内で一意でなければなりません。
Simulink が提供する組み込みストレージ クラス、およびストレージ クラスの例のリストについては、Choose Storage Class for Controlling Data Representation in Generated Codeを参照してください。
説明
— ストレージ クラスの目的および機能ストレージ クラスの目的および機能について説明するために使用できるカスタム テキスト。
ソース
— ストレージ クラスの定義の場所このプロパティは読み取り専用です。
ストレージ クラスの定義がある場所。
Built-in
— Simulink によって提供されます。
モデル名 — Simulink モデルで定義されます。
ディクショナリ名 — Simulink データ ディクショナリで定義されます (データ ディクショナリとはを参照)。
パッケージ名 — Simulink パッケージまたはカスタム パッケージで定義されます (Create Storage Classes by Using the Custom Storage Class Designerを参照)。
データ アクセス
— データにアクセスする指定Direct
(既定値) | Function
モデルに関連付けられたデータにアクセスする指定。データに直接アクセスするか (Direct
)、カスタマイズ可能な関数 get
と関数 set
(Function
) を介してアクセスします。詳細については、Access Data Through Functions by Using Storage Classes in Embedded Coder Dictionaryを参照してください。
このプロパティを [関数]
に設定すると、次のようになります。
[データ スコープ] を [インポート]
に設定します。
マルチインスタンス プロパティを指定できないことを意味します。
以下のプロパティを有効にします。
アクセス モード
許可するアクセス
getter の名前
setter の名前
[配列の次元を保持] プロパティを無効にします。生成されたコード内で多次元配列の次元を保持するには、[データ アクセス] を [直接]
に設定します。
データ スコープ
— データ定義生成の指定Exported
(既定値) | Imported
生成コードがデータを定義するのか (Exported
)、データ定義を外部コードからインポートするのか (Imported
) の指定。組み込みストレージ クラスおよび Simulink などのパッケージ内のストレージ クラスは、他のスコープ オプション (File
など) を使用できます。
このプロパティを [インポート]
に設定すると、次のようになります。
[定義ファイル] が無効になります。外部ソース コード ファイルをビルド プロセスに含めるには、モデル コンフィギュレーション パラメーターを使用します。例については、データ インターフェイスの構成を参照してください。
[ヘッダー ファイル] を [$N.h
] に設定できないことを意味しますが、$N
トークンを使用することはできます。
このプロパティを [エクスポート]
に設定するには、[ヘッダー ファイル] の値で $N
または $R
のどちらかのトークンを使用しなければなりません。
ヘッダー ファイル
— データを宣言するヘッダー ファイルの名前$N.h
(既定値) | テキストデータを宣言するヘッダー ファイルの名前。名前または命名規則として指定します。命名規則には、テキストとトークンの組み合わせが含まれます。有効なトークンを次の表に示します。
トークン | 説明 |
---|---|
$R | ルート モデルの名前 |
$N | 関連付けられているデータ要素の名前 |
$G | ストレージ クラスの名前 |
$U | ユーザー トークン テキスト。Identifier Format Controlの説明に従ってモデルに指定します。 |
[データ スコープ] を [Exported]
に設定すると、$R
または $N
のどちらかのトークンを使用しなければなりません。
[データ スコープ] を [Imported]
に設定すると、このプロパティの値を [$N.h
] に設定することはできませんが、$N
トークンを使用できます。
定義ファイル
— データを定義するソース ファイルの名前$N.c
(既定値) | テキストデータを定義するソース ファイルの名前。名前または命名規則として指定します。命名規則には、テキストとトークンの組み合わせが含まれます。有効なトークンを次の表に示します。
トークン | 説明 |
---|---|
$R | ルート モデルの名前 |
$N | 関連付けられているデータ要素の名前 |
$G | ストレージ クラスの名前 |
$U | ユーザー トークン テキスト。Identifier Format Controlの説明に従ってモデルに指定します。 |
[データ スコープ] を [Imported]
に設定すると、[定義ファイル] が無効になります。外部ソース コード ファイルをビルド プロセスに含めるには、モデル コンフィギュレーション パラメーターを使用します。例については、データ インターフェイスの構成を参照してください。
アクセス モード
— 関数を介してデータにアクセスする指定Value
(既定値) | Pointer
[値]
または [ポインター]
を使用し、モデルに関連付けられているデータに関数を介してストレージ クラスからアクセスする指定。詳細については、Access Data Through Functions by Using Storage Classes in Embedded Coder Dictionaryを参照してください。
このプロパティは [データ アクセス] を [関数]
に設定した場合にのみ有効になります。
許可するアクセス
— 関数を介したデータへのアクセスを許可する指定Read/Write
(既定値) | Read Only
| Write Only
ストレージ クラスからデータへの読み取り/書き込み (Read/Write
)、読み取り専用 (Read
Only
)、または書き込み専用 (Write Only
) アクセスを許可する指定。
このプロパティは [データ アクセス] を [関数]
に設定した場合にのみ有効になります。
getter の名前
— 関連付けられているデータを取得する関数 get
の名前get_$N$M
(既定値) | テキスト関連付けられているデータを取得する関数 get
の名前。名前または命名規則として指定します。命名規則には、テキストとトークンの組み合わせが含まれます。有効なトークンを次の表に示します。
トークン | 説明 |
---|---|
$N | 関連付けられているデータ要素の名前 (必須) |
$R | ルート モデルの名前 |
$M | 一意性を確保するマングル テキスト |
$U | ユーザー トークン テキスト。Identifier Format Controlを参照してください。 |
このプロパティは [データ アクセス] を [関数]
に設定した場合にのみ有効になります。
setter の名前
— 関連付けられているデータを変更する関数 set
の名前set_$N$M
(既定値) | テキスト変更するデータを取得する関数 set
の名前。名前または命名規則として指定します。命名規則には、テキストとトークンの組み合わせが含まれます。有効なトークンを次の表に示します。
トークン | 説明 |
---|---|
$N | 関連付けられているデータ要素の名前 (必須) |
$R | ルート モデルの名前 |
$M | 一意性を確保するマングル テキスト |
$U | ユーザー トークン テキスト。Identifier Format Controlを参照してください。 |
このプロパティは [データ アクセス] を [関数]
に設定した場合にのみ有効になります。
単一インスタンス データとマルチインスタンス データに異なるプロパティ設定を使用
— 個別のストレージ設定を割り当てる指定off
(既定値) | on
[単一インスタンス ストレージ] セクションで指定するストレージ設定または [マルチインスタンス ストレージ] セクションで指定するストレージ設定のいずれかで使用するストレージ クラスの指定。データ項目にストレージ クラスを適用すると、Embedded Coder ディクショナリは、単一インスタンス ストレージ クラスとマルチインスタンス ストレージ クラスのどちらであるのかを、データの型とモデル参照階層内のモデルのコンテキストによって判断します。
このプロパティを選択すると、[単一インスタンス ストレージ] セクションと [マルチインスタンス ストレージ] セクションが有効になります。プロパティ [ストレージ タイプ]、[タイプ名]、[インスタンス名] は、[単一インスタンス ストレージ] セクションと [マルチインスタンス ストレージ] セクションの両方に表示されます。
ストレージ タイプ
— データの構造体への集約の指定Unstructured
(既定値) | Structured
ストレージ クラスを使用するデータを生成コード内の構造体に集約するための指定。各データ要素は、構造体のフィールドとしてコードに表示されます。構造体を作成するには、[Structured]
を使用します。
このプロパティを [Structured]
に設定すると、[タイプ名] および [インスタンス名] が有効になります。
タイプ名
— 構造体型の名前$R$N$G$M
(既定値) | テキスト生成コード内の構造体型の名前。名前または命名規則として指定します。命名規則には、テキストとトークンの組み合わせが含まれます。有効なトークンを次の表に示します。
トークン | 説明 |
---|---|
$R | ルート モデルの名前 |
$N | step などの関連付けられた関数のベース名 |
$G | ストレージ クラスの名前 |
$U | ユーザー トークン テキスト。Identifier Format Controlの説明に従ってモデルに指定します。 |
$M | 名前の競合を避けるために、必要に応じて挿入される名前マングリング テキスト |
[ストレージ タイプ] を [Structured]
に設定すると、このプロパティが有効になります。
インスタンス名
— 構造体変数の名前$N$G$M
(既定値) | テキスト生成コード内の構造体変数の名前。名前または命名規則として指定します。命名規則には、テキストとトークンの組み合わせが含まれます。有効なトークンを次の表に示します。
トークン | 説明 |
---|---|
$R | ルート モデルの名前 |
$N | step などの関連付けられた関数のベース名 |
$G | ストレージ クラスの名前 |
$U | ユーザー トークン テキスト。Identifier Format Controlの説明に従ってモデルに指定します。 |
$M | 名前の競合を避けるために、必要に応じて挿入される名前マングリング テキスト |
[ストレージ タイプ] を [Structured]
に設定すると、このプロパティが有効になります。
データ初期化
— データの初期化の方法Dynamic
(既定値) | Static
| None
生成コードによるデータ初期化の指定。
Dynamic
— 生成コードは、データをモデル初期化エントリポイント関数の一部として初期化します。
Static
— 生成コードは、データを定義しデータにメモリを割り当てるのと同じステートメントで、データを初期化します。.c
または .cpp
ソース ファイルの上部の、関数の外側に代入ステートメントが表示されます。
None
— 生成コードはデータを初期化しません。
[const] をオンにすると、このプロパティを [Dynamic]
に設定できません。
このプロパティを [Dynamic]
に設定すると [const] が無効になります。
メモリ セクション
— データを割り当てるメモリ内の位置None
(既定値) | 既存のメモリ セクションデータを割り当てるメモリ内の位置。[メモリ セクション] タブで、Embedded Coder ディクショナリに存在するメモリ セクションとして指定します。メモリ セクションの詳細については、Control Data and Function Placement in Memory by Inserting Pragmasを参照してください。
配列の次元を保持
— 多次元配列の次元を保持する指定off
(既定値) | on
生成されたコード内で多次元配列の次元を保持するストレージ クラスの指定。詳細については、Preserve Dimensions of Multidimensional Arrays in Generated Codeを参照してください。
Const
— const
修飾子の適用の指定off
(既定値) | on
const
修飾子のデータへの適用の指定。
このプロパティをオンにすると、[データの初期化] を [Dynamic]
に設定できません。
[データの初期化] を [Dynamic]
に設定すると、このプロパティが無効になります。
Volatile
— volatile
修飾子の適用の指定off
(既定値) | on
volatile
修飾子のデータへの適用の指定。
その他の修飾子
— カスタム修飾子の適用の指定カスタム修飾子のデータへの適用の指定。たとえば、一部のメモリ アーキテクチャでは修飾子 far
および huge
がサポートされています。
このプロパティを使用して、キーワード static
を適用しないでください。代わりに、コード マッピング エディターを使用して適用できない、組み込みストレージ クラス FileScope
を使用します。Choose Storage Class for Controlling Data Representation in Generated Codeを参照してください。
パラメーター
— モデル パラメーターでの使用を許可するかどうかoff
(既定値) | on
モデル パラメーターでストレージ クラスの使用を許可するかどうかを示す指定。
[データの初期化] を [Static]
に設定すると、このプロパティが有効になります。
[データの初期化] を [Dynamic]
に設定すると、このプロパティが無効になります。
このプロパティの値を設定するには、[データの初期化] を [なし]
に設定します。
信号
— モデル信号での使用を許可するかどうかon
(既定値) | off
モデル信号でストレージ クラスの使用を許可するかどうかを示す指定。
[データの初期化] を [Dynamic]
に設定すると、このプロパティが有効になります。
[データの初期化] を [Static]
に設定すると、このプロパティが無効になります。
このプロパティの値を設定するには、[データの初期化] を [なし]
に設定します。
名前
— 関数テンプレートの名前FunctionTemplate1
(既定値) | テキストテンプレートの名前。名前は、ディクショナリの関数テンプレート内で一意でなければなりません。Embedded Coder は、次の表に示す組み込みテンプレートを提供します。
テンプレート | 説明 |
---|---|
ModelFunction | コード マッピング エディターで、初期化、実行、停止およびリセット用のエントリポイント関数に使用します (Configure Default Code Generation for Functionsを参照)。 |
UtilityFunction | コード マッピング エディターで、共有ユーティリティ関数に使用します (Configure Default Code Generation for Functionsを参照)。 |
説明
— 関数テンプレートの目的および機能関数テンプレートの目的および機能について説明するために使用できるカスタム テキスト。
ソース
— 関数テンプレート定義の場所このプロパティは読み取り専用です。
関数テンプレート定義がある場所。
モデル名 — Simulink モデルで定義されます。
ディクショナリ名 — Simulink データ ディクショナリで定義されます (データ ディクショナリとはを参照)。
関数名
— 生成された関数の名前$R$N
(既定値) | テキスト生成コード内の関数の名前。命名規則として指定します。命名規則には、テキストとトークンの組み合わせが含まれます。有効なトークンを次の表に示します。
トークン | 説明 |
---|---|
$R | ルート モデルの名前 |
$N | step などの関連付けられた関数のベース名 |
$U | ユーザー トークン テキスト。Identifier Format Controlの説明に従ってモデルに指定します。 |
$C | 共有ユーティリティ関数の場合、名前の競合を避けるために挿入されるチェックサム |
$M | 名前の競合を避けるために、必要に応じて挿入される名前マングリング テキスト |
メモリ セクション
— 関数を割り当てるメモリ内の位置None
(既定値) | 既存のメモリ セクション関数を割り当てるメモリ内の位置。Embedded Coder ディクショナリの [メモリ セクション] タブに存在するメモリ セクションとして指定します。メモリ セクションの詳細については、Control Data and Function Placement in Memory by Inserting Pragmasを参照してください。
名前
— メモリ セクションの名前メモリ セクションの名前。名前は、ディクショナリのメモリ セクション内で一意でなければなりません。Embedded Coder は、次の表に示す組み込みメモリ セクションを提供します。
メモリ セクション | 説明 |
---|---|
MemConst | ストレージ型修飾子 const をデータに適用する。 |
MemVolatile | ストレージ型修飾子 volatile をデータに適用する。 |
MemConstVolatile | ストレージ型修飾子 const および volatile をデータに適用する。 |
説明
— メモリ セクションの目的および機能メモリ セクションの目的および機能について説明するために使用できるカスタム テキスト。
ソース
— メモリ セクションの定義の場所このプロパティは読み取り専用です。
メモリ セクション定義がある場所。
モデル名 — Simulink モデルで定義されます。
ディクショナリ名 — Simulink データ ディクショナリで定義されます (データ ディクショナリとはを参照)。
パッケージ名 — Simulink パッケージまたはカスタム パッケージで定義されます (Create Code Definitions for External Data Objectsを参照)。
コメント
— 生成コードで挿入されるコメントコード ジェネレーターが、プラグマや、[ステートメントの前] および [ステートメントの後] で指定するその他の装飾によって含めるコード コメント。
ステートメントの前
— データまたは関数コードの前に挿入するコードメモリ セクション内にあるデータまたは関数の定義および宣言の前に挿入する、プラグマなどのコード。
トークン $R
を使って、メモリ セクションを使用するモデルの名前を表すことができます。
[ステートメントを囲む文字] を [各変数]
に設定している場合、メモリ セクションを使用する変数または関数のそれぞれの名前をトークン $N
を使って表すことができます。
ステートメントの後
— データまたは関数コードの後に挿入するコードメモリ セクション内にあるデータまたは関数の定義および宣言の後に挿入する、プラグマなどのコード。
トークン $R
を使って、メモリ セクションを使用するモデルの名前を表すことができます。
[ステートメントを囲む文字] を [各変数]
に設定している場合、メモリ セクションを使用する変数または関数のそれぞれの名前をトークン $N
を使って表すことができます。
ステートメントを囲む文字
— データと関数のラップが個別かグループかを指定各変数
(既定値) | 変数のグループ
コード ステートメントの挿入 ([ステートメントの前] および [ステートメントの後]) の指定。
メモリ セクションを使用する変数と関数を個々に囲む。[各変数]
を選択します。
メモリ セクション全体を 1 度に囲む。生成コードは、変数および関数の定義を連続するコード ブロックに集約し、そのブロックをステートメントで囲みます。[変数のグループ]
を選択します。
Embedded Coder ディクショナリで作成するストレージ クラスまたは関数カスタマイズ テンプレートは、(パッケージのコード生成定義の参照で説明するように) パッケージから読み込むメモリ セクションを使用できません。Embedded Coder ディクショナリで定義したメモリ セクションを使用します。
コード生成定義を .mdl
モデル ファイル内に作成することはできません。
データ ディクショナリ (.sldd
ファイル) としての Embedded Coder ディクショナリ内のコード生成定義におけるその他の制限事項については、Deploy Code Generation Definitionsを参照してください。