工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

Arduino Portenta H7デュアルコアシステムをSegger J-Linkでデバッグする

部品と材料

部品数量
Arduino Portenta H71
Arduino Portenta H7ブレークアウトボード1
Segger J-Linkデバッグプローブ1
Segger Cortex-Mアダプター1

アプリとオンラインサービス

プロジェクト概要

Arduino Portenta H7は、480MHz動作のCortex-M7と240MHz動作のCortex-M4という強力なデュアルコアアーキテクチャを備えます。両コアは独立したファームウェアを実行し、共有メモリやセマフォで通信可能です。

両コアを同時にデバッグするには、専用のSWDインターフェースとマルチターゲットセッション対応デバッガーが必要です。本ガイドでは、Segger J-Linkを用いて各コアに接続し、開発環境を構築し、各コアのLEDを独立制御するシンプルなBlink例で動作確認する手順を解説します。

ハードウェアセットアップ

  1. Portenta H7をブレークアウトボードに装着。両コアのSWDピンに接続される20ピンMIPSスタイルヘッダーが露出します。
  2. 20ピンMIPSコンバーターをブレークアウトヘッダーに取り付け、デバッグ信号を分離。
  3. ピンアウト図に従い、コンバーターをSegger J-Linkに配線。自作する場合は0.05インチピッチコネクターを使用し、参考配線図に従ってください。
Arduino Portenta H7デュアルコアシステムをSegger J-Linkでデバッグする
Arduino Portenta H7デュアルコアシステムをSegger J-Linkでデバッグする

ソフトウェアセットアップ

  1. Arduino IDEをインストール(公式サイトからダウンロード)。
  2. Microsoft Visual Studio(2017、2019、2022)とVisual Micro拡張機能をインストール(詳細はVisual Microサイト参照)。
  3. Visual MicroエクスプローラーまたはArduino IDEのボードマネージャーからArduino Mbed OS Portenta Boardsパッケージを追加。
  4. Segger J-Linkのインターフェース0のUSBドライバーを、Zadigを使ってWinUSBドライバーに置き換え。手順動画はリンク先を参照。

コーディング

各コア用に別々のプロジェクトを用意。以下のBlink例は各コアで異なるLEDを点滅させ、独立デバッグを可能にします。

重要:M7プロジェクトのsetup()冒頭でbootM4()を呼び出し、両コアをアクティブにします。

デバッグセットアップ:M7コア

M7スケッチをVisual Studioで開き、「デバッグ」→「ハードウェア」でSegger J-Link Debuggerを選択(NoOpenOCD版ではない)。ビルドしてM7コアにアップロード。

Arduino Portenta H7デュアルコアシステムをSegger J-Linkでデバッグする

デバッグセットアップ:M4コア

M4スケッチを開き、「デバッグ」→「ハードウェア」でSegger J-Link Debugger (NoOpenOCD)を選択。ビルドしてM4コアにアップロード。

デバッガー起動

まずM7スケッチで「デバッグ」→「プロセスにアタッチ」でデバッグセッション開始。同様にM4スケッチでも実行。これで各プロジェクトにブレークポイントを設定し、独立にポーズ、ステップ実行、継続が可能になります。各コアはそれぞれのコマンドに独立して応答します。

Arduino Portenta H7デュアルコアシステムをSegger J-Linkでデバッグする

ウォークスルー動画

ステップバイステップのデモをYouTubeで公開:

Portenta H7デュアルコアをSegger J-Linkでデバッグ

参考リンク

コード

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に接続する方法:

Arduino Portenta H7デュアルコアシステムをSegger J-Linkでデバッグする

製造プロセス

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