S32 Design Studio for S32 Platform IDEに含まれるS32デバッガにより、GDBコマンドラインを通じてS32デバッグプローブのフラッシュプログラミング機能およびデバッグ機能にアクセスできます。このドキュメントは、NXPデバイスでデバッグセッションを開始するために必要なコマンドのみを提供します。ここでは一般的なGDBコマンドライン操作については取り上げません。これらについては、NXPとは関連のないGNUコミュニティやその他の公開Webサイトで詳しく説明されています。
準備
- ソフトウェア ツールをセットアップする
- S32プラットフォーム用 S32 Design Studioをインストールする
- デバッグするデバイスで使用できる開発パッケージをインストールします。この場合は、S32G2xx Development Packageです。S32デバッガのサポートには、コアの初期化に必要なデバイス固有のPythonスクリプトが含まれているため、このパッケージは重要です。

- ハードウェアをセットアップします。
- S32G274A評価ボードのセットアップを確認してください。
- JTAGを設定します。S32G274A評価ボードは、10ピンおよび20ピンの両方のJTAG接続をサポートします。デフォルトのボード構成は20ピンに設定されています。10ピンJTAGインターフェースを使用している場合は、ジャンパJ59の位置を2-3(デフォルト)から1-2に変更してください。どちらもS32デバッガとS32デバッグ・プローブによりサポートされています。

- 電源ケーブルを接続してください
- S32デバッグ・プローブをセットアップします。
- S32デバッグ・プローブをJTAGケーブル経由で評価ボードに接続します。インストール手順については、S32デバッグ・プローブのユーザ・ガイドを参照してください。前の手順で確認したJTAG接続を使用します。
- S32デバッグ・プローブをUSBまたはイーサネット(LAN経由または直接接続、固定IPアドレス構成)でホストPCに接続し、電源をUSBポートに接続します。
- S32 Design Studio for S32 Platform を起動する
- 新しいプロジェクトを作成するか、既存のプロジェクトを開いて、正常にビルドされることを確認します。新しいプロジェクトを作成する場合は、新しいプロジェクトのウィザードでS32デバッガが選択されていることを確認してください。

手順
デバッグするコアごとに個別のデバッグ スレッドを開始する必要があるため、デバッグ スレッドの起動方法は、プライマリ コアかセカンダリ コアか、実行可能イメージが読み込まれるか、実行可能ファイルがすでに実行されており、デバッガーをアタッチするだけでよいかによって異なります。これらのシナリオについては、次の 3 つのセクションで説明します。
プライマリコアのロードイメージと実行:アプリケーションイメージは、デバッガーによってメモリに直接ロードされ、初期化されて起動されます。プライマリコアは、アプリケーションで使用されるすべてのセカンダリコアを起動します。
セカンダリ コア: プライマリ コアがセカンダリ コアを起動し、現在実行されており、デバッガーはアタッチ メソッドを介して接続します。
プライマリ コア イメージが既にメモリ内にあり、実行中: プライマリ コアは既に初期化され、ターゲット上の Linux OS などの他の手段で起動されているため、デバッガーはイメージを初期化したりメモリに読み込んだりせずにアタッチ方法を使用して接続します。
デバッグスレッドを開始するコアに該当するセクションに進んでください。
プライマリコア、イメージをロードして実行
- デバッグするコアの初期化スクリプトを準備します。
- コア初期化Pythonスクリプト
{S32DS Install Path}\S32DS\tools\S32Debugger\Debugger\scripts\s32g2xx\s32g2xx_generic_bareboard_all_cores.pyを開きます。

