Main Content

ターゲット開発フォルダー、ファイルおよびビルド

ターゲット開発の仕組みは多数のフォルダー タイプとファイル タイプで機能します。以下のトピックでは、カスタム ターゲットの開発、フォルダーの使用方法の設定、ビルド プロセスでのカスタム ターゲットの使用に関する情報を提供します。

フォルダーおよびファイルの命名規則

カスタム ターゲット ファイルに対しては、単一のフォルダーを使用することも、また、必要に応じて特定の開発環境またはツールに関連付けられたファイルを格納するようなサブフォルダーを使用することもできます。

カスタム ターゲットの実装で推奨されるフォルダーおよびファイルの命名規則は以下のとおりです。

  • フォルダー名、ファイル名および拡張子で小文字 "のみ" を使用すること。

  • フォルダー名には空白を含めないこと。フォルダー名に空白を使用すると、サードパーティ開発環境でエラーが発生する場合があります。

  • 使用するフォルダーは MATLAB® パスに格納すること。

  • カスタム ターゲット フォルダーは、場所にかかわらず MATLAB フォルダー ツリー内には配置 "しないこと" (つまり、matlabroot フォルダー内、またはその下に配置しないこと)。フォルダーを matlabroot 下に配置すると、MATLAB の新しいバージョンをインストールした場合 (または現在のバージョンを再インストールした場合) に作業が失われる危険があります。

以下のセクションでは、ターゲット フォルダーおよびファイルの整理方法と MATLAB パスへの追加方法を説明します。また、ファイルに関する高水準の説明も記載されています。

このドキュメンテーションでは、mytarget は、ターゲットの名前に使用されるフォルダーおよびファイルを表現するためのプレイスホルダー名です。dev_tool1dev_tool2 などは、開発環境またはツールに関連付けられたファイルを含むサブフォルダーを表します。このドキュメンテーションでは、フォルダー mytargetmytargetblocksdev_tool1dev_tool2 のためのサブフォルダーを含んでいる例の構造について説明します。最上位フォルダー mytarget は、"ターゲット ルート フォルダー" です。

カスタム ターゲットのコンポーネント

概要

カスタム ターゲットのコンポーネントは、フォルダー階層内にあるファイルです。この構造体内の最上位フォルダーは、"ターゲット ルート フォルダー" と呼ばれます。ターゲット ルート フォルダーとその内容は、フォルダーおよびファイルの命名規則に記載された規則に従って、命名、整理、および MATLAB パス内に配置されます。

カスタム ターゲットのコンポーネントには以下が含まれます。

  • コード コンポーネント:生成されたモデル コードの実行を監視およびサポートする C ソース コード。

  • コントロール ファイル:

    • コード生成プロセスを制御するシステム ターゲット ファイル。

    • 生成済みのコードからの実行可能ファイルのビルドを制御する 1 つ以上のファイル。従来的な make ベースの環境では、テンプレート makefile (TMF) がこの目的をもつ makefile を生成します。別の方法は、Freescale® Semiconductor CodeWarrior® などの最新の統合開発環境 (IDE) のサポート下でプロジェクト ファイルを生成することです。

    • フック ファイル:ビルド プロセスの特定の段階で起動できるオプションの TLC プログラム ファイルおよび MATLAB プログラム ファイル。フック ファイルを使用すると、ビルド プロセスをカスタマイズしてプロセスのさまざまな段階間で情報を通信できます。

  • その他のターゲット ファイル:ターゲットを MATLAB 環境に統合するファイル。たとえば、info.xml ファイルを使用すると、自分で作成したターゲット ブロック ライブラリと例が MATLAB セッションから使用できるようになります。

次のセクションでは、各コンポーネントを開発するために知っていなければならない主な概念と用語について説明します。さらに詳細な情報の参照先も記載されています。

コード コンポーネント

多数のコード モジュールおよびデータ構造体で構成される Simulink® モデルから生成されたコードのある実行可能プログラム。これらは 2 つのカテゴリに分かれます。アプリケーション コンポーネントと実行サポート ファイルです。

