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

ビルド プロセスのファイルの管理

生成されるコード ソースとヘッダー ファイルをビルド プロセスから適用する場合、ビルド プロセスで生成されるファイルと、ファイルの生成を制御する条件について理解しておくと役立ちます。この情報により、次のような生成されたコード リソースにアクセスできるようになります。

  • モデルのエントリ ポイントへのパブリック インターフェイス

  • 組み込みデータ型に対応する列挙型

  • モデルの信号、状態およびパラメーターを記述するデータ構造

コード生成およびビルド プロセスの最中にコード ジェネレーターは model.* ファイルを作成します。生成されたヘッダー ファイル、ソース ファイルおよびデータ ファイルのファイル名をカスタマイズできます。詳細については、Customize Generated File Names (Embedded Coder)を参照してください。共有ユーティリティやモデル参照をサポートするために、コード ジェネレーターは追加のフォルダーや依存関係ファイルも作成します。ビルド プロセスで作成されるフォルダーの詳細については、ビルド プロセスのフォルダーの管理を参照してください。プロジェクトを使用してビルド プロセス フォルダーを管理する方法を示す例については、プロジェクトでのコードの生成とモデルのシミュレーションを参照してください。

モデルのアーキテクチャおよびコード生成オプションによっては、ERT ベースのシステム ターゲット ファイルのビルド プロセスでは生成されないファイルが、GRT ベースのシステム ターゲット ファイルのビルド プロセスでは生成される可能性があります。また、ERT ベースのシステム ターゲット ファイルのビルド プロセスでは、GRT ベースのシステム ターゲット ファイルの場合とは異なる方法で生成ファイルがパッケージングされます。Manage File Packaging of Generated Code Modules (Embedded Coder)を参照してください。

メモ

既定では、ビルド プロセスによってビルド フォルダー内の外部の (生成されていない) ソース ファイルは削除されます。ビルド フォルダーでの外部コード ファイルの保持のガイドラインに従って、外部のソース ファイルをビルド フォルダーに保持することができます。

次の表では、主要な生成ファイルについて説明します。表に示されている生成ファイルの名前の中の model は、コードを生成しているモデルの名前を表します。subsystem はモデル内のサブシステムの名前を表します。[コード生成レポートを作成] パラメーターを選択した場合、コード ジェネレーターによって一連の HTML ファイルが生成されます。ビルド フォルダーの html サブフォルダーには、ソース ファイルごとに 1 つの HTML ファイルと、model_contents.html インデックス ファイルがあります。次の表のソースおよびヘッダー ファイルには依存関係があります。その他のファイルの依存関係については、ビルド プロセスのファイルの依存関係の管理およびビルド プロセスの依存関係の追加を参照してください。

ファイル説明

builtin_typeid_types.h

組み込みデータ型に対応する列挙型を定義します。

次の条件の 1 つ以上が当てはまる場合、モデルのビルドによってこのファイルが生成されます。

  • メッセージを使用する Stateflow チャートがモデルに含まれている。

  • モデル コンフィギュレーションで [MAT ファイルのログ] が有効。

  • モデル コンフィギュレーションで [コード生成][インターフェイス] の [C API] オプションが有効。

modelsources.txt

コンパイルに含まれる追加ソースの一覧です。

model.bat

コンパイラ環境の設定と make ユーティリティの起動を行う Windows® バッチ ファイル コマンドが含まれます。

このファイルの使用方法の詳細については、model.batを参照してください。

model.c

model.cpp

モデル ファイルに対応します。

Target Language Compiler はこの C または C++ ソース コード ファイルを生成します。このファイルには以下のものが含まれています。

  • インクルード ファイルの model.hmodel_private.h

  • model_data.c に配置されるデータを除くデータ

  • モデル固有のスケジューラ コード

  • モデル固有のソルバー コード

  • モデルの登録コード

  • アルゴリズム コード

  • オプションの GRT ラッパー関数

model.exe (Windows プラットフォーム)

model (UNIX® および Macintosh プラットフォーム)

実行可能プログラム ファイル。

コード ジェネレーターがコードのみを生成するように明示的に指定した場合を除いて、モデルのビルドによってこのファイルが生成されます。開発システムの make ユーティリティの制御の下で、実行可能ファイルがビルドによって (ビルド フォルダーではなく) 現在のフォルダーに生成されます。

model.h

