C
FreeRTOS アプリケーションのビルドプロセス
Qt Quick UltraliteFreeRTOS アプリケーションのビルドプロセスは、ベアメタル上でビルドする場合と基本的に同じですが、いくつかの追加要素があります。FreeRTOS は独立したライブラリであるため、自分でビルドしてリンクすることも、 app_common ヘルパーを使用することもできます。
FreeRTOS 向けアプリケーションのビルド(有無にかかわらず)app_common
app_common は、サンプルやデモにおけるOS要件を統一するために使用されるヘルパーです。これは、Qt Quick Ultraliteを適切なOS用に設定し、FreeRTOS のソースコードなどのOS固有のファイルをコンパイルして、それらをプロジェクトにリンクします。
使用方法app_common
app_common は主にQt Quick Ultraliteのサンプルやデモ向けですが、他のプロジェクトでも使用可能です。app_common を使用するには、CMake変数FREERTOS_DIR に、インクルードディレクトリ、ポータブルディレクトリ、およびFreeRTOS のソースファイルが存在するディレクトリを指定してください。
FreeRTOS ディレクトリを設定した後、プロジェクトのCMakeLists.txt に次の行を追加してください:
app_target_setup_os(<app_name>)ここで、<app_name> はプロジェクトの実行ファイル名です。この関数は、プロジェクトのFreeRTOS を設定します。
これで、プロジェクトがビルドされ、FreeRTOS およびQt Quick のUltraliteライブラリにリンクされるようになります。ヒープアロケータを変更したい場合や、Qt Quick が提供するFreeRTOSConfig.h を使用したい場合は、「ヒープポリシーの変更」および「カスタムFreeRTOSConfig.hの使用」を参照してください。
以下の機能を使用せずにアプリケーションをビルドするにはapp_common
app_common を使用せずにFreeRTOS を利用するプロジェクトをビルドする場合、FreeRTOS をプロジェクトに対して手動で設定、コンパイル、およびリンクする必要があります。FreeRTOS のビルド手順については、 FreeRTOS-project.html">Creating a New FreeRTOS Projectを参照してください。
Qt Quick Ultralite 自体には、以下のFreeRTOS のヘッダーおよび関数が必要です:
FreeRTOS.htask.hportable.hmemory.hvoid xPortSysTickHandler(void)void *pvPortMalloc(size_t xSize)void vPortFree(void *pv)
ヒープポリシーの変更
FreeRTOS には、さまざまなメモリ割り当ての実装が含まれています(実装の詳細については、FreeRTOS の開発者向けドキュメントの「メモリ管理」を参照してください)。デフォルトでは、Qt Quick Ultralite のサンプルアプリケーションではheap_4 が使用されており、これは「断片化を避けるために隣接する空きブロックを結合します。絶対アドレス配置オプションが含まれています。」 ただし、状況によっては、FreeRTOS が提供する実装よりも、他のカスタム実装の方が適している場合があります。プロジェクトのCmakeLists.txt ファイルに以下の呼び出しを追加することで、実装を変更できます:
set_property(TARGET <app_name> PROPERTY QUL_FREERTOS_HEAP_POLICY "<heap_implementation>")ここで、<app_name> はプロジェクトの実行ファイル名、<heap_implementation> はファイル拡張子を除いた実装の名前です。たとえば、heap_1.c を使用したい場合は、heap_1 と記述する必要があります。
注:このス クリプトは 、`FreeRTOS ` の `MemMang` ディレクトリ内に、`FreeRTOS` のメモリマネージャ実装が格納されていることを前提としています。
カスタム FreeRTOSConfig.h の使用
FreeRTOSConfig.h は、プロジェクトのビルド時にFreeRTOS を設定するために使用されるヘッダーファイルです。FreeRTOSConfig.h はプラットフォームパッケージによって提供されます。CMake変数QUL_PLATFORM_TARGET_DIR を使用して、FreeRTOSConfig.h の場所を指定します。
特定の Qt ライセンスの下で利用可能です。
詳細はこちら。