このページでは

C

GHSマルチIDEプロジェクトの生成

このページでは、Green Hills Software (GHS) の MULTI IDE プロジェクトの生成に関する追加情報を説明します。

注: 詳細については、 Qt Quick Ultralite プロジェクト生成の一般的な説明をお読みください。

GHSプロジェクト構造の詳細については、生成されたGHSプロジェクトの内容を参照してください。

qmlprojectexporter から GHS プロジェクトをエクスポートするには、3 つのモードがあります:

  • GHSプロジェクトの生成-.qmlproject ファイルから新しいGHSプロジェクトを生成します。
  • GHSプロジェクトの拡張-Qt for MCUs プラットフォームおよびUIソースを、以下の方法で構成されていない既存のGHSプロジェクトに追加します。qmlprojectexporter
  • GHSプロジェクトの更新-qmlprojectexporter で設定された既存のGHSプロジェクトのQt for MCUs 固有の部分を更新します。

GHSプロジェクトの生成

既存の.qmlproject ファイルから新しい GHS プロジェクトを生成する場合は、この方法を使用します。エクスポートされたプラットフォーム・ソースと生成されたUIソースを含む、qmlprojectexporter によって構成されたGHSプロジェクトが得られます。このプロセスの一般的な詳細については、「初めてプロジェクトを生成する」を参照してください。

注: 異なる GHS Multi IDE バージョンを必要とする複数のQt Quick Ultralite プラットフォームで作業しており、複数の GHS IDE バージョンをインストールしている場合は、正しい GHS IDE バージョンを手動で起動し、そこから GHS プロジェクト ファイルを開く必要があります。

以下は、必要なソース ファイル、オプション、ライブラリを含む、すぐにビルド可能な GHS プロジェクトを生成するコマンドの例です:

<QUL_ROOT>/bin/qmlprojectexporter.exe --platform rh850-d1m1a-baremetal --toolchain ghs --project-type ghs --outdir my_project --include-ide-generated-hw-code --board-sdk /path/to/board-sdk my_project.qmlproject --generate-entrypoint

注意: qmlprojectexporter はビルドシステムの代わりではありません。プロジェクトが.qmlproject ファイルで指定されていない追加のソースファイルやヘッダーファイルに依存している場合、生成されたプロジェクトに手動で追加する必要があります。例えば、application.gpj に追加してください。

GHSプロジェクトの拡張

qmlprojectexporter で設定されていない既存の GHS プロジェクトがある場合、--extend-project を使用して、.qmlproject ファイルに基づくQt for MCUs ソースでこのプロジェクトを拡張できます。拡張するGHSプロジェクトに加えて、このコマンドを実行するには、GHSプロジェクトの生成と同じ情報が必要です。

GHSプロジェクトを拡張するには、--extend-project引数を使用してメインプロジェクトファイルを指定します。メイン・プロジェクトには、直接の子プロジェクトの中にProgram というタイプのプロジェクトが含まれていなければなりません。qmlprojectexporter は、最初に有効なProgram プロジェクトファイルを探し、Qt for MCUs パーツを追加します。異なるプロジェクトタイプの詳細については、GHS MULTI IDEのヘルプメニューとドキュメントを参照してください。

注意: この引数を使用すると、qmlprojectexporter 、既存のプロジェクト ファイルが変更されます。

デフォルトでは、qmlprojectexporter 、プラットフォームソースをプロジェクトディレクトリにエクスポートし、別のサブプロジェクトに含めます。プロジェクトに、Qt for MCUs がターゲット・プラットフォーム上で実行するために必要なソースがすでに含まれている場合は、引数 --export-platform false引数を使用してこのステップをスキップしてください。また、--include-ide-generated-hw-codeおよび--board-sdk引数を使用することで、ターゲット・プラットフォームのSDKからのドライバを含むサブプロジェクトを追加するよう、qmlprojectexporter

注意: Qt for MCUs プラットフォーム・エクスポートでは、既存の設定と互換性がないリンカ・スクリプトやその他のオプションが追加されます。ボード構成が正しいことを確認するために、エクスポート後に必ずこれらを編集してください。

以下のコマンド例は、プラットフォーム、ボード SDK、生成された UI ソースとオプションのすべてを含むプロジェクトを拡張します:

