このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
ビルド プロセスのファイルの管理
生成されるコード ソースとヘッダー ファイルをビルド プロセスから適用する場合、ビルド プロセスで生成されるファイルと、ファイルの生成を制御する条件について理解しておくと役立ちます。この情報により、次のような生成されたコード リソースにアクセスできるようになります。
モデルのエントリ ポイントへのパブリック インターフェイス
組み込みデータ型に対応する列挙型
モデルの信号、状態およびパラメーターを記述するデータ構造
コード生成およびビルド プロセスの最中にコード ジェネレーターは
ファイルを作成します。生成されたヘッダー ファイル、ソース ファイルおよびデータ ファイルのファイル名をカスタマイズできます。詳細については、Customize Generated File Namesを参照してください。共有ユーティリティやモデル参照をサポートするために、コード ジェネレーターは追加のフォルダーや依存関係ファイルも作成します。ビルド プロセスで作成されるフォルダーの詳細については、ビルド プロセスのフォルダーの管理を参照してください。プロジェクトを使用してビルド プロセス フォルダーを管理する方法を示す例については、プロジェクトでのコードの生成とモデルのシミュレーションを参照してください。model
.*
モデルのアーキテクチャおよびコード生成オプションによっては、ERT ベースのシステム ターゲット ファイルのビルド プロセスでは生成されないファイルが、GRT ベースのシステム ターゲット ファイルのビルド プロセスでは生成される可能性があります。また、ERT ベースのシステム ターゲット ファイルのビルド プロセスでは、GRT ベースのシステム ターゲット ファイルの場合とは異なる方法で生成ファイルがパッケージングされます。Manage File Packaging of Generated Code Modulesを参照してください。
メモ
既定では、ビルド プロセスによってビルド フォルダー内の外部の (生成されていない) ソース ファイルは削除されます。ビルド フォルダーでの外部コード ファイルの保持のガイドラインに従って、外部のソース ファイルをビルド フォルダーに保持することができます。
次の表では、主要な生成ファイルについて説明します。表に示されている生成されたファイル名の中の model
は、コードを生成しているモデルの名前を表します。subsystem
はモデル内のサブシステムの名前を表します。[コード生成レポートを作成] パラメーターを選択した場合、コード ジェネレーターによって一連の HTML ファイルが生成されます。ビルド フォルダーの html
サブフォルダーには、ソース ファイルごとに 1 つの HTML ファイルと、model
_contents.html
インデックス ファイルがあります。次の表のソースおよびヘッダー ファイルには依存関係があります。その他のファイルの依存関係については、ビルド プロセスのファイルの依存関係の管理およびビルド プロセスの依存関係の追加を参照してください。
ファイル | 説明 |
---|---|
| 組み込みデータ型に対応する列挙型を定義します。 次の条件の 1 つ以上が当てはまる場合、モデルのビルドによってこのファイルが生成されます。
|
| コンパイラ環境の設定と このファイルの使用方法の詳細については、model.batを参照してください。 |
| モデル ファイルに対応します。 Target Language Compiler はこの C または C++ ソース コード ファイルを生成します。このファイルには以下のものが含まれています。
|
| 実行可能プログラム ファイル。 コード ジェネレーターがコードのみを生成するように明示的に指定した場合を除いて、モデルのビルドによってこのファイルが生成されます。開発システムの |
| モデル エントリ ポイントとデータ構造にモデル データ構造体とパブリック インターフェイスを定義します。アクセス マクロを介してリアルタイム モデル データの構造体 ( モデル内のサブシステムの
詳細については、model.hを参照してください。 |
| 生成された makefile。開発システムの
|
| コンパイルされたモデルを表します。 既定の設定では、ビルド プロセスが完了するとこの ASCII ファイルは削除されます。このファイルを検査用に保持することもできます。 |
| エクスターナル モードを使用せずにモデルの信号、状態およびパラメーターを記述するデータ構造が含まれます。 詳細については、C API を使用した生成コードと外部コードの間のデータ交換を参照してください。 |
| (条件付きで生成された場合) モデル内で使用されるパラメーター データ構造体と定数ブロック I/O データ構造体の宣言および構造体データ型のゼロ表現が含まれます。 モデルがこれらのデータ構造体を使用する場合にモデルのビルドによってこのファイルが生成されます。構造体の
|
| エクスターナル モードをサポートするために、生成されたモデル データ構造体のデータ型およびデータ型変換の情報を含む構造体を宣言します。 |
| モデルとサブシステムのローカル モデルのビルドによって生成されたソース ファイルはこのファイルをインクルードします。モデルから作成されたコードと外部コードのインターフェイスを作成する場合、
詳細については、ビルド プロセスのファイルの依存関係の管理を参照してください。 |
| タイミング ブリッジの型定義を含んでいます。 参照モデル、またはモデル参照ブロックを含むモデルの場合、モデルのビルドによってこのファイルが生成されます。 |
| エクスターナル モードでエクスターナル モード接続の初期化に使用される MATLAB® 言語コマンドが含まれます。 |
| リアルタイム モデル データ構造体とパラメーター データ構造体のための事前宣言を与えます。 モデルのビルドによって生成されたヘッダー ファイルにこのファイルがインクルードされます。再利用可能な関数の関数宣言でこれらの構造体が使用される場合があります。 |
| マルチワード幅のデータ型の型定義およびそのワードサイズのチャンクが含まれます。コードがマルチワード データ型を使用する場合は、このヘッダー ファイルを含めます。 次の条件の 1 つ以上が当てはまる場合、モデルのビルドによってこのファイルが生成されます。
|
|
次の 1 つ以上の条件が当てはまる場合、モデルのビルドによってこれらのファイルが生成されます。
|
|
コード生成時にビルド プロセスではこれらのモジュールは作成されません。モデル固有のデータ構造体およびエントリ ポイントにアクセスするために、モジュールは |
| 型定義、 ERT システム ターゲット ファイルでは、次のいずれかの条件が満たされる場合にのみコード ジェネレーターで
GRT インターフェイスを生成せずインラインでない S-Function も含んでいない ERT ベースのシステム ターゲット ファイルの場合、 詳細については、rtwtypes.hおよびビルド プロセスのファイルの依存関係の管理を参照してください。 |
| マーカー ファイル。 生成コードをいつ再コンパイルしてリンクするかを |
| 特殊な数学的な定数 (π および e など) の型定義を含み、 生成コードが数学的な定数の定義を必要とする場合、または関数本体が必要なモデル関数の引数にアクセスできない場合、モデルのビルドによってこのファイルが生成されます。 |
| インラインでない S-Function がモデル内で使用する関数を提供します。 インラインでない S-Function は関数 |
| 別のファイルにコードを配置するようにサブシステムが構成されている場合、インラインでない各非バーチャル サブシステムの C ソース コードが含まれます。 |
| インラインでない非バーチャル サブシステムのエクスポートされたシンボルが含まれます。 |
model
.bat
このファイルにはコンパイラ環境の設定と make
ユーティリティの起動を行う Windows バッチ ファイル コマンドが含まれます。
ビルド プロセスでツールチェーン アプローチを使用している場合、このバッチ ファイルを使用して、生成された makefile
から情報を抽出できます。この情報には、model
.mkCFLAGS
(C コンパイラ フラグ) や CPP_FLAGS
(C++ コンパイラ フラグ) などの makefile に出現するマクロ定義と値が含まれています。
を含むフォルダーを現在の作業フォルダーとして選択し、コマンド ウィンドウで次を入力します。model
.bat
>> system('model.bat info')
UNIX および Macintosh プラットフォームでは、コード ジェネレーターは
ファイルを生成しません。これらのシステムで、生成された makefile からツールチェーン アプローチのビルドの情報を抽出するには、コマンド ウィンドウで以下を入力します。model
.bat
>> 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
以外のファイルでモデルのエントリポイント関数を生成するには、Embedded Coder ディクショナリで、関数カスタマイズ テンプレートを使用します。詳細については、Configure Default C Code Generation for Categories of Data Elements and Functionsを参照してください。model
.c
main.c
(または .cpp
) ファイルは
をインクルードします。モデルのビルドによって TLC スクリプトから model
.hmain.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 言語では、char
、int
などの型のビット数の標準を定めていません。
メモ
C99 言語規格が策定される以前には、サイズの決められた整数に関して普遍的に受け入れられるデータ型がありませんでした。C99 規格はヘッダー ファイル stdint.h
および stdbool.h
を規定しています。stdint.h
ファイルには、以前使用できなかった、サイズ設定された整数の実装が含まれます。
C 言語のこの機能に対応するため、生成コードでは int8_T
、uint32_T
などのサイズ設定された整数型を使用しますが、これらは標準的な C の型ではありません。rtwtypes.h
内の生成コードは、[コンフィギュレーション パラメーター] ダイアログ ボックスの [ハードウェア実行] ペインにある情報を使用して、これらのサイズ設定された整数型を対応する C のキーワード基本データ型にマッピングします。
モデルに非インライン化 S-Function が含まれていない場合、コード ジェネレーターは、ERT ベースのシステム ターゲット ファイル用に最適化されたバージョンの rtwtypes.h
を生成します。最適化された rtwtypes.h
ファイルには、モデルのハードウェア構成に固有の定義が含まれます。
rtwtypes.h
の場所は、ビルド プロセスが "共有ユーティリティ" の場所を使用するかどうかによって異なります。共有場所を使用する場合、コード ジェネレーターは rtwtypes.h
を slprj/target/_sharedutils
に配置します。それ以外の場合は、rtwtypes.h
をビルド フォルダー (
) に配置します。生成されたコードのインターフェイスの指定およびControl Placement of rtwtypes.h for Shared Utility Codeを参照してください。model
_target
_rtw
ソース ファイルがコード ジェネレーターの型名などのコード ジェネレーターの定義を使用する場合、ソース ファイルは 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
の生成を強制できます。