Main Content

Target Language Compiler の基礎

Target Language Compiler の概要

Target Language Compiler (TLC) はコード ジェネレーターに不可欠な部分です。これにより、生成されたコードをカスタマイズできます。カスタマイズによって、プラットフォーム固有のコードを生成したり、パフォーマンス、コード サイズ、既存のメソッドとの互換性用に独自のアルゴリズムの変更を組み込むこともできます。

TLC には次が含まれます。

  • 提供された Simulink® ブロックのサブセットに対応するファイル。

  • ヘッダーやパラメーターの情報を指定するモデル全体の情報のファイル。

TLC ファイルは、コードの生成方法を明示的に制御する ASCII ファイルです。TLC ファイルを編集することでコードの生成方法を変更できます。

Target Language Compiler には、ANSI® C または C++ コードを生成するためにすぐに使用できる TLC ファイルの完全なセットが用意されています。それらの TLC ファイルを表示して、小さいものから大きいものまで任意に変更を加えることができます。このオープンな環境により、非常に柔軟に生成コードをカスタマイズできます。

詳細については、C/C++ S-Function の実装を参照してください。関数 mdlRTW() に重点を置いて、ラップされた S-Function と完全にインライン化された S-Function の記述方法について説明しています。

メモ

機能はありますが、フォルダー matlabroot/rtw/c/tlc 内の TLC ファイルをカスタマイズしないでください。このような TLC のカスタマイズはコード生成プロセス中に適用されない可能性があり、予期しない結果になることがあります。

TLC プロセスの概要

次の最上位レベルの図は、Target Language Compiler がコード生成プロセスにどのように適合するかを示しています。

Target Language Compiler (TLC) は、モデル記述ファイル model.rtw (または同様のファイル) をターゲット固有のコードまたはテキストに変換するように設計されています。

Target Language Compiler は、model.rtw という Simulink ブロック線図の表現を C または C++ コードに変換します。model.rtw ファイルにはモデルの部分表現が格納されています。この表現は、高水準言語でのブロック線図の実行セマンティクスを記述したものです。詳細については、model.rtw ファイルとスコープを参照してください。

Target Language Compiler は、model.rtw ファイルを読み取った後、各ブロックの特定のコードを指定する "ターゲット ファイル" と全体的なコード スタイルを指定する "モデル全体のファイル" に基づいてコードを生成します。TLC では、ターゲット ファイルと model.rtw ファイルを使用して ANSI C または C++ コードを生成します。

コード ジェネレーターでは、ターゲット固有のアプリケーションを作成するために、ビルド プロセス用の C または C++ コンパイラとコンパイラ オプションを指定するテンプレート makefile が必要です。コード ジェネレーターは、それぞれのモデルに固有のトークン拡張を実行して、テンプレート makefile をターゲット makefile (model.mk) に変換します。ターゲット makefile は、汎用の rt_main ファイル (grt_main) を変更したバージョンです。割り込みサービス ルーチンなど、ターゲットの特定の要件に準拠するように grt_main を変更する必要があります。テンプレート makefile と make オプションおよびテンプレート makefile のカスタマイズを参照してください。

Target Language Compiler には、HTML、Perl、および MATLAB® と類似点があります。HTML のようなマークアップ構文があり、Perl や他のスクリプティング言語の能力と柔軟性を備え、MATLAB と同等のデータ処理能力をもっています (TLC から MATLAB 関数を呼び出すことができます)。TLC で生成されたコードは、高度に最適化され、完全にコメント化されています。TLC では、線形、非線形、連続、離散、またはハイブリッドの Simulink モデルからコードを生成できます。モデルには、自動的にコードに変換される Simulink ブロックを含めることができます。例外は、MATLAB ファイルを呼び出す MATLAB Function ブロックと S-Function ブロックです。Target Language Compiler は、"ブロック ターゲット ファイル" を使用して model.rtw ファイル内の各ブロックを変換します。コードの全体的なカスタマイズには "モデル全体のターゲット ファイル" を使用します。

C MEX S-Function については、生成コードでプログラムの実行可能ファイルに組み込むことができます。C MEX S-Function のターゲット ファイルを記述して S-Function を "インライン化" すると (C MEX S-Function のインライン化を参照)、S-Function 自体の関数呼び出しと S-Function の SimStruct によるメモリのオーバーヘッドを排除してパフォーマンスを改善できます。S-Function をインライン化すると、S-Function ブロックのコードがモデルの生成コードに組み込まれます。S-Function で TLC ターゲット ファイルがないものについては、その C または C++ コードのファイルが関数呼び出しを通して呼び出されます。S-Function のインライン化を参照してください。MATLAB 言語ファイルや Fortran S-Function のターゲット ファイルも記述できます。

コード生成プロセスの概要

Target Language Compiler は、そのターゲット ファイルとコード ジェネレーターの出力を使用してコードを生成します。

Simulink モデルからコードを生成する際の自動化されたプロセスの最初のステップは、model.rtw ファイルの生成です。model.rtw ファイルには、Simulink モデルからコードを生成するために必要なモデル固有の情報が含まれます。model.rtw は Target Language Compiler に渡され、それに含まれている一連のシステム ターゲット ファイルおよびブロック ターゲット ファイルと一緒にコード生成に使用されます。

現在のフォルダーに直接書き込まれるのは、最終的な実行可能ファイルだけです。コード生成中に作成された他のファイル (model.rtw ファイルを含む) にはビルド フォルダーが使用されます。このフォルダーは、現在のフォルダー内に作成され、model_target_rtw という名前が付けられます。target はターゲット環境の省略形で、汎用リアルタイム ターゲット grt です。

ビルド フォルダーに配置されるファイルには以下が含まれます。

  • 生成された C または C++ ソース コードの本体 (model.c または model.cpp)

  • ヘッダー ファイル (model.h)

  • 生成コードのプライベートのパラメーターとデータ構造体を定義するヘッダー ファイル (model_private.h)

  • アプリケーションをビルドするための makefile (model.mk)

  • 追加ファイル (ビルド プロセスのファイルの管理を参照)

関連するトピック