このページでは

C

FreeRTOS アプリケーション構築プロセス

Qt Quick UltraliteFreeRTOS アプリケーションのビルドプロセスは、ベアメタルでビルドするときと同じですが、いくつか追加されています。FreeRTOS は独立したライブラリなので、自分でビルドしてリンクするか、あるいは app_commonヘルパーを使うこともできます。

FreeRTOSapp_common

app_common は、サンプルやデモのOSニーズを統一するために使用されるヘルパーです。Qt Quick Ultraliteを正しいOS用に設定し、FreeRTOS ソースなどのOS固有のファイルをコンパイルし、プロジェクトにリンクします。

使用方法app_common

app_common は主にQt Quick Ultralite のサンプルとデモ用ですが、他のプロジェクトでも使用できます。app_common を使用するには、FREERTOS_DIR CMake 変数をインクルードディレクトリポータブルディレクトリ、FreeRTOS ソースファイルが存在するディレクトリに設定します。

FreeRTOS ディレクトリを設定したら、次の行をプロジェクトのCMakeLists.txt に追加してください:

app_target_setup_os(<app_name>)

<app_name> はプロジェクトの実行ファイル名です。この関数は、プロジェクトにFreeRTOS

これで、プロジェクトはビルドされ、FreeRTOSQt Quick Ultralite ライブラリにリンクされるはずです。ヒープアロケータやQt Quick Ultraliteが提供するFreeRTOSConfig.h を変更したい場合は、ヒープポリシーの変更と カスタムFreeRTOSConfig.hの使用を参照してください。

を使用せずにアプリケーションをビルドするapp_common

app_common を使用せずにFreeRTOS を使用するプロジェクトをビルドする場合、FreeRTOS を手動で設定、コンパイル、リンクする必要があります。FreeRTOS のビルド方法については FreeRTOS-project.html">Creating a New FreeRTOS Project.

Qt Quick Ultralite自身は以下のFreeRTOS ヘッダーと関数が必要です:

  • FreeRTOS.h
  • task.h
  • portable.h
  • memory.h
  • void xPortSysTickHandler(void)
  • void *pvPortMalloc(size_t xSize)
  • void vPortFree(void *pv)

ヒープポリシーの変更

FreeRTOS ヒープポリシーの変更には様々なメモリ割り当て実装が含まれます(実装の詳細についてはFreeRTOS developer docs, Memory managementを参照してください)。デフォルトでは、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' メモリー・マネージャー実装が存在するFreeRTOS MemMang ディレクトリからヒープ・ポリシーを見つけることを期待します。

カスタム FreeRTOSConfig.h の使用

FreeRTOSConfig.hは、プロジェクトのビルド中にFreeRTOS を設定するために使用されるヘッダーファイルです。FreeRTOSConfig.h は、プラットフォームパッケージによって提供されます。 QUL_PLATFORM_TARGET_DIR CMake変数は、FreeRTOSConfig.h の場所を決定するために使用されます。


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