C
GHS Multi IDE プロジェクトの生成
このページでは、Green Hills Software(GHS)のMULTI IDEプロジェクトの生成に関する追加情報について説明します。
注: 詳細については、 Qt Quick のUltraliteプロジェクト生成に関する一般的な手順を参照してください 。
GHSプロジェクトの構造に関する詳細については、「生成されたGHSプロジェクトの内容」を参照してください。
qmlprojectexporter から GHS プロジェクトをエクスポートするには、3 つのモードがあります:
- GHSプロジェクトの生成-
.qmlprojectファイルから新しいGHSプロジェクトを生成する場合 - GHSプロジェクトの拡張-Qt for MCUs によって設定されていない既存のGHSプロジェクトに、 プラットフォームおよびUIソースを追加する場合
qmlprojectexporter - GHSプロジェクトの更新- すでに
qmlprojectexporterによって設定済みの既存のGHSプロジェクトについて、Qt for MCUs 固有の部分を更新します。
GHSプロジェクトの生成
既存の.qmlproject ファイルから新しいGHSプロジェクトを生成する場合に、この方法を使用します。これにより、qmlprojectexporter によって構成されたGHSプロジェクトが得られ、そこにはエクスポートされたプラットフォームソースと生成されたUIソースが含まれます。このプロセスに関するより一般的な詳細については、「プロジェクトの初回生成」を参照してください。
注: 異なるバージョンの 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引数を使用することで、qmlprojectexporter にターゲットプラットフォームの SDK からのドライバを含むサブプロジェクトを追加するよう指示することもできます。
注: 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ワークスペースを使用して、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 内の対応するサブプロジェクトの内容を置き換えます。プラットフォームサブプロジェクト(qul_platform.gpj )およびQUL_PLATFORM で囲まれた内容は、--export-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 セクションが上書きされます。-DSOME_UNRELATED_DEFINE を含む行は、qmlprojectexporter によって生成されたコードでは使用されないため、削除されることに注意してください。同様に、新しいモジュール用の新しいインクルードパスとサブプロジェクトが、ガードされたセクション内に追加されています。プロジェクトのその他の部分はすべて変更されません:
#!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 Multi IDE QUL ワークスペース
新しいプロジェクトを生成したり、既存のプロジェクトを拡張したりした後、Qml ファイルのデザインレイアウトを変更したり、リソースを別のものに置き換えたりしたい場合があるかもしれません。これには、Qt Quick Ultralite プロジェクトへの変更ごとに、適切な更新コマンドを実行する必要があります。
このプロセスを簡略化するため、生成または拡張されたプロジェクトにはワークスペースファイルが含まれており、qmlprojectexporter は初回実行時にこれをプロジェクトに追加します。このファイルには、qmlprojectexporter を正しい引数で実行し、新しく更新・追加・削除されたファイルを含めてプロジェクトをビルドする一連のコマンドが含まれています。ワークスペースを使用する代わりに、ターミナル上で手動で一連のコマンドを記述することも可能です。
ワークスペースファイルの名前は `<project_name>_qul_workspace.gmb ` で、メインの `.gpj ` ファイルと同じフォルダ内にあります。以下のいずれかの方法でインポートしてください:
- ランチャーを使用する。ランチャーを開いた場合、
.gmbファイルを最も素早く見つけるには、File->"Load Workspace from file..."に移動し、<outdir>/GHSフォルダ内でそのファイルを探します。コマンドシーケンスには、Project Managerを開く手順も含まれています。
- プロジェクトマネージャーの使用。
<outdir>/GHS/project.gpjファイルをダブルクリックして、プロジェクトマネージャーを開くこともできます。「Qt Quick 」Ultralite ワークスペースをすばやく追加し、ランチャーを表示するには、ワークスペースファイルをダブルクリックして、既存のワークスペースに読み込むことを承認します。
これで、更新コマンドのシーケンスを含む、すぐに使用可能なワークスペースが準備されます。

