新規ハードウェア・ターゲットのセットアップ

Rational Rhapsody によって提供されるファイルを開発環境に合うように 変更するか、ユーザー特有のターゲットをサポートするよう新しいファイル・セットを 作成することができます。

このタスクについて

使用する開発環境に合わせて、MicroC Framework (MXF) で 使用される新しいターゲットのサポートを追加することができます。 このタスクでは、特定のハードウェアをターゲットにする アプリケーションを生成してビルドするために コード生成の構成 が使用する新規の環境 を定義するため、適切なファイルおよび定義を追加します。 このタスクは、再ターゲット とも呼ばれます。これは、 例えば新しいハードウェア・ターゲットをサポートすることを意味します。

サポートされる 各ハードウェア・ターゲットは、以下を使用して定義されます。
  • 特定のターゲットに関連するファイルのさまざまな特性を定義し、 そのターゲット用のアプリケーションをビルドする方法を 定義する、プロパティーのセット (環境 とも呼ばれる)。
  • ハードウェア関連機能 (ハードウェア・タイマーや通信など) のターゲット特有 の実装を定義する、ファイルのセット (アダプター と呼ばれる)。

コード生成の構成 に よって使用されるプロパティーのセットは、その構成の「フィーチャー」ダイアログ の「設定」タブにある「環境 」ドロップダウン・リスト によって決まります。

環境 」ドロップダウン・リスト の内容は、C_CG::Configuration::Environment プロパティーの列挙型定義から取得されます。

また、 IBM Rational Rhapsody には、多数のターゲット固有のファイルのセット が組み込まれています。各ファイル・セットは、MicroC Execution Framework (MXF) 用のアダプター を 1 つ定義します。これらのアダプターは、 <Install-Dir>¥Share¥LangC¥mxf¥Adaptors¥Mainloop の下の該当する製品インストール・サブディレクトリーにあります。

新規 のターゲット を作成するには、MXF をそのターゲットに適合 させるための同様のファイル・セットを作成する必要があります。

手順

  1. <Install-Dir>¥Share¥Properties ディレクトリー内で Site.prp ファイル を作成または更新することによって、ターゲットに適合する新しい環境定義を追加します。
    1. 列挙型の環境プロパティーを <Install-Dir>¥Share¥profiles¥MicroC¥MicroC.prp ファイル からコピーし、新しい環境の名前で付加します。
      prp ファイル内で、該当するプロパティーは次の場所にあります。
      Subject C_CG
          Metaclass Configuration
             Property Environment …
          end
      end
    2. MicroC.prp ファイルに定義されているように、環境を定義するプロパティーのセットを コピーします。例えば、 「metaclass <Environment-name>」で始まり 「end」で終わるセクションと、これらのトークンの間に定義されたすべての プロパティーをコピーできます。
      例えば、「Metaclass MainLoopSTM32」、 および、「Property」で始まる「end」タグの行までのすべての 行をコピーし、コピーされた環境を新しい環境名に名前変更します。
      Subject C_CG
          	Metaclass <Environment>
      				Property Property1         
      				Property Property2        
      				Property Property3         
      				…      
      			end 
      		end
    3. プロパティー環境の定義を変更します。 例えば、C_CG:<NewEnvironment>:AdaptorSearchPath を、 新しいアダプター・ディレクトリー <Install-Dir>Share¥LangC¥mxf¥Adaptors¥MainLoop¥<NewTargetFolder> または $OMROOT¥LangC¥mxf¥Adaptors¥MainLoop¥<NewTargetFolder> をポイントするようにします。
      注: NewTaregtFolder は、 ファイル・システム上のターゲットを表すために選択した名前です。
  2. AdaptorSearchPath に定義されているように、ターゲット用の新規ディレクトリーを作成し、 既存のいずれかのアダプターからその新規ディレクトリーにファイルをコピーします。対象のターゲットに 最もよく似ているターゲットを選択することをお勧め します (例えば、<Install-Dir>¥Share¥LangC¥mxf¥Adaptors¥MainLoop¥Stm32x)。
  3. ファイル RiCOSTarget.c 内に関数 RiCOSMainTask_WaitStep を 実装することによって、メインループのステップを定義します。通常は、 ハードウェア・タイマーを使用して行われます。参考のため $OMROOT¥LangC¥mxf¥Adaptors¥MainLoop¥Stm32x¥RiCOSTarget.c を 参照してください。
  4. ファイル RiCOS.h 内で、#include ステートメントRiCOSMainloop.h に追加します。
  5. mutex や TCP などの先進オペレーション・システム (OS) サービスをサポートするターゲットの場合、 RiCOSTargetServices.c¥.h ファイル内の関連するアダプター API をオーバーライドします。

    ファイル RiCOSMainloop.c 内のオーバーライド可能な各 API は、 #ifndef… #endif コンパイラー・ディレクティブを使用してプリプロセッサー・マクロ 「<function-name> Defined」で囲まれています。API をオーバーライドするには、 このコンパイラー・マクロをファイル RiCOSTargetServices.h 内に 定義し、新規の実装をファイル RiCOSTargetServices.c 内に追加します。 例えば、 ターゲット・アダプター <Install-Dir>¥Share¥LangC¥mxf¥Adaptors¥MainLoop¥Linux 内 の API 「RiCOSEventsPoolMutex_init」のオーバーライドを参照してください。

  6. ターゲットでの実行中に、アプリケーションのバック・アニメーションであるターゲット・モニター を有効にするには、 ターゲット上で使用可能な通信 (アップ・リンク) に従ってファイル TargetMonitorProtocol.c¥.h を 変更します。ターゲット・モニターのサポートがない場合は、 これらのファイルを削除してください。
  7. タイマー調整を変更して、1 つの時間単位で 1 ミリ秒を表すように することをお勧めします。予期されているデフォルト値は、1 ミリ秒の遅延を表す tm(1) です。
    1. MXF 構成ファイル・テンプレート C_CG:Configuration:mxfCfgTemplate、 #define RICTIMERMANAGER_TIME_CYCLE $<Time ManagerTimeCicle> 内で使用される C_CG::Configuration::TimerManagerTimeCycle プロパティー。

      このプロパティーの値は、ステップ (3) で定義されるハードウェア・タイマー のサイクルを定義します。タイムアウトの範囲とレゾリューションを最高にするため、この数値をできるだけ小さく保つことが必要です (整数)。

    2. MXF 構成ファイル・テンプレート C_CG:Configuration:mxfCfgTemplate、 #define RICTIMERMANAGER_DEFAULT_TICK_TIME $<TimeManagerTickTime> 内で使用される C_CG::Configuration::TimerManagerDefaultTickTime プロパティー。

      この値は、HW タイマー 定義に従って、各 OSTimer ティックの増分値として、MXF の TimerManager に 使用されます。 HW タイマーは、連続する 2 つのハードウェア・タイマー・ティックの間にどれだけの時間単位が経過するのかを 表します。

    3. ハードウェア固有のタイマー初期設定を使用して HW タイマーの関連カウンターの 初期値を定義する、RiCOS.h 内に定義された OSTIMER_INIT() C-マクロ
  8. アプリケーションを実行するため、RiCOSMainTask_WaitStep 関数を、 MXF タイマーが識別できる最小の時間間隔を表す、ステップ (7.b) で定義される期間だけ「スリープ」するように、実装します。

フィードバック