アプリケーション コンポーネント.  アプリケーション コンポーネントは、特定のモデルに特有のコンポーネントで、モデル内のブロックによって表現される関数を実装します。アプリケーション コンポーネントは、ターゲット固有ではありません。アプリケーション コンポーネントには、以下が含まれます。

  • モデルから生成されたモジュール

  • ユーザー記述のブロック (S-Function)

  • 外部コードが読み取り可能、または外部コードにインターフェイス可能なモデルのパラメーター。

実行サポート ファイル.  集合的に "実行サポート ファイル" と呼ばれる多数のコード モジュールおよびデータ構造体は、生成されたプログラムの実行を管理しサポートします。実行サポート ファイル モジュールは、自動生成されます。ターゲットの要件によっては、実行サポート ファイルの特定の部分を実装しなければならない場合もあります。実行サポート ファイルには、実行サポート ファイルの要約が記載されています。

実行サポート ファイル

ユーザーによる指定コード ジェネレーターによる指定

カスタマイズされたメイン プログラム

一般的なメイン プログラム

モデルを実行するタイマー割り込みハンドラー

実行エンジンと積分ソルバー (タイマー割り込みハンドラーによって呼び出される)

その他の割り込みハンドラー

サンプル割り込みハンドラー (非同期割り込みブロック)

デバイス ドライバー

サンプル デバイス ドライバー

データのログ記録、パラメーター調整、信号監視およびエクスターナル モードのサポート

データのログ記録、パラメーター調整、信号監視およびエクスターナル モードの API

ユーザー記述の実行サポート ファイル.  コード ジェネレーターには、ほとんどの実行サポート ファイルが用意されています。ターゲットの要件に応じて、以下の要素の一部またはすべてを実装しなければなりません。

  • タイマー "割り込みサービス ルーチン" (ISR)。タイマーは、プログラムの基本サンプル レートで実行されます。タイマー ISR は、現在の出力サンプルの計算など 1 クロック期間内に完了しなければならない演算を担います。タイマー ISR は通常、関数 rt_OneStep を呼び出します。

    リアルタイム オペレーティング システム (RTOS) をターゲット化している場合、生成されたコードは RTOS によって提供されているタイミングとタスクの管理メカニズムの制御下で実行されます。この場合、タイマー ISR を実装する必要はありません。

  • "メイン プログラム"。メイン プログラムは、モデル内のブロックの初期化、タイマー ISR のインストール、およびバックグラウンド タスクまたはループの実行を行います。タイマーは、定期的にメイン ループを中断します。メイン プログラムが限定された時間に実行されるように設計されている場合、メモリの解放やタイマーによる割り込みのマスキングなどのプログラム終了前のクリーンアップ操作もメイン プログラムによって実行されます。

    リアルタイム オペレーティング システム (RTOS) をターゲット化している場合、RTOS によって実行の時間が計測され制御されるタスク (モデル内で使用されるサンプル レートに対応する) がメイン プログラムによって実行される可能性が高くなります。

    メイン プログラムは通常生成されたメイン プログラムまたは静的なメイン プログラムに基づきます。実行サポート ファイルの構造、コードの実行、およびメイン プログラムのカスタマイズのガイドラインの詳細については、Deploy Applications to Target Hardware (Embedded Coder)を参照してください。

  • "デバイス ドライバー"。ターゲット ハードウェア上で I/O デバイスと通信するドライバー。量産コードでは、デバイス ドライバーは通常インライン S-Function として実装されています。

  • "その他の割り込みハンドラー"。作成中のモデルが、ハードウェア生成による割り込みや非同期読み取り/書き込み操作などの非同期イベントをサポートする必要がある場合、割り込みハンドラーを使用しなければなりません。Interrupt Templates ライブラリに、サンプルが用意されています。

  • "データのログ記録、パラメーター調整、信号監視およびエクスターナル モードのサポート"。組み込みターゲットでのエクスターナル モード サポートなど、ラピッド プロトタイピング機能の実装は一般的ではありません。ただし、標準のコード ジェネレーター API を使用したこれらの機能のサポートは可能です。詳細については、生成されたコードのインターフェイスを参照してください。

