生成されたコード モジュールのファイル パッケージ化の管理
コード ジェネレーターはコード モジュールを生成します。ファイル パッケージ化構成により、コード ジェネレーターによってコードをコード モジュールおよびヘッダー ファイルに配置する場所を制御します。
生成されたコード ファイルの場所を特定して調べるには、[コード] ビューまたは HTML コード生成レポートを使用します。コード生成レポートのコメントにはハイパーリンクがあります。ハイパーリンクをクリックすることで、生成されたコードを MATLAB® Web ブラウザーで表示できます。詳細については、Traceability in Generated Codeを参照してください。
生成されたコード モジュール
コード ジェネレーターは、生成されたソース コードを保存するために、作業フォルダー内にビルド フォルダーを作成します。ビルド フォルダーには、オブジェクト ファイル、makefile、およびコード生成プロセス中に作成されたその他のファイルが含まれます。ビルド フォルダーの既定の名前は です。model_ert_rtw
ファイル パッケージ化の影響を受けるコード モジュールおよびヘッダー ファイルに、コード ジェネレーターで生成されるソース コードの構造をまとめます。
生成される一連のファイルは、いくつかの方法でカスタマイズできます。
ファイル パッケージ化形式: モデルに対して生成されるソース ファイルの数を管理します。モデル コンフィギュレーション パラメーター [ファイル パッケージ化形式] を選択します。詳細については、生成されたコード モジュールのカスタマイズを参照してください。
非バーチャル サブシステムのコード生成: 非バーチャル サブシステムに対して別個のコード ファイル内に別個の関数を生成するようにコード ジェネレーターに指示します。関数の名前やコード ファイルの名前を制御できます。詳細については、サブシステム コードを別々の関数およびファイルとして生成を参照してください。
ストレージ クラス: 指定したファイル名に基づいて、生成されるデータ構造体を異なるファイルに分割するストレージ クラスを定義して使用します。詳細については、Struct ストレージ クラスを使用してパラメーター データを構造体に整理するを参照してください。
モジュール パッケージ化: 生成されたコードを、必要な一連の
.cファイルまたは.cppファイルと.hファイルに分け、生成されるファイルの内部的編成を制御します。詳細については、コード インターフェイスの設定を参照してください。
ファイル パッケージ化の影響を受けるコード モジュールおよびヘッダー ファイル
| ファイル | 説明 |
|---|---|
| 既定では、モデル アルゴリズムを実装するコードのエントリ ポイントが含まれます (たとえば、 |
| モデルおよびサブシステムで必要とされるローカル マクロおよびローカル データが含まれます。このファイルは、 |
| モデル エントリポイントとデータ構造体にモデル データ構造体とパブリック インターフェイスを宣言します。アクセサー マクロを使用してリアルタイム モデル データの構造体 ( コード ジェネレーターは次を行います。
手書きコードと 1 つ以上のモデルの生成コードのインターフェイスを取る場合は、それらのモデルごとに |
| (条件付きで生成された場合) パラメーター データ構造体、定数ブロック I/O データ構造体、およびモデル構造体データ型のゼロ表現の宣言が含まれます。モデルでこれらのデータ構造体およびゼロ表現が使用されない場合、 |
| リアルタイム モデル データ構造体とパラメーター データ構造体のための事前宣言を与えます。再利用可能な関数の関数宣言でこれらの宣言が必要になることがあります。モデルで使用されるユーザー定義型の型定義が提供されます。 |
| 固定小数点算術演算をサポートするユーティリティ ファイル、またはゼロクロッシング関数を定義するユーティリティ ファイル。他のユーティリティ ファイルはファイル パッケージ化の影響を受けず、代わりに [共有コードの配置] モデル コンフィギュレーション パラメーターの影響を受けます。モデルにユーティリティ コードを必要とするブロックが含まれている場合、コード ジェネレーターはそのユーティリティ コードを生成します。 |
ユーザー作成のコード モジュール
生成されたモデル コードとのインターフェイスを取るために作成したコードには通常、カスタマイズされたメイン モジュールが含まれます。このモジュールは、コード ジェネレーターで生成されたメイン プログラムを基に作成します。このカスタマイズされたメイン モジュールには、割り込みハンドラー、デバイス ドライバー ブロックとその他の S-Function、およびその他の監視コードやサポート コードを含めることもできます。カスタマイズされたメイン モジュールをサポートするために開発環境を設定する手順は次のとおりです。
自身のコード モジュール用の作業フォルダーを確立します。
作業フォルダーを MATLAB パス上に配置します。
最低でも、モデル コンフィギュレーション パラメーター [追加のビルド情報] を使用して、ソース ファイルとオブジェクト ファイルの場所をビルド プロセスに認識させます。
開発プロセスによっては、特定のマイクロプロセッサまたは開発ボード用のコードを生成したり、クロス開発システムを使用してターゲット ハードウェアにコードを展開したりする必要があることがあります。これらの目標を達成するには、ERT ベースのシステム ターゲット ファイルに対して、より広範な変更を行います。
量産要件に合わせて ERT ベースのシステム ターゲット ファイルをカスタマイズする方法については、ターゲット ハードウェア用のカスタム ソフトウェアを参照してください。
生成されたコード モジュールのカスタマイズ
モデル コンフィギュレーション パラメーター [ファイル パッケージ化形式] は、コード ジェネレーターが生成されたソース コードをファイルにパッケージ化する方法を指定します。このパラメーターは、[モジュラー]、[コンパクト (別々のデータ ファイル)]、および [コンパクト] に設定できます。次の表では、ファイル パッケージ化形式ごとに、生成されるファイルと削除されるファイルについて説明します。
ファイル パッケージ化形式別の生成されるファイル
| ファイル パッケージ化形式 | 生成されるファイル | 削除されるファイル |
|---|---|---|
モジュラー (既定の設定) |
サブシステム ファイル (オプション) Simulink 関数とエントリポイント関数を含むユーザー定義ファイル (オプション)
| なし |
コンパクト (別々のデータ ファイル) |
|
|
コンパクト |
|
|
次の表では、削除されるファイルからのコンテンツ配置について説明します。
ファイル パッケージ化形式別の削除されるファイル
| 削除されるファイル | ファイル内の生成されるコンテンツ |
|---|---|
| および |
| |
| |
参照モデルごとに異なるファイル パッケージ化形式を指定できます。
モデル コンフィギュレーション パラメーター [共有コードの配置] は、ファイル パッケージ化操作と相互作用します。[共有コードの配置] を [共有場所] に設定した場合、ファイル パッケージ化形式に関係なく、コード ジェネレーターは共有場所にユーティリティ コードの個別のファイルを生成します。[共有コードの配置] を [自動] に設定した場合、コード ジェネレーターは次のようにファイル パッケージ化形式の選択に従ってユーティリティのコードを生成します。
モジュラー: 一部の共有ユーティリティ ファイルはビルド フォルダー内に配置されます。コンパクト (別々のデータ ファイル): ユーティリティ コードは内に生成されます。model.cコンパクト: ユーティリティ コードは内に生成されます。model.c
ファイル パッケージ化形式の [コンパクト] および [コンパクト (別々のデータ ファイル)] では、以下を含むモデルに対して が生成されます。model_types.h
Variant Subsystem ブロック。
ファイルには、バリアント ブロックに関連付けられたバリアント オブジェクトを定義するプリプロセッサ命令が含まれます。model_types.h個別のヘッダー ファイルを生成するストレージ クラス。
ファイル パッケージ化形式の [コンパクト] および [コンパクト (別々のデータ ファイル)] は、以下と互換性がありません。
個別のソース ファイルを生成するように構成されているサブシステムを含むモデル
非インライン S-Function を含むモデル
[データ スコープ] が
[エクスポート]に設定されているデータ オブジェクトを使用する、[共有コードの配置] が[自動]に設定されているモデル
メモ
[ファイル パッケージ化形式] パラメーターは、[エクスポートされた関数をグローバルに可視として扱う] パラメーターを選択した Stateflow® チャートには影響しません。これらのエクスポートされた関数はグローバルであり、他のソース ファイルによって共有されます。したがって、関数は、他のソース ファイルでインクルードできる、関数宣言を含むヘッダーを生成しなければなりません。