<QUL_ROOT>/bin/qmlprojectexporter.exe --platform rh850-d1m1a-baremetal --toolchain ghs --project-type ghs --extend-project my_project/project.gpj --include-ide-generated-hw-code --board-sdk /path/to/board-sdk my_project.qmlproject

生成されたプロジェクト・ファイルは、Program プロジェクト・ファイル・パスからの相対パスで、prj ディレクトリにあります。

GHSプロジェクトの更新

すでにQt for MCUs プラットフォームとUIソースを含むGHSプロジェクトがある場合、--update-projectコマンドライン引数を使用して、Qt for MCUs -固有の内容を更新できます。UIコードまたはアセットに変更を加えた後にこのコマンドを実行すると、GHSプロジェクトにソースが再エクスポートされます:

<QUL_ROOT>/bin/qmlprojectexporter.exe my_project.qmlproject --update-project my_project/main_project_file.gpj

注: 生成されたGHS Multi IDE QUL Workspaceを使用して、UI から GHS プロジェクトを更新することもできます。

生成された GHS プロジェクトの内容

生成されたプロジェクトは、以下の GHS MULTI IDE プロジェクト ファイルで構成されます:

注意: 既存のプロジェクトを拡張する場合、メイン プロジェクト ファイルとProgram ファイルはすでに GHS プロジェクトの一部であり、名前が異なる場合があります。

  • <outdir>/GHS/project.gpj メインプロジェクトファイルは、ターゲットアーキテクチャとサブプロジェクト内のパスを簡略化するマクロを定義します。
  • <outdir>/GHS/prj/program.gpj メインプログラムファイルには、プログラム全体のコンパイル定義、コンパイルオプション、リンカディレクティブ、インクルードディレクトリ、リンカスクリプトが含まれます。また、アプリケーションで使用されるサブプロジェクトのリストもあります。
  • <outdir>/GHS/prj/drivers.gpj サブプロジェクト・ファイルには、Qt for MCUs で必要とされる、ボードSDKに含まれるすべての低レベル・ドライバが含まれます。include-ide-generated-hw-codeフラグが設定されていない場合、このプロジェクトは空になることがあります。
  • <outdir>/GHS/prj/application.gpj 便宜上、空のサブプロジェクトにしています。このサブプロジェクトにmain.cpp とその他のバックエンドコードを追加します。このサブプロジェクトは、qmlprojectexporter を使ってゼロからプロジェクトを生成する場合にのみ追加されます。
  • <outdir>/GHS/prj/QtMCUs/qul_platform.gpj エクスポートされたQt for MCUs プラットフォームソース用のサブプロジェクトです。
  • <outdir>/GHS/prj/QtMCUs/qul_app.gpj メインの.qmlproject ファイルから生成された UI ファイルを追加するサブプロジェクト。
  • <outdir>/GHS/prj/QtMCUs/qul_module_<ModuleName>.gpj .qmlproject モジュールごとに、そのモジュール用に生成された UI ソースファイルを追加するサブプロジェクト。

既存のプロジェクト・ファイルを更新するとき、qmlprojectexporter はメイン・プログラム・ファイルのガード・セクションに依存します。プラットフォーム固有の部分は## QUL_PLATFORM BEGIN #### QUL_PLATFORM END ## で囲まれています。.qmlproject ファイルに由来するプロジェクト・ファイルのセクションは、## QUL_APP BEGIN #### QUL_APP END ## で囲まれています。

注意: これらのセクションの内容は、対応する部分を更新する際に警告なしに上書きされる可能性があります。手動でプロジェクトにファイルを追加するときは、これらのセクションを避けてください。

既存のプロジェクトを更新するとき、qmlprojectexporter は、.qmlproject ファイルの最新の変更を反映するようにプロジェクトファイルを修正します。これは、GHSプログラムファイルのQUL_APP で囲まれた内容が変更されることを意味します。さらに、qmlprojectexporter は、<project-outdir>/prj/QtMCUs の対応するサブプロジェクトの内容を置き換えます。プラットフォームの更新が--export-platform を使用して明示的に要求されない限り、プラットフォームのサブプロジェクト (qul_platform.gpj) とQUL_PLATFORM で囲まれた内容は変更されません。

