このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
Target Language Compiler を使用する理由
Simulink® モデルから ANSI® C または C++ コードを生成するだけであれば、ファイルを Target Language Compiler 用に準備する方法は知らなくてかまいません。出力のカスタマイズが必要な場合は、Target Language Compiler を実行する必要があります。Target Language Compiler を使用して、以下のことを実行できます。
システム ターゲット ファイルで指定されたオプションのセットをカスタマイズ。
S-Function ブロック用にコードをインライン化。
追加またはさまざまなタイプのファイルの生成。
MATLAB Function ブロックと Embedded Coder® 製品には、コードのカスタマイズを容易にするさまざまな方法が用意されています。TLC ファイルを記述しなくても、それらを使用して必要なことを実現できる場合もあります。ただし、S-Function をインライン化する場合は TLC ファイルを準備する必要があります。
以下のセクションを参照してください。
出力のカスタマイズ
Target Language Compiler を使用してカスタマイズされた出力を生成するには、それらの関数がブロックで実行される方法、操作するデータ型、
ファイルの構造、および目的の出力を生成するためのターゲット ファイルの変更方法を理解していると役立ちます。ターゲット言語の命令とそれに関連する構成要素については、Target Language Compilerの命令と組み込み関数のトピックで説明しています。Target Language Compiler の命令と構成要素を使用して、必要に応じて既存のターゲット ファイルを変更するか新規に作成します。ターゲット ファイルの詳細については、TLC ファイルを参照してください。model
.rtw
メモ
それを行う機能がありますが、フォルダー
内の TLC ファイルをカスタマイズしないでください。このような TLC のカスタマイズはコード生成プロセス中に適用されない可能性があり、予期しない結果になることがあります。matlabroot
/rtw/c/tlc
S-Function のインライン化
Target Language Compiler では、かなり自由に生成コードを変更、最適化、拡張できます。TLC の最も重要な機能の 1 つは、独自のアルゴリズム、デバイス ドライバー、およびカスタム ブロックを Simulink モデルに追加するために記述する S-Function をインライン化できることです。
S-Function を作成するには、適切に定義されたアプリケーション プログラム インターフェイス (API) の後にコードを記述します。既定では、Target Language Compiler は、これと同じ API を使用してそれらを呼び出すインラインでない S-Function のコードを生成します。この一般化されたインターフェイスでは、モデル内の各 S-Function ブロックに対する SimStruct
という大規模なデータ構造体がインスタンスごとに保持されるため、かなりの量のオーバーヘッドが生じます。さらに、S-Function 内のメソッド (関数) を呼び出すたびに追加の実行時オーバーヘッドが発生します。このオーバーヘッドは、Target Language Compiler を使用して S-Function をインライン化すると排除できます。そのためには、組み込みブロックと同じように S-Function のソース コードを生成する
という名前の TLC ファイルを作成します。S-Function をインライン化すると、生成コードの効率性が向上し、メモリ使用量が削減されます。sfunction_name
.tlc
高度なストレージ クラスの定義
入れ子にされた構造体などの特定のデータ レイアウトについては、ストレージ クラスの標準のタイプである Unstructured
や FlatStructure
では生成できません。他のタイプのデータを生成する場合は "高度なストレージ クラス" を定義できます。高度なストレージ クラスを作成するには、TLC プログラミングを理解し、カスタム ストレージ クラス デザイナーの特別な詳細モードを使用する必要があります。詳細については、ストレージ クラスの TLC コードの記述によるデータ表現の詳細な制御 (Embedded Coder)を参照してください。このサポートには Embedded Coder ライセンスが必要であることに注意してください。