組込みでも必須のマルチコアデバッグの基礎

IAR Embedded Workbench for Armはマルチコアデバイスを同期させながらデバッグすることが可能です。本稿では、組込みでも広がっているマルチコアのデバッグ手法について、一般的な話からIAR Embedded Workbench固有の話まで、ご紹介します。

なぜ組込みでマルチコアデバッグなのか?

組込みアプリケーションの複雑化のトレンドにともない、マルチコアデバイスも広く使用されるようになりました。「新しいものを作れば、それをデバッグする必要がある」というのは、皆さんご存じのとおりです。マルチコアを導入することで、システム全体のバランスをとれたり、異なるアーキテクチャの特徴を活用するなどが可能となります。また複数のデバイスを採用するより製品コストを下げることが可能な場合もあります。

長い間、マルチコアのうちシングルコアだけのデバッグをすることが可能でした。一方、今回導入したのは、マルチコアデバイスの複数コアを同期させながらデバッグする手法です。こうすることで、より複雑なバグを見つけることが可能になります。注目していない方のコアを起動・停止・モニタするなどの基本的なタスクでさえ、利点があります。それは別のコアがそのコアに対して何か作用する可能性があるからです。

マルチコアデバッグの主な難しさは、1つのインタフェースで複数のコアにアクセスしなければならない点です。IAR Embedded Workbenchでは、複数のコアに対して、同時にデバッグが可能です。対称型マルチプロセッシング(SMP)では2つ以上の同じコアをデバッグします。この場合、IAR Embedded Workbenchの1つのインスタンスを使用して処理します。また、非対称型マルチコアプロセッシング (AMP)では異なるアーキテクチャに基づいた2つ以上のコアをデバッグします。この場合、IAR Embedded Workbenchの2つ以上のインスタンスを使用して処理します。各コアは起動・停止を個別または同時に、各インスタンスから制御できます。そして全ての処理は一つの開発環境上で実行できます。

非対称型マルチコアプロセッシングのデバッグ

非対称型マルチコアプロセッシングでは、例えばCortex-MとCortex-Aのコアを持つデバイスをデバッグします。下の例では、Cortex-Aのコアがマスタとしてセットアップされ、プロジェクトはもう一方のコアのコードを共有メモリにダウンロードします。スレーブプロジェクトの設定の違いは、コードをダウンロードせず、デバイスに接続するのみである点です。

マスタのデバッグセッションを開始する時、スレーブセッションが生成され、以下のような画面になります。

スレーブセッションが生成

シングルコアのデバッグと具体的に異なるのは主な点は以下です。

  • 各ウィンドウにマスタまたはスレーブの表示が付く
  • 1つ追加のウィンドウが開く
  • デバッグツールバーにいくつか項目が追加される

もう少し詳細を見ていきましょう。はじめはコアウィンドウです。

コアウィンドウ

このウィンドウでは、IDEのインスタンスがCortex-Aに接続されていることがわかります(太字であるため)。そして、コアは停止しており、PCもわかります。Cortex-Mコアは実行中であることがわかります。

デバッグツールバーには以下が追加されています。

デバッグツールバーには以下が追加

最初の2つのアイコンは、コアの状態を示します。次のアイコンは全てのコアを開始、その次のアイコンは全てのコアを停止するためのものです。

ツールバーのコアの1つにカーソルを合わせると、コアウィンドウの情報と一致する詳細な情報を得ることができます。このツールバーには、各コアのプルダウンメニューもあり、各コアを開始・停止することができます。

コアを開始 コアを停止

対称型マルチコアプロセッシングのデバッグ

対象型マルチコアプロセッシングも上記の例と多くは似ています。しかし、2つのインスタンスを使用する代わりに、1つのインスタンスでIDEは情報を表示します。通常のデバッグウィンドウのように、ウォッチウィンドウ・メモリウィンドウなどがフォーカスしているコアの情報を表示します。コアウィンドウにより、フォーカスするコアを選択します。

正しくセットアップする

特別なセットアップが必要な点もありますが、それほど多くはありません。例えば、非対称型の場合、マルチコアのマスタを宣言すること、そしてどのプロジェクトをスレーブとするのかの宣言も必要です。スレーブについては先述のとおり、マスタがデバイスをプログラムし、スレーブのデバッグセッションはそれができません。また選択したリセット方式がマスタのセッションに影響してはいけないため、スレーブのリセットセッションは何らかのソフトウェアリセットを用いることがしばしばあります。

スレーブのリセットセッション

まとめ

マルチコアデバッグは、IAR Embedded Workbench for Armにより、これまで以上に簡単になりますが、正直なところセットアップが終わったら、たくさん問題が生じるでしょう。もしシングルコアデバッグに関するツールを使用したことがあるなら、この新機能に含まれるもの全てが理解できるでしょうし、マルチコアデバッグがいかに難しかと話す方の気持ちは理解できないでしょう。

申し訳ございませんが、弊社サイトではInternet Explorerをサポートしていません。サイトをより快適にご利用いただくために、Chrome、Edge、Firefoxなどの最新ブラウザをお使いいただきますようお願いいたします。