コントロール ファイル

コード生成とビルド プロセスは、"コントロール ファイル" と集合的に呼ばれる多数の TLC および MATLAB ファイルによって管理されています。この節では、主要なコントロール ファイルの概要を説明します。

最上位コントロール ファイル (make_rtw).  ビルド プロセスは Ctrl+B を押すと開始されます。この時点で、ビルド プロセスは、ビルド プロセスを制御する MATLAB コマンドの名前 (およびそのコマンドに対するオプションの引数) を検出するために、[コンフィギュレーション パラメーター] ダイアログ ボックスの [コード生成] ペインにある [make コマンド] フィールドを解析します。既定のコマンドは make_rtw で、ビルド プロセスの既定の最上位コントロール ファイルは make_rtw.m です。

メモ

make_rtw はビルド プロセスによって使用される MATLAB の内部コマンドです。通常、ターゲットの開発者には make_rtw の仕組みに関する詳細な知識は必要ありません (ターゲット開発者のための詳細な情報は、ターゲットの開発とビルド プロセスに記載されています)。make_rtw を MATLAB コードから直接呼び出さないようにして、make_rtw.m をカスタマイズしないでください。

make_rtw.m ファイルには、カスタム コード実行用の多数のフック ポイントを含む、ターゲット固有のコントロール ファイルを実行するために必要なロジックが格納されています。make_rtw は次のことを行います。

  • オプションの引数のビルド プロセスへの引渡し

  • コード生成前に必要なすべての前処理の実行

  • コード生成 (およびオプションの HTML レポート生成) 実行のためのシステム ターゲット ファイルの実行

  • makefile 生成のための TMF の処理

  • makefile の実行と実行可能ファイルのビルドのための make ユーティリティの起動

  • 必要とされる後処理の実行 (キャリブレーション データ ファイルの生成や生成済み実行可能ファイルのターゲットへのダウンロードなど)

システム ターゲット ファイル.  Target Language Compiler (TLC) は、Simulink ブロック線図 (model.rtw) の部分記述からターゲット固有の C コードまたは C++ コードを生成します。Target Language Compiler は、model.rtw を読み取り、複数のターゲット ファイル (.tlc ファイル) から構成されるプログラムを実行します。このプログラムの最上位にあるシステム ターゲット ファイルは、コード生成プロセスを制御します。このプロセスの出力は、使用している開発システムの make ユーティリティに供給された多数のソース ファイルです。

ターゲット用のコード生成パラメーターを設定するには、カスタマイズされたシステム ターゲット ファイルを作成しなければなりません。標準の ERT システム ターゲット ファイル (matlabroot/rtw/c/ert/ert.tlc) をコピーしファイル名を変更してから、変更を加えてください。

システム ターゲット ファイルの詳細な構造はシステム ターゲット ファイルのカスタマイズで説明しています。

メモ

システム ターゲット ファイルは、ツールチェーン アプローチとテンプレート makefile アプローチのどちらをコード生成用にターゲットでサポートするかを選択します。システム ターゲット ファイルのカスタマイズを参照してください。

テンプレート makefile (TMF).  TMF は、モデルと開発システムに関する情報を格納しています。ビルド プロセスはこの情報を使用して、実行可能プログラムをビルドするために makefile (.mk ファイル) を作成します。

ターゲットによっては、複数の開発環境をサポートするため (2 つ以上のクロスコンパイラを使用している場合など) または複数のモードでのコード生成をサポートするため (バイナリ実行可能ファイルとコンパイラ用のプロジェクト ファイルを生成する場合など) 1 つを超える TMF が実装されている場合があります。