- 以下の行のコメントを解除します。
#_JTAG_SPEED = 16000
#_PROBE_IP = "10.112.101.91"
#_GDB_SERVER_PORT = 45000
#_CORE_NAME = 'M7_0'
#_RESET_TYPE = "default"
#_RESET_DELAY = 1
#_REMOTE_TIMEOUT = 60
#_IS_LOGGING_ENABLED = True
このファイルは、S32 Design Studio IDE内のS32 デバッガで使用されます。設定はGUIから提供されるため、GUI設定が制御できるように、これらの行はコメントアウトされています。スクリプトをコマンド・ライン・メソッドでより簡単に実行できるよう、コメント行が提供されています。
- PCに接続されているS32 Debug ProbeのIP アドレスと一致するように、IPアドレス行 (_PROBE_IP)を更新します。IPアドレスを取得する方法の詳細については、S32 Debug Probeのユーザーガイドをご覧ください。
- 必要に応じて、コア名 (_CORE_NAME) を更新してください。サポートされているコアの完全なリストについては、s32g2xx_context.pyをご覧ください。
- 元のファイルを保持するために、新しい名前でファイルを保存します。たとえば、s32g2xx_gen_bb_all_c_my_probe.pyなどです。これにより、S32デバッガが引き続き正常に機能します。
- GTAサーバを起動し、コマンド・プロンプトまたはWindowsファイルエクスプローラーで
{S32DS Install Path}\S32DS\tools\S32Debugger\Debugger\Server\gta\gta.exe コマンドを実行します。
このようなウィンドウが表示されます。
- Python の環境変数が設定されていることを確認してください。 コマンドプロンプトから、次のコマンドを実行してください。
set PYTHONPATH={S32DS Install Path}\S32DS\build_tools\msys32\mingw32\lib\python2.7;{S32DS Install Path}\S32DS\build_tools\msys32\mingw32\lib\python2.7\site-packages
- GDBを開始し、コマンド・ウィンドウで次のコマンドを実行します。
Windows OS:
{S32DS Install Path}\S32DS\tools\gdb-arm\arm32-eabi\bin\arm-none-eabi-gdb-py.exe(arm32の場合)
または
{S32DS Install Path}\S32DS\tools\gdb-arm\arm64-eabi\bin\aarch64-none-elf-gdb-py.exe(arm64の場合)
Linux OS: arm-none-eabi-gdb-py
gdbプロンプトが次のようにコマンド・ウィンドウに表示されます。
- (gdb) プロンプトから、次のコマンドを (この順序で) 入力します。
- source {S32DS Install Path}\\S32DS\\tools\\S32Debugger\\Debugger\\scripts\\s32g2xx\\s32g2xx_gen_bb_all_c_my_probe.py
これは初期化のスクリプトを指定します。
- py board_init ()
これはボードを初期化します。最初のコアに対してのみ呼び出すべきです。マルチコアのデバッグワークフローでは、追加のコアのデバッガーを起動してもこのステップは省略されます。
- py core_init()このコマンドは、手順1の初期化スクリプトで指定されたコアを初期化します。
- これで、標準のGDBコマンドを使用できます。たとえば、ELFファイルをロードしたい場合があります。
- file {S32DS Workspace Path}\\New_S32G_Project\\New_S32G_Project_M7_0\\Debug_RAM\\New_S32G_Project_M7_0.elf
- load
セカンダリコア
プライマリ コアのデバッグの起動が完了したら、セカンダリ コアで GDB デバッグを起動してマルチコア デバッグを実行できます。
- プライマリコアGDBセッション内からいくつかの追加手順を実行する必要があるため、以下のコマンドを入力します。
set *0x34100000 = 0x34200000
set *0x34100004 = 0x34100025
set *0x34100024 = 0xFFFEF7FF
set *0x34200000 = 0x34300000
set *0x34200004 = 0x34200025
set *0x34200024 = 0xFFFEF7FF
b main
c
これらの行は、セカンダリコアでデバッグを開始するための環境を準備します。これにより、コアごとに個別のELFファイルがある場合でも、マルチコア・デバッグが可能になります。これらは、S32 Design Studio IDEの新規アプリケーションプロジェクトウィザードから作成されたマルチコアプロジェクトのプライマリコアのデバッグ構成の「スタートアップ」タブにある「実行コマンド」フィールドにあります。注意:すべてのコアにELFファイルが1つしかない場合、これらの「set *0x... = 0x...」コマンドはスキップする必要があります。
一般的には、示されているように、mainにブレークポイントを設定するのが正しいですが、プロジェクト内でセカンダリコアがいつ起動されるかに応じて変更する必要があるかもしれません。

