Post on 14-Mar-2020
Debugger Basics - トレーニング
TRACE32 Online Help
TRACE32 Directory
TRACE32 Index
TRACE32 Training ............................................................................................................................
Debugger Training ........................................................................................................................
Debugger Basics - トレーニング ............................................................................................................... 4
システムの概念 ..................................................................................................................................... 4
オンチップデバッグインタフェース ............................................................................................. 5
デバッグ機能 .......................................................................................................................... 5
TRACE32 ツール .................................................................................................................... 5
オンチップデバッグインタフェースとトレースポート................................................................. 9
トレース機能 .......................................................................................................................... 9
TRACE32 ツール .................................................................................................................... 9NEXUS......................................................................................................................................... 12
NEXUS 機能 ......................................................................................................................... 12
TRACE32 ツール .................................................................................................................. 12
TRACE32 の起動 ................................................................................................................................ 15
TRACE32 の基本的なパラメータ ................................................................................................ 15
設定ファイル ........................................................................................................................ 15
標準パラメータ..................................................................................................................... 16
設定ファイルの例 ................................................................................................................. 17
追加のパラメータ ................................................................................................................. 20
アプリケーションのプロパティ(Windows のみ)....................................................................... 21
T32Start による設定(Windows のみ)........................................................................................ 22
TRACE32 について...................................................................................................................... 23
バージョン情報..................................................................................................................... 23
ライセンス情報..................................................................................................................... 24
サポートメール用の詳細情報の準備 .................................................................................... 25
デバッグセッションの確立 ................................................................................................................. 26
デバッグ環境の設定..................................................................................................................... 26
デバッガとターゲット CPU の間での通信の確立 ................................................................ 26
アプリケーションプログラムのロード................................................................................. 32
基本的なチェック .......................................................................................................... 32
起動スクリプトの生成 ................................................................................................................. 39
起動スクリプトの記述 .......................................................................................................... 39
起動スクリプトの実行 .......................................................................................................... 40
TRACE32 の GUI ................................................................................................................................ 42
メインメニューバーとアクセラレータキー................................................................................. 43
メインツールバー ........................................................................................................................ 44
ウィンドウエリア ........................................................................................................................ 45
Debugger Basics - トレーニング 1
ウィンドウの変更 ................................................................................................................. 47
コマンドライン ............................................................................................................................ 48
コマンド構造 ........................................................................................................................ 48
コマンド例 ..................................................................................................................... 49
特定のコマンドのオンラインヘルプ .................................................................................... 50
標準のパラメータ構文 .......................................................................................................... 51
メッセージ行 ............................................................................................................................... 52
ソフトキー ................................................................................................................................... 53
ステータス行 ............................................................................................................................... 54
レジスタ .............................................................................................................................................. 55
CPU レジスタの表示 ................................................................................................................... 55
変更されたレジスタのカラー表示 ........................................................................................ 56
CPU レジスタの内容の変更......................................................................................................... 57
特殊機能のレジスタの表示 .......................................................................................................... 58
ツリー表示 ............................................................................................................................ 58
フル表示................................................................................................................................ 59
SFR ごとの詳細情報............................................................................................................. 60
PER 定義ファイル ....................................................................................................................... 61
特殊機能レジスタ (SFR) の変更 .................................................................................................. 62
メモリの表示と変更 ............................................................................................................................ 63
Data.dump ウィンドウ................................................................................................................. 64
基本....................................................................................................................................... 64
メモリ内容の変更 ................................................................................................................. 68
実行時メモリアクセス .......................................................................................................... 69
変更されたメモリ内容のカラー表示 .................................................................................... 78
Data.List ウィンドウ .................................................................................................................... 79
PC 関連のソースリストを表示 ............................................................................................. 79
選択した関数のソースリストを表示 .................................................................................... 80
FLASH プログラミング ...................................................................................................................... 82
オンチップ FLASH....................................................................................................................... 82
統合されたオンチップ FLASH プログラミング ................................................................... 82
ターゲット コントロール オンチップ FLASH プログラミング............................................ 84
CFI をサポートするオフチップ FLASH デバイス ....................................................................... 85
CPU 設定 .............................................................................................................................. 86
バス構成................................................................................................................................ 86
FLASH 宣言 .......................................................................................................................... 87
FLASH デバイスのロック解除 ............................................................................................. 89
FLASH デバイスのプログラミング ...................................................................................... 89
設定例 ................................................................................................................................... 90
ターゲット コントロール FLASH プログラミング............................................................... 91
設定例(ターゲット コントロール)..................................................................................... 94
ブレークポイント ............................................................................................................................... 95
ブレークポイントの実装 ............................................................................................................. 95
RAM でのソフトウェアブレークポイント(プログラム).................................................... 95
FLASH でのソフトウェアブレークポイント(プログラム)................................................ 95
FLASH でのオンチップブレークポイント(プログラム).................................................... 96
Debugger Basics - トレーニング 2
オンチップブレークポイント(リード / ライト)................................................................. 99
プロセッサアーキテクチャ別のオンチップブレークポイント .................................................. 100
ブレークポイントのタイプ ........................................................................................................ 110
プログラムブレークポイント : ........................................................................................... 111
リード / ライトブレークポイント....................................................................................... 112
ブレークポイントの処理................................................................................................................... 114
[Break.Set] ダイアログボックス ................................................................................................ 115
[HLL] チェックボックス...................................................................................................... 116
実装形式.............................................................................................................................. 118
動作..................................................................................................................................... 119
[Spot] 動作の例 ................................................................................................................... 121
オプション .......................................................................................................................... 123
[EXclude] オプションの例 .................................................................................................. 124
[NOMARK] オプションの例 ................................................................................................ 126
[Temporary] オプションの例 .............................................................................................. 127
[DISableHit] オプションの例............................................................................................... 128
データブレークポイント .................................................................................................... 129
高度なブレークポイント ........................................................................................................... 131
カウンタ.............................................................................................................................. 132
条件..................................................................................................................................... 135CMD.................................................................................................................................... 137
[Data]、[Condition]、[CMD] の例........................................................................................ 139
タスク ................................................................................................................................. 140
メモリ / レジスタ / 変数 ...................................................................................................... 142
設定されているすべてのブレークポイントのリストの表示 ..................................................... 143
ブレークポイントの削除 ........................................................................................................... 144
ブレークポイントの有効化 / 無効化 .......................................................................................... 144
ブレークポイント設定の保存 .................................................................................................... 145
デバッグ ............................................................................................................................................ 146
基本的なデバッグコントロール................................................................................................. 146
割り込み ............................................................................................................................................ 149
サンプルベースのプロファイリング................................................................................................. 150
概要 ............................................................................................................................................ 150
標準的なアプローチ................................................................................................................... 151
詳細 ............................................................................................................................................ 154
詳細な結果 .......................................................................................................................... 154
(その他).............................................................................................................................. 155
結果の文書化..................................................................................................................................... 156
結果の印刷 ................................................................................................................................. 156
特定ウィンドウの内容の印刷 ............................................................................................. 157
結果をファイルに保存 ............................................................................................................... 158
出力するファイルを開く .................................................................................................... 159
プリンタへの出力のリセット ............................................................................................. 162
Debugger Basics - トレーニング 3
Debugger Basics - トレーニング
2011/4/13 版
10/08/04 「サンプルベースのプロファイリング」の章を改訂。
08/05/19 NOR FLASH プログラミングの標準アプローチを追加。
07/04/13 「FLASH プログラミング」の項を削除。「NOR FLASH Programming User’s Guide」(norflash.pdf)に移動。
システムの概念
マイクロコントローラの機能 :
• オンチップデバッグインタフェース
• オンチップデバッグインタフェースとトレースポート
• NEXUS インタフェース
デバッグリソースに応じて各種のデバッグ機能を提供でき、様々な TRACE32 ツールが用意されていま
す。
Debugger Basics - トレーニング 4 システムの概念
オンチップデバッグインタフェース
TRACE32 デバッガを使用すると、マイクロコントローラのオンチップデバッグインタフェースを使用し
て、組み込みのハードウェアとソフトウェアをテストすることができます。 も一般的なオンチップデバッグインタフェースは JTAG です。
デバッグ機能
マイクロコントローラの種類によって、使用できるデバッグ機能は異なります。
すべてのマイクロコントローラに共通のデバッグ機能 :
• CPU レジスタへのリード / ライトアクセス
• すべてのメモリへのリード / ライトアクセス
• プログラム実行の開始と停止
各マイクロコントローラに固有のデバッグ機能 :
• オンチップブレークポイントの数
• プログラムを実行したままメモリへのリード / ライトアクセス
• ベンチマークカウンタ、トリガーなどの追加機能
TRACE32 ツール
TRACE32 デバッガハードウェアは常に以下から構成されます。
• ユニバーサルデバッガハードウェア
• プロセッサアーキテクチャ固有のデバッグケーブル
Debugger Basics - トレーニング 5 システムの概念
POWER DEBUG INTERFACE/USB 2
デバッグコントローラの条件 :
• 304DMIPS
• 200MHz
• ホストインタフェースとして USB 2.0
POWER DEBUG INTERFACE / USB2PODBUS IN
POWER
SELECT
EMULATE
TRIG
POWER7-9 V
US
B
LAUTERBACH
PODBUS OUT
DE
BU
G C
AB
LE
Target
POWER DEBUG INTERFACE / USB 2
USBCable
Debug Cable
JTA
GC
onn
ecto
r
DE
BU
G C
AB
LE
LA
UT
ER
BA
CH
AC/DC Adapter
PC
Debugger Basics - トレーニング 6 システムの概念
POWER DEBUG/ETHERNET
デバッグコントローラの条件 :
• 304DMIPS
• 200MHz
• ホストインタフェースとして 100MBit Ethernet、または USB 2.x
• POWER TRACE/ETHERNET にアップグレード可能
POWER DEBUG / ETHERNETPODBUS IN
TRIG
POWER7-9 V
US
B
LAUTERBACH
PODBUS OUT
DE
BU
G C
AB
LE
Target
PC orWorkstation
EthernetCable
POWER
SELECT
EMULATE
RECORDING
TRIGGER
ET
HE
RN
ET
CON ERR
TRANSMIT
RECEIVE
COLLISION
HUB
100 MBit Ethernet
Debug Cable
JTA
GC
onne
ctor
DE
BU
G C
AB
LE
LA
UT
ER
BA
CH
RE
SE
RV
ED
FO
R P
OW
ER
TR
AC
E
C B A
POWER DEBUG / ETHERNET
AC/DC Adapter
Debugger Basics - トレーニング 7 システムの概念
POWER DEBUG II
デバッグコントローラの条件 :
• 1000DMIPS
• 500MHz
• ホストインタフェースとして 1GBit Ethernet、または USB 2.0
• POWER TRACE II モジュールにより拡張可能
POWER DEBUG IIPODBUS SYNC
TRIG
POWER7-9 V
US
B
LAUTERBACHPODBUS OUT
DE
BU
G C
AB
LE
Target
POWER DEBUG II
EthernetCable
POWER
SELECT
RUNNING
LINK
ACTIVITY
ET
HE
RN
ET
HUB
1 GBit Ethernet
Debug Cable
DE
BU
G C
AB
LE
JTA
GC
onn
ecto
r
LA
UT
ER
BA
CH
PODBUS EXPRESS OUT
PC orWorkstation
AC/DC Adapter
Debugger Basics - トレーニング 8 システムの概念
オンチップデバッグインタフェースとトレースポート
多くのマイクロコントローラは、オンチップデバッグインタフェースに加えて、いわゆるトレースポートを備えています。 も一般的なトレースポートは、ARM アーキテクチャの ETM です。
トレース機能
トレースポートは、以下の情報をリアルタイムでブロードキャストします。
• プログラムフロー(実行される命令に関する情報)
• データフロー(命令によって実行される、メモリへのリード / ライトアクセス)
トレース情報の表示と評価については、「Training Real-time Trace」(training_icr.pdf)を参照してくださ
い。
TRACE32 ツール
トレースを行うには、TRACE32 デバッガを以下の機能で拡張する必要があります。
• ユニバーサルトレースハードウェア
• プロセッサアーキテクチャ固有のプリプロセッサ
Debugger Basics - トレーニング 9 システムの概念
POWER TRACE/ETHERNET
256MByte または 512MByte のトレースメモリ
POWER TRACE / ETHERNETPODBUS IN
TRIG
POWER7-9 V
US
B
LAUTERBACHPODBUS OUT
DE
BU
G C
AB
LE
Target
AC/DC Adapter
PC orWorkstation
POWER TRACE / ETHERNET
EthernetCable
POWER
SELECT
EMULATE
RECORDING
TRIGGER
ET
HE
RN
ET
CON ERR
TRANSMIT
RECEIVE
COLLISION
HUB
100 MBit Ethernet
Debug Cable
JTA
GC
onn
ecto
r
DE
BU
G C
AB
LE
LA
UT
ER
BA
CH
LO
GIC
AN
ALY
ZE
R P
RO
BE
C B A
Trac
eC
onn
ecto
r
Preprocessor
Debugger Basics - トレーニング 10 システムの概念
POWER DEBUG II と POWER TRACE II
POWER DEBUG II は、1GByte、2GByte、または 4GByte のトレースメモリを搭載した POWER TRACE IIによって拡張できます。
POWER TRACE IIPODBUS IN
POWER
SELECT
RECORD
RUNNING
POWER7-9V
LAUTERBACH
PODBUS OUT
POWER DEBUG IIPODBUS SYNC
TRIG
POWER7-9 V
US
B
LAUTERBACHPODBUS OUT
DE
BU
G C
AB
LE
Target
POWER DEBUG IIPOWER TRACE II
EthernetCable
POWER
SELECT
RUNNING
LINK
ACTIVITY
ET
HE
RN
ET
HUB
1 GBit Ethernet
Debug Cable
JTA
GC
onn
ecto
r
DE
BU
G C
AB
LE
LA
UT
ER
BA
CH
LO
GIC
AN
ALY
ZE
R P
RO
BE
C B A
Trac
eC
onn
ecto
r
Preprocessor
PODBUS EXPRESS OUT
PODBUS EXPRESS IN
PODBUS EXPRESS OUT
PR
EP
RO
CE
SS
OR
/ N
EX
US
PC orWorkstation
AC/DC Adapter
Debugger Basics - トレーニング 11 システムの概念
NEXUS
NEXUS は、特に自動車業界向けのオンチップデバッグとリアルタイムトレースのための標準インタ
フェースです。
NEXUS 機能
すべてのマイクロコントローラに共通のデバッグ機能 :
• CPU レジスタへのリード / ライトアクセス
• すべてのメモリへのリード / ライトアクセス
• プログラム実行の開始と停止
• プログラムを実行したままメモリへのリード / ライトアクセス
すべてのマイクロコントローラに共通のトレース機能 :
• プログラムフロー(実行される命令に関する情報)
各マイクロコントローラに固有のデバッグ機能 :
• オンチップブレークポイントの数
各マイクロコントローラに固有のトレース機能 :
• データフロー(命令によって実行される、メモリへのリード / ライトアクセス)
トレース情報の表示と評価については、「Training Real-time Trace」(training_icr.pdf)を参照してくださ
い。
TRACE32 ツール
TRACE32 ハードウェアは以下から構成されます。
• ユニバーサルデバッガとトレースハードウェア
• プロセッサアーキテクチャ固有の NEXUS アダプタ
Debugger Basics - トレーニング 12 システムの概念
NEXUS 用 POWER TRACE/ETHERNET
256MByte または 512MByte のトレースメモリ
POWER TRACE / ETHERNETPODBUS IN
TRIG
POWER7-9 V
US
B
LAUTERBACHPODBUS OUT
DE
BU
G C
AB
LE
Target
POWER TRACE / ETHERNET
EthernetCable
POWER
SELECT
EMULATE
RECORDING
TRIGGER
ET
HE
RN
ET
CON ERR
TRANSMIT
RECEIVE
COLLISION
C B A
HUB
100 MBit Ethernet
NEXUS Adapter
NE
XU
SC
onn
ecto
r
LO
GIC
AN
ALY
ZE
R P
RO
BE
AC/DC Adapter
PC orWorkstation
Debugger Basics - トレーニング 13 システムの概念
NEXUS 用 POWER DEBUG II と POWER TRACE II
POWER DEBUG II は、1GByte、2GByte、または 4GByte のトレースメモリを搭載した NEXUS 用
POWER TRACE II によって拡張できます。
POWER TRACE IIPODBUS IN
POWER
SELECT
RECORD
RUNNING
POWER7-9V
LAUTERBACH
PODBUS OUT
POWER DEBUG IIPODBUS SYNC
TRIG
POWER7-9 V
US
B
LAUTERBACHPODBUS OUT
DE
BU
G C
AB
LE Target
POWER DEBUG IIPOWER TRACE II
EthernetCable
POWER
SELECT
RUNNING
LINK
ACTIVITY
ET
HE
RN
ET
HUB
1 GBit Ethernet
LO
GIC
AN
ALY
ZE
R P
RO
BE
C B A
PODBUS EXPRESS OUT
PODBUS EXPRESS IN
PODBUS EXPRESS OUT
PR
EP
RO
CE
SS
OR
/ N
EX
US
PC orWorkstation
AC/DC Adapter
NE
XU
SC
onn
ecto
r
NEXUS Adapter
Debugger Basics - トレーニング 14 システムの概念
TRACE32 の起動
TRACE32 の基本的なパラメータ
この章では、TRACE32 の起動に必要とされる基本的なパラメータについて説明します。
パラメータは、設定ファイルで定義します。デフォルトでは、設定ファイルは config.t32 という名前で、
TRACE32 システムディレクトリ(パラメータ SYS)にあります。
設定ファイル
任意の ASCII エディタで、システムディレクトリにあるファイル config.t32 を開きます(デフォルトは
c:¥T32¥config.t32)。
設定ファイルには、以下のルールがあります。
• パラメータはパラグラフごとに定義します。
• 1 行目(見出し)で、パラメータのタイプを定義します。
• 各パラメータ定義は、空の行で終わります。
• パラメータを定義しない場合には、デフォルトのパラメータが使用されます。
Debugger Basics - トレーニング 15 TRACE32の起動
標準パラメータ
パラメータ 構文 説明
Host interface PBI=< ホストインタフェース >
TRACE32 ツールハードウェアのホストインタ
フェースのタイプ(UBS または Ethernet)
Environment variables
OS=ID=< 識別子 >TMP=< 一時ディレクトリ >SYS=<システムディレクト
リ >
(ID)TRACE32インスタンスによってTMPディ
レクトリに保存されるすべてのファイルに付く接頭辞
(TMP)TRACE32 によって使用される一時ディ
レクトリ(*)
(SYS)すべての TRACE32 ファイルのシステ
ムディレクトリ
Printer definition
PRINTER=WINDOWS Windows の標準プリンタはすべて、TRACE32ユーザーインタフェースから使用可能
(*)ソースコード情報を表示するために、TRACE32 はロードしたすべてのソー
スファイルのコピーを作成し、TMP ディレクトリに保存します。
Debugger Basics - トレーニング 16 TRACE32の起動
設定ファイルの例
USB の場合の設定ファイル
1 つの PowerDebug/PowerTrace を USB 経由で接続した場合 :
複数の PowerDebug/PowerTrace を USB 経由で接続した場合 :
; Host interfacePBI=USB
; Environment variablesOS=ID=T32TMP=C:¥tempSYS=d:¥t32¥usb
; temporary directory for TRACE32; system directory for TRACE32
; Printer settingsPRINTER=WINDOWS ; all standard windows printer can be
; used from the TRACE32 user interface
; Host interfacePBI=USBNODE=training1 ; NODE name of TRACE32
; Environment variablesOS=ID=T32TMP=C:¥tempSYS=d:¥t32¥usb
; temporary directory for TRACE32; system directory for TRACE32
; Printer settingsPRINTER=WINDOWS ; all standard windows printer can be
; used from the TRACE32 user interface
Debugger Basics - トレーニング 17 TRACE32の起動
IFCONFIG コマンドを使用して、PowerDebug/PowerTrace に NODE 名を割り当てます。
ファームウェアとソフトウェアの要件 :
• FLASH V8.0 ファームウェア(VERSION.HARDWARE)
• TRACE32 ソフトウェアビルド 7523 以上(VERSION.SOFTWARE)
• USB ドライバ、バージョン 5.5.x
IFCONFIG USB NODE 名を割り当てます。
NODE 名を入力
NODE 名をPowerDebug/PowerTraceに保存
Debugger Basics - トレーニング 18 TRACE32の起動
Ethernet の場合の設定ファイル
Ethernet 設定と操作プロファイル
; Host interfacePBI=NETNODE=training1
; Environment variablesOS=ID=T32TMP=C:¥tempSYS=d:¥t32¥eth
; temp directory for TRACE32; system directory for TRACE32
; Printer settingsPRINTER=WINDOWS ; all standard windows printer can be
; used from the TRACE32 user interface
IFCONFIG Ethernet インタフェースに関する情報を表示および変更します。
Debugger Basics - トレーニング 19 TRACE32の起動
追加のパラメータ
フォントサイズを変更すると、TRACE32 ウィンドウの表示が見やすくなります。
標準フォントで表示 :
:
小さいフォントで表示 :
; Screen settingsSCREEN=FONT=SMALL ; Use small fonts
Debugger Basics - トレーニング 20 TRACE32の起動
アプリケーションのプロパティ(Windows のみ)
プロパティウィンドウで、TRACE32 ソフトウェアの基本設定の一部を確認、変更できます。
設定ファイルの定義
デフォルトでは、TRACE32 システムディレクトリ(パラメータ SYS)にある設定ファイル config.t32が使用されます。オプション -c を指定すると、設定ファイルの場所と名前を任意に定義できます。
作業ディレクトリの定義
起動後の TRACE32 は、指定された作業ディレクトリを使用します。システムディレクトリでは作業を
行わないことをお勧めします。
アプリケーションプログラムの起動サイズの定義
[Normal window]、[Minimized]、[Maximized] の中から選択できます。
H:¥BDM¥t32mppc.exe -c g:¥!¥and¥config.t32
PWD 現在の作業ディレクトリを表示する TRACE32 コマンド。
設定ファイル
作業ディレクトリ
ウィンドウサイズ
Debugger Basics - トレーニング 21 TRACE32の起動
T32Start による設定(Windows のみ)
基本パラメータを変更するには、T32Start を使用する直感的な方法もあります。
以下の場合には、T32Start をお勧めします。
• マルチコア / マルチプロセッサのデバッグでパラメータを設定する場合
• 複数のターゲットに対してパラメータ定義を調整する場合
t32start.exe の詳細なオンラインヘルプは、[HELP] ボタンをクリックして、または「T32Start」(app_t32start.pdf)で参照できます。
パラメータ
Debugger Basics - トレーニング 22 TRACE32の起動
TRACE32 について
各国のローターバッハサポートにご連絡いただく場合には、TRACE32 ツールに関する基本的な情報をご
用意ください。
バージョン情報
[VERSION] ウィンドウに以下の情報が表示されます。
1. TRACE32 ソフトウェアのバージョン
2. デバッグケーブルのシリアル番号と、デバッグケーブルにプログラムされたデバッグライセンス
VERSION.view [VERSION] ウィンドウを表示します。
VERSION.HARDWARE TRACE32 ハードウェアモジュールに関する詳細を表示しま
す。
VERSION.SOFTWARE TRACE32 ソフトウェアに関する詳細を表示します。
1
2
Debugger Basics - トレーニング 23 TRACE32の起動
ライセンス情報
[LICENSE] ウィンドウで も重要な情報が、有効期限です。TRACE32 ソフトウェアのバージョンが有効
期限より新しい場合、ソフトウェアを使用するには TRACE32-ICD ソフトウェアメンテナンス契約(LA-8017)が必要です。
LICENSE ライセンス情報を表示します。
有効期限
Debugger Basics - トレーニング 24 TRACE32の起動
サポートメール用の詳細情報の準備
各国のローターバッハサポートにサポート請求を送信する場合には、ご使用の TRACE32 設定に関する
詳細な情報をご用意ください。そのための機能が、[Generate TRACE32 Support Informations] ウィン
ドウです。このウィンドウで生成される情報を電子メールに添付してください。
Debugger Basics - トレーニング 25 TRACE32の起動
デバッグセッションの確立
デバッグ環境の設定
デバッガとターゲット CPU の間での通信の確立
デバッガとターゲット CPU の間で通信を確立する
デバッグ対象のアプリケーションをロードする
1. ターゲット CPU を選択する
2. 必要に応じて JTAG クロックを
3. ターゲット CPU に必要な オプションを選択する
4. 通信を確立する
調整する
Debugger Basics - トレーニング 26 デバッグセッションの確立
1. ターゲット CPU を選択する
CPU を自動検出できない場合は、ターゲット上の CPU をデバッガに指定します。[CPU] フィー
ルドのプルダウンメニューから適切な CPU を選択してください。
SYStem.CPU <CPU> CPU を選択します。
SYStem.CPU ARM920T
Debugger Basics - トレーニング 27 デバッグセッションの確立
2. JTAG クロックを調整する
デバッガが使用するデフォルトの JTAG クロックは 10MHz です。以下の場合には、JTAG クロッ
クの調整が必要です。
- CPU クロックと JTAG クロックの間に固定の関係を指定する場合
- 例 : PowerPC MPC55xx の場合 :
- ARM CPU で、JTAG クロックに RTCK を使用する必要がある場合
SYStem.JtagClock < 周波数 > JTAG クロックを選択します。
SYStem.JtagClock 1.MHz
SYStem.JtagClock 100.kHz
SYStem.JtagClock RTCK
JTAGclock14---CPUclock
Debugger Basics - トレーニング 28 デバッグセッションの確立
3. ターゲット CPU に必要なオプションを選択する
ターゲット CPU によっては、デバッガとターゲット CPU の間で通信を確立する前に追加の設定
が必要な場合があります。
詳細については、ご使用の CPU の『ICD Target Manual』を参照してください。
追加の設定
Debugger Basics - トレーニング 29 デバッグセッションの確立
4. 通信を確立する
デバッガとターゲット CPU の間で通信を確立する も一般的なオプションは [Up] です。
[Up] を選択する場合は、以下の手順を実行します。
- ターゲット CPU のリセット
- デバッガとターゲット CPU の間での通信の初期化
- リセットベクタでの CPU の停止
SYStem.Up デバッガとターゲット CPU の間で通信を確立します(ター
ゲット CPU をリセットする)。
[In Target Reset] が SYStem.Up に相当
Debugger Basics - トレーニング 30 デバッグセッションの確立
デバッガとターゲットCPUの間で通信を確立する際、2番目に便利なオプションは [Attach]です。
[Attach] では、すでに動作している CPU にデバッガを接続できます。
[Attach] を選択する場合は、以下の手順を実行します。
1.デバッガとターゲット CPU の間での通信の初期化
ターゲット CPU のリセットは実行されません。
SYStem.Mode Attach デバッガとターゲット CPU の間で通信を確立します(ター
ゲット CPU をリセットしない)。
SYStem.Mode Attach ; attach the debugger to a running CPU
Break ; stop the program execution
Debugger Basics - トレーニング 31 デバッグセッションの確立
アプリケーションプログラムのロード
デバッガがデバッグ対象のアプリケーションプログラムをロードすると、コードとデータがターゲットCPU を介してターゲットメモリに書き込まれます。
基本的なチェック
ターゲット CPU が適切なメモリに対してライトアクセス可能かどうか、いくつかの基本的なチェックを
実行して確認することができます。
1. プログラムやデータがどのアドレスにロードされるかをチェックする。
Data.LOAD < ファイル > /NOCODE チェックするシンボルとデバッグの情報をロードします。
sYmbol.List.MAP コードやデータが書き込まれるアドレスを表示します。
Data.LOAD armle.axf /NOCODE
sYmbol.List.MAP
ターゲット CPU が適切なメモリに対して ライトアクセスできることを確認する
デバッグ対象のアプリケーションをロードする
Debugger Basics - トレーニング 32 デバッグセッションの確立
2. プログラムやデータがロードされるアドレスに対して、ターゲット CPU がライトアクセス可
能かどうかをチェックする。
このテストでは以下の結果になります。
Data.TestList [< アドレス範囲 >]
Data.TestList 0x0--0x0bffffff
ok RAM: ターゲット CPU はライトアクセス可能です。
read only FLASH: これらのアドレスへの書き込みには、FLASH プログラミングコ
マンドが必要です。ROM: デバッガによってアドレスへのライトアクセスはできません。
read fail write fail
デバッガが、これらのアドレスに対して読み取り / 書き込みできません。
ターゲット CPU のバス構成を確認してください。
Debugger Basics - トレーニング 33 デバッグセッションの確立
バス構成のチェック
バス構成レジスタを正しく設定することが、ターゲットのメモリに対するライトアクセスに不可欠です。RAM/FLASH デバイスごとに、バス構成の以下の項目を確認してください。
• RAM/FLASH デバイスのベースアドレスの定義
• RAM/FLASH デバイスのサイズの定義
• RAM/FLASH デバイスへのアクセスに使用するバスサイズの定義
• RAM/FLASH デバイスでライトアクセスを有効にすること
• タイミング(RAM/FLASH デバイスへのライトアクセスの待機状態の数)の定義
バス構成レジスタの設定をチェックするには、PER.view コマンドを使用します。
例
リセット後のバス構成 :
使用する外部 FLASH デバイスへのライトアクセスを可能にするには、Address Region 0 を以下の状態
に設定します。
• ベースアドレス 0xa0000000
• サイズ 16MByte
• バスサイズ 16 ビット
PER.Set < アドレス > %< フォーマット > < 値 >
Data.Set < アドレス > %< フォーマット > < 値 >
PER.view , /SpotLight ; Highlight all changed; configuration registers
PER.Set 0xf0000080 %LONG 0xA0000031 ; ADDSEL0
PER.Set 0xf00000c0 %LONG 0x00508637 ; BUSCON0
Debugger Basics - トレーニング 34 デバッグセッションの確立
ターゲット起動コードがブート FLASH によってすでに設定されている場合には、これを実行してバス構
成を行うことができます。
Go プログラム実行を開始します。
Break プログラム実行を停止します。
WAIT < 時間 > 定義した時間待機します(スクリプトのみ)。
Go ; start the program execution
Break ; stop the program execution after; the target initialization is done
... ; script example
Go
WAIT 0.5s
Break
...
Debugger Basics - トレーニング 35 デバッグセッションの確立
基本的な FLASH プログラミング
デバッガは、オンチップおよびオフチップ FLASH デバイスの FLASH プログラミングをサポートしてい
ます。
大部分のオンチップ FLASH のすぐに使えるスクリプトは、TRACE32 ソフトウェア CD の以下の場所に
あります。
...¥demo¥<アーキテクチャ >¥flash¥<CPU>.cmm
例 : ...¥demo¥arm¥flash¥at91sam7s.cmm
オフチップ FLASH デバイスのプログラミングが必要な場合には、以下のコマンドが便利です。TRACE32FLASH プログラミングの概念についての詳細は、「NOR FLASH Programming User’s Guide」(norflash.pdf)を参照してください。
FLASH.RESet FLASH 宣言テーブルをリセットします。
FLASH.CFI < 開始アドレス > < データバス幅 > FLASHデバイス内部のCommon Flash Interfaceを評価して、FLASH 宣言を生成します。
コマンド FLASH.CFI には、以下の定義が必要で
す。• FLASH デバイスの < 開始アドレス >• FLASH デバイスにアクセスするとき CPU
によって使用される < データバス幅 >
FLASH.List FLASH 宣言テーブルをリストします。
FLASH.UNLOCK ALL FLASH セクターをロック解除します。
FLASH.Program ALL | OFF FLASH プログラミングを有効 / 無効にします。
Debugger Basics - トレーニング 36 デバッグセッションの確立
CFI 機能を備えていない FLASH デバイスでの、FLASH プログラミングの手順については「NOR FLASHProgramming User’s Guide」(norflash.pdf)を参照してください。
FLASH.RESet ; Reset the FLASH declaration table
FLASH.CFI 0xa0000000 Word ; Generate a FLASH declaration via; CFI
FLASH.List ; Display the FLASH declaration; table
FLASH.UNLOCK ALL ; Unlock the FLASH device if; required; e.g. some FLASH devices are; locked after power on
FLASH.Erase ALL ; Erase the FLASH
FLASH.Program ALL ; Enable the FLASH for programming
Data.LOAD.Elf demo.elf ; Load your code/data to the FLASH
FLASH.Program OFF ; Disable the FLASH programming
Data.LOAD.Elf demo.elf /ComPare ; Verify the FLASH programming; an error message is displayed; if the code/data in the FLASH; is different from the code/data; in the file
Debugger Basics - トレーニング 37 デバッグセッションの確立
アプリケーションのロード
コンパイラ固有の < サブコマンド > については、『ICD Target Manual』を参照してください。
Data.LOAD.< サブコマンド > < ファイル > </ オプション > ファイルをロードします。
Data.LOAD.Elf arm-flash.elf ; Load file in ELF/DWARF format
Data.LOAD.AIF demo.axf ; Load file in AIF format
Data.LOAD.Elf * ; Load file in ELF/DWARF format; open file browser to select file
Debugger Basics - トレーニング 38 デバッグセッションの確立
起動スクリプトの生成
デバッグ環境の設定に使用するコマンドは、1 つの起動スクリプトにまとめておくことをお勧めします。
そのために、スクリプト言語 PRACTICE が用意されています。
スクリプトファイルの標準的な拡張子は .cmmです。
基本的な起動スクリプトの例は、『ICD Target Manual』の「Quick Start」の項を参照してください。
起動スクリプトの記述
デバッガに用意されている ASCII エディタを使用して、起動スクリプトの記述、実行、デバッグを行う
ことができます。
デバッガには、デバッガ設定情報をスクリプトに変換できる 2 つのコマンドがあります。
PEDIT < ファイル > スクリプトエディタで < ファイル > を開きます。
PEDIT my_startup
STOre < ファイル > [< 項目>]
現在の設定を再現できるスクリプトを生成します。
ClipSTOre [< 項目 >] 現在の設定を再現できるコマンドリストをクリップテキストで生成します。
STOre system_settings SYStem
PEDIT system_settings
; Generate a script that allows you; to reproduce the settings of the; SYStem window at any time
; Open the file system_settings
ClipSTOre SYStem ; Generate a command list that; allows you to reproduce the; settings of the SYStem window; at any time
Debugger Basics - トレーニング 39 デバッグセッションの確立
起動スクリプトの実行
DO < ファイル名 > 起動スクリプトを実行します。
DO my_startup
Debugger Basics - トレーニング 40 デバッグセッションの確立
起動スクリプトの自動化
デバッガの起動時に自動的に実行される起動スクリプトを定義するには、3 つの方法があります。
1. T32.cmm
スクリプト t32.cmm が、現在の作業ディレクトリかシステムディレクトリに存在する場合、デ
バッガの起動時に自動的に実行されます。
2. 実行可能ファイルと組み合わせて起動スクリプトを定義する
デバッガの実行可能ファイルは、設定ファイルと起動スクリプトをパラメータに指定して起動することができます。
3. T32startを使用して自動的に起動するスクリプトを定義する
T32startを使用してデバッガを起動する場合、自動的に起動するスクリプトを定義できます。
PWD 現在の作業ディレクトリを出力します。
PRINT OS.PSD() デバッガのシステムディレクトリ(SYS)の名前を出力しま
す。
c:¥t32¥t32arm.exe -c c:¥t32¥config_usb.t32, g:¥and¥arm¥start.cmm
Debugger Basics - トレーニング 41 デバッグセッションの確立
TRACE32 の GUI
GUIの構造と機能は、TRACE32システムディレクトリにあるファイルt32.men
で定義されます。TRACE32 では、ご使用の環境に応じて使いやすいように GUI を変更できます。
メインメニューバーとアクセラ
メインツール
ローカルポップ
ローカルボタン
アップ メニュー
レータキー
バー
ボタン
Debugger Basics - トレーニング 42 TRACE32のGUI
メインメニューバーとアクセラレータキー
メインメニューバーには、TRACE32 の重要な機能がすべて、グループ別にまとめられています。
よく使用するコマンドには、アクセラレータキーも定義されています。
ユーザー独自のメニューを定義するのは簡単です。
MENU.AddMenu < 名前 > < コマンド > ユーザーメニューを追加します。
MENU.RESet メニューをデフォルトにリセットします。
Menu.AddMenu "Set PC to main" "Register.Set pc main"
Menu.AddMenu "Set PC to main, ALT+F10" "Register.Set pc main"
; User menu with accelerator
メインメニューバーのもっと複雑な変更については、以下のトレーニングセクションを参照してください。「Menu Programming」
アクセラレータキー
ユーザーメニュー
Debugger Basics - トレーニング 43 TRACE32のGUI
メインツールバー
メインツールバーからは、よく使用するコマンドに簡単にアクセスできます。
ユーザー独自のボタンを追加するのは簡単です。
< ツール画像 > に関する情報は、[Help] -> [TRACE32 Documents] -> [IDE User Interface] -> [IDEReference Guide] -> [MENU] -> [Programming Commands] -> [TOOLITEM] を参照してください。
MENU.AddTool < ツール説明文 > < ツール画像 > < コマンド >
ツールバーにボタンを追加します。
MENU.RESet メニューをデフォルトにリセットします。
MENU.AddTool "Set PC to main" "PM,X" "Register.Set PC main"
メインツールバーのもっと複雑な変更については、以下のトレーニングセクションを参照してください。「Menu Programming」
ユーザー独自のボタン
Debugger Basics - トレーニング 44 TRACE32のGUI
ウィンドウエリア
ページレイアウトの保存
TRACE32 を終了するとき、ページレイアウトに関する情報は保存されません。ウィンドウレイアウトを
保存するには、[Window] メニューの [Store Window to ...] コマンドを使用してください。
ページ設定とウィンドウ設定のためのバッチファイルの例 :
; And Mon Jan 19 13:06:32 1998B::TOOLBAR ONSTATUSBAR ONWINPAGE.RESETWINPAGE.CREATE P000WINCLEARWINPOS 0.0 0.0 91. 8. 13. 1. W000B::d.lWINPOS 0.0 12.5 43. 8. 5. 0. W001B::v.f /l /cWINPOS 47.5 12.5 43. 8. 0. 0. W002B::v.l %m %r %t WINPAGE.CREATE P001WINCLEARWINPOS 16.0 13.3125 77. 18. 10. 2. W005B::A.T d.0--7WINPOS 0.0 0.0 77. 18. 8. 1. W004B::T.LWINPAGE.SELECT P000ENDDO
[Store Windows to ...] でバッチファイルが生成
され、そのバッチファイルを使用すると現在のページ設定とウィンドウ設定をいつでも再現可
Debugger Basics - トレーニング 45 TRACE32のGUI
バッチファイルを実行すると、保存されているページ設定とウィンドウ設定が再現される
Debugger Basics - トレーニング 46 TRACE32のGUI
ウィンドウの変更
ウィンドウのヘッダーには、そのウィンドウを開くために実行されたコマンドが表示される
ウィンドウヘッダーを右クリックすると、ウィンドウを開くために実行されたコマンドがコマンドラインで再表示され、変更が可能となる
Debugger Basics - トレーニング 47 TRACE32のGUI
コマンドライン
コマンド構造
デバイスプロンプト
TRAC32 で使用されるコマンドセットを選択します。
デバイスプロンプトなし TRACE32-IDE
E:: TRACE32-ICE のコマンドセット
B:: TRACE32-ICD(デバッガ)のコマンドセット
F:: TRACE32-FIRE(RISC エミュレータ)のコマ
ンドセット
コマンドライン
Debugger Basics - トレーニング 48 TRACE32のGUI
コマンド例
各コマンドは省略形が可能です。省略できない文字は常に大文字で表記されます。
データ メモリを表示、変更するコマンドグループ
Data.dump 16 進ダンプを表示
Data.List ソースリストを表示
Data.LOAD ターゲットメモリにコードをロード
Break ブレークポイントを設定、リスト、削除するコマンドグループ
Break.Set ブレークポイントを設定
Break.List 設定されているすべてのブレークポイントをリスト
Break.Delete ブレークポイントを削除
Data.dump 0x1000--0x2000 /Byte
コマンドグループ
サブコマンド
パラメータ
オプション
Debugger Basics - トレーニング 49 TRACE32のGUI
特定のコマンドのオンラインヘルプ
コマンドラインにコマンドを入力する。
F1 キーを押すと、特定のコマンドのオンラインヘルプが表示される。空白を 1 つ追加する。
Debugger Basics - トレーニング 50 TRACE32のGUI
標準のパラメータ構文
RADIX は、数値の入力フォーマットを定義します。
例 :
現在使用されているパラメータ構文を確認するには、コマンドラインに RADIX.と入力します。
RADIX.< モード > パラメータ構文を定義します。
RADIX.Decimal 基数は 10 進法で、C と似た演算子を使用
RADIX.Hex 基数は 16 進法で、C と似た演算子を使用(デフォルト)
Decimal Hex
Data.dump 100 100d 100h
Data.dump 100. 100d 100d
Data.dump 0x100 100h 100h
Debugger Basics - トレーニング 51 TRACE32のGUI
メッセージ行
• メッセージ行 : システムとエラーメッセージ用
• メッセージエリアウィンドウ : 新のシステムとエラーメッセージの表示用
メッセージ行
メッセージエリアエリア
Debugger Basics - トレーニング 52 TRACE32のGUI
ソフトキー
ソフトキー行では、特定のコマンドを段階的に入力できます。
コマンドグループを選択
サブコマンドを選択
角かっこで囲まれている項目はユーザー入力が必要 この例では、< アドレス > または < 範囲 > を入力
すべてのオプションの表示を取得
オプションを選択
Debugger Basics - トレーニング 53 TRACE32のGUI
ステータス行
青いカーソルがある
アドレスのシンボリック
および絶対アドレス
システムの状態 デバッグモード
Debugger Basics - トレーニング 54 TRACE32のGUI
レジスタ
CPU レジスタの表示
Debugger Basics - トレーニング 55 レジスタ
変更されたレジスタのカラー表示
Register.view [/< オプション >] CPU レジスタを表示します。
SETUP.Var %SpotLight すべての変数ウィンドウ、レジスタウィンドウ、周辺レジスタウィンドウ、HLL スタックフレームウィンドウ、すべての
Data.dump ウィンドウで [SpotLight] オプションをオンに切り
替えます。
Register.view /SpotLight
前回のステップで変更されたレジスタは濃い赤色でマークされる。前々回のステップで変更されたレジスタはやや薄い赤色でマークされる。4 レベル前までが同様にカラー表示される。
[SpotLight] がオンの場合、以下のそれぞれ
で SpotLight 機能が自動的に有効になる。
1.)すべての変数ウィンドウ
2.)レジスタウィンドウ(レジスタビット
も含む)
3.)周辺レジスタウィンドウ
4.)HLL スタックフレーム
5.)すべての Data.dump ウィンドウ
SpotLight 機能が有効になるのは、この機能
を有効にした後で開いた窓のみ。
Debugger Basics - トレーニング 56 レジスタ
CPU レジスタの内容の変更
Register.Set < レジスタ > < 値 > CPU レジスタを変更します。
レジスタの内容をダブルクリックすると、 コマンドラインに Register.Set コマンドが
自動的に表示される。新しい値を入力して Return を押すと、
レジスタの内容が変更される。
Debugger Basics - トレーニング 57 レジスタ
特殊機能のレジスタの表示
TRACE32 では、設定レジスタとオンチップ周辺レジスタを論理レベルで表示 / 操作できる自由な設定
ウィンドウがサポートされます。ほとんどの標準的な CPU に、事前定義されている周辺レジスタウィン
ドウを使用できます。
ツリー表示
TRACE32 の個々の設定レジスタやオンチップ周辺レジスタは、ツリー構造で編成されます。必要に応じ
て、選択したレジスタの詳細を表示できます。
Debugger Basics - トレーニング 58 レジスタ
フル表示
起動時からツリー構造を展開していると便利な場合があります。
以下のコマンドシーケンスを使用すると、すべての設定レジスタ / オンチップ周辺レジスタの内容をファ
イルに保存できます。
PER.View , "Clocks and Power Control" ; Display the functional unit; "Clocks and Power Control" in; expanded mode
PER.View , "*" ; Display all functional units in; expanded mode
PRinTer.FileType ASCIIE ; Select ASCII ENHANCED as output; format
PRinTer.FILE Per.lst ; Define Per.lst as output file
WinPrint.Per.view , "*" ; Save contents of all; configuration registers/on-chip; periperal registers to the; specified file
右クリックして [Show all] を選択する。
Debugger Basics - トレーニング 59 レジスタ
SFR ごとの詳細情報
選択した項目のアドレス、ビット位置、名称がステータス行に 表示される。選択した項目の名称は、CPU マニュアルから取得される。
Debugger Basics - トレーニング 60 レジスタ
PER 定義ファイル
PER ウィンドウのレイアウトは、PER 定義ファイルで記述されています。
必要に応じてこの定義を変更するには、PER コマンドグループを使用します。
実際の PER 定義ファイルのパスとバージョンは、以下のコマンドで表示できます。
VERSION.SOFTWARE
PER.view < ファイル名 > [< ツリー検索項目 >] 設定レジスタ / オンチップ周辺レジスタを表
示します。
PER.view C:¥T32¥perarm9t.per ; Use the peripheral file perarm9t.per; instead of the default PER definition; file
Debugger Basics - トレーニング 61 レジスタ
特殊機能レジスタ (SFR) の変更
設定レジスタ / オンチップ周辺レジスタの内容を変更できます。
• 右クリックして、プルダウンメニューから事前定義済みの値を 1 つ選択します。
• 数値をダブルクリックすると、選択したレジスタの内容を変更する PER.Setコマンドが、コ
マンドラインに表示されます。新しい値を入力し、リターンキーで確定します。
PER.Set.simple < アドレス >|< 範囲 > [<% フォーマット >] < 文字列 >
設定レジスタ / オンチップ周辺
レジスタを変更します。
Data.Set < アドレス >|< 範囲 > [<% フォーマット >] < 文字列 > メモリを変更します。
PER.Set.simple D:0xF87FFF10 %Long 0x00000b02
Debugger Basics - トレーニング 62 レジスタ
メモリの表示と変更
このトレーニングセクションでは、 もよく使用する方法でメモリの表示と変更を行います。
• メモリ領域の 16 進ダンプを表示する Data.dump ウィンドウと、メモリアドレスの内容を変更
できる Data.Set コマンド
• メモリの内容をソースコードリストとして表示する Data.List ウィンドウ
いわゆるメモリクラスは、常にメモリアドレス付きで表示されます。以下のメモリクラスは、すべてのプロセッサアーキテクチャで使用できます。
ご使用のプロセッサアーキテクチャで用意されている追加のメモリクラスについては、ご使用の『TargetManual』を参照してください。
P:1000 プログラムアドレス 0x1000
D:6814 データアドレス 0x6814
Debugger Basics - トレーニング 63 メモリの表示と変更
Data.dump ウィンドウ
基本
アドレスを使用して、Data.dump ウィンドウの開始アドレスを指定
TRACE32 は、すべてのウィンドウを常に更新している点に注意してください。
デフォルトの更新レートは 1 秒当たり 10 回です。
Debugger Basics - トレーニング 64 メモリの表示と変更
アドレス範囲を使用して Data.dump ウィンドウのアドレスを指定
アドレス範囲を入力すると、指定したアドレス範囲のみが表示されます。これは、メモリマップされている I/O レジスタに近いメモリ領域を表示する必要があり、TRACE32 で I/O レジスタに対するリードサ
イクルを発生させたくない場合に便利です。
アドレス範囲の指定規則 :
• < 開始アドレス >--< 終了アドレス >
• < 開始アドレス >..< 終了アドレス >
• < 開始アドレス >++< オフセット(バイト単位)>
• < 開始アドレス >++< オフセット(ワード単位)>(DSP の場合)
Debugger Basics - トレーニング 65 メモリの表示と変更
シンボルを使用して、Data.dump ウィンドウの開始アドレスを指定。
[i]を使用して、TRACE32 で認識されるシンボル名またはラベルを選択する。
デフォルトでは、順方向の表示を使用(2x で改行)。
小さい矢印は、指定されたダンプアドレスを示す。
Debugger Basics - トレーニング 66 メモリの表示と変更
Data.dump <アドレス> | <範囲> [/<オプション ] メモリの 16 進ダンプを表示します。
Data.dump 0x6814 ; Display a hex dump starting at; address 0x6814
Data.dump 0x6814--0x6820 ; Display a hex dump of the; specified address range
Data.dump 0x6814..0x6820 ; Display a hex dump of the; specified address range
Data.dump 0x6814++0x8 ; Display a hex dump of the; specified address range
Data.dump ast ; Display a hex dump starting at; the address of the label ast
Data.dump ast /Byte ; Display a hex dump starting at; the address of the label ast in; byte format
Debugger Basics - トレーニング 67 メモリの表示と変更
メモリ内容の変更
Data.Set < アドレス >|< 範囲 > [%< フォーマット >] [/< オプション >] メモリ内容を変更します。
Data.Set 0x6814 0x0000aaaa ; Write 0x0000aaaa to the address; 0x6814
Data.Set 0x6814 %Long 0xaaaa ; Write 0xaaaa as a 32 bit value to ; the address 0x6814, add the ; leading zeros automatically
Data.Set 0x6814 %LE %Long 0xaaaa ; Write 0xaaaa as a 32 bit value to ; the address 0x6814, add the ; leading zeros automatically
; Use Little Endian mode
メモリ内容を左ダブルクリックすると、 コマンドラインに Data.Set コマンドが
自動的に表示され、新しい値を入力できる。リターンキーで
確定する。
Debugger Basics - トレーニング 68 メモリの表示と変更
実行時メモリアクセス
TRACE32 で表示されるメモリ内容が更新されるのは、デフォルトでは CPU が停止したときだけです。
ウィンドウフレームに斜線かかっている場合は、CPU がプログラムを実行中のため 情報表示が固定されていることを示す。
プログラム実行が停止したので、ウィンドウの情報が更新されている。
Debugger Basics - トレーニング 69 メモリの表示と変更
CPU 実行に影響しない実行時メモリアクセス
プロセッサアーキテクチャによっては、CPU がプログラムを実行中でも、デバッガがすべてのメモリに
対して読み書き可能です。デバッガはほとんどの場合、プロセッサバスに直接アクセスできるので、この機能によってコアに余分な負荷は発生しません。
ご使用のプロセッサアーキテクチャで、CPU がプログラムを実行中でもデバッガがメモリに対して読み
書きできるかどうかを確認するには、SYStem ウィンドウを開きます。
CPU 実行に影響しない実行時メモリアクセスについての詳細は、ご使用の『Target Manual』で、コマ
ンド SYStem.MemAccess の説明を参照してください。
CPU 実行に影響しない実行時メモリアクセスの使用法は、明示的に設定する必要があります。2 つの使
用法が用意されています。
• 特定のメモリ領域に対して実行時メモリアクセスを設定する。
• メモリ内容を表示するすべてのウィンドウに対して実行時メモリアクセスを設定する。
[MemAccess] の [CPU]/[NEXUS]/[DAP]CPU がプログラムを実行中でもデバッガがメモリに対して読み書きできるプロセッサアーキテクチャで あることを示す。
Debugger Basics - トレーニング 70 メモリの表示と変更
特定のメモリ領域に対して実行時メモリアクセスを設定 :
[E] チェックボックスをオンにすると、メモリクラスに属性 E が追加されます。
メモリに対するライトアクセスも、同じように動作します。
EP:1000 プログラムアドレス 0x1000、実行時メモリアクセスが有効
ED:6814 データアドレス 0x6814、実行時メモリアクセスが有効
[E] チェックボックスをオンにして実行時メモリアクセスを有効にする。
ウィンドウフレームが通常 表示の場合は、CPU が プログラムを実行中に情報が更新されることを示す。
実行時メモリアクセスを介した Data.Set
(属性 E)
Debugger Basics - トレーニング 71 メモリの表示と変更
SYStem.MemAccess CPU ; Enable the non-intrusive; run-time memory access
...
Go ; Start program execution
Data.dump E:0x6814 ; Display a hex dump starting at; address 0x6814 via run-time ; memory access
Data.Set E:0x6814 0xAA ; Write 0xAA to the address; 0x6814 via run-time memory; access
Debugger Basics - トレーニング 72 メモリの表示と変更
メモリを表示するすべてのウィンドウに対して実行時メモリアクセスを設定 :
[DUALPORT] のオプションを選択すると、CPU がプログラム実行中でも、すべてのメモリアクセスが実
行時メモリアクセスで実施されます。
[MemAccess] で [CPU]/[NEXUS]/[DAP] を選択し、[DUALPORT] を選択すると、メモリを表示するすべてのウィンドウに対して実行時メモリアクセスが設定される。
CPU がプログラムを実行中に更新されるので、メモリを表示する すべてのウィンドウは通常のウィンドウフレームを持つ。
CPU がプログラムを実行中にすべてのメモリに対するライトアクセスが可能。
Debugger Basics - トレーニング 73 メモリの表示と変更
SYStem.MemAccess CPU ; Enable the non-intrusive; run-time memory access
SYStem.Option DUALPORT ON ; Activate the run-time memory; access for all windows that; display memory
...
Go ; Start program execution
Data.dump 0x6814 ; Display a hex dump starting at; address 0x6814 via run-time ; memory access
Data.Set 0x6814 0xAA ; Write 0xAA to the address; 0x6814 via run-time memory; access
Debugger Basics - トレーニング 74 メモリの表示と変更
CPU 実行に影響のある実行時メモリアクセス
プロセッサアーキテクチャによっては、CPU がプログラムを実行中には、デバッガがメモリに対して読
み書き可能です。必要に応じて、CPU 実行に影響のある実行時メモリアクセスを有効にすることができ
ます。
CPU 実行に影響のある実行時メモリアクセスを有効にすると、TRACE32 はプログラム実行を定期的に
停止し、指定されたメモリ領域に対して読み書きを行います。更新ごとに 低 50us の時間がかかります。
[CpuAccess] で [Enable] を選択すると、CPU 実行に影響のある実行時メモリアクセス
CPU がプログラムを実行中 CPU が停止し、指定された メモリに対する TRACE32 の 読み書きが可能。
Debugger Basics - トレーニング 75 メモリの表示と変更
CPU 実行に影響のある実行時メモリアクセスが可能なのは、特定のメモリ領域だけです。
メモリに対するライトアクセスも、同じように動作します。
[E] チェックボックスをオンにして実行時メモリアクセスを有効にする。
ウィンドウフレームが通常表示の場合は、CPU がプログラムを実行中に情報が更新 されることを示す。
ステータス行に赤色の [S] が表示されている場合は、TRACE32 の機能が有効でありプログラム実行を短時間停止する必要があることを示す。
短時間のプログラム実行停止を使った実行時メモリアクセスによるData.Set
Debugger Basics - トレーニング 76 メモリの表示と変更
SYStem.CpuAccess Enable ; Enable the intrusive; run-time memory access
...
Go ; Start program execution
Data.dump E:0x6814 ; Display a hex dump starting at; address 0x6814 via an intrusive; run-time memory access
Data.Set E:0x6814 0xAA ; Write 0xAA to the address; 0x6814 via an intrusive; run-time memory access
Debugger Basics - トレーニング 77 メモリの表示と変更
変更されたメモリ内容のカラー表示
Data.dump flags /SpotLight ; Display a hex dump starting at; the address of the label flags
; Mark changes
[SpotLight] オプションを有効にすると、変更されたメモリ内容の過去 4 回分が、濃い赤色から段階的に薄い色でマーキングされる。
Debugger Basics - トレーニング 78 メモリの表示と変更
Data.List ウィンドウ
PC 関連のソースリストを表示
デバッグに MIX モードを選択すると、アセンブラと HLL の情報が表示される。
デバッグに HLL モードを選択すると、HLL のみの情報が表示される。
Debugger Basics - トレーニング 79 メモリの表示と変更
選択した関数のソースリストを表示
Data.List [< アドレス >] [/< オプション >] ソースリストを表示します。
表示する関数を選択する。
Debugger Basics - トレーニング 80 メモリの表示と変更
Data.List ; Display a source listing; around the PC
Data.List E: ; Display a source listing; around the PC via run-time; memory access
Data.List * ; Open the symbol browser to ; select a function for display
Data.List func17 ; Display a source listing of; func17
Debugger Basics - トレーニング 81 メモリの表示と変更
FLASH プログラミング
オンチップ FLASH
統合されたオンチップ FLASH プログラミング
統合されたオンチップ FLASH プログラミングとは、FLASH プログラミングアルゴリズムが TRACE32ソフトウェアの一部になっていることを意味します。
オンチップ FLASHのプログラミングが TRACE32ソフトウェアに統合されている場合、ターゲットCPUを選択したときにオンチップ FLASH が自動的に宣言されます。FLASH 宣言は、FLASH.List ウィンドウ
にリストされます。
オンチップ FLASH が再配置可能な場合には、TRACE32 がオンチップ FLASH にアクセスする前に、
FLASH のアドレス割り当てが自動的に行われます。アドレス割り当ては、対応する CPU の設定レジス
タの設定に基づいて行われます。
Debugger Basics - トレーニング 82 FLASHプログラミング
統合されたオンチップ FLASH プログラミングの設定例は、MCS12/S12X アーキテクチャの場合、以下
のとおりです。
; establish the communication between the debugger and the CPU SYStem.CPU Auto SYStem.Up
; program FLASH FLASH.AUTO ALL Data.LOAD.COSMIC demo.h12 FLASH.AUTO OFF
; verify the FLASH contents Data.LOAD.COSMIC demo.h12 /DIFF IF FOUND()
PRINT "Verify error after FLASH programming" ELSE
PRINT "FLASH programming completed successfully"...
Debugger Basics - トレーニング 83 FLASHプログラミング
ターゲット コントロール オンチップ FLASH プログラミング
ターゲット コントロール オンチップ FLASH プログラミングとは、FLASH プログラミングアルゴリズ
ムが TRACE32 ソフトウェアの一部になっていないことを意味します。ローターバッハが通常提供し
ている外部プログラミングアルゴリズムは、TRACE32 ソフトウェアにリンクする必要があります。こ
のアプローチは、サンプルスクリプトで示されています。
オンチップ FLASH に対するターゲット コントロールの FLASH プログラミングには、FLASH アルゴリ
ズムの更新が容易であるという利点があります。ほとんどの場合、TRACE32 ソフトウェアの更新は必
要ありません。
利用可能な場合、ローターバッハはチップメーカーから提供されている FLASH プログラミングライブラ
リを使用します。メーカー提供のライブラリを使用すると、FLASH アルゴリズムでメーカー要件への準
拠が保証されます。ローターバッハによって提供される FLASH アルゴリズムは、TRACE32 ソフトウェ
アとライブラリアルゴリズムのインタフェースとして機能します。
オンチップ FLASH のターゲット コントロール プログラミングのサンプルスクリプトは、ローターバッ
ハによって用意されており、以下の TRACE32 インストールディレクトリにあります。
<TRACE32インストールディレクトリ >/demo/<アーキテクチャ >/flash/<CPU>.cmm
e.g. ~~/demo/powerpc/flash/MPC5554.cmm ~~/demo/arm/flash/pxa27x.cmm
~~の部分は <TRACE32インストールディレクトリ >に展開され、デフォルトでは c:/T32です。
このスクリプトはあくまでも例であることに注意してください。ほとんどの場合、スクリプトのダウンロードコマンド(Data.LOAD.auto < ファイル >)は変更が必要です。場合によっては、ターゲットのメ
モリレイアウトやプログラミングクロックの変更も必要になります。必要な調整は、サンプルスクリプトのコメントで説明されています。
一部のオンチップFLASHでは、以下の理由でコマンドFLASH.Programがエラーになることがあります。
• オンチップ FLASH の ECC 保護
ECC の各行は、1 回ずつしかプログラミングできません。
• オンチップ FLASH のプログラミングシーケンスには、特定のバイト数に同時に書き込みする
必要があります。
旧バージョンの TRACE32 ソフトウェアを使用している場合には、スクリプトで使用する FLASH.ReProgram コマンドを FLASH.AUTO コマンドで置き換えることができます。
Debugger Basics - トレーニング 84 FLASHプログラミング
CFI をサポートするオフチップ FLASH デバイス
ここでは、CFI 準拠 FLASH デバイスのプログラミングに説明を限定します。ほとんどの NOR FLASH は
この基準に対応しているためです。
CFI は、Common Flash memory Interface の略語です。CFI は、FLASH デバイスによる自己識別情報の
提供方法を規定しているオープン標準です。 も関連性が高いのは以下の点です。
• FLASH プログラミングアルゴリズムに関する情報
• デバイスサイズとブロック設定
TRACE32 は、オフチップ NOR FLASH デバイスの簡単な宣言を実行するとき、この情報を必要とします。
CFI 準拠 FLASH デバイスのプログラミングには、以下のフレームワークを使用できます。
各ステップについて、以下に説明します。
; set-up the CPU and configure the; external bus interface
FLASH.RESet ; reset the FLASH declaration
FLASH.CFI ... ; declare FLASH sectors via ; CFI query
FLASH.UNLOCK ALL ; unlock FLASH if required
FLASH.ReProgram ALL ; enable the FLASH for programming
Data.LOAD.auto ... ; load the programming file
FLASH.ReProgram OFF ; program the FLASH and disable; the FLASH programming
Debugger Basics - トレーニング 85 FLASHプログラミング
CPU 設定
TRACE32 による FLASH プログラミングでは、デバッガとターゲット CPU の間で通信を確立する必要
があります。この通信の設定には、以下のコマンドを使用できます。
バス構成
オフチップ FLASH デバイスのプログラミングには、外部バスインタフェースの適切な初期化が必要で
す。バス構成で必要な設定は、以下のとおりです。
• FLASH デバイスに対してライトアクセスが有効なこと
• FLASH デバイスのベースアドレスの定義
• FLASH デバイスのサイズの定義
• FLASH デバイスへのアクセスに使用するデータバスサイズの定義
• タイミング(FLASH デバイスへのアクセスの待機状態の数)の定義
バス構成レジスタの設定をチェックするには、PER.view コマンドを使用します。
SYStem.CPU <CPU> ターゲット CPU を選択します。
SYStem.Up デバッガとターゲット CPU の間で通信を
確立します。
SYStem.CPU MCF5272 ; select ColdFire MCF5272 as target CPU
SYStem.Up ; establish the communication between the; debugger and the target CPU
PER.Set MOV:0xc0f %Long 0x10000001 ; specify the base address for the; special function registers
PER.Set SD:0x10000044 %Long 0x28
; the FLASH is connected to Chip; Select CS0, most settings are; already correct after reset; set the number of wait states ; to 10
PER.view , "Chip-Select Module" ; display the CS0 configuration
Debugger Basics - トレーニング 86 FLASHプログラミング
FLASH 宣言
FLASH 宣言の設定には、以下のコマンドを使用できます。
例 :
FLASH.RESet FLASH 宣言をリセットします。
FLASH.CFI < 開始アドレス > < バス幅 > CFI 準拠 FLASH デバイスの宣言を設定し
ます。
FLASH.List 宣言を表示します。
FLASH.CFI コマンドのパラメータ
< 開始アドレス > FLASH デバイスの開始アドレスを定義します。
< バス幅 > ターゲット CPU と FLASH デバイス間のデータバス幅を定義しま
す。
FLASH.RESet
FLASH.CFI 0x0 Word
FLASH.List
Debugger Basics - トレーニング 87 FLASHプログラミング
必要なデータバス幅を実装するために複数の同一 FLASH デバイスを並列で使用する場合には、FLASH宣言でこの < バス幅 > を指定すれば十分です。
例 : 2 つの Intel Strata FLASH デバイス 28F128J3 を 16 ビットモードで並列使用し、32 ビットデータバ
スを実装する
FLASH.RESet
FLASH.CFI 0x0 Long
FLASH.List
Debugger Basics - トレーニング 88 FLASHプログラミング
FLASH デバイスのロック解除
多くの FLASH デバイスには、誤った消去やプログラミング操作を避けるために、セクター / ブロックの保護機能があります。
一部の FLASH デバイスは起動後にロックされるため、FLASH デバイスを消去またはプログラミングするには、保護を解除する必要があります。ご使用の FLASH にセクター / ブロックの保護機能があるかどうかを確認するには、ご使用の FLASH デバイスのデータシートを参照してください。
FLASH デバイスのプログラミング
FLASH のプログラミングに使用できるコマンドは、以下のとおりです。
例 :
FLASH.UNLOCK ALL FLASH デバイスのロックを解除します。
FLASH.UNLOCK ALL
FLASH.ReProgram ALL 宣言されているすべての FLASH デバイスでプログラミングを有効にします。
FLASH.ReProgram OFF FLASH デバイスをプログラムし、それ以降の FLASH プログラミングを無効にします。
Data.LOAD.auto < ファイル > プログラミングファイルをロードします(ほとんどの場合、ファイルフォーマットの自動検出が可能)。
Data.LOAD.< フォーマット > < ファイル > サポートされているファイルフォーマットについては、『ICD Target Manual』で「Support」の章の「Compilers」の項を参照してください。
Data.LOAD.Elf < ファイル > プログラミングファイル(ELF/DWARFフォーマット)をロードします。
Data.LOAD.Binary < ファイル > < 開始アドレス > プログラミングファイル(バイナリファイル)をロードし、FLASH デバイスの < 開始アドレス > を指定します。
Data.LOAD.S3record < ファイル > プログラミングファイル(S3レコードファイル)をロードします。
FLASH.ReProgram ALL
Data.LOAD.auto demo.x
FLASH.ReProgram OFF
Debugger Basics - トレーニング 89 FLASHプログラミング
設定例
; select ColdFire MCF5272 as target CPUSYStem.CPU MCF5272
; establish the communication between the debugger and the target CPUSYStem.Up
; specify the base address for the special function registersPER.Set MOV:0xc0f %Long 0x10000001
; the FLASH is connected to Chip Select CS0, most settings are already; correct after reset - set the number of wait states to 10PER.Set SD:0x10000044 %Long 0x28
; reset the FLASH declarationFLASH.RESet
; declare the FLASH sectors by CFI queryFLASH.CFI 0x0 Word
; unlock the FLASH device if required for a power-up locked device; FLASH.UNLOCK ALL
; enable the programming for all declared FLASH devicesFLASH.ReProgram ALL
; specify the file that should be programmedData.LOAD.auto demo.x
; program the file and disable the FLASH programmingFLASH.ReProgram OFF
; verify the FLASH contentsData.LOAD.auto demo.x /DIFF
IF FOUND()PRINT "Verify error after FLASH programming"
ELSEPRINT "FLASH programming completed successfully"
...
Debugger Basics - トレーニング 90 FLASHプログラミング
ターゲット コントロール FLASH プログラミング
ここまでに説明した FLASH プログラミングの手順は簡単に実行できますが、FLASH プログラミングが
低速です。いわゆるターゲット コントロール FLASH プログラミングを使用すると、プログラミング
時間が大幅に向上します。
ターゲット コントロール FLASH プログラミングとは、基礎となる FLASH プログラミングアルゴリズム
が TRACE32 ソフトウェアの一部になっていないことを意味します。FLASH プログラミングは、原則的
に以下のように動作します。
1. FLASH アルゴリズムをターゲット RAM にダウンロードします。
2. プログラミングデータをターゲット RAM にダウンロードします。
3. ターゲット RAM で実行される FLASH アルゴリズムが、FLASH デバイスにデータをプログラム
します。
こうすると、ホストとデバッガハードウェアの間の通信が 小限に抑えられます。
一般的なすべてのプロセッサアーキテクチャ用に、すぐに使えるターゲット コントロール FLASH プロ
グラミング用のバイナリファイルが用意されており、TRACE32 ソフトウェア CD の以下のディレクトリ
にあります :~~/demo/<アーキテクチャ>/flash。~~の部分は <TRACE32インストールディレクトリ >に展開さ
れ、デフォルトでは c:/T32 です。CFI 準拠のターゲット コントロール FLASH プログラミングを使用
するとき、TRACE32 は、適切な FLASH プログラミングアルゴリズムをこのディレクトリから自動的に
ロードします。
Debugger Basics - トレーニング 91 FLASHプログラミング
TRACE32 ソフトウェアと外部 FLASH プログラミングアルゴリズムの間で通信を初期化するには、以下
のコマンドを使用します。
パラメータ
• < 開始アドレス >
FLASH デバイスの開始アドレスを定義します。
• < バス幅 >
ターゲット CPU と FLASH デバイス間のデータバス幅を定義します。
• < コード範囲 >
外部 FLASH プログラミングアルゴリズムをロードするターゲットの RAM のアドレス範囲を定
義します。
コードの必要サイズは、(<FLASH アルゴリズム >)のサイズ + 32バイトです。
• < データ範囲 >
プログラミングデータが FLASH アルゴリズムにバッファされるときのターゲットの RAM のア
ドレス範囲を定義します。
TRACE32 ソフトウェアと FLASH アルゴリズム間の通信に使用される引数バッファは、< デー
タ範囲 > の 初の 32 バイトに置かれます。256 バイトのスタックは、< データ範囲 > の 後
に置かれます。
<バッファサイズ > = (< データ範囲 >)のサイズ - 引数バッファの 32バイト - 256バイトのスタック
<バッファサイズ >は、TRACE32 ソフトウェアから外部 FLASH プログラミングアルゴリズム
に、1 回のコール関数で転送される 大バイト数です。
FLASH.CFI < 開始アドレス > < バス幅 > /TARGET < コード範囲 > < データ範囲 >
FLASH アルゴリズム
図 : < コード範囲 > のメモリマッピング
32 バイト
32 バイトの引数バッファ
図 : < データ範囲 > のメモリマッピング
プログラミングデータのバッファ
256 バイトのスタック
Debugger Basics - トレーニング 92 FLASHプログラミング
例 :
FLASH.RESet
FLASH.CFI 0x0 Word /TARGET 0x20000000++0xfff 0x20001000++0xfff
FLASH.List
Debugger Basics - トレーニング 93 FLASHプログラミング
設定例(ターゲット コントロール)
; select ColdFire MCF5272 as target CPUSYStem.CPU MCF5272
; establish the communication between the debugger and the target CPUSYStem.Up
; specify the base address for the special function registersPER.Set MOV:0xc0f %Long 0x10000001
; the FLASH is connected to Chip Select CS0, most settings are already; correct after reset - set the number of wait states to 10PER.Set SD:0x10000044 %Long 0x28
; reset the FLASH declarationFLASH.RESet
; set-up the FLASH declaration for target-controlled programming; target RAM at address 0x20000000FLASH.CFI 0x0 Word /TARGET 0x20000000++0xfff 0x20001000++0xfff
; unlock the FLASH device if required for a power-up locked device; FLASH.UNLOCK ALL
; enable the programming for all declared FLASH devicesFLASH.ReProgram ALL
; specify the file that should be programmedData.LOAD.auto demo.x
; program the file and disable the FLASH programmingFLASH.ReProgram OFF
; verify the FLASH contentsData.LOAD.auto demo.x /DIFF
IF FOUND()PRINT "Verify error after FLASH programming"
ELSEPRINT "FLASH programming completed successfully"
...
Debugger Basics - トレーニング 94 FLASHプログラミング
ブレークポイント
ブレークポイントの実装
デバッガでブレークポイントを実現するには、いくつかの方法があります。
RAM でのソフトウェアブレークポイント(プログラム)
命令にブレークポイントを設定するデフォルトの実装方法は、ソフトウェアブレークポイントです。ソフトウェアブレークポイントを設定すると、ブレークポイントアドレスにある元の命令が特殊な命令(通常は TRAP)に置き換えられ、プログラムを停止したうえで制御がデバッガに返されます。
ソフトウェアブレークポイントの数は無制限です。
FLASH でのソフトウェアブレークポイント(プログラム)
TRACE32 では、FLASH にソフトウェアブレークポイントを設定できます。『NOR FLASH ProgrammingUser’s Guide』(norflash.pdf)の 61 ページ、「Software Breakpoints in FLASH」の項を参照してください。
Debugger Basics - トレーニング 95 ブレークポイント
FLASH でのオンチップブレークポイント(プログラム)
大部分のプロセッサアーキテクチャには、少数のオンチップブレークポイントがブレークポイントレジスタとして用意されています。オンチップブレークポイントを使用すると、FLASH/EEPROM/ROM など
の読み取り専用メモリでも命令にブレークポイントを設定できます。
Debugger Basics - トレーニング 96 ブレークポイント
デフォルトでは、プログラムのブレークポイントにはソフトウェアブレークポイントが使用されるので、TRACE32 にはオンチップブレークポイントを使用する場所を明示的に知らせる必要があります。メモリ
レイアウトによっては、以下の方法が用意されています。
1. コードがすべて読み取り専用メモリに置かれている場合には、プログラミングブレークポイントのデフォルト実装を変更できます。
Break.SELect Program Onchip オンチップブレークポイントとしてプログラムブレークポイントを実装します。
プログラムブレークポイントの実装を [Onchip] に変更
Debugger Basics - トレーニング 97 ブレークポイント
2. コードが RAM と FLASH/EEPROM/ROM に置かれている場合には、オンチップブレークポイ
ントを使用するコード範囲を定義できます。
以下のように設定を確認します。
MAP.BOnchip < 範囲 > 指定されたメモリ範囲で、プログラムブレークポイントをオンチップブレークポイントとして実装します。
MAP.List 設定を確認します。
MAP.BOnchip 0x0++0x1FFF
MAp.BOnchip 0xA0000000++0x1FFFFF
指定されたアドレス範囲について、オンチップブレークポイントとして プログラムブレークポイントを実装する。これ以外のメモリ領域については、ソフトウェアブレークポイントが使用される。
Debugger Basics - トレーニング 98 ブレークポイント
オンチップブレークポイント(リード / ライト)
オンチップブレークポイントを使用すると、メモリ位置へのリード / ライトアクセスの時点で CPU を停
止できます。
Debugger Basics - トレーニング 99 ブレークポイント
プロセッサアーキテクチャ別のオンチップブレークポイント
以下のページのリストに、オンチップブレークポイントを使用できるかどうかと、その使用方法を示します。表記の規則は以下のとおりです。
• オンチップブレークポイント : 使用可能なオンチップブレークポイントの合計数。
• プログラムブレークポイント : FLASH/EEPROM/ROM にプログラムブレークポイントを設定
するときに使用できるオンチップブレークポイントの数。
• リード / ライトブレークポイント : 特定のアドレスに対する読み書きが発生したときプログラ
ムを停止するオンチップブレークポイントの数。
• データ値ブレークポイント : 特定のデータ値がアドレスに書き込まれたとき、または特定の
データ値がアドレスから読み取られたときにプログラムを停止するオンチップデータブレークポイントの数。
単独アドレス、アドレス範囲、ビットマスク
プロセッサアーキテクチャによっては、オンチップブレークポイントが単独アドレスしかマークできません(ARM11 など)。
ほとんどのプロセッサアーキテクチャでは、アドレス範囲にオンチップブレークポイントをマークすることができます。1 つのオンチップブレークポイントでアドレス範囲の開始アドレスをマークし、2 番目
のオンチップブレークポイントで終了アドレスをマークします(MPC55xx など)。
Debugger Basics - トレーニング 100 ブレークポイント
多くのプロセッサアーキテクチャでは、アドレス範囲にオンチップブレークポイントをマークするときに利用できるのはビットマスクだけです。この場合、アドレス範囲は常にアドレス範囲を含む 小ビットマスクにまで拡張されます。実際にブレークポイントがマークされるアドレスは、以下のコマンドを使用して管理することをお勧めします。
Data.View < アドレス > リード / ライトブレークポイント設定の制御
ライトブレークポイントはHLL 変数 flags に設定されている。このプロセッサアーキテクチャは、アドレス範囲にビットマスクしかサポートしていないため、
ライトブレークポイントで
マークマークされる。
変数 flagsより大きいアドレス領域が
Debugger Basics - トレーニング 101 ブレークポイント
RISC/CISC プロセッサ
CPUファミリー
オンチップブレークポイント
命令ブレークポイント
リード / ライト
ブレークポイント
データ値ブレークポイント
68k6833x6834x68360
——1
——1
——1
———
68HC1268HC12A
大 2 大 2 単独アドレ
ス
大 2 単独アドレ
ス
1
68HC16 — — — —
78K0R 1 1 単独アドレス 1 単独アドレス 1
Andes 0 ... 8 大 8 大 8ビットマスクとしての範囲
大 8
APS 3 命令 3 単独アドレス — —
ARM7ARM9Janus
2(ソフトウェアブレークポイントを使用する場合は 1)
大 2ビットマスクとして範囲
大 2ビットマスクとして範囲
2
ARM10/ARM11
2 ... 16 命令
2 ... 16 リード / ライト
2 ... 16単独アドレス
2 ... 16単独アドレス
—
ATOM 4 4単独アドレス
4単独アドレスまたはごく小さい範囲
—
AVR32 6 命令
2 リード / ライト
6ビットマスクとしての範囲
2ビットマスクとしての範囲
2
C166CBCC166SV2
4 大 4 大 4 ライト
大 1 リード
大 4 ライト
大 1 リード
Cortex-A 2 ... 16 命令
1 ... 16 リード / ライト
2 ... 16ビットマスクとしての範囲
1 ... 16ビットマスクとしての範囲
—
Debugger Basics - トレーニング 102 ブレークポイント
Cortex-M 6 命令
4 非同期(非同期
ブレークポイントはブレークイベント後に停止)
6 単独アドレス
非同期を使用するビットマスクとして 大 4 範囲
非同期を使用するビットマスクとして 大 4 範囲
1(2 非同期を使
用)
Cortex-R 2 ... 8 命令
1 ... 8リード /ライ
ト
2 ... 8ビットマスクとしての範囲
1 ... 8ビットマスクとしての範囲
—
ColdFire 4 命令
2 リード / ライト
3 単独アドレス
1 ビットマスク
2 単独アドレス、ま
たは 2 範囲
2
eTPU 2 単独アドレスで大 2
ビットマスクとして 大2リード /ライト
2(ライトブレークポイントでのみ)
H8S 2 大 2 大 2ビットマスクとしての範囲
2
H8SX 4 大 4 大 4ビットマスクとしての範囲
1
M32R 4 命令
2 リード / ライト
4 単独アドレス 2 単独アドレス、ま
たは 2 範囲
2
MCORE 2 2 単独アドレス、ま
たはビットマスクとして 1 範囲
2ビットマスクとしての範囲
—
MCS8 2 大 2 単独アドレ
ス
大 2 単独アドレ
ス(データと組み合わせる場合は 1)
1
MCS12MCS12C
大 3 大 3 単独アドレ
ス
大 3 単独アドレ
ス
1
MCS12X 4 大 4 単独アドレ
ス、または 2 アド
レス範囲
大 4 単独アドレ
ス、または 2 アド
レス範囲
1
CPUファミリー
オンチップブレークポイント
命令ブレークポイント
リード / ライト
ブレークポイント
データ値ブレークポイント
Debugger Basics - トレーニング 103 ブレークポイント
MGT5100 1 命令
(ソフトウェアブレークポイントを使用する場合はオンチップブレークポイントなし)1リード / ライト
1/0 単独アドレス 1 単独アドレス —
MIPS32MIPS64
大 15 命令
大 15 リード / ライト
大 15ビットマスクとしての範囲
大 15ビットマスクとしての範囲
大 15
MPC500MPC800
4 命令
2 リード / ライト
4 単独アドレス、ま
たは 2 ブレークポ
イント範囲
2 単独アドレス、ま
たは 1 ブレークポ
イント範囲
2
MPC5200 2 命令
(ソフトウェアブレークポイントを使用する場合は 1)2 リード / ライト
2/12 単独アドレス、ま
たは 1 ブレークポ
イント範囲
22 単独アドレス、ま
たは 1 ブレークポ
イント範囲
—
MPC55xx 4 命令
2 リード / ライト
4 単独アドレス、ま
たは 2 ブレークポ
イント範囲
2 単独アドレス、ま
たは 1 ブレークポ
イント範囲
—
MPC563x 4 命令
2 リード / ライト
4 単独アドレス、ま
たは 2 ブレークポ
イント範囲
2 単独アドレス、ま
たは 1 ブレークポ
イント範囲
2
MPC564xMPC567x
8 命令
2 リード / ライト
8 単独アドレス
または4 単独アドレスお
よび 2 ブレークポ
イント範囲
2 単独アドレス、ま
たは 1 ブレークポ
イント範囲
2
MPC74xxMPC86xx
1 命令
(ソフトウェアブレークポイントを使用する場合はオンチップブレークポイントなし)1 リード / ライト
1/0 単独アドレス 1 単独アドレス —
CPUファミリー
オンチップブレークポイント
命令ブレークポイント
リード / ライト
ブレークポイント
データ値ブレークポイント
Debugger Basics - トレーニング 104 ブレークポイント
MPC8240MPC8245MPC825xMPC826x
(PQ2)
1 命令
(ソフトウェアブレークポイントを使用する場合はオンチップブレークポイントなし)
1/0 単独アドレス — —
MPC8247MPC8248MPC827xMPC8280
(PQ27)
MPC83xx(PQ2 Pro)
2 命令
(ソフトウェアブレークポイントを使用する場合は 1)2 リード / ライト
2/12 単独アドレス、ま
たは 1 ブレークポ
イント範囲
22 単独アドレス、ま
たは 1 ブレークポ
イント範囲
—
MPC85xx(PQ3)
2 命令
(ソフトウェアブレークポイントを使用する場合は 1)2 リード / ライト
2/12 単独アドレス、ま
たは 1 ブレークポ
イント範囲
22 単独アドレス、ま
たは 1 ブレークポ
イント範囲
—
MSP430 2 ... 8 2 ... 82 ブレークポイン
ト範囲
2 ... 82 ブレークポイン
ト範囲
2 ... 8
PPC401PPC403
2 命令
2 リード / ライト
2 単独アドレス、ま
たは 2 範囲
2 単独アドレス、ま
たは 2 範囲
—
PPC405PPC44x
4 命令
2 リード / ライト
4 単独アドレス、ま
たは 2 アドレス範
囲
2 単独アドレス、ま
たは 1 アドレス範
囲
2
PPC600 1 命令
(ソフトウェアブレークポイントを使用する場合はオンチップブレークポイントなし)
1/0 単独アドレス — —
PPC740PPC750
1 命令
(ソフトウェアブレークポイントを使用する場合はオンチップブレークポイントなし)1 リード / ライト
1/0 単独アドレス 1 単独アドレス —
CPUファミリー
オンチップブレークポイント
命令ブレークポイント
リード / ライト
ブレークポイント
データ値ブレークポイント
Debugger Basics - トレーニング 105 ブレークポイント
PWR-ficient
2 命令
2 リード / ライト
2 単独アドレス、ま
たは 1 ブレークポ
イント範囲
2 単独アドレス、ま
たは 1 ブレークポ
イント範囲
—
RX 8 命令
4 リード / ライト
8 ビットマスクとしての範囲
41 ブレークポイン
ト範囲ビットマスクとしてのその他の範囲
4
SH2AST4A
10 大 10 大 10ビットマスクとしての範囲
2
SH3 2 大 2 大 2ビットマスクとしての範囲
—
SH4ST40
6 大 6 大 6ビットマスクとしての範囲
2
SH7047SH7144/45
1 大 1 大 1 —
SH7058 12 大 12 大 12ビットマスクとしての範囲
大 12
Super10 大 8 大 8 大 8 8
TriCore 大 4 命令
大 4 リード / ライト
大 4 単独アドレ
ス、または 大 2範囲
大 4 単独アドレ
ス、または 大 2範囲
—
XC800 4 大 4大 1 範囲
(2 単独アドレスが
必要)
大 1 単独アドレ
スリードまたはアドレス範囲 大 1単独アドレスライトまたはアドレス範囲
—
XSCALE 2 命令
2 リード / ライト
2 単独アドレス 2 単独アドレス、ま
たはビットマスクとして 1 範囲
—
CPUファミリー
オンチップブレークポイント
命令ブレークポイント
リード / ライト
ブレークポイント
データ値ブレークポイント
Debugger Basics - トレーニング 106 ブレークポイント
DSP プロセッサ
CPUファミリー
オンチップブレークポイント
命令ブレークポイント
リード / ライト
ブレークポイント
データ値ブレークポイント
Blackfin 6 命令
2 リード / ライト
6 単独アドレス、ま
たは 3 範囲
2 単独アドレス、ま
たは 1 範囲
—
CEVA-X 4 命令
4 リード / ライト
4 単独アドレス 4 単独アドレス、ま
たは範囲
2
DSP56K56k/56300/5680056100
21
21
21
—
DSP5630056800E
2 大 2 単独アドレ
ス
大 1 単独アドレ
ス
—
MMDSP 2 命令
1 リード / ライト
2 単独アドレス 1 単独アドレス 1
OAKTeakLiteTeakLite IITeak
3 命令
1 リード / ライト
3 単独アドレス 1 単独アドレス
ビットマスクとしての範囲
1
StarCore 12 大12単独アドレ
ス、または 大 6範囲
大 6 単独アドレ
ス、または 大 3範囲
1
STN8810STN8815STN8820
2 大 2 大 2 1
TeakLite III 2 命令
1 リード / ライト
2 単独アドレス 2 単独アドレス、ま
たは 1 範囲
1
TMS320C28x
2 2 単独アドレス — —
TMS320C54x
2 2 単独アドレス — —
TMS320C55x
4 大 4 単独アドレ
ス
大 3 データ、1 ブ
レークポイント範囲、2 ビットマスク
大 3
Debugger Basics - トレーニング 107 ブレークポイント
TMS320C62x
1 1 単独アドレス — —
TMS320C64x
大 4 大 4 単独アドレ
ス
— —
TMS320C67x
1 1 単独アドレス — —
ZSP400 — — — —
ZSP500 4 大 4 単独アドレ
ス
大 1ビットマスクとしての範囲
1
CPUファミリー
オンチップブレークポイント
命令ブレークポイント
リード / ライト
ブレークポイント
データ値ブレークポイント
Debugger Basics - トレーニング 108 ブレークポイント
ソフトコア
コンフィギャラブルコア
CPUファミリー
オンチップブレークポイント
命令ブレークポイント
リード / ライトブ
レークポイント
データ値ブレークポイント
MicroBlaze 0 ... 4 命令
0 ... 4リード /ライ
ト
0 ... 4ビットマスクとしての範囲
0 ... 4ビットマスクとしての範囲
—
NIOS2 0/4/8(設定可能)
大 4 大 4 単独アドレ
ス、または 2 範囲
大 4
CPUファミリー
オンチップブレークポイント
命令ブレークポイント
リード / ライトブ
レークポイント
データ値ブレークポイント
ARC 0/2/4/8(設定可能) 大 0/2/4/8ARC600/700: ビッ
トマスクとしての範囲
大 0/2/4/8ARC600/700: ビッ
トマスクとしての範囲ARCtangent: ライト用のみ
大 0/1/2/4フルモードの場合はライトのみ
Diamond Core
2 大 2 ビットマス
クとしての範囲
大 2ビットマスクとしての範囲
2
M8051EW 0、1、2、4 つの
OnChip トリガー
大 4 リードまたはライト用に 大 4 単独
アドレス、リードまたはライト用に 大2範囲、
2 単独アドレス
リード / ライト、範
囲内で 大 1 リー
ド / ライト
「リード / ライ
ト」と同
Debugger Basics - トレーニング 109 ブレークポイント
ブレークポイントのタイプ
ブレークポイントのタイプ 可能な実装
プログラム ソフトウェア(デフォルト)オンチップ
リード、ライト、リード /ライト
オンチップ(デフォルト)
ブレークポイントのタイプ TRACE32 による自動実装
プログラム ソフトウェアオンチップ(属性 bonchip のアドレス範囲すべて)
リード、ライト、リード /ライト
オンチップ
Debugger Basics - トレーニング 110 ブレークポイント
プログラムブレークポイント :
ブレークポイントがマークされた命令を実行する前に、プログラムは停止します(実行前ブレーク)。
Break.Set < アドレス > /Program [/DISable] 指定したアドレスにプログラムブレークポイントを設定します。 プログラムブレークポイントは、必要に応じて無効にできます。
Break.Set 0xA34f /Program
Break.Set main /Program
Break.Set func17 /Program /DISable
Break.List
命令を左ダブルクリックしてプログラムブレーク ポイントを設定。
赤色のプログラムブレークポイントインジケータは、プログラムブレークポイントが設定されているすべてのコード行を示します。
赤色のプログラムブレークポイントインジケータを左ダブルクリックしてプログラムブレークポイントを 解除。プログラムブレークポイントインジケータがグレー表示に変わる。
Debugger Basics - トレーニング 111 ブレークポイント
リード / ライトブレークポイント
変数へのリードアクセスで CPUが停止する。
変数へのライトアクセスで CPUが停止する。
Debugger Basics - トレーニング 112 ブレークポイント
Break.Set < アドレス >| < 範囲 > /Read | /Write | /ReadWrite [/DISable]
; ブレークポイントを指定する HLL 式を許可
Var.Break.Set <HLL 式 > /Read | /Write | /ReadWrite [/DISable]
Break.Set 0x0B56 /Read
Break.Set ast /Write
Break.Set vpchar+5 /ReadWrite /DISable
Var.Break.Set flags /Write
Var.Break.Set flags[3] /Read
Var.Break.Set ast->count /ReadWrite /DISable
Break.List
HLL 変数が表示されている場合は、小さい 赤色のブレークポイントインジケータで
小さいグレーのブレークポイントインジケータは、
アクティブなリード / ライトブレーク
解除されたリード / ライトブレークポイントを表す。
ポイントがマークされる。
Debugger Basics - トレーニング 113 ブレークポイント
ブレークポイントの処理
• [MemAccess] が [CPU]、または [CPUAccess] が [Enable] の場合
は、CPU がプログラムを実行中でもブレークポイントを設定できま
す。ブレークポイントを CPUAccess で設定した場合は、リアルタ
イムの動作に影響します(1 ... 100 ミリ秒)。
• [MemAccess] と [CPUAccess] が [denied] に設定された場合は、プ
ログラム実行が停止しているときにのみブレークポイントを設定できます。
Debugger Basics - トレーニング 114 ブレークポイントの処理
[Break.Set] ダイアログボックス
または
Debugger Basics - トレーニング 115 ブレークポイントの処理
[HLL] チェックボックス
• 単独アドレス
(asm ブレークポイント) 入力したアドレス / ラベルが、選択したブレークポイントでマーク
されます。
[HLL] 入力した HLL 式で使用されるアドレス範囲が、選択したブレーク
ポイントでマークされます。
[HLL] チェックボックスがオフ
Debugger Basics - トレーニング 116 ブレークポイントの処理
• 変数全体
• HLL 式
[HLL] チェックボックスがオン
[HLL] チェックボックスがオン
Debugger Basics - トレーニング 117 ブレークポイントの処理
実装形式
実装形式
[Auto] 事前定義された実装形式をブレークポイントに使用します。
[Soft] ブレークポイントをソフトウェアブレークポイントとして実装します。
[HARD] ブレークポイントをハードウェアブレークポイントとして実装します。ハードウェアブレークポイントのためのリソースは、TRACE32 開
発ツールによって提供されます。ハードウェアブレークポイントは、ほとんどの CPU で使用できません。
[On-chip] ブレークポイントをオンチップブレークポイントとして実装します。オンチップブレークポイントのためのリソースは、CPU によって提供
されます。
実装形式
Debugger Basics - トレーニング 118 ブレークポイントの処理
動作
デフォルトでは、プログラム実行はブレークポイントに達したとき停止します([stop] 動作)。TRACE32には、ブレークポイントに達したときの以下の動作が用意されています。
[Alpha]、[Beta]、[Charly]、[Delta]、[Echo] の各ブレークポイントを使用するのは、きわめて特別な場合だ
けです。そのため、トレーニング資料の一般的な内容では説明していません。
動作(デバッガ)
[stop] プログラム実行を停止します(デフォルト)。
[Spot] ブレークポイントに [Spot] 動作を組み合わせると、ブレークポイントに達して
すぐにプログラム実行が停止し、画面が更新されます。画面が更新されると、プログラム実行が続行されます。
[Alpha] Alpha ブレークポイントを設定します。
[Beta] Beta ブレークポイントを設定します。
[Charly] Charly ブレークポイントを設定します。
[Delta] Delta ブレークポイントを設定します。
[Echo] Echo ブレークポイントを設定します。
Debugger Basics - トレーニング 119 ブレークポイントの処理
動作(トレース)についての詳細は、『Training ICD Trace Extension』の「Trigger and filter features」の章、または Break.Set コマンドの説明を参照してください。
動作(トレース)
[TraceEnable] 指定したイベントで、トレースバッファへのサンプリングを有効にします。
[TraceON] 指定したイベントで、トレースへのサンプリングをオンに切り替えます。
[TraceOFF] 指定したイベントで、トレースへのサンプリングをオフに切り替えます。
[TraceTrigger] 指定したイベントで、トレースへのサンプリングを停止します。トリガーディレイも可能です。
Debugger Basics - トレーニング 120 ブレークポイントの処理
[Spot] 動作の例
デフォルトでは、画面に表示される情報が更新されるのは、CPU がプログラム実行を停止してデバッグ
モードに移行するときだけです。
[Spot] 動作を使用すると、ブレークポイントをウォッチポイントにすることができます。ウォッチポイン
トに到達すると CPU はプログラム実行を停止してデバッグモードに移行し、画面が更新され、プログラ
ム実行が自動的に再開されます。この動作に要する時間は、デバッグインタフェースの速度と画面に表示される情報の量に応じて、50 ...100 ミリ秒です。
例 1: プログラムが sieve¥17 の命令を実行するたびに画面を更新する
スポットポイントがアクティブで、システムはリアルタイムで実行されない
Debugger Basics - トレーニング 121 ブレークポイントの処理
例 2: プログラムが flags[3] に書き込みを行うたびに画面を更新する
スポットポイントがアクティブで、システムはリアルタイムで実行されない
Debugger Basics - トレーニング 122 ブレークポイントの処理
オプション
[Exclude] (上級ユーザーのみ。一部の CPU では使用不可)
以下の方法でブレークポイントを反転します。
• オンチップトリガーユニットのロジックを反転する
• 指定されたブレークポイントタイプを以下の 2 つのアドレ
ス範囲に設定する0x0--(start_of_breakpoint_range-1)(end_of_breakpoint_range+1)--end_of_memory
[EXclude] オプションが適用されるのは、オンチップまたはハード
ウェアの実装のみです。
実装がオンチップで、オンチップトリガーユニットに反転ロジックが用意されていない場合には、CPU の機能には、指定されたブレー
クポイントタイプを 2 つのアドレス範囲に設定する機能が必要です。
[NOMARK] (上級ユーザーのみ)ブレークポイントインジケータは表示されません。
[Temporary] オンの場合 : 一時ブレークポイントを設定します。一時ブレークポイン
トは、CPU が次にプログラム実行を停止したときに、すべて削除され
ます。オフの場合 : 永続的なブレークポイントを設定します(デフォルト)。
[DISable] オフの場合 : ブレークポイントが有効です(デフォルト)。
オンの場合 : ブレークポイントを設定しますが、無効です。
[DISableHIT] オンの場合 : ブレークポイントに達したときブレークポイントを無効
にします。
[Options]
Debugger Basics - トレーニング 123 ブレークポイントの処理
[EXclude] オプションの例
関数 sieve の外部のコードが実行されたとき、プログラム実行を停止します。
オンチップトリガーユニットのロジックの反転による場合(ARM7/9 と ColdFire)
関数 sieve によって使用される全アドレス範囲に対してブレークポイントを設定するために、[HLL]チェックボックスをオンにする 必要がある。
[EXclude] オプションを設定し、関数 sieve にプログラムブレークポイントをマーク
Debugger Basics - トレーニング 124 ブレークポイントの処理
2 アドレス範囲のブレークポイントによる場合
TRACE32-ICD で [EXclude] オプションを使用できない場合には、十分なリソースを確保できるように、
他のオンチップブレークポイントをすべて削除します。
[EXclude] オプションを設定し、関数 sieve 外のすべてのアドレスに プログラムブレークポイントをマーク
Debugger Basics - トレーニング 125 ブレークポイントの処理
[NOMARK] オプションの例
アプリケーションのコード範囲は 0x3F0000 から 0x3FAFFF までです。このコードにどのユーザーも書
き込みしないように、全コード範囲にライトブレークポイントを設定します。
小さい赤色のバーはライトブレークポイントを表す
[NOMARK] オプションを設定すると、ブレークポイントインジケータが表示されない
Debugger Basics - トレーニング 126 ブレークポイントの処理
[Temporary] オプションの例
一時ブレークポイントを設定
次にプログラムが停止すると、すべての一時ブレークポイントは 自動的に削除される
[Go] でプログラムを実行
Debugger Basics - トレーニング 127 ブレークポイントの処理
[DISableHit] オプションの例
ブレークポイントに達した後で、sieve への関数エントリにおけるプログラムブレークポイントを無効に
します。
ブレークポイントに到達すると無効化される
Debugger Basics - トレーニング 128 ブレークポイントの処理
データブレークポイント
[DATA] フィールドには、リード / ライトブレークポイントを特定のデータ値に組み合わせる機能があり
ます。この機能を利用できるのは、ご使用の CPU にデータブレークポイントがある場合だけです。
例 : flags[3] に 1 が書き込まれた場合にプログラム実行を停止する
Debugger Basics - トレーニング 129 ブレークポイントの処理
HLL 式を使用する場合、TRACE32 はシンボル情報から [byte]、[word]、[long] のどのアクセスでデータが
書き込まれるかを取得します。
アドレスまたはシンボルを使用する場合、ユーザーがアクセス幅を指定する必要があります。
Debugger Basics - トレーニング 130 ブレークポイントの処理
高度なブレークポイント
[advanced] ボタンをクリックすると、[Break.Set] ダイアログボックスに入力フィールドが追加され、高度な
高度なブレークポイントの入力フィールド
ブレークポイント機能を指定できる。
Debugger Basics - トレーニング 131 ブレークポイントの処理
カウンタ
n 回目のブレークポイントに達したときにプログラム実行を停止できます。
ソフトウェアカウンタ
CPU にデバッグカウンタの機能がない場合には、ソフトウェアカウンタとしてカウンタを実装します。
例 : 関数 sieve の 1000 回目の実行に入った後に、プログラム実行を停止する
Debugger Basics - トレーニング 132 ブレークポイントの処理
ソフトウェアでカウンタを実装。ブレークポイントに到達すると、CPU が一時的
に停止してカウンタを増分する。現在のカウンタ値は、[Break.List] ウィン
ドウに表示される。 カウンタが 終値に到達すると、プログラム実行は完全に停止する。
赤色の [S] は、システム
がリアルタイムで実行されていないことを示す。
Debugger Basics - トレーニング 133 ブレークポイントの処理
オンチップカウンタ
MPC8xx、MPC5xx、MPC55xx、StarCore などの CPU には、オンチップのデバッグカウンタが用意され
ています。オンチップブレークポイントと組み合わせて使用する必要があります。
例 : 関数 sieve の 1000 回目の実行に入った後に、プログラム実行を停止する
デバッグカウンタは、完全にリアルタイムで実行されます。プログラム実行中に、現在のカウンタ値は表示されません。カウンタが 終値に到達するとすぐに、プログラム実行は停止します。
オンチップブレークポイントにした場合、オンチップデバッグカウンタがプログラムされる。
Debugger Basics - トレーニング 134 ブレークポイントの処理
条件
定義した条件が true になる場合にのみ、ブレークポイントでプログラム実行が停止します。
例 : ブレークポイントに達したとき flags[12] が 0 に等しい場合にのみ、flags[3] への書き込みを行うプロ
グラム実行を停止する
ブレークポイントに到達すると、CPU が一時的に 停止して条件がチェックされ、条件が true でなければプログラム実行が続行される。したがってプログラムはリアルタイムでは 実行されなくなる。
赤色の [S] は、プログラムがリアルタイムで実行されていないことを示す。
Debugger Basics - トレーニング 135 ブレークポイントの処理
HLL 構文にない条件
レジスタベースまたはメモリベースの条件を書き込むこともできます。
例: Register R11が1に等しくなった場合に、アドレスflagsへの書き込みを行うプログラム実行を停止する
; stop the program execution at a write to the address flags if the; register R11 is equal to 1Break.Set flags /Write /CONDition Register(R11)==1
; stop program execution at a write to the address flags if the long; at address D:1000 is larger then 12345Break.Set flags /Write /CONDition Data.Long(D:1000)>12345
[HLL] をオフにする。
Debugger Basics - トレーニング 136 ブレークポイントの処理
CMD
[CMD] フィールドでは、ブレークポイントに達したときに実行される 1 つ以上のコマンドを指定できま
す。
例 : flags[12] におけるライトブレークポイントに到達するたびに、flags[12] の内容をファイルに書き込む
CMD が以下の場合には [RESUME] をオフに設定することをお勧めします。
• コマンド DO で PRACTICE スクリプトを起動する
• [Trace.STATistic.Func]、[Trace.Chart.sYmbol]、[CTS.List] などの処理
ウィンドウを開くコマンドを使用する
これは、これらのコマンドが完了する前にプログラム実行が再開されてしまうためです。
OPEN #1 outflags.txt /Create ;open the file for writing
ブレークポイントに到達するたびに、指定したコマンドが実行される。[RESUME] をオンに設
定すると、コマンドの実行が完了した後でプログラム実行が続行される。
[Break.List] ウィンドウの [cmd] フィールドには、
ブレークポイントにどのコマンドが関連付けられているかの情報が示される。[R] は、RESUMEがオンであることを示す。
Debugger Basics - トレーニング 137 ブレークポイントの処理
結果を表示します。
close #1 ; close the file when you are done
デバッガの状態は、
[going] と [stopped] の間で切り替わる。
Debugger Basics - トレーニング 138 ブレークポイントの処理
[Data]、[Condition]、[CMD] の例
高度な機能を組み合わせることも可能です。
例 : flags[12] が 1 に等しい場合に flags[3] に 0 を書き込むと、flags[3] の内容をファイルに書き込む
Debugger Basics - トレーニング 139 ブレークポイントの処理
タスク
指定したタスクが実行されている場合にのみ、ブレークポイントでプログラム実行が停止します。
例 : thread0 が実行されている場合にのみ、thread_0_entry¥16 でプログラム実行を停止する
ブレークポイントに到達すると、CPU が停止
し、指定されたタスクが実行されているかどうかをチェックする。実行されていない場合にはプログラム実行が続行し、実行されている場合にはプログラム実行が停止する。 したがってプログラムはリアルタイムでは実行されなくなる。
Debugger Basics - トレーニング 140 ブレークポイントの処理
赤色の [S] は、プログラムがリアルタイムで実行されて いないことを示す。
Debugger Basics - トレーニング 141 ブレークポイントの処理
メモリ / レジスタ / 変数
一部の CPU では、オンチップトリガーユニットを使用してデータアクセスと命令を組み合わせ、複雑な
トリガー条件を作成できます(PowerPC 5xx/8xx など)。
例 : 関数 sieve が flags[3] に 1 を書き込んだときにプログラム実行を停止する
ご使用の CPU でこの機能がサポートされていない場合、ラジオボタン([MemoryWrite]、[MemoryRead]など)はグレー表示されます。
Break.Set < アドレス >|< アドレス範囲 > [/< タイプ >] [/< 実装 >] [/disable] ブレークポイントを設定します。
Var.Break.Set <HLL 式 > [/< タイプ >] [/< 実装 >] [/disable] HLL 構文でブレーク
ポイントを設定します。
1. ここで命令のアドレス(範囲)を定義する
2. [MemoryWrite] を選択する
3. [MemoryWrite] のアドレス範囲を定義する
4. [MemoryWrite] のデータ値を 定義する
Debugger Basics - トレーニング 142 ブレークポイントの処理
設定されているすべてのブレークポイントのリストの表示
[address] ブレークポイントの物理アドレス
[types] ブレークポイントのタイプ
[impl] ブレークポイントの実装または無効
[action] ブレークポイントに選択されている処理
[options] ブレークポイントに定義されているオプション
[data] ブレークポイントによってプログラム実行を停止するために読み書きする必要があるデータ値
[count] ブレークポイントと組み合わせたカウンタの現在値と 終値
[condition] ブレークポイントによってプログラム実行を停止するために true とな
るべき条件
[cmd](コマンド)
[R](再開)
ブレークポイントに達した後で実行するコマンド[R] がオンの場合 : 定義したコマンドが実行された後で、プログラム実
行を続行
[task] タスク固有のブレークポイントに対するタスクの名前
ブレークポイントのシンボリックアドレス
Break.List [/< オプション >] ブレークポイントのリスト
Debugger Basics - トレーニング 143 ブレークポイントの処理
ブレークポイントの削除
ブレークポイントの有効化 / 無効化
Break.Delete < アドレス >|< アドレス範囲 > [/< タイプ >] [/< 実装 >] [/< オプション >]
ブレークポイントを削除します。
Var.Break.Delete <HLL 式 > [/< タイプ >] [/< 実装 >] [/< オプション >] HLL ブレークポイン
トを削除します。
Break.ENable [< アドレス >|< アドレス範囲 >] [/< オプション >] ブレークポイントを有効にします。
Break.DISable [< アドレス >|< アドレス範囲 >] [/< オプション >] ブレークポイントを無効にします。
Debugger Basics - トレーニング 144 ブレークポイントの処理
ブレークポイント設定の保存
// AndT32 Fri Jul 04 13:17:41 2003
B:: BREAK.RESET B.S func4 /P /DISABLEHIT B.S sieve /P V.B.S ¥¥diabp555¥Global¥flags[3]; /W /DATA.BYTE 0x1; ENDDO
STOre < ファイル名 > Break ブレークポイント設定のためのバッチを生成します。
Debugger Basics - トレーニング 145 ブレークポイントの処理
デバッグ
基本的なデバッグコントロール
[Step] 1 ステップ実行(例 : Step 10)
[Over] コール関数はリアルタイムで実行されますが、ユーザーには関数コールを含む行の 1 ステップ実行のように見えます。
[Next] 一時ブレークポイントを次のアセンブラまたは HLL 行に設定し、プログラム実
行を開始します。このコマンドは、サブルーチンコールのステップ実行やループから脱け出すときに便利です。
[Data.List] ウィンドウには、基本的なすべてのデバッグコマンドに使用するローカルボタンがあります。
プログラムカウンタ
[Next] では、一時ブレー
クポイントが次の行に書かれたコード(この例ではループからの出口)に設定される。
Debugger Basics - トレーニング 146 デバッグ
[Return] 一時ブレークポイントを関数の 後の命令に設定し、プログラム実行を開始します。
[Up] このコマンドは、現在の関数を呼び出した関数に戻るときに便利です。そのために、関数コール直後の命令に一時ブレークポイントが設定されます。
[Return] を押すと、
関数の 後の命令でプログラム実行が停止する。
[Up] を押すと、現
在の関数を呼び出した関数に戻る。
関数のネスト状態を示すHLL スタックを表示する。
Debugger Basics - トレーニング 147 デバッグ
Step < カウント > 1 ステップずつ実行します。
Step.Over コール関数をステップオーバーします。
Step.Change < 式 > < 式 > が変更されるまでステップ実行します。
Step.Till < ブール式 > < ブール式 > が true になるまでステップ実行します。
Var.Step.Change <HLL 式 > <HLL 式 > が変更されるまでステップ実行します。
Var.Step.Till < ブール HLL 式 > < ブール HLL 式 > が true になるまでステップ実行し
ます。
Go [< アドレス >|< ラベル >] プログラム実行を開始します。
Go.Next 次のコード行に到達するまでプログラムを実行します。
Go.Return HLL関数の 後に到達するまでプログラムを実行しま
す。
Go.Up [< レベル >|< アドレス >] 呼び出した関数に戻るまでプログラムを実行します。
Debugger Basics - トレーニング 148 デバッグ
割り込み
CPU がデバッグモードの場合、割り込みは使用できません。
プログラムをステップ実行中に割り込みが保留になると、常に割り込み処理ルーチン内でステップ実行することになります。この問題を解決するには、以下のコマンドを使用します。
マイクロコントローラのグローバル割り込みイネーブルビットは、アセンブラレベルでの 1 ステップ実
行中、無効に設定されます。1 ステップ実行後に、割り込みイネーブルビットは 1 ステップ実行前の状
態に設定されます。
マイクロコントローラのグローバル割り込みイネーブルビットは、高級言語での 1 ステップ実行中、無
効に設定されます。1 ステップ実行後に、割り込みイネーブルビットは 1 ステップ実行前の状態に設定
されます。
SETUP.IMASKASM [ON | OFF] アセンブラレベルで 1 ステップ実行しているとき、割り込み
を無効にします。
SETUP.IMASKHLL [ON | OFF] HLL レベルで 1 ステップ実行しているとき、割り込みを無効
にします。
Debugger Basics - トレーニング 149 割り込み
サンプルベースのプロファイリング
概要
タスク : 高級言語の関数で使用される時間の比率を取得します。
測定手順 : プログラムカウンタを定期的にサンプリングします。これは 2 つの方法で実装されます。
• [Snoop]: プロセッサアーキテクチャが、プログラム実行中にプログラムカウンタを読み取るこ
とが許されます。
• [StopAndGo]: プログラム実行は、プログラムカウンタを読み取るために短時間停止します。
サンプルベースのプロファイリングに使用するコマンドグループは、PERF.< サブコマンド > です。
Debugger Basics - トレーニング 150 サンプルベースのプロファイリング
標準的なアプローチ
以下の手順を実行します。
1. [PERF] 設定ウィンドウを開く
プロセッサアーキテクチャが、プログラム実行中にプログラムカウンタを読み取れる場合には、PERF METHOD Snoop が自動的に選択されます。それ以外のプロセッサアーキテクチャでは、デ
フォルトの METHOD は [StopAndGo] です。
PERF.state [PERF] 設定ウィンドウを表示します。
Debugger Basics - トレーニング 151 サンプルベースのプロファイリング
2. [OFF] 状態を選択し、サンプルベースのプロファイリングを有効にする
3. [ListFunc] ボタンをクリックして、結果ウィンドウを開く
PERF.OFF サンプルベースのプロファイリングを有効にします。
PERF.ListFunc HLL 関数プロファイリングのウィンドウを開きます。
Debugger Basics - トレーニング 152 サンプルベースのプロファイリング
4. プログラム実行とサンプリングを開始する
[StopAndGo] メソッドに関する備考
実際のプログラムカウンタを取得するために、ターゲットプロセッサは定期的に停止されます。 悪の場合には、この停止が 1 ミリ秒以上かかることがあります。
TRACE32 のステータス行に赤色の「S」が表示されている場合は、サンプルベースのプロファイリング
によって、プログラム実行に定期的な割り込みがあることを示します。
TRACE32 では、実際のプログラム実行(実行時)で 99% までリアルタイムが維持されるように、サンプ
リングレートが調整されます。設定可能な 小のサンプリングレートは、その場合でも 10(スヌープ / 秒)
です。
Debugger Basics - トレーニング 153 サンプルベースのプロファイリング
詳細
詳細な結果
結果に関する詳細な情報を取得するには、[Detailed] ボタンをクリックします。
PERF.ListFunc ALL 詳細な HLL 関数プロファイリングウィンドウを開きます。
[Name] 関数名
[WatchTIme] 関数を監視する時間
[Ratio] 関数によって使用される時間の比率(% 単位)
[DRatio] [Ratio] と似ているが、 後の秒のみ
[Address] 関数のアドレス範囲
[Hits] 関数について取得するサンプル数
Debugger Basics - トレーニング 154 サンプルベースのプロファイリング
(その他)
TRACE32 は、高級言語の関数に割り当てることができないすべてのサンプルを [(other)] に割り当てま
す。[(other)] の比率が特に高い場合には、どんなコードが実行されているかを確認することをお勧めしま
す。この場合、[ListLABEL] ボタンを押すようにしてください。
PERF.ListLABEL ラベルベースのプロファイリングに使用するウィンドウを開きます。
Debugger Basics - トレーニング 155 サンプルベースのプロファイリング
結果の文書化
結果の印刷
ファイル config.t32でプリンタ設定が必要です。
例 : Windows の場合
PRINTER=WINDOWS
その他のホストプラットフォームについては、『Installation Guide』でホストプラットフォーム固有の項
を参照してください。
TRACE32 アプリケーションウィンドウのハードコピーの印刷
Debugger Basics - トレーニング 156 結果の文書化
特定ウィンドウの内容の印刷
結果の印刷
複数ページにわたるなど、複雑な結果を出力する場合 :
WinPrint.< コマンド > 複雑な出力に使用するプリコマンド。
WinPrint.Data.dump 0x1000--0x1fff
WinPrint.Trace.List (-1000.)--(-500.)
ウィンドウの内容を印刷するには、ウィンドウマネージャのメニューで [Print] を選択します。
Debugger Basics - トレーニング 157 結果の文書化
結果をファイルに保存
ファイルへの出力フォーマットの選択
PRinTer.FileType < フォーマット > ファイルフォーマットを選択します。
[File] ラジオボタンをオンに切り替え
Debugger Basics - トレーニング 158 結果の文書化
出力するファイルを開く
1 ファイルに 1 出力を印刷
WinPrint.Data.dump 0x1000++0xfff
Debugger Basics - トレーニング 159 結果の文書化
n ファイルに n 出力を印刷
ファイル名に数字が含まれている場合、この数字は出力ごとに自動的に増分されます。
WinPrint.Data.dump 0x1000++0xfff
Go
Break
WinPrint.Data.dump 0x1000++0xfff
ファイルに含まれる数字が自動増分される。
Debugger Basics - トレーニング 160 結果の文書化
1 ファイルに n 出力を印刷
PRinTer.OPEN [< ファイル名 >] 結果の出力ファイルを永続的に開きます。
PRinTer.CLOSE 結果の出力ファイルを永続的に閉じます。
PRinTer.OPEN outpd
WinPrint.Data.dump 0x1000++0xfff
Go
Break
WinPrint.Data.dump 0x1000++0xfff
PRinTer.CLOSE
Debugger Basics - トレーニング 161 結果の文書化
プリンタへの出力のリセット
[Printer] ラジオボタンをオンに切り替え
Debugger Basics - トレーニング 162 結果の文書化