Embedded Coder® ソフトウェアには、さまざまなタイプの開発用コンピューター システムに適した多数の TMF が用意されています。これらの TMF は、matlabroot/toolbox/coder/compile/tmf に配置されています。標準の TMF の詳細については、テンプレート makefile と make オプションを参照してください。

TMF の詳細な構造体についての説明は、テンプレート makefile のカスタマイズを参照してください。

メモ

システム ターゲット ファイルは、ツールチェーン アプローチとテンプレート makefile アプローチのどちらをコード生成用にターゲットでサポートするかを選択します。システム ターゲット ファイルのカスタマイズを参照してください。

フック ファイル.  ビルド プロセスでは、コード生成と make プロセスの特定の時点で実行されるオプションの "フック ファイル" を指定できます。フック ファイルを使用してターゲット固有の行動をビルド プロセスに追加することができます。

フック ファイルは適切に定義された命名規則と配置場所の要件を満たしていなければなりません。これらの要件はフォルダーおよびファイルの命名規則に説明されています。

ターゲット ルート (mytarget) にある主要なフォルダー

ターゲット ルート フォルダー (mytarget)

このフォルダーには、ターゲット用の主要なサブフォルダーが含まれています (フォルダーおよびファイルの命名規則を参照)。ターゲット ルート フォルダーには、その他の様々なファイル (readme など) も配置できます。以下の節では、必須のサブフォルダーおよびオプションのサブフォルダーとそれぞれの内容に関して説明します。

ターゲット フォルダー (mytarget/mytarget)

このフォルダーには、システム ターゲット ファイル (STF) やテンプレート makefile (TMF) などのターゲットの中核となるファイルが含まれています。ターゲット フォルダー (mytarget/mytarget) 内の主要ファイルには、mytarget/mytarget に格納されていなければならないファイルに関する概要と詳細な情報が必要な場合の参照先が記載されています。

メモ

mytarget/mytarget は、MATLAB パス上になければなりません。

ターゲット ブロック フォルダー (mytarget/blocks)

ターゲットにデバイス ドライバーまたは他のブロックが含まれている場合、ブロック実装ファイルをこのフォルダーに配置してください。mytarget/blocks には、以下を配置します。

  • コンパイル済みブロック MEX ファイル

  • ブロックのソース コード

  • ブロックの TLC インライン化ファイル

  • ブロックのライブラリ モデル (1 つ以上のライブラリでブロックを使用している場合)

メモ

mytarget/blocks は、MATLAB パス上になければなりません。

モデル例とサポート ファイルも mytarget/blocks に保存できます。また、その代わりに mytarget/mytargetdemos フォルダーを作成することもできます。このフォルダーも MATLAB パス上になければなりません。

標準の Simulink ライブラリ ブラウザー内にブロックを表示したり、MATLAB セッション環境にモデル例を統合するには、以下で説明するファイルを作成し、mytarget/blocks に保存します。

mytarget/blocks/slblocks.m.  このファイルを使用すると、ブロックのグループを Simulink ライブラリおよび Simulink ライブラリ ブラウザーに統合できます。

例1 サンプル slblocks.m ファイル
function blkStruct = slblocks
% Information for "Blocksets and Toolboxes" subsystem
blkStruct.Name = sprintf('Embedded Target\n for MYTARGET');
blkStruct.OpenFcn = 'mytargetlib';
blkStruct.MaskDisplay = 'disp(''MYTARGET'')';

% Information for Simulink Library Browser
Browser(1).Library = 'mytargetlib';
Browser(1).Name    = 'Embedded Target for MYTARGET';
Browser(1).IsFlat  = 1;% Is this library "flat" (i.e. no subsystems)?

blkStruct.Browser = Browser;

mytarget/blocks/demos.xml.  このファイルは、モデル例のコンポーネント、編成および場所に関する情報を提供します。MATLAB ソフトウェアは、この情報を使用して MATLAB セッション環境に例を配置します。

