Arduino Portenta H7デュアルコアシステムをSegger J-Linkでデバッグする
部品と材料
| 部品 | 数量 |
|---|---|
| Arduino Portenta H7 | 1 |
| Arduino Portenta H7ブレークアウトボード | 1 |
| Segger J-Linkデバッグプローブ | 1 |
| Segger Cortex-Mアダプター | 1 |
アプリとオンラインサービス
- Arduino IDE
- Microsoft Visual Studio 2017/2019/2022
- Visual Micro拡張機能
プロジェクト概要
Arduino Portenta H7は、480MHz動作のCortex-M7と240MHz動作のCortex-M4という強力なデュアルコアアーキテクチャを備えます。両コアは独立したファームウェアを実行し、共有メモリやセマフォで通信可能です。
両コアを同時にデバッグするには、専用のSWDインターフェースとマルチターゲットセッション対応デバッガーが必要です。本ガイドでは、Segger J-Linkを用いて各コアに接続し、開発環境を構築し、各コアのLEDを独立制御するシンプルなBlink例で動作確認する手順を解説します。
ハードウェアセットアップ
- Portenta H7をブレークアウトボードに装着。両コアのSWDピンに接続される20ピンMIPSスタイルヘッダーが露出します。
- 20ピンMIPSコンバーターをブレークアウトヘッダーに取り付け、デバッグ信号を分離。
- ピンアウト図に従い、コンバーターをSegger J-Linkに配線。自作する場合は0.05インチピッチコネクターを使用し、参考配線図に従ってください。


ソフトウェアセットアップ
- Arduino IDEをインストール(公式サイトからダウンロード)。
- Microsoft Visual Studio(2017、2019、2022)とVisual Micro拡張機能をインストール(詳細はVisual Microサイト参照)。
- Visual MicroエクスプローラーまたはArduino IDEのボードマネージャーからArduino Mbed OS Portenta Boardsパッケージを追加。
- Segger J-Linkのインターフェース0のUSBドライバーを、Zadigを使ってWinUSBドライバーに置き換え。手順動画はリンク先を参照。
コーディング
各コア用に別々のプロジェクトを用意。以下のBlink例は各コアで異なるLEDを点滅させ、独立デバッグを可能にします。
重要:M7プロジェクトのsetup()冒頭でbootM4()を呼び出し、両コアをアクティブにします。
デバッグセットアップ:M7コア
M7スケッチをVisual Studioで開き、「デバッグ」→「ハードウェア」でSegger J-Link Debuggerを選択(NoOpenOCD版ではない)。ビルドしてM7コアにアップロード。

デバッグセットアップ:M4コア
M4スケッチを開き、「デバッグ」→「ハードウェア」でSegger J-Link Debugger (NoOpenOCD)を選択。ビルドしてM4コアにアップロード。
デバッガー起動
まずM7スケッチで「デバッグ」→「プロセスにアタッチ」でデバッグセッション開始。同様にM4スケッチでも実行。これで各プロジェクトにブレークポイントを設定し、独立にポーズ、ステップ実行、継続が可能になります。各コアはそれぞれのコマンドに独立して応答します。

ウォークスルー動画
ステップバイステップのデモをYouTubeで公開:
Portenta H7デュアルコアをSegger J-Linkでデバッグ
参考リンク
コード
- H7 M4 Blinkコード
- H7 M7 Blinkコード
H7 M4 Blinkコード
// Portenta M4コアでのBlink
void setup() {
pinMode(LED_BLUE, OUTPUT);
}
void loop() {
digitalWrite(LED_BLUE, HIGH);
delay(1000);
digitalWrite(LED_BLUE, LOW);
delay(1000);
}
H7 M7 Blinkコード
// Portenta M7コアでのBlink
void setup() {
bootM4(); // M4コアをアクティブ化
pinMode(LED_RED, OUTPUT);
}
void loop() {
digitalWrite(LED_RED, HIGH);
delay(1000);
digitalWrite(LED_RED, LOW);
delay(1000);
}
回路図
ブレークアウトボードのSWDピンをSegger J-Linkに接続する方法:

製造プロセス
- Bluetooth操作のArduinoスパイボットを自作する
- FlickMote:ジェスチャー操作のIRリモコンでスマートホームを制御
- 自作Arduino TV-B-Gone:全テレビ対応の万能リモコン
- 12メートル先から見える大型LEDマスタークロック(アラーム機能付き)を自作しよう
- ArduinoとBluetoothで作るスマート紛失防止タグ「Find Me」
- Arduinoプロジェクトのための最適化電源ソリューション
- Arduino三目並べ:MAX7219 LEDマトリクスと段ボールケースで自作
- スマートArduino四足歩行ロボットの製作:ステップバイステップガイド
- ゲーム用カスタムArduinoジョイスティックハンドルの製作
- Arduino Nano R3で本格的なCNCマシンを自作する
- Arduino、CESで産業グレードIoTボード「Portenta H7」を発表