Lauterbach TRACE32 GDB Front-End Debuggerでのデバッグ
i
このチュートリアルは、すでに製品ライフサイクルの終了(EOL)を迎えた製品を対象としています。

このチュートリアルでは、シリアルインターフェイス上で、複数のArduinoアプリケーションのデバッグに、Lauterbach TRACE32 GDBフロントエンドデバッガーの使い方を学びます。


Author:Marco Ferrario、Lauterbach Italy、Sebastian Romero、Benjamin Dannegård、Marta BarberoLast revision:2023/12/18

概要

このチュートリアルでは、シリアルインターフェイス上で、複数のArduinoアプリケーションのデバッグに、Lauterbach TRACE32 GDBフロントエンドデバッガーの使い方を学びます。ボードのシリアルナンバーを使い、全機能が利用可能なTRACE32のバージョンの無料ライセンスを取得する方法も説明します。

目的

  • TRACE32 GDBフロントエンドデバッガーの無料ライセンスを取得する方法
  • Lauterbach TRACE32 GDBフロントエンドデバッガーをダウンロードして開始する方法
  • すぐに実行できるデモを書き込みデバッグする方法

必要なハードウェア

TRACE32 GDBフロントエンドデバッガーを使うには、以下のボードのどれかが必要です。

必要なソフトウェア

  • Arduino IDE 1.8.10以上あるいはArduino IDE 2.0以上
  • Lauterbach TRACE32 software build 144320 (6 Feb 2022)以上 (Portenta H7、Nano 33 BLE、Nano 33 BLE Sense用。こちらから利用可能)
  • Lauterbach TRACE32 software build 161373 (31 Jul 2023)(Nicla Vision用。こちらから利用可能。

利用方法

TRACE32 GDBフロントエンドデバッガー

このチュートリアルでは、MRI(Monitor for Remote Inspection)を含むアプリケーションを、Arduinoボードにアップロードする方法を学びます。これはGDB互換のシリアルモニターで、IDEのスケッチ例にあるThreadDebugスケッチとTRACE32/demoディレクトリにあるすべてのスケッチ例に含まれます。

次のステップでは、二重チルダ(~~)は、TRACE32ソフトウェアをunzipしたディレクトリを示すプレースホルダーとして使っています。

TRACE32デバッガーのダウンロード

TRACE32デバッガーをダウンロードするには、Lauterbach download pageをブラウザで開きます。Debugger for GDB target (Arduino Pro)という名前のzipファイルをダウンロードします。

zipファイルを適当なディレクトリで展開します。Windowsシステムでは、C:\T32というディレクトリは避けてください。このディレクトリは、TRACE32のフルディストリビューションのデフォルトインストールディレクトリだからです。

登録とライセンスキー

有効なライセンスがない場合は、TRACE32デバッガーは、デモモードで数分間動作するだけです。この制約を避けるために、Lauterbachはボードのシリアルナンバーに基づいた無料ライセンスを生成します。このライセンスは1年間有効で、期限が切れた後も、同じ手続きで簡単に無料で更新できます。

新しいライセンスを取得するために、ボードのシリアルナンバーを知る必要があります。その方法には2つあります。

  • Arduino IDEで、ボードが接続されているポートを選んだあと「ツール > ボード情報を取得」メニューコマンドを選びます。Nano BLEデバイスでは16文字(64ビット)のシリアルナンバーが、Portenta H7とNicla Visionでは24文字(96ビット)のシリアルナンバーが表示されます。
i
Portenta H7とNicla Vision向け: 16文字(64ビット)長のシリアルナンバーが表示された場合は、ボードマネージャから、Arduino IDEとボードパッケージを更新する必要があります。更新方法の詳細はArduinoのウェブサイトを参照してください。また最新のブートローダーがインストールされていることを確認してください。
  • TRACE32デバッガーを使います。デバッガーを使うにはTRACE32デバッガーを始めるを参照してください。“Board S/N and License State"というメニュー項目をクリックしてください。ボードのシリアルナンバーはAREAウインドウに表示され、LICENCE.stateダイアログが開きます。
i
注意: 新しいTRACE32ソフトウェアバージョンは、最初にボードに接続したときに、ボードのシリアルナンバーを自動認識して表示します。

この時点で、Lauterbach registration pageで登録できる状態いなっています。

新しいライセンスを取得するために、ボードのシリアルナンバーをコピー・ペーストし、名前と電子メールアドレスを入力してください。

ライセンスキーを記載した電子メールを受信したら、メッセージの終わりに記載されている指示に従ってください。

  • 電子メールに記載されている完全なコード行をコピーし、TRACE32をインストールしたディレクトリのlicense.t32にペーストしてください。license.t32ファイルがない場合は、作成してください。Windowsでは、TRACE32システムディレクトリは、デフォルトでは、“C:\T32"です。
  • ライセンスキーを入力したらTRACE32を再起動してください。

TRACE32デバッガーを始める

デバッガーを使うには、利用しているホストOS用の適切な実行ファイルを起動してください。各OS用のサブディレクトリに実行ファイルはあります。

  • ``~~/bin/windows`: 32ビットWindowsホスト
  • ``~~/bin/windows64`: 64ビットWindowsホスト
  • ``~~/bin/linux`: 32ビットLinuxホスト
  • ``~~/bin/linux64`: 64ビットLinuxホスト

簡単に起動するために、該当するファイルへのリンクをデスクトップに作成することをおすすめします。

  • Windows用: t32marm.exe
  • Linux用: t32marm-qt

シリアルポートの設定

Windowsシステムでは、TRACE32の起動スクリプトはボードが接続されている正しいポートを自動的に検索します。

Linuxシステムでは、system-settings.cmmファイルを編集して、ボードを接続しているシリアルポートを手動で追加する必要があります。これはテキストファイルで、好きなテキストエディタで開くことができます。&GDBPORTを定義している行を編集し、シリアルポートを参照するようにします。例: &GDBPORT="/dev/ttyACM0"。これは、TRACE32ソフトウェアを起動する前に行う必要があります。ポートを変更したらTRACE32デバッガーを起動してください。ファイル変更時にデバッガーを起動していたら、再起動してください。

i
Windowsシステムでも、複数のボードを同時に接続していて、TRACE32デバッガー用に特定のボードを選択したい場合は、ポートの手動設定が有用です。&GDBPORT定義が、system-settings.cmmにあるバイは、ポートの自動検出が無効化されます。

最初のデモを実行する

ツールには、事前にビルドされたデモが付属します。“Arduino Projects"メニューからアクセスできます。以下の説明は、T32ThreadDebugの例に関することです。しかし、他の例も似た方法で利用できます。

デモディレクトリには、デバッグ用のシンボリックファイル(.elf)とバイナリファイル(.bin)が既にあります。

ELFファイルの選択

“Portenta H7 Projects"メニューから、“T32ThreadDebug"を選択すると、“Elf File Selection"というダイアログが現れます。ここで、TRACE32の初期環境の設定が可能です。

このダイアログでは、ELFファイルを読み込むのに利用するArduino IDEの種類を選択します。カレントディレクトリも選択可能です。このチュートリアルに従うには、“current dir"を選択します。

“Options"の右側のリストには、ダウンロードしてデバッグできるELFファイルが集められます。対象のファイルをダブルクリックして選んでください。このチュートリアルでは、“T32ThreadDebug.ino.elf"を選んでいます。日付や時刻、サイズなどのファイルの属性も表示されます。

任意のディレクトリからELFファイルを選ぶには、“User’s choice"フィールドの下の"File"ボタンをクリックし、望みのELFファイルを閲覧します。このスクリプトを次回実行するときの振る舞いが変更されます。

例えば、Arduino IDE経由や前回のTRACE32セッションで、アプリケーションプログラムが既にフラッシュメモリにある場合には、“Load debug symbols (program is already in Flash)"、ボード上のフラッシュメモリの不要な、削除・書き込みサイクルを避けてください。

アプリケーションが変更されたり、フラッシュメモリの内容が適合していない場合は、“Flash program and load debug symbols"を選択してください。

選択を確認したら"OK"ボタンをクリックし、セッションを開始します。

デバッグセッション

フラッシュに既にプログラムがある場合、TRACE32は、ブートローダーモードを有効にするために、ボードのリセットボタンをダブルクリックするよう促します。ボードがブートローダーモードに移行するときは、ボードに内蔵の緑色LEDがゆっくり点滅します。次に進むには、“OK"ボタンをクリックします。削除とプログラミングをしている間に、TRACE32 AREAウインドウに診断メッセージが表示されます。

スクリプトがボードにアップロードされ、TRACE32のデバッグウインドウを開きます。全ての準備が整ったら、setup()関数の最初でプログラムカウンターが停止しているのが表示されます。ここで、ツールバーの←ボタンを使い、コードのステップ実行や、変数やレジスタ、コールスタックの確認ができます。

エラーが起こった場合は、ボードとの物理的な接続や、ホストPCがボードのシリアルポートを検出していて、TRACE32のポート設定に反映されているかを確認してください。あるいは、ボードをリセットして再度実行してください。

デモの詳細は、デモディレクトリにあるreadme.txtファイルを見てください。

他のプロジェクトのコンパイルとデバッグ

付属のデモや他のプロジェクトは、Arduino IDEで、編集・コンパイル・アップロードすることができます。例えば、T32ThreadDebug.inoファイルをArduino IDEで開き、コンパイルしてアップロードすることができます。TRACE32ツールでもアップロードできます。

i
重要: Arduino IDEでプログラムをアップロードする場合は、アップロード後もIDEは閉じずに、開いたままにしておいてください。IDEを閉じるとELFファイルを含む一時ディレクトリが削除されてしまうので、これはとても重要です。

デモディレクトリには、カレントディレクトリにあるELFファイルとバイナリファイルをコピーするスタートアップスクリプトが含まれています。スタートアップスクリプトの実行後は、必要でなければArduino IDEを閉じても安全です。

ボードにアプリケーションをアップロードした後は、TRACE32に戻ることができます。Arduino IDEの種類を選んでください。ELFファイルが見つかれば、ダブルクリックして選択し、“Load debug symbols (program is already in flash)“を選択し、“OK"をクリックしてください。

カスタムスタートアップスクリプト

自分のアプリケーション用にカスタムスタートアップスクリプトを作成することもできます。最低限のスタートアップスクリプトを以下に示します。テキストファイルにコピーし、".cmm"という拡張子のファイルに保存してください。実行するには、TRACE32 GUIの"File–>Run Script…“メニューコマンドを呼び出してください。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
SYStem.Down
SYStem.CPU PortentaH7-CM7 ; or SYStem.CPU NICLAVISION-CM7
SYStem.PORT <serial_port>  ; e.g. COM8 (Windows) or /dev/ttyUSB0 (Linux)
SYStem.Option MMUSPACES ON
Break.CONFIG.METHOD.Program Onchip

SYStem.Mode Attach

Data.LOAD.Elf * /NoCODE

TASK.CONFIG ~~/demo/arm/kernel/rtxarm/v5/rtx.t32
MENU.ReProgram ~~/demo/arm/kernel/rtxarm/v5/rtx.men

List.auto
ENDDO

T32ThreadDebugデモディレクトリにあるstart.cmmを作業ディレクトリにコピーすることもできます。シリアルモニタを利用するアプリケーションでは、T32ThreadDebugPrint デモディレクトリのstart.cmmterm.cmmの両方をコピーする必要があります。

start.cmmスクリプトに対応する各デモでは、事前定義されたウインドウレイアウトが付属します。レイアウトを変更するには、自分でウインドウを開いて好みに変更し、Windowメニューの"Store Windows…“コマンドを使い、ウインドウレイアウトを保存してください。次にデバッグセッションを開始したときに、自動で検出されて利用されます。

おわりに

このチュートリアルでは、TRACE32 GDBフロントエンドデバッガーの無料版と、1年間有効なArduinoボード用の完全なライセンスの取得方法を学びました。デバッガーの開始方法と、すぐに実行できるデモのデバッグ方法を学びました。また、従来のArduino IDEでコンパイルしたアプリケーションのデバッグ方法も学びました。

次のステップ

Lauterbachは、ハードウェアベースのデバッグとトレースツールも提供しています。さらに学ぶには、以下を参照してください。

トラブルシュート

PortentaやNiclaのシリアルナンバーが24ビット長ではない

  • Arduino IDEを最新バージョンに更新する
  • Arduino Mbed OSボードパッケージをArduino IDEのメニューから更新する: ツール > ボード > ボードマネージャ
  • ここの説明に従ってボードのブートローダーを更新する

AREAビューにエラーメッセージが表示される: ‘No More Arguments Expected’

  • Windowsのユーザー名にサポートしていない文字が入っていることで起こっている可能性がある。ユーザー名にスペースや特殊文字が入っていないことを確認する

デバッガーの接続の問題

Portentaに接続中にデバッガーでエラーが発生したら、以下に従ってください。

  • スタートアップスクリプトを実行する前にボードをリセットしてください。
  • エラーが続く場合は、物理接続を確認する。ホストPCがボードのシリアルポートを検出していて、このポートがTRACE32(スタートアップファイルの設定も確認すること)の設定と同じか確認してください。

アップロードの問題

Arduino IDEでボードにアップロードする前に、コマンドラインインターフェイスで、“SYStem.Down”コマンドを打ち、TRACE32デバッガーを切断してください。あるいは、“CPU-> System Settings…“メニューを開き、“Mode"セクションの"Down"ラジオボタンをクリックしてください。

デバッガーがハングする問題

  • TRACE32 GDBフロントエンドデバッガーは実行時のデバッガーです: ブレイクポイントでは、ユーザースレッドだけがサポートされています。カーネルや他の全てのシステムスレッドは実行し続けます。クリティカルなシステムエリア内でブレイクポイントが設定されたら、デバッガーがハングするかもしれません。この場合は、ボードをリセットし、全てのブレイクポイントを削除し、ターゲットを再接続してください(SYStem.Mode Attachコマンド)。

LinuxでTRACE32を起動する際の問題

  • Linux用のTRACE32の実行形式は、Qtライブラリを要求します。以下のバージョンのQtがインストールされていることを確認してください。
    • Qt4 >= 4.6.2(Linux 32ビット、Linux 64ビット)
    • Qt5 >= 5.9(Linux 64ビット)

例えば、Ubuntu Linuxでは、Qt5ライブラリをインストールするには、apt-getを使います。sudo apt-get install qt5-default

LinuxホストでのGDBシリアルポートに関する問題

LinuxでTRACE32実行形式を実行しているユーザーは、シリアルデバイスにアクセスするパーミッションが必要です。例えば、Ubuntu Linuxでは、一時的なパーミッションは以下のように設定します。sudo chown :username /dev/devicename

dialoutグループにユーザーを追加することで、恒久的なパーミッションを設定することもできます。例えば、Ubuntuでは、sudo adduser username dialout

あるいは、TRACE32実行形式をrootのパーミッションで実行してもかまいません。

オリジナルのページ

https://docs.arduino.cc/tutorials/nano-33-ble-sense/lauterbach-debugger/

最終更新日

August 16, 2026

inserted by FC2 system