モデル エントリ ポイントとデータ構造にモデル データ構造体とパブリック インターフェイスを定義します。アクセス マクロを介してリアルタイム モデル データの構造体 (model_rtM) へのインターフェイスを提供します。

モデル内のサブシステムの .c または .cpp ファイルは model.h をインクルードします。このファイルには以下が含まれます。

  • エクスポートされた Simulink® データ シンボル

  • エクスポートされた Stateflow® マシンが親のデータ

  • モデル データ構造体、rtM を含む。

  • モデルのエントリポイント関数

詳細については、model.hを参照してください。

model.mk

生成された makefile。開発システムの make ユーティリティによる生成コードの最終的なバイナリ ファイルへのコンパイルおよびリンクを制御します。

MAKEFLAGS 環境変数を設定する場合、ビルド プロセスによって使用される現在の make ユーティリティと競合するオプションをこの変数と一緒に選択しないでください。

model.rtw

コンパイルされたモデルを表します。

既定の設定では、ビルド プロセスが完了するとこの ASCII ファイルは削除されます。このファイルを検査用に保持することもできます。

model_capi.h

model_capi.c

(オプション ファイル) エクスターナル モードを使用せずにモデルの信号、状態およびパラメーターを記述するデータ構造が含まれます。

詳細については、C API を使用した生成コードと外部コードの間のデータ交換を参照してください。

model_data.c

(条件付きで生成された場合) モデル内で使用されるパラメーター データ構造体と定数ブロック I/O データ構造体の宣言および構造体データ型のゼロ表現が含まれます。

モデルがこれらのデータ構造体を使用する場合にモデルのビルドによってこのファイルが生成されます。構造体の extern 宣言は model.h の中にあります。このファイルが存在する場合、その中には次の内容が含まれています。

  • 定数ブロック I/O パラメーター

  • インクルード ファイルの model.hmodel_private.h

  • モデルで使用されるユーザー定義の構造体データ型のゼロ表現の定義

  • 定数パラメーター

model_dt.h

(オプション ファイル) エクスターナル モードをサポートするために、生成されたモデル データ構造体のデータ型とデータ型の変換情報を含む構造体を宣言します。

model_private.h

モデルとサブシステムのローカル define 定数とローカル データが含まれます。

モデルのビルドによって生成されたソース ファイルはこのファイルをインクルードします。モデルから作成されたコードと外部コードのインターフェイスを作成する場合、model_private.h をインクルードします。このファイルには以下のものが含まれています。

  • インポートされた Simulink データ シンボル

  • インポートされた Stateflow マシンが親のデータ

  • Stateflow エントリ ポイント

  • Simulink Coder™ の詳細 (各種のマクロ、enum などのコードのプライベートな部分)

詳細については、ビルド プロセスのファイルの依存関係の管理を参照してください。

model_reference_types.h

タイミング ブリッジの型定義を含んでいます。

参照モデル、またはモデル参照ブロックを含むモデルの場合、モデルのビルドによってこのファイルが生成されます。

model_targ_data_map.m

(オプション ファイル) エクスターナル モードでエクスターナル モード接続の初期化に使用される MATLAB® 言語コマンドが含まれます。

model_types.h

リアルタイム モデル データ構造体とパラメーター データ構造体のための事前宣言を与えます。

モデルのビルドによって生成されたヘッダー ファイルにこのファイルがインクルードされます。再利用可能な関数の関数宣言でこれらの構造体が使用される場合があります。

multiword_types.h

マルチワード幅のデータ型の型定義およびそのワードサイズのチャンクが含まれます。コードがマルチワード データ型を使用する場合は、このヘッダー ファイルを含めます。

次の条件の 1 つ以上が当てはまる場合、モデルのビルドによってこのファイルが生成されます。

  • モデルでマルチワード データ型が使用されている。

  • モデル コンフィギュレーションで [MAT ファイルのログ] が有効。

  • モデル コンフィギュレーションで [コード生成][インターフェイス][エクスターナル モード] が有効。

rtGetInf.c

rtGetInf.h

rtGetNaN.c

rtGetNaN.h

rt_nonfinite.c

rt_nonfinite.h

inf、マイナス inf および nan に対するグローバル非有限値の宣言と初期化を行います。非有限比較関数を提供します。

