メインコンテンツ

STM32 プロセッサベースのボードのスケジューリング オプションの設定

[コンフィギュレーション パラメーター][ハードウェア実行][ハードウェア ボード設定][オペレーティング システム/スケジューラ][オペレーティング システム] で選択した [Baremetal] または [FreeRTOS] オペレーティング システムを使用してモデルを実行できます。

モデルをターゲット ハードウェアで実行するためのスケジューリング オプションを設定するには、次の手順に従います。

  1. [コンフィギュレーション パラメーター] ダイアログ ボックスで [ハードウェア実行] を選択します。

  2. [ハードウェア ボード] ドロップダウン リストから任意の STM32 プロセッサ ベースのボードを選択します。以下に例を示します。[STM32F7xx Based (Double precision FPU)] などです。

  3. [オペレーティング システム] パラメーターで [Baremetal] または [FreeRTOS] を選択します。

    メモ

    コンフィギュレーション パラメーターでオペレーティング システムとして FreeRTOS を選択する場合は、STM32CubeMX プロジェクトの [Middleware][FREERTOS][Interface][CMSIS_V2][Interface] として CMSIS_V2 を選択してください。

  4. コード生成中のビルド プロセスの [Build action] ドロップダウン リストからオプションを選択します。

  5. [適用] をクリックします。

ベアメタルのスケジューリング

[Baremetal] は、スケジューラをマルチタスク、マルチレート モードで実行します。[ソルバー] ペインでモデルに対してシングル タスクを選択することもできます。Model ブロックは、周期がモデルの基本サンプル時間に設定されている定期的な割り込みによってタイミングが取られ、定期的に実行されます。[Baremetal] は、コンテキスト切り替えの高速化、スタック メモリの使用の効率化、およびスケジューラ コードの可視性の向上のために使用します。

基本レート トリガーとして [SysTick Scheduler] を使用する STM32 プロセッサ ベースのボード用にコードを生成する方法の例を次に示します。

SysTick タイマーは、モデルの基本レートのサンプル時間が割り込みレートに対応するように構成されます。望ましいレートが得られるように、タイマー期間およびプリスケーラを計算して設定します。

BaseRateSampleTime=TimerPeriodTimerClockSpeed

達成可能な最小の基本レートのサンプル時間は、モデルの複雑度によって異なります。最大値は、最大タイマー期間値 (SysTick の場合は 224–1) および CPU クロック速度によって異なります。

FreeRTOS のスケジューリング

[FreeRTOS] では、モデル内に存在するレートに基づいてコードを実行するようにスケジュールできます。FreeRTOS は、スレッド管理と時間管理をサポートする関数を備えた標準プログラミング インターフェイスを提供します。

FreeRTOS の Simulink コンフィギュレーション

  • FreeRTOS を使用する場合は、モデルの基本レートを 1 ms 以上の値に設定してください。

  • FreeRTOS では、最大 56 のスレッド優先順位 (0 ~ 55) がサポートされています。1 - 40 のスレッド優先順位はモデル レートのスケジュールに使用できます。41-55 のスレッド優先順位は、カスタム定義の高優先順位のスレッド用に予約されています。アイドル スレッドの優先順位はエクスターナル モード シミュレーション用に予約されています。

    メモ

    モデル レートのスケジュールにはソフトウェア タイマーが使用されます。タイマーのタスクの優先順位は、最高のスケジューリング レート (基本レートは 40) よりも高い優先順位に設定する必要があります。

  • FreeRTOS を使用する場合、[コンフィギュレーション パラメーター][コード生成][最適化][詳細設定パラメーター][最大スタック サイズ] リストで指定した値が各スレッドに適用されます。ただし、一部のスレッドでは指定されたスタック サイズが完全には利用されない可能性があります。

    Stack size

  • メモ

    スレッドのスタック サイズは、[コンフィギュレーション パラメーター][コード生成][最適化][詳細設定パラメーター][最大スタック サイズ] および [STM32CubeMX][Middleware][FREERTOS][Kernel settings][Config parameters][Minimal stack size][最大値] として設定されます。

FreeRTOS の STM32CubeMX プロジェクトの構成

オペレーティング システムとして [FreeRTOS] を選択する場合は、STM32CubeMX プロジェクトで次の設定が構成されていることを確認してください。

  • [STM32CubeMX][Middleware][FREERTOS][Interface] で、[Interface] として [CMSIS_V2] を選択します。

    FreeRTOS CMSIS

  • 十分なヒープ サイズと、40 よりも高いタイマーのタスクの優先順位を割り当ててください。

    FreeRTOS