例2 サンプル demos.xml ファイル
<?xml version="1.0" encoding="utf-8"?>
<demos>
   <name>Embedded Target for MYTARGET</name>
   <type>simulink</type>
   <icon>$toolbox/matlab/icons/boardicon.gif</icon>
   <description source = "file">mytarget_overview.html</description>

   <demosection>
      <label>Multirate model</label>
      <demoitem>
         <label>MYTARGET demo</label>
         <file>mytarget_overview.html</file>
         <callback>mytarget_model</callback>
      </demoitem>
   </demosection>

</demos>

開発ツール フォルダー (mytarget/dev_tool1, mytarget/dev_tool2)

これらのフォルダーには、特定の開発環境またはツール (dev_tool1dev_tool2 など) に関連付けられているファイルが格納されています。通常、ターゲットは、最低 1 つのこのような開発環境をサポートしており、ビルド プロセス中にそのコンパイラ、リンカーおよびその他のユーティリティを起動します。mytarget/dev_tool1 には、リンカー コマンド ファイル、起動コード、フック関数およびこのプロセスをサポートするために必要なその他のファイルが格納されています。

開発環境ごとに個別のフォルダーを使用しなければなりません。

ターゲット ソース コード フォルダー (mytarget/src)

このフォルダーはオプションです。ターゲットが複雑な場合、共通のソース コードおよびコンフィギュレーション コード (ブートおよび起動コードなど) の保存に mytarget/src を使用できます。

ターゲット フォルダー (mytarget/mytarget) 内の主要ファイル

はじめに

ターゲット フォルダー mytarget/mytarget には、ターゲット実装のための重要なファイルが格納されています。これらのファイルには、システム ターゲット ファイル、テンプレート makefile、メイン プログラム モジュール、およびビルド プロセスにターゲット固有のアクションを追加できるオプションの M ファイルと TLC フック ファイルが含まれます。以下の節では、主要なターゲット フォルダー ファイルについて説明します。

mytarget.tlc

mytarget.tlc は、システム ターゲット ファイルです。システム ターゲット ファイルの機能には次のものが含まれます。

  • システム ターゲット ファイル ブラウザー内でターゲットを表示可能にする

  • ターゲットのコード生成オプション (継承されたオプションおよびターゲット固有のオプション) を定義する

  • TLC コード生成プロセスの最上位コントロールに対するエントリ ポイントを指定する

システム ターゲット ファイルは、Embedded Coder ソフトウェアによって提供されるシステム ターゲット ファイルである ert.tlc に基づいて作成する必要があります。

システム ターゲット ファイルのカスタマイズには、システム ターゲット ファイルの構造体に関する詳細な情報、および、以下を目的としたシステム ターゲット ファイルのカスタマイズ方法が記載されています。

  • ターゲットをシステム ターゲット ファイル ブラウザーを表示する

  • 独自のターゲット オプションを [コンフィギュレーション パラメーター] ダイアログ ボックスに追加する

  • コード生成とビルド プロセスをターゲットの要件に沿ってカスタマイズする

mytarget.tmf

mytarget.tmf は、ターゲットの実行可能ファイルをビルドするためのテンプレート makefile です。

テンプレート makefiles の構造体と操作に関する基本的な情報については、テンプレート makefile のカスタマイズを参照してください。

mytarget_genfiles.tlc

このファイルはオプションです。mytarget_genfiles.tlc は、ターゲット ビルド プロセスの一部として追加ファイルを生成するターゲット固有 TLC ファイルを起動するセントラル ファイルとして使用できます。たとえば、ターゲットによって、開発環境用のサブ makefile またはプロジェクト ファイルが作成されたり、自動ダウンロードを行うためにデバッガー用のコマンド スクリプトが作成されたりする場合があります。詳細については、mytarget_genfiles.tlc の使用を参照してください。

mytarget_main.c

メイン プログラム モジュールは、ターゲットに必須のコンポーネントです。メイン モジュールを指定するには、以下のいずれかを行います。

  • ソフトウェアによって提供されている rt_main.c または rt_cppclass_main.cpp モジュールを変更する

  • ビルド プロセス中に mytarget_main.c または .cpp を生成する