次の 1 つ以上の条件が当てはまる場合、モデルのビルドによってこれらのファイルが生成されます。

  • モデルは S-Function を含む

  • モデルから生成されたコードが非有限数を必要とする。

  • モデル コンフィギュレーションで [MAT ファイルのログ] が有効。

  • モデル コンフィギュレーションの [システムターゲットファイル][grt.tlc] が選択されていて [クラシック コール インターフェイス] が有効。

rtmodel.h

rt_main.c など、静的なメイン プログラム モジュールに必要な #include 命令を含む。

コード生成時にビルド プロセスではこれらのモジュールは作成されません。モデル固有のデータ構造体およびエントリ ポイントにアクセスするために、モジュールは rtmodel.h をインクルードします。独自のメイン プログラム モジュールを作成する場合は、rtmodel.h を必ずインクルードしてください。

rtwtypes.h

実質的な型の宣言、#define ステートメントおよび列挙型を提供します。

GRT ベースのシステム ターゲット ファイルでは、rtwtypes.hsimstruc_types.h をインクルードし、このファイルは今度は tmwtypes.h をインクルードします。

GRT インターフェイスを生成せずインラインでない S-Function も含んでいない ERT ベースのシステム ターゲット ファイルの場合、rtwtypes.hsimstruc_types.h をインクルードしません。

詳細については、rtwtypes.hおよびビルド プロセスのファイルの依存関係の管理を参照してください。

rtw_proj.tmw

sl_proj.tmw

マーカー ファイル。

生成コードをいつ再コンパイルしてリンクするかを make ユーティリティが判断するのを助けるために、ビルド プロセスでこれらのファイルが生成されます。

rt_defines.h

特殊な数学的な定数 (π および e など) の型定義を含み、UNUSED_PARAMETER マクロを定義します。

生成コードが数学的な定数の定義を必要とする場合、または関数本体が必要なモデル関数の引数にアクセスできない場合、モデルのビルドによってこのファイルが生成されます。

rt_sfcn_helper.h

rt_sfcn_helper.c

(オプション ファイル) インラインでない S-Function がモデル内で使用する関数を提供します。

インラインでない S-Function は関数 rt_CallSysrt_enableSys および rt_DisableSys を使用して下流の Function-Call Subsystem を呼び出します。

subsystem.c

(オプション ファイル) 別のファイルにコードを配置するようにサブシステムが設定されている場合、インライン化されていない各非バーチャル サブシステムまたはそのコードのコピーの C ソース コードが含まれます。

subsystem.h

(オプション ファイル) インライン化されていない非バーチャル サブシステムのエクスポートされたシンボルが含まれます。

model.bat

このファイルにはコンパイラ環境の設定と make ユーティリティの起動を行う Windows バッチ ファイル コマンドが含まれます。

ビルド プロセスでツールチェーン アプローチを使用している場合、このバッチ ファイルを使用して、生成された makefile model.mk から情報を抽出できます。この情報には、CFLAGS (C コンパイラ フラグ) や CPP_FLAGS (C++ コンパイラ フラグ) などの makefile に出現するマクロ定義と値が含まれています。model.bat を含むフォルダーを現在の作業フォルダーとして選択し、コマンド ウィンドウで次を入力します。

>> system('model.bat info')

UNIX および Macintosh プラットフォームでは、コード ジェネレーターは model.bat ファイルを生成しません。これらのシステムで、生成された makefile からツールチェーン アプローチのビルドの情報を抽出するには、コマンド ウィンドウで以下を入力します。

>> system('gmake -f model.mk info')

model.h

ヘッダー ファイル model.h は、モデル エントリ ポイントとデータ構造にモデル データ構造体とパブリック インターフェイスを宣言します。また、このヘッダー ファイルはアクセス マクロを使用してリアルタイム モデル データ構造体 (model_M) にインターフェイスを与えます。コードがモデル関数またはモデル データ構造体とインターフェイスで接続する場合は、model.h を含めます。

  • エクスポートされたグローバルな信号

    extern int32_T INPUT;    /* '<Root>/In' */
  • グローバルな構造体の定義

    /* Block parameters (auto storage) */
    extern Parameters_mymodel mymodel_P;
  • リアルタイム モデル (RTM) のマクロ定義

    #ifndef rtmGetSampleTime
    # define rtmGetSampleTime(rtm, idx) 
    ((rtm)->Timing.sampleTimes[idx])
    #endif
  • モデル エントリ ポイント関数 (ERT 例)

    extern void mymodel_initialize(void);
    extern void mymodel_step(void);
    extern void mymodel_terminate(void);