次のProgram プロジェクト・ファイルの例は、qmlprojectexporter が既存のプロジェクトを更新する方法を示しています:

#!gbuild

[Program]
    -DQUL_STD_STRING_SUPPORT
    -DSDOME_PREPROCESSOR_DEFINE
    -o application.elf
## QUL_APP BEGIN ##
    -DSOME_UNRELATED_DEFINE                 <- Unrelated to QUL. Will be removed
    -I/path/to/qmlproject
    -DSOME_DEFINE_NEEDED_BY_GENERATED_FILES
## QUL_APP END ##
## QUL_PLATFORM BEGIN ##
    -I${QUL_PLATFORM_DIR}/platform/common
    # cxx compile options
    --C++14
## QUL_PLATFORM END ##

application.gpj
drivers.gpj
## QUL_APP BEGIN ##
QtMCUs/qul_app.gpj
## QUL_APP END ##
## QUL_PLATFORM BEGIN ##
QtMCUs/qul_platform.gpj
## QUL_PLATFORM END ##

新しいモジュールを追加してプロジェクトを更新すると(qmlprojectexporter ./main.qmlproject --update-project <outdir>/GHS/project.gpj を使用)、QUL_APP のセクションは上書きされます。qmlprojectexporter で生成されたコードでは使用されないため、-DSOME_UNRELATED_DEFINE の行が削除されていることに注意してください。同様に、新しいモジュールのインクルードパスとサブプロジェクトは、ガードされたセクションの中にあります。プロジェクトの他のすべての部分は変更されません:

#!gbuild

[Program]
    -DQUL_STD_STRING_SUPPORT
    -DSDOME_PREPROCESSOR_DEFINE
    -o application.elf
## QUL_APP BEGIN ##
    -I/path/to/qmlproject
    -I/path/to/MyNewModule                  <- Newly added include path
    -DSOME_DEFINE_NEEDED_BY_GENERATED_FILES
## QUL_APP END ##
## QUL_PLATFORM BEGIN ##
    -I${QUL_PLATFORM_DIR}/platform/common
    # cxx compile options
    --C++14
## QUL_PLATFORM END ##

application.gpj
drivers.gpj
## QUL_APP BEGIN ##
QtMCUs/qul_app.gpj
QtMCUs/qul_module_MyNewModule.gpj           <- Newly added subproject
## QUL_APP END ##
## QUL_PLATFORM BEGIN ##
QtMCUs/qul_platform.gpj
## QUL_PLATFORM END ##

GHSマルチIDE QULワークスペース

新しいプロジェクトを作成したり、既存のプロジェクトを拡張したりした後、Qmlファイルのデザインレイアウトを変更したり、リソースを別のものに置き換えたりしたくなるかもしれません。この場合、Qt Quick Ultralite プロジェクトを変更するたびに、正しい更新コマンドを実行する必要があります。

このプロセスを簡素化するため、生成または拡張されたプロジェクトにはワークスペース・ファイルがあり、qmlprojectexporter が最初の実行時にプロジェクトに追加します。ワークスペース・ファイルには、qmlprojectexporter を正しい引数で実行し、新しく更新、追加、削除されたファイルでプロジェクトをビルドする一連のコマンドが含まれています。ワークスペースを使用する代わりに、ターミナル上で一連のコマンドを手動で作成することもできます。

ワークスペース・ファイルの名前は<project_name>_qul_workspace.gmb で、メインの.gpj ファイルと同じフォルダーにあります。以下のいずれかの方法でインポートしてください:

  • ランチャーを使用する。If you open the launcher, the quickest way to locate the.gmb file is to go toFile->"Load Workspace from file..." and locate the file in the<outdir>/GHS folder.コマンドシーケンスには、Project Manager を開くステップも含まれています。

    MULTI Launcherを使用して.gmbワークスペースファイルをインポートする。

  • プロジェクトマネージャーを使う。<outdir>/GHS/project.gpj ファイルをダブルクリックしてプロジェクトマネージャーを開くことも可能です。Qt Quick Ultralite ワークスペースを素早く追加し、ランチャーを表示するには、ワークスペースファイルをダブルクリックし、既存のワークスペースにロードすることを受け入れます。

    MULTI Project Managerを使用して、.gmbワークスペースファイルをインポートする。

