Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

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

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

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

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

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

コード生成およびビルド プロセスの最中にコード ジェネレーターは 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] オプションが有効。

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 をインクルードします。このファイルには以下が含まれます。

詳細については、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® エントリ ポイント

  • 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 ステートメント、および列挙を提供します。

ERT システム ターゲット ファイルでは、次のいずれかの条件が満たされる場合にのみコード ジェネレーターで rtwtypes.h が作成されます。

  • Data type replacement (Embedded Coder)[Coder の typedef を使用] に設定されている。

  • Data type replacement (Embedded Coder)[固定幅の整数の C データ型を使用] に設定されており、Coder typedefs compatibility (Embedded Coder)が選択されている。使用しているカスタムのレガシ コード ファイルまたは静的なソース ファイル (matlabroot の下) が Simulink Coder のデータ型定義を必要とする場合、この設定により rtwtypes.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);

model.h および model.c 以外のファイルでモデルのエントリポイント関数を生成するには、Embedded Coder ディクショナリで、関数カスタマイズ テンプレートを使用します。詳細については、Configure Default C Code Generation for Categories of Data Elements and Functions (Embedded Coder)を参照してください。

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

コンフィギュレーション パラメーター [データ型置換][Coder の typedef を使用] に設定されている場合、生成コードには rtwtypes.h が含まれます。ヘッダー ファイル rtwtypes.h は生成コードに必要なデータ型、構造、およびマクロを定義します。

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

メモ

C99 言語規格が策定される以前には、サイズの決められた整数に関して普遍的に受け入れられるデータ型がありませんでした。C99 規格はヘッダー ファイル stdint.h および stdbool.h を規定しています。stdint.h ファイルには、以前使用できなかった、サイズ設定された整数の実装が含まれます。

C 言語のこの機能に対応するため、生成コードでは int8_Tuint32_T などのサイズ設定された整数型を使用しますが、これらは標準的な C の型ではありません。rtwtypes.h 内の生成コードは、[コンフィギュレーション パラメーター] ダイアログ ボックスの [ハードウェア実行] ペインにある情報を使用して、これらのサイズ設定された整数型を対応する C のキーワード基本データ型にマッピングします。

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

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

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

最適化された rtwtypes.h ファイルには、モデルのハードウェア構成に固有の定義が含まれます。

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

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

uint32_T myvar

場合によっては、まず mex コマンドによって S-Function、カスタム ソース ファイルがコンパイルされ、次にコード生成ビルドによってコンパイルされます。mex によるコンパイル中に、通常 rtwtypes.h は使用できません。通常は rtwtypes.h によって指定される定義を取得するために、カスタム ソース ファイルは条件付きで (MATLAB_MEX_FILE のマクロ定義経由で) tmwtypes.h をインクルードできます。

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

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

#include "rtwtypes.h"

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

コンフィギュレーション パラメーター [データ型置換][固定幅の整数の C データ型を使用] に設定されている場合、コード ジェネレーターは rtwtypes.h を作成しません。生成コードが rtwtypes.h 内の定義を必要としないためです。生成コードの使用する静的ファイルが matlabroot の下にあり、Simulink Coder のデータ型定義を必要とする場合、ソフトウェアは簡易バージョンの rtwtypes.h を生成します。カスタム コードに rtwtypes.h がインクルードされている場合は、[Coder の typedef 互換性] チェック ボックスをオンにすることで、簡易バージョンの rtwtypes.h の生成を強制できます。

 簡易化された rtwtypes.h

関連するトピック