メイン・コンテンツまでスキップ

TouchGFX Board SetupでRTOSを使用せずに実行

本セクションでは、TouchGFX Designerで使用できるSTマイクロエレクトロニクス(NYSE:STM、以下ST)のいずれかの開発キット向けのTouchGFX Board Setupに基づいて、オペレーティング・システムを使用せずにTouchGFXプロジェクトを実行する方法について説明します。 この記事は、STM32CubeMXやSTM32CubeIDEから開始したカスタム・プロジェクトは対象としていません。

TouchGFX Board Setupからのプロジェクトの開始

TouchGFX Designerで利用できるほとんどのTouchGFX Board Setupでは、FreeRTOSというOSがデフォルトで有効化されています。 オペレーティング・システムを使用せずに実行するには、いくつかの手順に従う必要があります。 ここでは、STM32H7B3-DKボード向けのTouchGFX Board Setupを例として使用します。

  1. STM32H7B3-DKボード向けTouchGFX Board Setupを使用してTouchGFX Designerからプロジェクトを作成し、コードを生成します。

  2. 提供されている.iocファイルをSTM32CubeMXで開きます。

  3. STM32CubeMXインタフェースで、Middleware -> FreeRTOS設定に移動し、FreeRTOSを無効化します。

STM32H7B3-DK向けSTM32CubeMXでのFreeRTOS設定

バックライトの点灯

ほとんどのTouchGFX Board Setupでは、ディスプレイのバックライトはもともとオフになっています。 これは、ボードを初めて起動した瞬間にディスプレイの不具合が起こるのを防ぐためです。 バックライトは、(TouchGFX/targetフォルダ内の)TouchGFXHAL.cppに記載されたtaskEntry()関数にある最初のフレームバッファの準備が整うとオンになります。 OSを使用せずに実行すると、taskEntry()関数は一度も呼び出されないため、フレームバッファが正しく更新されている間はディスプレイは決してオンになりません。 これを解決するため、LTDC_HSYNCピンとVSYNCピンをHIGHに設定して、起動時のバックライトをオンにします。

  1. System Core -> GPIOセクションにあるGPIO設定に移動します。 ディスプレイのバックライトにリンクされたPINを探し、GPIO出力レベルをHIGHに設定します。 STM32H7B3-DKボードの場合、このピンはPA1(ユーザ・ラベル: LCD_BL_CTRL)とPA2(ユーザ・ラベル: LCD_ON/OFF)となります。

STM32H7B3-DK向けバックライトの点灯

  1. STM32CubeMXからコードを生成し、その後、TouchGFX Designerからコードを生成します。

コードの消去

STM32CubeMXおよびTouchGFX Generatorは、RTOS関数が「USER CODE」セクションにある場合、この関数の呼び出しを解除できません。 そのため、コードを手動で消去する必要があります。 STM32H7B3-DK TBSの場合のみ、タッチ・コントローラを変更する必要があります。

  1. プロジェクトのTouchGFX/targetフォルダにあるSTM32TouchController.cppファイルを開きます。 ifステートメント内にある#include <cmsis_os.h>configASSERT(0)を手動で削除します。

  2. Core/srcフォルダにあるFreertos.cファイルを削除します。

TouchGFX Designerからボード上のプロジェクトを削除するには、OSに関連する依存関係とパスを削除またはコメントアウトして、(gccフォルダにある) Makefileを消去する必要があります。 また、使用しているツールチェーン/IDEのその他のプロジェクト内にあるすべてのOSに関連する依存関係とパスを消去する必要があります。

これで、TouchGFX Board Setupから開始したプロジェクト上でOSを使用せずにプロジェクトを実行できるようになりました。