- デバッグするセカンダリーコアの初期化スクリプトを準備してください。
- コア初期化のPythonスクリプトを開きます。
{S32DS Install Path}\S32DS\tools\S32Debugger\Debugger\scripts\s32g2xx\s32g2xx_attach.py
これは、プライマリコアに使用されるスクリプトとは異なるスクリプトであり、すでに初期化されて実行中のコア上でデバッグセッションを開始するように設計されています。
- デバッグするセカンダリ コアのスクリプトを編集します。このスクリプトはプライマリ コア用に設定されているため、セカンダリ コアのセットアップにはいくつかの調整が必要です
- 以下の行のコメントを解除します。
#_JTAG_SPEED = 14000
#_GDB_SERVER_PORT = "127.0.0.1:45000"
#_RESET_TYPE = "default"
#_PROBE_IP = "s32dbg:10.222.24.64"
#_CORE_NAME = 'M7'
#_RESET_DELAY = 1
#_CMD_TIMEOUT = 7200
#_REMOTE_TIMEOUT = 60
#_IS_LOGGING_ENABLED = True
#_SOC_NAME = "S32G274A"
- 以下の行を変更してください:
_JTAG_SPEED = 14000 -> None
_GDB_SERVER_PORT = "127.0.0.1:45000" -> 45000
_RESET_TYPE = "default"
_PROBE_IP = "s32dbg:10.222.24.64" -> None
_CORE_NAME = 'M7' -> 'M7_1'(デバッグ対象のコアの名前と一致するように設定する必要があります。詳細なリストは s32g2xx_context.py を参照してください)
_RESET_DELAY = 1
_CMD_TIMEOUT = 7200
_REMOTE_TIMEOUT = 60
_IS_LOGGING_ENABLED = True
_SOC_NAME = "S32G274A"
- ファイルを新しい名前で保存して、元のファイルを保持します。たとえば、s32g2xx_attach_my_probe_core1.pyなどです。これにより、S32デバッガは引き続き正常に動作します。

- 既存のGTAサーバーを使用しますので、新しいサーバーを起動しないでください。
- 新しいコマンドウィンドウを開いて、プライマリコアと同じ手順に従ってください。
- グローバルに設定されていない場合は、Python環境変数を設定します。set PYTHONPATH={S32DS Install Path}\S32DS\build_tools\msys32\mingw32\lib\python2.7;{S32DS Install Path}\S32DS\build_tools\msys32\mingw32\lib\python2.7\site-packages
- GDBを起動する
Windows OS:
{S32DS Install Path}\S32DS\tools\gdb-arm\arm32-eabi\bin\arm-none-eabi-gdb-py.exe(arm32の場合)
または
{S32DS Install Path}\S32DS\tools\gdb-arm\arm64-eabi\bin\aarch64-none-elf-gdb-py.exe(arm64の場合)
Linux OS: arm-none-eabi-gdb-py
gdbプロンプトがコマンド・ウィンドウに表示されます。
- (gdb) プロンプトから、次のコマンドを (この順序で) 入力します。
- source {S32DS Install Path}\\S32DS\\tools\\S32Debugger\\Debugger\\scripts\\s32g2xx\\s32g2xx_attach_my_probe_core1.py
これは初期化のスクリプトを指定します。
- py board_init () はプライマリコアですでに実行されているので、実行しません。
- py core_init()これにより、ステップ2の初期化スクリプトで指定されたコアが初期化されます。
- これで、標準のGDBコマンドを使用できます。たとえば、ELFファイルをロードしたい場合があります。
- file {S32DS Workspace Path}\\S32G_MultiCore\\S32G_MultiCore_M7_1\\Debug_RAM\\S32G_MultiCore_M7_1.elf
- load
- コアを追加するごとに3~6を繰り返します。
プライマリコアイメージはすでにメモリにあり、実行中です
コアは動作しているので、初期化する必要はありません。
- デバッグするコアの初期化スクリプトを準備してください。
- コア初期化のPythonスクリプトを開きます。
{S32DS Install Path}\S32DS\tools\S32Debugger\Debugger\scripts\s32g2xx\s32g2xx_attach.py
これは、プライマリコアに使用されるスクリプトとは異なるスクリプトであり、すでに初期化されて実行中のコア上でデバッグセッションを開始するように設計されています。
- デバッグするセカンダリ コアのスクリプトを編集します。このスクリプトはプライマリ コア用に設定されているため、セカンダリ コアのセットアップにはいくつかの調整が必要です
- 以下の行のコメントを解除します:
#_JTAG_SPEED = 14000
#_GDB_SERVER_PORT = "127.0.0.1:45000"
#_RESET_TYPE = "default"
#_PROBE_IP = "s32dbg:10.222.24.64"
#_CORE_NAME = 'M7'
#_RESET_DELAY = 1
#_CMD_TIMEOUT = 7200
#_REMOTE_TIMEOUT = 60
#_IS_LOGGING_ENABLED = True
#_SOC_NAME = "S32G274A"
- 以下の行を変更してください:
_JTAG_SPEED = 14000
_GDB_SERVER_PORT = "127.0.0.1:45000" -> 45000
_RESET_TYPE = "default"
_PROBE_IP = "s32dbg:10.222.24.64" -> (プローブの IP アドレスを入力してください)
_CORE_NAME = 'M7' -> 'M7_0'(デバッグ対象のコアの名前と一致するように設定してください。詳細なリストは s32g2xx_context.py を参照してください)
_RESET_DELAY = 1
_CMD_TIMEOUT = 7200
_REMOTE_TIMEOUT = 60
_IS_LOGGING_ENABLED = True
_SOC_NAME = "S32G274A"
- 元のファイルを保持するために、新しい名前でファイルを保存します。たとえば、s32g2xx_attach_my_probe_core0.pyなどです。これにより、S32デバッガが引き続き正常に機能します。
- GTAサーバを起動し、コマンドプロンプトまたはWindowsファイルエクスプローラーから
{S32DS Install Path}\S32DS\tools\S32Debugger\Debugger\Server\gta\gta.exe

