サードパーティIDEによるPSoC 6 MCUマルチコアデバッグ - KBA222959 - Community Translated (JA)
- RSS フィードを購読する
- 新着としてマーク
- 既読としてマーク
- ブックマーク
- 購読
- 印刷用ページ
- 不適切なコンテンツを報告
Community Translated by NoTa_4591161 Version: **
Original KBA: PSoC 6 MCU Multi-Core Debugging with Third-Party IDEs – KBA222959
質問:
サードパーティのIDEでPSoC®6 MCUマルチコアプロジェクトをデバッグするにはどうすればよいでしょうか?
IAR IDEについては、https://www.iar.com/support/resources/articles/multicore-debugging/の概要を参照してください
Eclipse CDTマルチコアデバッグ
現在の状態:
マルチコアデバッグサポートが段階的にEclipse CDTに追加されていますが、いくつかの制限があります。詳細については、https://sourceware.org/gdb/wiki/MultiProcessを参照してください
これは、次のように、GDBの基本的なサポートに依存しています。
- GDB 7.0は、リモートターゲットに実装されたマルチプロセス下位制御を基本的にサポートしていますが、すべての下位でコードを共有するシステムのデバッグにのみ使用できます。
- GDB 7.1は、Linuxシステム(ネイティブおよびリモート)にもマルチプロセスおよびマルチ実行可能なデバッグのサポートを提供することにより、これを拡張します。これは、1つのGDBセッションで複数のプログラムをロードできることを意味します。1つのGDBセッションで複数のプロセスに「実行」または「アタッチ」し、それぞれが異なるプログラムを実行している可能性があります。または、下位とその子ツリーのすべてのforkとexecを追跡します。
- GDB 7.2は、マシンインターフェース(MI)にマルチ実行可能コントロールのサポートを追加します。
- この動作はLinuxで開発およびテストされました。Windowsでは動作しない可能性があります
- 「non-stop mode」デバッガサポートが必要で、これにより、一部のスレッドをステップ実行しながら、他のスレッドを自由に実行できます。non-stop modeに入るには、プログラムを実行またはアタッチする前に、次の一連のコマンドを使用します。
# CLIを使用している場合、ページ付けはノンストップで中断します。
set pagination off
# 最後にオンにします
set non-stop on
PSoC Creator™バージョン4.1および4.2は、EABI-GDB 7.1.0を含むGNUARM®5.4.1パッケージを使用。
Eclipse (Neon)
Eclipseには「launch group」を作成できる比較的新しい機能があります。これにより、他のいくつかの既存の起動をバンドルして、それらをすべて同時に開始したり、互いに遅らせたり、前任者が完了した後に開始したりできます。
次のように、CM4コア用とCM0 +コア用の2つのプロジェクトで構成されるPSoC 6 MCUデザインのlaunch groupを作成します。
CM4デバッグ起動の作成
CM4起動構成は、結合されたCM4 / CM0 +イメージを組み合わせたCM4のプロジェクトにベースとされます。以下に示す「launch group」メカニズムは、2つのコアから拡張が可能です。
図1に示すように、[Debugger]タブでエントリを設定します。
図1
図2に示すように、[Startup]タブでエントリを設定します。
図2
CM0pデバッグ起動の作成
この起動構成は、CM0 +コードのみを含むCM0 +プロジェクトに基づいています。
図3に示すように、[ Debugger ]タブで次の変更を行います。
- Connect to running targetチェックボックスをオンにします。
- デバイス名をCY8C6xx7_CM0pに設定します。
- デフォルトのGDBポートを2431に変更します。
図3
図4に示すように、[Setup ]タブで次の選択を解除します。
- Initial Reset and Halt
- Enable SWO
- Load executable
- Pre-run/Restart reset
図4
注: JTAGを使用してCM0 +コア上の非セキュアアプリケーションをデバッグする場合は、Run/Restart commands boxに次の行も含まれている必要があります。
set $sp = *(uint32_t*)0x10000000
set $pc = *(uint32_t*)0x10000004
Launch Groupの作成
図5に示すように、Launch groupを作成し、CM4とCM0 +の両方のデバッグ起動をグループに追加します。
「actions」の関連付なし(2つの起動間の遅延のような)で、それらを作成します。Launch groupを開始すると、EclipseはCM4構成とCM0 +構成の両方を起動します。
図5
Eclipseを実行する
起動すると、図6に示すように、launch groupは3つの個別のデバッグ起動を開始します。1つ目はlaunch group自体です。この起動を終了すると、他の2つも終了します。
他の2つはCM4コアとCM0+コア用であり、個別に動作するため、2つのコア間でフォーカスを切り替えたり、個別にステップしたり、値を調べたりすることができます。
図6
問題
CM0+ のmain()へのエントリにブレークポイントを設定すると(Debug launch configurationの[Startup]タブの下部にあるチェックボックスを介して)、コアはそこで停止しません。main()の内部で停止するために、main()ルーチン内にブレークポイントを追加する必要があります。