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] に接続されています。
モデル コンフィギュレーション
[モデル化] タブを開き、"Ctrl+E" を押して [コンフィギュレーション パラメーター] ダイアログ ボックスを開きます。[ハードウェア実行]、[ハードウェア ボード] に移動します。
[STM32H7xx Based (Dual-core)] を選択します。
既存の STM32CubeMX プロジェクトを選択するか、STMicroelectronics の STM32 プロセッサ ベースのボード入門の手順を実行して新しいプロジェクトを作成します。
CPU コアから [Cortex-M7] コアを選択します。[Enable other core] オプションが無効になっていることを確認します。

STM32CubeMX プロジェクトの構成
m7_config.iocファイルを開きます。[PB0] ピンを [GPIO Output] として構成します。
[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 つのコアのみが起動し、もう一方のコアは無効になります。