main.c (または .cpp) ファイルは model.h をインクルードします。モデルのビルドによって TLC スクリプトから main.c (または .cpp) ファイルが生成される場合、TLC ソースでは model.h をインクルードできます。

#include "%<CompiledModel.Name>.h"

main.c が静的なソース ファイルの場合、固定のヘッダー ファイル名 rtmodel.h を使用できます。このファイルは model.h ヘッダー ファイルを含みます。

#include "model.h"     /* If main.c is generated */

または

#include "rtmodel.h"   /* If static main.c is used */

モデル データ (たとえば、エクスポートされたグローバルなパラメーターや信号) とのインターフェイスを作成するために、他の外部ソース ファイルが model.h をインクルードする必要が生じる場合があります。生成コードの要件のため、model.h ファイル自体が追加のヘッダー依存関係をもつ場合があります。システム ヘッダー ファイルおよびコード ジェネレーター ヘッダー ファイルを参照してください。

依存関係を減らしてインクルードされるヘッダー ファイルの数を減らすには、ビルド プロセスのファイルの依存関係の管理を参照してください。

rtwtypes.h

ヘッダー ファイル rtwtypes.h は生成コードに必要なデータ型、構造、およびマクロを定義します。GRT および ERT システム ターゲット ファイルの場合、tmwtypes.h または simstruc_types.h をインクルードする代わりに rtwtypes.h をインクルードします。

生成コードが特定の値の整数演算オーバーフローまたはアンダーフローを必要とする場合がよくあります。たとえば、コードが 16 ビットの整数を予期しているときには、8 ビットまたは 32 ビットの整数型をコードは受け入れません。C 言語では、charint などの型のビット数の標準を定めていません。このため、サイズが決められた整数の使用に関して、C で普遍的に受け入れられるデータ型はありません。

C 言語のこの特徴に対応するため、生成コードでは C の標準の型ではない int8_Tuint32_T などの、サイズが決められた整数型を使用します。生成コードでは rtwtypes.h の中で、コンフィギュレーション パラメーターの [ハードウェア実行] ペイン内の情報を使用して、これらのサイズが決められた整数型を対応する C のキーワード基本データ型にマッピングします。

次の条件が適用される場合、コード ジェネレーターは、ERT ベースのシステム ターゲット ファイルに対して最適化されたバージョンの rtwtypes.h を生成します。

  • [コンフィギュレーション パラメーター][コード生成][インターフェイス][詳細設定パラメーター][クラシック コール インターフェイス] が選択されていない。

  • モデルがインラインでない S-Function を含まない。

rtwtypes.h を含めます。GRT システム ターゲット ファイルでインクルードした場合、たとえば、より容易にコードを ERT ベースのシステム ターゲット ファイルと併用することができます。

GRT および ERT システム ターゲット ファイルの場合、rtwtypes.h の場所はビルド プロセスが "共有ユーティリティ" の場所を使用するかどうかによって異なります。共有されている場所を使用する場合、コード ジェネレーターは rtwtypes.hslprj/target/_sharedutils に配置します。それ以外の場合は、rtwtypes.h をビルド フォルダー (model_target_rtw) に配置します。生成されたコードのインターフェイスの指定を参照してください。

ソース ファイルがコード ジェネレーターの型名などのコード ジェネレーターの定義を使用する場合、ソース ファイルは rtwtypes.h ヘッダー ファイルをインクルードします。典型的な例は、コード ジェネレーターのデータ型 (たとえば、uint32_T myvar) を使用して変数を宣言するファイルです。

コード ジェネレーターおよび S-Function によって使用されるソース ファイルでは、プリプロセッサ マクロ MATLAB_MEX_FILE を使用できます。次のマクロ定義は mex 関数のものです。

#ifdef  MATLAB_MEX_FILE
#include "tmwtypes.h"
#else
#include "rtwtypes.h"
#endif

コード ジェネレーター用のソース ファイル main.c (または .cpp) では、プリプロセッサのチェックなしで rtwtypes.h がインクルードされます。

#include "rtwtypes.h"

Target Language Compiler が生成するカスタム ソース ファイルでは、その生成ファイル内にこれらの include ステートメントを出力することもできます。

共有ユーティリティ コード用の rtwtypes.h の配置の制御を参照してください。

関連するトピック