コマンドを実行します。
次のようなウィンドウが表示されます。
- Pythonの環境変数が設定されていることを確認してください。コマンドプロンプトから次のコマンドを実行します。
set PYTHONPATH={S32DS Install Path}\S32DS\build_tools\msys32\mingw32\lib\python2.7;{S32DS Install Path}\S32DS\build_tools\msys32\mingw32\lib\python2.7\site-packages
- GDBを起動します。コマンドウインドウで、以下のコマンドを実行します。
Windows OS:
{S32DS Install Path}\S32DS\tools\gdb-arm\arm32-eabi\bin\arm-none-eabi-gdb-py.exe(arm32の場合)
または
{S32DS Install Path}\S32DS\tools\gdb-arm\arm64-eabi\bin\aarch64-none-elf-gdb-py.exe(arm64の場合)
Linux OS: arm-none-eabi-gdb-py
gdbプロンプトがコマンド・ウィンドウに表示されます。
- (gdb) プロンプトから、次のコマンドを (この順序で) 入力します。
- source {S32DS Install Path}\\S32DS\\tools\\S32Debugger\\Debugger\\scripts\\s32g2xx\\s32g2xx_attach_my_probe_core0.py
これはデバッガ初期化用のスクリプトを指定します。
- py board_init () を実行しないでください。ボードが初期化され、現在実行中のアプリケーションがリセットされます。この場合は望ましくありません。
- py core_init()これにより、ステップ1の初期化スクリプトで指定されたコアへのデバッガ接続が初期化されます。
- これで、標準のGDBコマンドを使用できます。たとえば、ELFファイルをロードしたい場合があります。
- file {S32DS Workspace Path}\\S32G_Multicore\\S32G_Multicore_M7_0\ \Debug_RAM\\S32G_Multicore_M7_0.elf
- load
- プライマリコアのデバッグの起動が完了したら、セカンダリオコアでGDBデバッグを起動することでマルチコアデバッグを実行できます。デバッグする追加の各コアについては、「セカンダリコア」のセクションを参照してください。
チームの皆様、
S32デバッグプローブを使用してS32g2のコマンドラインセミホスティングを有効にしようとしています。上記のプライマリコアロードイメージと実行の手順に従って、
py board_init() は以下の出力を表示しますが、py core_init() は失敗し、gtaサーバーがクラッシュします。
py board_init() が実行された際の出力は、添付の画像をご確認ください。
gtaサーバーウィンドウもcore_init()実行後にクラッシュするため、デバッグや失敗の理由を把握できません。この問題を特定するためのサポートが欲しいです。

