Real-Time Workshop User's Guide    

チュートリアル: カスタムターゲット構成の作成

このチュートリアルは、ラピッドプロトタイピングターゲットの骨格を作成する作業を行います。この例題は、以下のようなカスタムターゲットの作成時に通常必要な作業を説明します。

このプロセスは、ユーザ独自のプロジェクトの出発点として利用することができます。

この例題では、WindowsのLCCコンパイラを使います。LCC は、Real-Time Workshopに付属しています。別のコンパイラを使う場合は、MATLABコマンドプロンプトでつぎのようにタイプして、デフォルトコンパイラとしてLCCを一時的に設定することが可能です。

コマンドプロンプトウィンドウがオープンします。プロンプトに従い、LCCを選択します。

この例題では、コードは、非常に簡単な固定ステップモデルtargetModel.mdl(図 17-1を参照))から生成されます。結果のプログラムは、一般のリアルタイムターゲットに対してビルドされたものと全く同様に振る舞います。

図 17-1: targetModel.mdl

S-Functionブロックは、timestwoの例題のソースコードを利用します。このS-Functionの詳しい説明は、Writing S-Functionsマニュアルを参照してください。Target Language Compiler Reference Guideでは、timestwoのインライン版timestwo.tlcを説明しています。

ターゲットシステムの骨格を作成するには、

  1. Cのソースファイルと.tlcおよび.tmfファイルを格納するディレクトリを作成します。このディレクトリをd:\work\mytargetとします。
  2. d:\work\mytarget をMATLABパスに追加します。
  3. d:\work\mytarget を作業ディレクトリにします。Real-Time Workshopは、コード生成プロセスの出力ファイルを作業ディレクトリ内のビルドディレクトリに書き出します。
  4. timestwo S-functionのCソースコードmatlabroot\toolbox\rtw\rtwdemos\tlctutorial\timestwo\solutions\timestwo.c
    d:\work\mytargetにコピーします。
  5. d:\work\mytargettimestwoMEX-ファイルをビルドします。
  6. モデルを図 17-1のように作成します。ライブラリブラウザのSimulink Functions & TablesライブラリのS-Functionブロックを利用します。ソルバオプションをfixed-stepode4に設定します。
  7. S-Functionブロックをダブルクリックして、Block Parametersダイアログをオープンします。S-Function名timestwoを入力します。ブロックは、timestwo MEX-ファイルになっています。OKをクリックします。
  8. Scopeをオープンし、シミュレーションを実行します。timestwo S-function が入力に2.0を乗算することを確認します。
  9. timestwo S-Functionブロックからインラインコードを生成するためには、作業ディレクトリに対応するTLCファイルがなければなりません。Target Language Compilerが作業ディレクトリ内で同名のC-コードのS-FunctionとTLCファイルを検出した場合、TLCファイルからインラインコードを生成します。そうでない場合は、外部のS-Functionのファンクションコールを生成します。

    ビルドプロセスがtimestwoブロックからインラインコードを生成したことを確認するため、matlabroot\toolbox\rtw\ rtwdemos\tlctutorial\timestwo\solutions\timestwo.tlc からtimestwo TLCソースコードを
    d:\work\mytargetにコピーします。

  1. メインプログラムとシステムターゲットファイルのローカルコピーを作成します。matlabroot\rtw\c\grtには、一般のリアルタイムターゲット用のメインプログラム (grt_main.c)とシステムターゲットファイル(grt.tlc)が含まれます。grt_main.cgrt.tlcd:\work\mytargetにコピーします。それらの名前をmytarget_main.cmytarget.tlcに変更します。
  2. mytarget.tlcの最初のコメント行を削除します。削除する行は以下の通りです。

    最初のコメント行は、my_targetをSystem Target File Browserに加えたい場合にのみ意味があります。現時点ではこれらを削除します。

  1. Real-Time Workshopは、作業ディレクトリ内にビルドディレクトリを作成し、コード生成プロセス中に作成されたファイルを格納します。ビルドディレクトリは、モデル名の後にサフィックスをつけたものです。このサフィックスは、システムターゲットファイルのrtwgensettings構造体で指定されます。

    サフィックスをより適切な文字列にするには、つぎの行

    に変更します。ビルドディレクトリ名は、targetModel__mytarget_rtw になります。

  1. テンプレートmakeファイルのローカルコピーを作成します。matlabroot\rtw\c\grtには、一般のリアルタイムターゲットに対するコンパイラ固有のテンプレートmakeファイルが含まれます。LCCコンパイラに対して適切なテンプレートmakeファイルは、grt_lcc.tmfです。grt_lcc.tmfd:\work\mytargetにコピーし、名前をmytarget.tmfに変更します。

  1. mytarget.tmfを変更します。SYS_TARGET FILEパラメータは、正しいファイルの参照がmakeファイル内で生成されるように変更する必要がああります。つぎの行

    に変更します。また、grt_main.cの代わりにmytarget_main.cをインクルードするようにsource file リストを変更します。

    REQ_SRCS = $(MODEL).c $(MODULES) mytarget_main.c...

    最後に、つぎの行

    %.obj : $(MATLAB_ROOT)/rtw/c/grt/%.c

    %.obj : d:/work/mytarget/%.c

    に変更します。
  1. この例題は、mytarget_main.cへの変更は必要ありません。実際のアプリケーションでは、mytarget_main.cを変更してタイマ割り込みのコントロールのもとでモデルコードを実行したり、他の変更を行います。
  2. Simulation ParametersダイアログのReal-Time Workshopページをオープンします。CategoryメニューからTarget configurationを選択します。システムターゲットファイル、テンプレートmakeファイル、Make commandパラメータを下記のように入力します。

  3. Applyボタンをクリックします。
  4. ビルド(Build)ボタンをクリックします。ビルドが成功した場合は、MATLABは下記のメッセージを表示します。

    作業ディレクトリは、targetModel.exeファイルとビルドディレクトリtargetModel_mytarget_rtwを含みます。

  1. d:\work\mytarget\targetModel_mytarget_rtw\targetModel.cをエディットし、MdlOutputs関数の位置を決めます。インラインコードを見てみます。
      /* S-Function Block: <Root>/S-Function (timestwo) */
      rtB.S_Function = 2.0 * rtB.Sine_Wave;
      

    作業ディレクトリは、TLCファイル(timestwo.tlc)timestwo S-Functionブロックと同じ名前で含んでいるため、Target Language Compilerは外部のC-コードS-Functionではなくインラインコードを生成しました。

  1. この例題のオプションの最終ステップとして、System Target File Browserにユーザのカスタムターゲット構成を追加することができます。この方法を習得するには、「カスタムターゲットをSystem Target File Browserに追加」を参照してください。

 制御ファイル ビルドプロセスのカスタマイズ