TouchGFXにおけるIDEの使用
TouchGFX DesignerまたはSTM32CubeMXを介して、新しいTouchGFXプロジェクトを作成するときには、独自のIDEを使用するために、以下のプロジェクト・ファイルとライブラリが用意されています。
- Keil μVision(ターゲットのみ)
- IAR Embedded Workbench (ターゲットのみ)
- STM32CubeIDE (ターゲットのみ)
- Microsoft Visual Studio (シミュレータのみ)
すべてのプロジェクト・ファイルがプロジェクト内に、同時に存在するわけではないことに注意してください。 STM32CubeMXで選択されたツール・チェーンのプロジェクトが生成されます。デフォルトではSTM32CubeIDEが選択されています。
Further reading
さらに、ARMターゲット向けに、GCCクロスコンパイラによるシェルベースのコンパイル用のMakefileとライブラリも提供されています。 この記事は、TouchGFXアプリケーションの開発用にサードパーティのGCCベースのIDEを設定するのに役立ちます。 基本的には、GCCクロスコンパイラを起動できるすべてのIDEが利用可能です。
Note
この記事では、TouchGFXで他のIDEを使用するための異なる2つのアプローチを取り上げます。 1つのアプローチは、IDEからTouchGFX Makefileを呼び出す方法です。 おそらくこれが最も簡単なアプローチですが、コンパイル・プロセスやファイルの場所を詳細にコントロールする必要がある場合、必ずしも望ましいアプローチとは言えません。 代替方法として、必要なTouchGFXファイルや設定オプションを既存のプロジェクトに手動で追加することができます。
前提条件: GCCバージョン
この記事ではユーザが、TouchGFX環境シェルと共に配布されるGCCクロスコンパイラのツールチェーンを使用するか、環境シェル・ツールチェーンを使用してコンパイルされたTouchGFXコア・ライブラリにリンク可能なタイプの独自のGCCツールチェーンを使用することを想定しています。
使用されるGCCコンパイラは以下のとおりです。
$ arm-none-eabi-gcc.exe -v
Target: arm-none-eabi
Thread model: single
gcc version 7.3.1 20180622 (release) [ARM/embedded-7-branch revision 261907] (GNU Tools for Arm Embedded Processors 7-2018-q2-update)
このコンパイラは、https://launchpad.net/gcc-arm-embeddedから取得できます。
IDEからのTouchGFX Makefileの呼び出し
おそらく、IDEからTouchGFXアプリケーションを簡単にコンパイルする方法は、TouchGFX Designerによって作成されたプロジェクトに含まれるMakefileをとりあえず呼び出すことです。 TouchGFX環境シェルを使用してターゲット向けにアプリケーションをコンパイルするには、TouchGFXアプリケーションのルート・ディレクトリに移動して、次のコマンドを実行します。
$ make -f gcc/Makefile
これで、TouchGFX環境シェルからmakeコマンドを呼び出すのではなく、ユーザのIDEから呼び出すこともできるようになります。 シェルが使用する実行可能ファイル(make、arm-none-eabi-gccなど)は、実際には通常のWindows x86実行可能ファイルなので、以下の環境変数が設定済みであれば、makeアプリケーションは通常のコマンド・プロンプトから実行できます。
C:\TouchGFX\4.18.0\env\MinGW\bin
C:\TouchGFX\4.18.0\env\MinGW\msys\1.0\Ruby30-x64\bin
C:\TouchGFX\4.18.0\env\MinGW\msys\1.0\bin
C:\TouchGFX\4.18.0\env\MinGW\msys\1.0\gnu-arm-gcc\bin
必要なWindows環境変数を設定した後、適切なTouchGFX Makefileに対するmake
コマンドを自分のIDEから直接呼び出すことができます。 まさに実行する必要があるコマンドは、シェルからのコンパイル時と同じなので、次のとおりです。
$ make -f gcc/Makefile
Note
TouchGFXコード・ファイルを自分のプロジェクトに追加
ビルド・プロセスやファイルの場所をもっと詳細に制御したい場合は、関連するTouchGFXコード・ファイルを自分の既存のプロジェクトに統合し、コンパイルのために、必要なインクルード・パスとコンパイラ・スイッチを追加することができます。
必要なファイル
基本的には、TouchGFX環境シェルからmakeによって構築するときにコンパイルするものと同じTouchGFXファイルを、IDEプロジェクトに追加する必要があります。 含めるべきファイルは、正確にはターゲット・ボードによって異なります。低レベルのドライバはボードごとに異なるからです。 必要なファイルを決定するために推奨されるアプローチは、適切なボード用のTouchGFX環境シェルを使用して、単純にアプリケーションのコンパイルを試みることです。 コンパイル・プロセスでは、コンパイルされたファイルが1つずつ示されるので、追加する必要のあるファイルの正確なリストを得ることができます。
インクルード・パス
以下のインクルード・パスをコンパイルに追加する必要があります。
.../TouchGFX/gui/include
.../TouchGFX/generated/gui_generated/include
.../TouchGFX/platform/os
.../TouchGFX/generated/fonts/include
.../TouchGFX/generated/images/include
.../TouchGFX/generated/texts/include
.../TouchGFX/generated/videos/include
.../Middlewares/ST/touchgfx/framework/include
Tip
gcc/Makefile
を確認してみてください。コンパイラ・スイッチ
インクルード・パスと同様に、いくつか汎用のコンパイラ・スイッチを有効にする必要があり、プロセッサ・コアや具体的なボードに固有のコンパイラ・スイッチもあります。 TouchGFXコア・ライブラリのコンパイルに使用されるコンパイラ・スイッチを、コアごとに以下に示します。 これらのオプションの一部は、リンカが機能するためにもコードのコンパイルに必須で、また一部はオプションです。 必須であるものは太字で示されています。
Cortex-M0コア
-fno-rtti -fno-exceptions -mfpu=fpv4-sp-d16 -mfloat-abi=softfp -mcpu=cortex-m0plus -D__irq="" -mthumb -mno-thumb-interwork -std=c99 -Os -fno-strict-aliasing -fdata-sections -ffunction-sections -Wno-psabi -DCORE_M0PLUS
Cortex-M4fコア
-fno-rtti -fno-exceptions -mfpu=fpv4-sp-d16 -mfloat-abi=softfp -mcpu=cortex-m4 -D__irq="" -mthumb -mno-thumb-interwork -std=c99 -Os -fno-strict-aliasing -fdata-sections -ffunction-sections -Wno-psabi -DCORE_M4 -march=armv7e-m
Cortex-M7コア
-fno-rtti -fno-exceptions -mfpu=fpv5-sp-d16 -mfloat-abi=softfp -mcpu=cortex-m7 -D__irq="" -mthumb -mno-thumb-interwork -std=c99 -Os -fno-strict-aliasing -fdata-sections -ffunction-sections -Wno-psabi -DCORE_M7
Cortex-M33コア
-fno-rtti -fno-exceptions -mfpu=fpv5-sp-d16 -mfloat-abi=softfp -mcpu=cortex-m33 -D__irq="" -mthumb -mno-thumb-interwork -std=c99 -Os -fno-strict-aliasing -fdata-sections -ffunction-sections -Wno-psabi -DCORE_M33
リンカ
コア・ライブラリ
TouchGFXコア・ライブラリとリンクする必要があります。 マイクロコントローラに応じて、次のいずれかを使用します。
.../Middlewares/ST/touchgfx/lib/core/cortex-m0/gcc/libtouchgfx.a
.../Middlewares/ST/touchgfx/lib/core/cortex-m4f/gcc/libtouchgfx.a
.../Middlewares/ST/touchgfx/lib/core/cortex-m7/gcc/libtouchgfx.a
.../Middlewares/ST/touchgfx/lib/core/cortex-m33/gcc/libtouchgfx.a
リンカ・オプション
さらに、いくつかのリンカ・オプションも必要になります。 TouchGFXで使用するオプションは以下のとおりです。
Cortex-M0: -Wl,-static -nostartfiles -mthumb -mno-thumb-interwork -fno-exceptions -fno-rtti -Wl,--gc-sections -mcpu=cortex-m0plus -Wno-psabi -mfpu=fpv4-sp-d16 -mfloat-abi=softfp
Cortex-M4f: -Wl,-static -nostartfiles -mthumb -mno-thumb-interwork -fno-exceptions -fno-rtti -Wl,--gc-sections -mcpu=cortex-m4 -march=armv7e-m -Wno-psabi -mfpu=fpv4-sp-d16 -mfloat-abi=softfp
Cortex-M7: -Wl,-static -nostartfiles -mthumb -mno-thumb-interwork -fno-exceptions -fno-rtti -Wl,--gc-sections -mcpu=cortex-m7 -Wno-psabi -mfpu=fpv5-sp-d16 -mfloat-abi=softfp
Cortex-M33: -Wl,-static -nostartfiles -mthumb -mno-thumb-interwork -fno-exceptions -fno-rtti -Wl,--gc-sections -mcpu=cortex-m33 -Wno-psabi -mfpu=fpv5-sp-d16 -mfloat-abi=softfp
アセット生成
プロジェクトをコンパイルするには、アセットも生成する必要があります。 このための1つの方法は、生成済みのMakefileを'assets'オプション付きで呼び出すことです。
make -f TouchGFX/simulator/gcc/Makefile assets
アセットを生成するもう1つの方法は、image-、text/font-、video-converterを直接使用することです。
Imageconverter imageconverterは、LinuxおよびWindows用に作成されたプロジェクトのtouchgfxフォルダ(Middlewares/ST/touchgfx/framework/tools/imageconvert/build
)にあります。
usage: imageconvert [-c configfile] [-f inputfile -o outputfile | -r inputdir -w outputdir]
実行可能ファイルimageconvert.outを呼び出すときに、呼び出し元のフォルダ内でconfigfile(application.config
)ファイルを検索します。
Textconverter textconverterは、プロジェクトのtouchgfxフォルダ(Middlewares/ST/touchgfx/framework/tools/textconvert
)にrubyファイル(main.rb
)としてあります。
usage: main.rb file.xml path/to/fontconvert.out path/to/fonts_output_dir path/to/localization_output_dir path/to/font/asset calling_path
Videoconverter videoconverterは、プロジェクトのtouchgfxフォルダ(Middlewares/ST/touchgfx/framework/tools/videoconvert
)にrubyファイル(videoconvert.rb
)としてあります。
usage: videoconvert.rb path/to/project_root_dir path/to/video_assets_dir path/to/generated_output_dir
書き込みとデバッグ
リンカの設定に応じて、ほとんどの場合は.elf
ファイルまたは.hex
ファイルが出力として生成されます。 ほとんどのIDEからTouchGFXアプリケーションを配置してデバッグできます。通常は、GDBサーバを使用するか、使用するIDEが提供する他の何らかのアプローチを使用します。 使用可能なIDEごとの具体的なポインタは提供できませんが、「コンパイルと書き込み」の記事からヒントを得ることができるかもしれません。その記事では、GCCで生成されたELF / HEXファイルによってボードを書き込む方法について説明しています。