メイン プログラムの操作の説明については、Deploy Applications to Target Hardware (Embedded Coder)を参照してください。この節では、メイン プログラム モジュールを生成および変更するためのガイドラインも説明しています。

STF_make_rtw_hook.m

STF_make_rtw_hook.m は、ビルド プロセス内の特定のポイントでターゲットに固有の関数または実行可能ファイルを起動するために使用できる、オプションのフック ファイルです。STF_make_rtw_hook.m は、渡された method 引数に応じて特定のアクションに送信される関数を実装します。

STF_make_rtw_hook ファイルによるビルド プロセスのカスタマイズでは、STF_make_rtw_hook.m フック ファイルの動作について詳細に説明しています。

info.xml

このファイルは、MATLAB ソフトウェアに対して MATLAB セッション環境内のターゲット ツールボックスを表示する場所を指定するための情報を提供します。詳細については、カスタム ドキュメンテーションの表示を参照してください。

mytarget_overview.html

慣例では、このファイルは、ターゲット例のホーム ページとして使用されます。

demos.xml<description> フィールドは、mytarget_overview.html を示す必要があります (mytarget/blocks/demos.xmlを参照)。

サンプル mytarget_overview.html ファイル

<html>
<head><title>Embedded Target for MYTARGET</title></head><body>
<p style="color:#990000; font-weight:bold; font-size:x-large">Embedded Target
for MYTARGET Example Model</p>

<p>This example provides a simple model that allows you to generate an executable
for a supported target board. You can then download and run the executable and
set breakpoints to study and monitor the execution behavior.</p>

</body>
</html>

外部で開発されたターゲット用の追加ファイル

はじめに

MATLAB ツリー内にインストールされていない組み込みターゲットを開発している場合、ターゲットの設定スクリプトとターゲットのドキュメンテーションをそのユーザー用に mytarget/mytarget 内に用意しなければなりません。以下の節では、必要な資料およびその配置場所について説明します。

mytarget/mytarget/mytarget_setup.m

このファイル スクリプトは、ターゲットのパスを MATLAB パスに追加します。ターゲットのインストール時にこのスクリプトを実行するようにドキュメンテーションでユーザーに指示しなければなりません。

mytarget_setup.m スクリプトには、MATLAB 関数 savepath の呼び出しを含めなければなりません。この関数は、追加されたパスを保存するため、ユーザーによる mytarget_setup.m の実行が必要となるのは 1 度のみになります。

以下のコードは、サンプル mytarget_setup.m ファイルです。

function mytarget_setup()
curpath = pwd;
tgtpath = curpath(1:end-length('\mytarget'));
addpath(fullfile(tgtpath, 'mytarget'));
addpath(fullfile(tgtpath, 'dev_tool1'));
addpath(fullfile(tgtpath, 'blocks'));
addpath(fullfile(tgtpath, 'mytargetdemos'));
savepath;
disp('MYTARGET Target Path Setup Complete.');

mytarget/mytarget/doc

ターゲットに関連するドキュメンテーションは、フォルダー mytarget/mytarget/doc に配置しなければなりません。

ターゲットの開発とビルド プロセス

ビルド プロセスについて

組み込みターゲットの開発を行うには、ビルド プロセスを十分に理解していなければなりません。組み込みターゲットにはビルド プロセスを使用しますが、プロセスの変更またはカスタマイズが必要になることもあります。コードの生成およびビルド プロセスに関する一般的な概要は、ソース コードの生成で説明しています。

この節では、Embedded Coder ソフトウェアによってカスタマイズされたビルド プロセスについての説明の概要を示す補足情報を提供します。特に、プロセス内でカスタマイズ化フックが使用できるポイントとプロセスの異なる段階間での情報の受け渡しに関して重点を置いて説明します。

