メインコンテンツ

STM32H7xx ベースのデュアルコア ボード入門

この例では、Embedded Coder® Support Package for STMicroelectronics® STM32 Processors を使用して、STM32 H7xx ベースのデュアルコア ボードで Simulink® モデルを実行する方法を示します。

はじめに

この例では以下について説明します。

  • ARM-Cortex M7 コアと ARM-Cortex M4 コアを個別に使用してコードを生成し、ボード上の LED ライトを切り替えるように Simulink モデルを構成する方法。

  • 両方のコアを一緒に使用した Simulink モデルの構成 (Cortex-M7 をプライマリ コアとして、Cortex-M4 をセカンダリ コアとして使用)。

前提条件

必要なハードウェア

  • STM32 Nucleo-H745ZIQ ボード

  • マイクロ USB ケーブル

  • ジャンパー ケーブル

利用可能なモデル

Cortex-M7 コアを使用した LED の点滅

1. m7_led_blink.slx モデルを開きます。

2. GPIO ブロックを構成します。緑色の LED は、Green LED ブロックの [GPIOB] 端子の [Pin 0] に接続されています。

モデル コンフィギュレーション

  1. [モデル化] タブを開き、"Ctrl+E" を押して [コンフィギュレーション パラメーター] ダイアログ ボックスを開きます。[ハードウェア実行][ハードウェア ボード] に移動します。

  2. [STM32H7xx Based (Dual-core)] を選択します。

  3. 既存の STM32CubeMX プロジェクトを選択するか、STMicroelectronics の STM32 プロセッサ ベースのボード入門の手順を実行して新しいプロジェクトを作成します。

  4. CPU コアから [Cortex-M7] コアを選択します。[Enable other core] オプションが無効になっていることを確認します。

STM32CubeMX プロジェクトの構成

  1. m7_config.ioc ファイルを開きます。

  2. [PB0] ピンを [GPIO Output] として構成します。

  3. [Pin Context Assignment][ARM Cortex-M7] に設定します。

Simulink モデルからコードを生成してハードウェア ボードに展開する

1. モデルのコードを生成するには、"Ctrl+B" を押すか [ビルド、展開、起動] をクリックします。

2. モデル キャンバスの下部に示されるリンクを使用して診断ビューアーを開き、ビルド プロセスに従います。コードをボードに読み込むと、ハードウェア ボード上で緑色の LED が点滅します。これは、コードが実行されていることを示します。

Cortex-M4 コアを使用した LED の点滅

M4 コアを使用して LED を点滅させるには、"Cortex-M7 コアを使用した LED の点滅" のセクションで説明されている手順を実行します。m4_led_blink.slx モデルで以下の構成を確認します。

  • STM32CubeMX プロジェクト: In the m4_config.ioc ファイルで、[PB0][Pin Context Assignment][ARM Cortex-M4] に設定します。

  • コンフィギュレーション パラメーター: [CPU core][Cortex-M4] に設定します。

  • m4_led_blink.slx モデルを実行し、ハードウェア ボード上で緑色の LED が点滅していることを確認します。これは、コードが実行されていることを示します。

両方のコアを使用した LED の点滅 (Cortex-M7 をプライマリ、Cortex-M4 をセカンダリとして使用)

このセクションでは、"PD7 GPIO ピン""Cortex-M7 コア" から切り替えます。"PD7" はジャンパー ケーブルで "PD6" に接続します。"Cortex-M4" で、"PD6""PD7" の立ち上がりエッジごとに割り込みを生成するように設定します。PD6 の割り込みサービス ルーチンで、割り込みをトリガーするたびにボード上の黄色の LED が切り替わるように設定します。

"Cortex-M7 コア" をプライマリ コアとして構成します。これはシステムの初期化を実行し、セカンダリ コアとして構成されている "Cortex-M4" コアを起動します。

プライマリ コア モデルの構成と展開

1. m7_gpio_toggle.slx モデルを開きます。

2. 端子を [GPIOD]、ピンを 7 ("PD7") に設定して、GPIO ブロックを構成します。

3. [コンフィギュレーション パラメーター] を開き、STM32CubeMX プロジェクトを作成または選択します。

4. CPU コアから [Cortex-M7] を選択します。

5. [Enable other core] オプションを選択し、[Initialize system clock and configure selected core as main core] を有効にします。

6. STM32CubeMX で [PD7] ピンを [GPIO Output] として構成し、その [Pin Context Assignment][Cortex-M7] に設定します。

7. モデルを展開します。

セカンダリ コア モデルの構成と展開

1. M4_led_toggle.slx モデルを開きます。

2. "PD6""EXTI6 イベント" をトリガーします。EXTI6 は EXTI9_5_IRQHandler を介して処理されます。Hardware Interrupt ブロックで同様に選択します。

3. Function-Call Subsystem で GPIO ブロックを構成します。黄色の LED は [PE1] ピンに接続されています。GPIO ブロックで同様に選択します。

4. [コンフィギュレーション パラメーター] を開き、STM32CubeMX プロジェクトを作成または選択します。

5. [CPU core] から [Cortex-M4] を選択します。

6. [Enable other core] オプションを選択し、[Initialize system clock and configure selected core as main core] を無効にします。Cortex-M7 コアがシステムの初期化を実行するため、Cortex-M4 コアはシステムを初期化する必要がありません。

7. STM32CubeMX で [PD6] ピンを [GPIO EXTI] として構成し、その [Pin Context Assignment][Cortex-M4] に設定します。[PE1 yellow LED] ピンを [GPIO Output] として構成し、その [Pin Context Assignment][Cortex-M4] に設定します。

8. [ビルド、展開、起動] をクリックします。

PD7 が切り替わるレートであるパルス ジェネレーターの周波数の半分のレートで黄色の LED が点滅し始めます。

[Enable other core] オプションの重要性

1. 選択したコアをメイン コアにするかどうかを選択できます。メイン コアにすると、システム クロックの構成などのシステム初期化を実行できます。これを行うには、[Initialize system clock and configure selected core as main core] チェックボックスをオンにします。

2. [Enable other core] オプションは、コア同期が必要かどうかを確認するために使用されます。

  • 選択したコアがメイン コアとして設定されていない場合は、[Enable other core] を選択すると、選択したコアにモデルが展開され、その後、そのコアは無効になります。選択したコアが無効になると同時に、もう一方のコアが有効になります。もう一方のコアはメイン コアとなり、セカンダリ コアを起動することになります。

  • 選択したコアがメイン コアとして設定されている場合、[Enable other core] を選択すると、選択したコアにモデルが展開され、選択したコアによってもう一方のコアも起動されます。もう一方のコアはセカンダリ コアとして設定されることになります。

3. [Enable other core] をオフにした場合、1 つのコアのみが起動し、もう一方のコアは無効になります。

詳細