Real-Time Workshop User's Guide | ![]() ![]() |
システムターゲットファイルの構造
この節では、システムターゲットファイルの構造と内容を説明します。この節を読むと、Real-Time Workshopに付属するシステムターゲットファイルを参照したい場合があります。これらのファイルのほとんどは、matlabroot
\rtw\c
のターゲット固有のディレクトリに格納されています。その他のターゲットシステムファイルは、matlabroot
\toolbox\rtw\targets\rtwin\rtwin
およびmatlabroot
\toolbox\rtw\targets\xpc\xpc
に格納されています。
システムターゲットファイルを作成または修正する前に、Target Language Compilerでの作業に関する知識を習得する必要があります。Target Language Compiler Reference Guideは、言語の機能と文法を説明しています。
図 17-2は、システムターゲットファイルの一般的な構造を示しています。
ブラウザのコメント
この節はオプションです。ファイルの先頭にコメント行を置いて、System Target File Browserでシステムターゲットファイルを識別します。これらの行は、ブラウザに対してのみ意味があります。コード生成中に、Target Language Compilerはこれらをコメントとして取り扱います。
ブラウザのコメントは、その他のコメントまたはTLCのステートメントの前の、ファイルの先頭に置かなければなりません。
make
コマンドです。ターゲットが選択されると、このコマンドは、Real-Time WorkshopページのTarget configurationセクションのMake command フィールドに表示されます。no_ext_comm
を使います。つぎのブラウザの情報コメントは、matlabroot
\rtw\c\grt\grt.tlc
のものです。
%% SYSTLC: Generic Real-Time Target %% TMF: grt_default_tmf MAKE: make_rtw EXTMODE: ext_comm
詳細は、「カスタムターゲットをSystem Target File Browserに追加」 を参照してください。
Target Language Compiler構成変数
この節では、コード生成プロセス全体に影響するグローバルなTLC変数を設定します。つぎの変数を設定しなければなりません。
CodeFormat
: CodeFormat変数は、利用可能なコードフォーマットのうちの1つを選択します。RealTime
: スタティックなメモリ割り当てをもつラピッドプロトタイピング用にに設計されています。RealTimeMalloc
: RealTime
と同じですが、ダイナミックなメモリ割り当てです。Embedded-C
: 製品コード用に設計され、最小のメモリ使用量、簡略化された生成コードへのインタフェースをもちます。S-Function
: S-Functionとアクセラレータでのみ利用されます。Ada
: 製品コード用に設計され、最小のメモリ使用量、簡略化された生成コードへのインタフェースをもちます。デフォルトのCodeFormatの値は、RealTime
です。
第4章「生成コードフォーマット」は、利用可能なコードフォーマットをまとめ、より詳しい情報へのポインタを提供しています。
Language
: サポートする言語のうちのいずれかでのコード生成を選択します。C
Ada
Ada
を選択すると、Real-Time WorkshopはデフォルトでAda95コードを生成します。Ada83コードを生成するには、変数AdaVersion
をつぎのように設定します。
%assign AdaVersion = "83"
CまたはAda以外の言語でコードを生成することが可能です。そのためには、希望するターゲット言語のコードを生成するためのすべてのブロックターゲットファイルの再設定を含む、かなりの開発の努力が必要です。この問題に関する説明は、Target Language Compiler Reference Guideを参照してください。
TargetType
: Real-Time Workshopは、プリプロセッサシンボルRT
およびNRT
を定義して、シミュレーションコードとリアルタイムコードを区別します。これらのシンボルは、条件付きのコンパイルで用いられます。TargetType
変数は、RT
またはNRT
のどちらが定義されているかを決定します。ほとんどのターゲットは、リアルタイムコードを生成することを目的としています。それらは、TargetTypeを下記のように割り当てます。
%assign TargetType = "RT"
S-FunctionターゲットやSimulink Acceleratorのようなターゲットは、シミュレーションでのみの利用のためコードを生成します。そのようなターゲットは、TargetTypeを下記のように設定します。
%assign TargetType = "NRT"
これらのシンボルの使用法の詳細は、「Simulinkとリアルタイムに対する条件付きのコンパイル」を参照してください。
Target Language Compilerプログラムのエントリポイント
コード生成プロセスは、通常codegenentry.tlcから始まります。システムターゲットファイルは、下記のようにcodegenentry.tlcを呼びます。
%include "codegenentry.tlc"
codegenentry.tlcは、その他のTLCファイルを呼びます。
genmap.tlc
は、ブロック名を、対応する言語固有のブロックターゲットファイルに設定します。commonsetup.tlc
は、グローバル変数を設定します。commonentry.tlc
は、CodeFormat
で指定されたフォーマットでコード生成プロセスを開始します。コード生成プロセスをカスタマイズするには、低レベルのTLCファイルを明示的に呼び出し、ユーザのTLC関数をプロセスの各ステージでインクルードすることができます。ガイドラインについては、Target Language Compiler Reference Guideを参照してください。
注意
codegenentry.tlcと低レベルのTLCファイルは、CodeFormat , TargetType, Language が正しく設定されていると仮定します。これらの変数は、codegenentry.tlcをインクルードする前に設定してください。
|
RTW_OPTIONSセクション
RTW_OPTIONS
セクションは、以下の指示文で区切られます。
%/BEGIN_RTW_OPTIONS
.
.END_RTW_OPTIONS
/%
RTW_OPTIONS
セクションの最初の部分は、rtwoptions
構造体の配列を定義します。rtwoptions
構造体のフィールドは、Real-Time Workshopページに表示される変数と関連するユーザインタフェース要素を定義します。rtwoptions
構造体配列を使って、Real-Time WorkshopページのCategoryメニューをカスタマイズし、各カテゴリに表示されるオプションを定義し、これらのオプションがどのように処理されるかを指定することができます。
Real-Time Workshopページがオープンすると、rtwoptions
構造体配列は、スキャンされ、リストされたオプションが表示されます。各オプションは、カレントのオプションの値を表示する割り当てられたユーザインタフェース要素(チェックボックス、エディットフィールド、ポップアップメニュー、プッシュボタン)によって表わされます。
ユーザインタフェース要素は、利用可能または利用不可能(グレイ色)にすることができます。オプションが利用可能な場合は、ユーザはオプションの値を変更できます。
rtwoptions
構造体配列の要素は、Real-Time WorkshopページのCategoryメニューの項目に対応するグループに組織化されます。項目の各グループは、タイプCategory
のヘッダ要素で始まります。Category
ヘッダのdefault
フィールドは、カテゴリ内の残る要素のカウントを含んでいなければなりません。
ヘッダの後には、Real-Time Workshopページに表示されるオプションが続きます。各カテゴリのヘッダの後には、最高7個の要素が続きます。
表 17-2は、rtwoptions
構造体のフィールドをまとめたものです。
つぎの例は、S-Functionターゲットに対するシステムターゲットファイルmatlabroot
\rtw\c\rtwsfcn\rtwsfcn.tlc
から引用されています。コードは、3つの要素のrtwoptions
構造体配列を定義します。最初の(ヘッダ)要素のdefault
フィールドは、2に設定され、ヘッダの後の要素数を示します。
rtwoptions(1).prompt = 'RTW S-function code generation options'; rtwoptions(1).type = 'Category'; rtwoptions(1).enable = 'on'; rtwoptions(1).default = 2; % Number of items under this category % excluding this one. rtwoptions(2).prompt = 'Create New Model'; rtwoptions(2).type = 'Checkbox'; rtwoptions(2).default = 'on'; rtwoptions(2).tlcvariable = 'CreateModel'; rtwoptions(2).makevariable = 'CREATEMODEL'; rtwoptions(2).tooltip = ... ['Create a new model containing the generated RTW S-Function block inside it']; rtwoptions(3).prompt = 'Use Value for Tunable Parameters'; rtwoptions(3).type = 'Checkbox'; rtwoptions(3).default = 'off'; rtwoptions(3).tlcvariable = 'UseParamValues'; rtwoptions(3).makevariable = 'USEPARAMVALUES'; rtwoptions(3).tooltip = ... ['Use value instead of variable name in generated block mask edit fields'];
最初の要素は、Real-Time WorkshopページのCategoryメニューにRTW S-function code generation options項目を追加します。rtwoptions(2)
およびrtwoptions(3)
定義されたオプションは、図 17-3のように表示されます。
図 17-3: S-Functionターゲットに対するコード生成オプション
7個よりも多くのオプションを定義したい場合は、1つのシステムターゲットファイル内で複数のCategoryメニューを定義することが可能です。例題として、Tornadoシステムターゲットファイルmatlabroot
\rtw\c\tornado\tornado.tlc
を参照してください。
ターゲット固有のrtwoptions
の定義の詳しい例は、matlabroot
\rtw\c
にあるその他のターゲットディレクトリのシステムターゲットファイルを参照してください。
rtwoptions
の定義のシンタックスを確認するために、MATLABコマンドウィンドウにコピーペーストすることで、MATLABでコマンドを実行することができます。
つぎの表に、rtwoptions
構造体のフィールドを示します。
フィールド名 |
説明 |
callback |
オプション値が変更されたときに呼び出すTLC関数名 |
default |
|
enable |
on またはoff 。on の場合は、オプションは利用可能な項目として表示され、そうでない場合は利用不可能な項目として表示されます。 |
makevariable |
オプションに関連するテンプレートmakeファイルのトークン(存在する場合)。makevariable は、テンプレートmakeファイルの処理中に展開されます。「テンプレートMakeファイルのトークン」を参照してください。 |
opencallback |
ダイアログがオープンしたときに実行するTLCコード。コードの目的は、オプションの表示値と以前の設定を同期させることです。例として、matlabroot \rtw\c\ert\ert.tlc を参照してください。 |
popupstrings |
['None|Function splitting|File ', ... 'splitting|Function and file splitting'] |
prompt |
オプションのラベル |
tlcvariable |
オプションに関連するTLC変数名 |
tooltip |
マウスがその項目上にあるときに表示するヘルプ文字列 |
type |
要素のタイプ: Checkbox , Edit , Popup , Pushbutton , Category . |
その他のコード生成オプション
「Target Language Compilerの変数とオプション」は、その他のコード生成オプションを説明しています。読みやすさのために、システムターゲットファイルのConfigure RTW code generation settings セクションでこれらの変数を割り当てることを推奨します。
-aVariable=
val
を、Real-Time WorkshopページのSystem target filenameフィールドに付加することが可能です。
ビルドディレクトリ名
システムターゲットファイルの最後の部分は、rtwgensettings
構造体のBuildDirSuffix
フィールドを定義します。ビルドプロセスは、BuildDirSuffix
文字列を、モデル名に付加して、ビルドディレクトリ名を形成します。たとえば、BuildDirSuffix
をつぎのように定義した場合、
rtwgensettings.BuildDirSuffix = '_mytarget_rtw'
ビルドディレクトリ名は、model
_mytarget_rtw
です。
![]() | ビルドプロセスのカスタマイズ | カスタムターゲットをSystem Target File Browserに追加 | ![]() |