この節の末尾のその他の情報の受け渡し手法には、ビルド プロセス内での情報の受け渡しについてのさまざまなヒントも掲載されています。

ビルド プロセスの段階と情報の受け渡し

ビルド プロセスが、どこで (いつ) 必要となる情報を取得するかを理解していることが重要です。情報源には、以下のようなものがあります。

  • モデル生成に関する情報を提供する model.rtw ファイル。model.rtw 内の情報は、ターゲット TLC ファイルに記載されています。

  • [コンフィギュレーション パラメーター] ダイアログ ボックスの [コード生成] ペイン。オプション (一般的オプションとターゲット固有オプションの両方) は、チェック ボックス、メニュー、および編集フィールドを使用して指定できます。オプションは、rtwoptions データ構造体内の TLC 変数と関連付けることができます。[コンフィギュレーション パラメーター][コード生成][カスタム コード][コード情報][定義] フィールドを使用して makefile トークンを定義します。

  • 選択されたツールチェーン (ツールチェーン アプローチのビルドの場合) または選択されたテンプレート makefile .tmf (テンプレート makefile アプローチ ビルドの場合)。これらはモデル固有の makefile を生成します。

  • ホスト コンピューター上の環境変数。環境変数は、インストール済みの開発ツールに関する補足情報を提供します。

  • ターゲット関連の TLC ファイル、リンカー コマンド ファイル、プロジェクト ファイルなど、その他のターゲット固有のファイル。

ビルド プロセスの数々の段階を理解し、これらの段階の間でどのように情報が受け渡しされるかを理解することも重要です。ビルド プロセスは、以下のようないくつかの高レベル段階で構成されています。

  • 最上位レベル ファイル (slbuild.m) を実行し、ターゲットのビルド プロセスの順序を決定する

  • モデルを TLC 入力ファイル (model.rtw) に変換する

  • TLC コンパイラによるターゲット コードの生成

  • make ユーティリティまたは他のユーティリティを使用して生成済みのコードをコンパイルする

  • デバッガーまたはダウンロード ユーティリティを使用して生成済みの最終実行可能ファイルを送信する

プロセスの各段階が異なる "環境" であり、それぞれが固有のデータを維持すると捕らえると理解しやすくなります。これらの環境には、次のようなものが挙げられます。

  • MATLAB コード実行環境 (MATLAB)

  • Simulink

  • Target Language Compiler 実行環境

  • makefile

  • IDE またはデバッガーなどの開発環境

それぞれの環境で、上記のような様々な情報源から情報が得られる場合があります。たとえば、TLC フェーズでは、MATLAB 環境からの情報を取得するために MATLAB ファイルを実行します。また、特定の段階では、後続の段階で情報が生成されることもあります。

情報の受け渡しで使用可能な MATLAB ファイルと TLC フックの詳細、およびコード例については、ターゲット フォルダー (mytarget/mytarget) 内の主要ファイルを参照してください。

その他の情報の受け渡し手法

この節では、ビルド プロセス内の異なる段階の間で情報を受け渡しするために役立つ様々な手法について説明します。

rtwoptions 構造体内の tlcvariable フィールド.  [コンフィギュレーション パラメーター] ダイアログ ボックスの [コード生成] ペインのパラメーターは、TLC 変数と関連付け、rtwoptions 構造体内のオプションのエントリの tlcvariable フィールドで指定することもできます。この変数値は、TLC の起動時にコマンド ライン上に渡されます。この方法を使用すると、コード生成パラメーターとその値が TLC フェーズで使用できるようになります。

詳細については、システム ターゲット ファイル構造体を参照してください。

rtwoptions 構造体内の makevariable フィールド.  コード生成パラメーターは、rtwoptions 構造体でオプションのエントリの makevariable フィールドで指定するテンプレート makefile トークンに関連付けることができます。TMF 内に makevariable の名前と同じ名前のトークンが存在する場合、そのトークンは、最終の makefile が作成されたときにオプションの値を使用して更新されます。同じ名前のトークンが TMF にない場合、makevariable は、make が起動されたときにコマンド ライン上に渡されます。したがって、いずれの場合も、makevariable は makefile ファイルで使用可能となります。