この時点で、更新コマンドシーケンスを含む、すぐに使用できるワークスペースができあがります。

GHS MULTI IDEで生成されたQULワークスペース。

注: シーケンス全体の代わりにコマンドを直接実行することで、qmlprojectexporter 更新を省略できます。

すべてが正しく設定されていれば、シーケンスを実行するとqmlprojectexporter が正常に実行され、プロジェクトのビルドが開始されるはずです。

QULワークスペースのコマンドシーケンス実行後のGHS MULTI IDEでのビルド出力。

フラッシュ

GHSプロジェクトファイルに加えて、qmlprojectexporter 、ターゲットハードウェアにアプリケーションをフラッシュするために使用できる便利なファイルがいくつか生成されます。ファイルの種類とフラッシュ方法はプラットフォームによって異なります。

既存のプロジェクトを更新する場合、qmlprojectexporter はまず、期待されるフラッシングファイルの既存のコピーを探します。ファイルがすでに存在する場合は上書きされません。これは手動による変更を保持するためです。これらのファイルを再生成するには、単に名前を変更するか、プロジェクト・ディレクトリから既存のファイルを削除してください。

ここで説明した方法がプロジェクトで機能しない場合は、アプリケーションのフラッシュを参照してください。

Renesas RH850 D1M1A

Renesas RH850 用のプロジェクトを生成する際、qmlprojectexporter はメイン・プロジェクトにqul_probe_E1.conqul_probe_E2.con という 2 つの接続ファイルを追加します。これらのファイルには、E1 および E2 プローブに接続するためのメタデータが含まれています。GHS MULTI IDEでプロジェクトを開くと、これらの接続ファイルが自動的に開かれ、すぐに使用できます。以下の手順に従って、プローブに接続します:

  1. プローブがターゲットボードとコンピュータに接続されていることを確認します。
  2. F4 を選択するか、UI でConnect > Connect... を選択して Connection Chooser を開きます。
  3. プローブに応じて、QUL_PROBE_E1 またはQUL_PROBE_E2 のいずれかを選択します。
  4. Connect を押し、接続が正常に確立されたことを確認します。

接続が確立したら、GHS MULTI IDE を使用してアプリケーションをボードにフラッシュし、IDE の機能を使用してデバッグできます。

接続ファイルは、GHSツールチェーンでインストールされたファイルに依存します。パスは生成されたファイルにハードコードされており、ツールチェーンがC:\ghs\comp_201815 にインストールされていることを前提としています。お使いの環境でパスが異なる場合は、正しいパスでファイルを編集してください。

注意: GHS MULTI IDEは接続ファイルを開いたり閉じたりする際に変更を加えることがあるため、予期せぬ変更を避けるため、GHS MULTI IDEでプロジェクトを開く前に別のテキストエディタでファイルを編集することをお勧めします。

Infineon ボード

サポートされているInfineon プラットフォームの1つ用にプロジェクトをエクスポートする場合、qmlprojectexporter 、MiniProg4またはJ-Linkプローブのいずれかを使用してアプリケーションをフラッシュするために使用されるコマンドを含むバッチファイルが追加されます。これらのコマンドを実行するためのショートカットも、アクセスに便利なようにワークスペース・ファイルに追加されます。qul_flash_jlink.bat およびqul_flash_miniprog.bat という名前のバッチファイルは、メインプロジェクトファイルと同じディレクトリに配置されます。

生成されたバッチ・ファイルから実行されるコマンドは、「Flashing Instructions forInfineon boards」に記載されているコマンドです。

このバッチファイルは、Infineon Flash Utility 1.4 がデフォルトの場所にインストールされているか、またはそのパスが環境変数 INFINEON_AUTO_FLASH_UTILITY_DIR に格納されていることを前提としています。

注意: コマンドはアプリケーション・バイナリへのパスに依存するため、プロジェクト処理中にqmlprojectexporter がこのパスを検出できない場合、バッチファイルは生成されません。GHSプロジェクトのメイン・プログラム・ファイルで-o-オプションを指定して、バイナリ出力ファイルを探します。


詳細はこちらをご覧ください。