注: コマンドシーケンス全体を実行する代わりに、コマンドを直接実行することで、qmlprojectexporter の更新をスキップすることもできます。
すべてが正しく設定されていれば、この一連のコマンドを実行すると、qmlprojectexporter が正常に実行されたことが表示され、プロジェクトのビルドが開始されるはずです。

フラッシュ
GHS プロジェクトファイルに加えて、qmlprojectexporter は、ターゲットハードウェアへのアプリケーションのフラッシュに使用できる便利なファイルをいくつか生成します。ファイルの種類やフラッシュの方法は、プラットフォームによって異なります。
既存のプロジェクトを更新する場合、qmlprojectexporter はまず、必要なフラッシュ用ファイルの既存のコピーを検索します。ファイルがすでに存在する場合、上書きは行われません。これは、手動で行った変更を保持するためです。これらのファイルを再生成するには、プロジェクトディレクトリ内の既存のファイルの名前を変更するか、削除してください。
ここで説明した方法がプロジェクトで機能しない場合は、「アプリケーションの書き込み」を参照して、書き込み方法を確認してください。
Renesas RH850 D1M1A
Renesas RH850 用のプロジェクトを生成する際、qmlprojectexporter はメインプロジェクトに 2 つの接続ファイル(qul_probe_E1.con およびqul_probe_E2.con )を追加します。これらのファイルには、E1 および E2 プローブへの接続を行うためのメタデータが含まれています。GHS MULTI IDE でプロジェクトを開くと、これらの接続ファイルが自動的に開かれ、すぐに使用できるようになります。 プローブに接続するには、以下の手順に従ってください:
- プローブがターゲットボードおよびコンピュータに接続されていることを確認してください。
- F4キーを押すか、UIで「Connect > Connect... 」を選択して、接続選択画面を開きます。
- お使いのプローブに応じて、「
QUL_PROBE_E1」または「QUL_PROBE_E2」のいずれかを選択します。 - 「Connect 」を押して、接続が正常に確立されたことを確認してください。
接続が確立されると、GHS MULTI IDE を使用してボードにアプリケーションをフラッシュし、IDE の機能を使用してデバッグを行うことができます。
接続ファイルは、GHS ツールチェーンとともにインストールされたファイルに依存しています。パスは生成されたファイルにハードコードされており、ツールチェーンがC:\ghs\comp_201815 にインストールされていることを前提としています。お使いの環境でパスが異なる場合は、正しいパスでファイルを編集してください。
注: GHS MULTI IDEは 、接続ファイルを開いたり閉じたりする際にその内容に変更を加える可能性があるため 、予期せぬ変更を防ぐために、GHS MULTI IDEでプロジェクトを開く前に、別のテキストエディタでファイルを編集することをお勧めします。
Infineon ボード
サポートされているInfineon プラットフォームのいずれか向けにプロジェクトをエクスポートすると、qmlprojectexporter は、MiniProg4またはJ-Linkプローブを使用してアプリケーションをフラッシュするためのコマンドを含むバッチファイルを追加します。これらのコマンドを実行するためのショートカットも、簡単にアクセスできるようワークスペースファイルに追加されます。qul_flash_jlink.bat およびqul_flash_miniprog.bat という名前のバッチファイルは、メインのプロジェクトファイルと同じディレクトリに配置されます。
生成されたバッチファイルから実行されるコマンドは、「 Infineon ボードのフラッシュ手順」に記載されているコマンドです。
このバッチファイルは、Infineon Flash Utility 1.4 がデフォルトの場所にインストールされているか、そのパスが環境変数 INFINEON_AUTO_FLASH_UTILITY_DIR に格納されていることを前提としています。
注: コマンドはアプリケーションバイナリへのパスに依存しているため 、qmlprojectexporter がプロジェクトの処理中にこのパスを検出できない場合、バッチファイルは生成されません。GHSプロジェクト内のメインプログラムファイルで-o オプションを検索し、バイナリ出力ファイルの場所を特定します。
特定のQtライセンスの下で利用可能です。
詳細はこちら。