詳細については、システム ターゲット ファイル構造体を参照してください。

ホスト環境変数にアクセスする.  MATLAB コマンド ラインで getenv コマンドを入力すると、ホスト シェル環境変数にアクセスできます。以下に例を示します。

getenv ('MSDEVDIR')

ans =

D:\Applications\Microsoft Visual Studio\Common\MSDev98

TLC から同じ情報にアクセスするには、FEVAL を使用して getenv を起動します。

%assign eVar = FEVAL("getenv","<varname>")

テンプレート makefile に開発環境情報を指定する.  ビルド プロセスは、組み込みターゲットによって、ホスト コンピューター上にインストールされているターゲット固有の開発ツールに関連付けられなければなりません。これらのツールで make プロセスを実行するには、TMF によって、ツール名、コンパイラへのパス、リンカー およびその他のユーティリティが判別できなければなりません。また、ホスト オペレーティング システムの環境変数設定も判別できなければならない場合もあります。

エンド ユーザーはターゲット TMF を変更する必要があります。パス情報 (コンパイラの実行可能ファイルの場所など) やホスト オペレーティング システムの環境変数を make 変数としてユーザーが入力します。これによって、特定の必要性を満たすように TMF をカスタマイズすることができます。

MATLAB アプリケーション データを使用する.  アプリケーション データは、アプリケーションが GUI を使用して保存データを保存および取得する方法を提供します。この手法を使用すると、オブジェクトに対して本質的なユーザー定義プロパティを作成し、このプロパティを使用してビルド プロセスで使用するためのデータを保存できます。詳細については、setappdata および getappdata を参照してください。

次のサンプル コードには、アプリケーション データを使用して情報を TLC に渡す方法が示されています。

このファイル tlc2appdata.m には、appDataName に渡された名前に基づき、アプリケーション データとして渡された data が格納されます。

function k = tlc2appdata(appDataName,data)
  disp([mfilename,': ',appDataName,' ', data]);
  setappdata(0,appDataName,data);
  k = 0;  % TLC expects a return value for FEVAL.

次のサンプル TLC ファイルは FEVAL 命令を使用して tlc2appdata.m を起動し、任意のアプリケーション データを名前 z80 で保存します。

%% test.tlc
%%
%assign myApp = "z80"
%assign myData = "314159"
%assign dummy = FEVAL("tlc2appdata",myApp,myData)

この手法をテストするには、次の手順に従います。

  1. tlc2appdata.m ファイルを説明のとおりに作成します。tlc2appdata.m が MATLAB パスにあるフォルダーに保存されていることを確認します。

  2. TLC ファイルを説明のとおりに作成します。test.tlc として保存します。

  3. 以下のコマンドを MATLAB プロンプトに入力すると TLC ファイルが実行されます。

    tlc test.tlc
  4. MATLAB プロンプトでアプリケーション データを以下のように取得します。

    k = getappdata(0,'z80')

    関数によって、値 314159 が返されます。

  5. 次のコマンドを入力します。

    who

    アプリケーション データは、MATLAB ワークスペースには保存されないことに注意してください。また、z80 データが表示されないことにも注意してください。アプリケーション データをこのような方法で使用すると、MATLAB ワークスペースに余分なものが追加されない利点があります。また、この方法では、ワークスペースに直接保存されないため、意図しないデータの削除も回避できます。

アプリケーション データが実際に使用される場合には、model.rtw ファイルから情報を収集し、後でビルド プロセス内で使用できるように保存する場合があります。

ブロック固有情報を makefile に追加する.  rtwmakecfg メカニズムによって、ドライバー ブロックなどのインライン S-Function が makefile に情報を追加する方法が提供されます。このメカニズムについては、次で説明されています。生成された makefile を rtwmakecfg.m API を使用してカスタマイズ

関連するトピック