...

インテル®JTAG デバッガー

by user

on
Category: Documents
18

views

Report

Comments

Transcript

インテル®JTAG デバッガー
インテル® JTAG デバッガー
内容
ハードウェア要件
インストール
起動
GUI 機能
- 実行制御
- シンボル処理
- ブレークポイント
- 表示機能
コマンドライン
BIOS と OS/OS ドライバーのデバッグ
その他の機能とまとめ
2
ハードウェア要件
ターゲット:
1. サポートされているインテル®
Atom™ プロセッサー CPU
2. JTAG プローブ用のアクセス
ポート:
- Macraigor Usb2Demon*
- インテル® ITP-XDP3
3. デバッグ対象のメモリー
3
インストール
• ターゲット OS に応じてデバッガーが異なる
例:
- Vanilla 2.6 & 3.0 Linux* カーネル
- Yocto* 1.1/1.2 組込み Linux* カーネル
• 各種ツールパッケージに含まれるデバッガー
• ツール・スイートに応じてホスト OS 要件が異なる
(Windows* (XP/7)、Linux* (Ubuntu*/Fedora*)
32/64 ビット)
• インストール・スクリプトを実行する (ツール・スイー
トのインストールに含まれる)
4
4
起動
1. プローブがターゲット (およびホ
スト) に接続されていることを確
認する
2. プローブドライバーがインストー
ルされロードされていることを確
認する
3. ターゲットが動作していることを
確認する
4. デバッガーの起動スクリプトを選
択して実行する
5
プローブ
CPU
インストールに関する問題
デバッガーのエラーメッセージを確認する
よくある問題:
-
Linux* ホスト:
- デバッガー GUI には JRE 1.6 以降が必要
- 初期プローブ通信を行うには 'fxload' がホストにインストー
ルされていなければならない
6
-
ルールファイルが正しくインストールされているか
-
プローブドライバーがインストールされているか
初期 GUI
デバッガー GUI は起動時に自動でターゲットとの接続を確立する
接続が確立されると、ターゲットが停止され、現在の命令ポインター付近の
メモリーが読み込まれる
デバッガーのメニュー
とコマンドボタン
アセンブリー・ウィンドウ
停止位置付近の
アセンブリー命令
コマンドウィンドウと
サインオンメッセージ
7
ソースファイル
8
GUI - ターゲットの実行制御
基本機能は、実行/続行、シングルステップ、停止/中止、
リセット
3 つのコマンド指定方法:
-
9
コントロール/ファンクション・キーの組み合わせを
使用する (例: F5 で実行/続行)
-
[Console] ウィンドウでコマンドを入力する
-
GUI メニューアイコンを利用する
実行制御アイコン (およびキーコード)
命令 (asm) ステップオーバー (F7)
命令 (asm) ステップイン (F6)
呼び出し元まで実行 (Shift + F11)
関数呼び出し後のソース行までステップ (F12)
次のソース行までプログラムをステップ (F11)
ターゲットをリセット (Shift + Cntrl + F5)
実行の中断 (Pause)
実行/続行 (F5)
10
シンボル処理
ターゲットにロードされているバイナリーのシンボル情報
がある場合、(シンボルを使用して) ソースレベルのデバッ
グが可能
デバッガー
GUI
JTAG プローブ
ターゲットシステム
デバッガーは
この情報を必要する
11
ダウンロードされたか
フラッシュにある
デバッグ情報を含むバイナリーファイル
シンボルのロード
ターゲットにロードされているバイナリー
ファイルと同一のものを検索する
Download = ターゲットにダ
ウンロードする。ターゲット
上のソフトウェアをデバッグ
する場合はこのチェックボッ
クスはオフにする。
12
ソースの検索
13
デバッガーが現在の命令ポインターに対応するソー
スファイルの検索を試み、ファイルが見つからない
場合はユーザーが手動で指定
表示するソースファイルの選択
‘ソースファイル’ アイコンを利用して、
デバッガーにロードされているバイナリー
ファイルのソースツリーを表示し、ソース
ファイル名をダブルクリックして、ソース
ウィンドウにファイルを表示可能。
14
ソースファイル名が分かっている場合
ソースファイルを開くアイコンをクリッ
クし、表示されるダイアログで次の操作
を行う
- スクロールしてファイルを参照する
- [Filter] フィールドでファイル名を入
力する
15
シンボルの評価
変数をマウスでポイントするとその値が表示される
変数を選択して右クリックするとオプションが表示される
16
ローカル変数
ローカル変数ウィンドウが開
き、現在のスコープからアク
セス可能なすべての変数が表
示される
この例は ‘rq’ 構造体の一部示している
[Expression] フィールドの ▽ は、複数の要素があり、展開されていることを示す
( ▷ は展開されていないことを示す)
17
トレースバック機能
ソースファイル:
行番号
現在のファイル
関数ツリー – ボトムアップ
デバッグ情報がない場合はアドレスのみ表示される
18
ブレークポイント
2 種類のブレークポイントを利用可能:
- コード・ブレークポイント
- ウォッチポイントまたはデータ・ブレークポイント
(I/O アクセスも含む)
デバッガーの基本機能であるブレークポイントはさまざまな方法で定義可能:
- メニューから
- ソースウィンドウから
- ブレークポイント・ウィンドウから
19
ブレークポイントの作成
最低でもコード位置が必要。
[Hard] オプションをオンにする
と、アクセスできないメモリー
位置にもブレークポイントを設
定することができる。
ウォッチポイントの場合、位置、
アクセスタイプ、長さが重要
20
ブレークポイント (続き)
ソースコードから展開:
コード・ブレークポイント
データ・ブレークポイント
21
表示機能 - レジスター
次のスライドを参照
22
例:システム制御レジスターエントリー
23
多くのレジスターには独特な解釈を持つ個々のビットがあり、プログラマー
はビット・フィールド・エディターを使用してそれらの値を変更可能
ベクトルレジスター
24
その他の表示機能 - メモリー
指定可能なアドレス:
- 論理アドレス
- リニアアドレス
- シンボル参照
- 物理アドレス:
phys(0xnnnnnnnn)
25
ページングについて
ページテーブル/ディレクトリーの
エントリーをダブルクリックして、
ビット・フィールド・エディターで
属性ビットを変更可能
26
26
仮想 -> 物理アドレスへのマッピング
アドレスを選択し、[Translate] ボタンをクリックして、アドレスマッピングを見つけ
る。[OK] をクリックすると、ページテーブル/ディレクトリーがページングウィンド
ウに表示される。
27
ディスクリプター・テーブル - ビュー
ディスクリプター・テーブルのエントリー
ごとに重要なビットを表示
- 除外するアドレス情報 (下限と上限) を
指定可能
28
29
命令トレースサポート
レジスタースタック
ターゲット上での
コード実行
デバッガーによって
読み取られる
インテル® Atom™ プロセッサーは、内部レジスターのセットを利用し
て最終分岐レコード (LBR) をサポート
デバッガーは収集したトレースデータを表示可能 - 再構築された実行
フロー
30
トレースの有効化と表示
次のアイコンでトレースウィンドウを表示:
トレースウィンドウで右クリックしてオプションを選択し、トレースを有効/無効にする
実行してデータを収集
収集されたデータは [Trace] ウィンドウに表示される
31
複数のハードウェア・スレッド
複数の論理コアの使用状況が表示され、 は現在のコードで使用されている論理コア
を示す。論理コアを選択して、そこで実行されるソフトウェアのデバッグを継続するこ
ともできる。
32
コマンドラインの使用
これまでに紹介したコマンドはすべてコマンドラインで指定可能。通常、コンソール
ウィンドウには、デバッガーによって出力されたエラー/警告メッセージや GUI で選
択した内容と等価なコマンドラインなど、さまざまな情報が表示される。コンソール
ウィンドウの最後の行は入力 (コマンド) 用に '予約' されている。
例:
33
スクリプトファイルの生成と実行
デバッグセッションを記録し、後で ‘再
現’ 可能。
夜間にテストを行い、翌朝に確認する
ことができる。
スクリプトファイルの生成方法は 2 つ:
- [Start Command Recording] は、[Stop Command Recording] を選択するまで、すべての
コマンドを (ダイアログで指定した) ファイルに保存する
- [Start IO Recording] は、これに加えて、デバッガーからの出力もすべて収集する
スクリプトファイルを実行するには、
アイコンをクリックして表示されるダイ
アログで必要なデータ (スクリプトファ
イルの名前は必須) を指定する
34
EFI BIOS のデバッグ
EFI 環境は移動可能なコードモジュールを使用。これらのモジュール
をデバッグするには、コードのアドレスを指定する必要がある。EFI
モジュールを識別し、対応するシンボルをロードするコンソールコマ
ンド群がある。
xdb> efi "loadthis"
INFO:Software debugger set to: efi64 - EFI/PI compliant BIOS (64-bit mode) INFO:Using DRAM
search semantics, align=0x00001000 range=0x00100000
INFO:Searching backwards from 0x00000000809FB6C3 to 0x00000000808FB6C3 for PE/COFF header
INFO:Found PE/COFF module at 0x00000000809FB000 - 0x00000000809FF1C0 (size:16832 bytes)
INFO:Loading debug symbols found at:
e:¥dev.efi¥work¥Build¥MdeModule¥NOOPT_VS2008x86¥X64¥MdeModulePkg¥Application¥xdbefiutil¥
xdb> efi showsystabxdbefiutil¥DEBUG¥xdbefiutil.efi
INFO:Software debugger set to: efi64 - EFI/PI compliant BIOS (64-bit mode)
INFO:Reading EFI_DEBUG_IMAGE_INFO table, this could take a little while...
EFI System table at 0x00000000AF536F18
Configuration Tables:
________________________________________________________________________
GUID:
Pointer:Name:
GUID 05ad34ba, 6f02, 4214, {...}0xae72bdb0 DXE_SERVICES_TABLE
xdb> efi showmodules
INFO:Software debugger set to: efi64 - EFI/PI compliant BIOS (64-bit mode)
INFO:Using cached EFI State Information
________________________________________________________________________
ModuleID Base
Size
Name
00000
0x00000000AE71C000 0x00013F51 DxeMain.efi
…
xdb> efi "load Shell.efi"
35
BIOS と Linux* カーネルのデバッグ
デバッガーは OS に依存しない※ - シンボル情報があればどのコードもソースレベルで
デバッグ可能
例外的に Linux* カーネルスレッドは認識され、次のアイコンを選択すると表示される
※
36
ロード可能モジュールのデバッグ
デバッガーで提供される Linux* カーネルモジュール (idbntf) をビルドしイン
ストールすると、Linux* カーネルモジュール (例: ロード可能ドライバー) を
ロードしデバッグできるようになる
ドライバーのロード前:
ドライバーのロード後 - insmod sum3.ko:
37
その他の機能:
ターゲットコードを素早く変更
迅速なテストとテストおよびファームウェア・コードの再実行を実現する
強力なツール
• メモリーウィンドウまたは逆アセンブリー・ウィンドウを開く
• 16 進値は変更可能 - メモリーウィンドウ
•
38
オペコードやニーモックは変更可能 - 逆アセンブリー・ウィンドウ
その他の機能
(続き)
ターゲットイメージとブートローダーのフラッシュ
インテル® JTAG デバッガーのフラッシュメモリー機能
-
フラッシュバイナリー/HEX ファイル
ブロックの消去/アンロック/ロック
フラッシュのコンテンツをホスト上のバイナリーファイルへバックアップ
BIOS アップデートに最適
Flash "select /board= 'target' board"
Flash "change offset 0x00"
Flash "change data file
'/home/qa/BIOS50.bin'"
Flash "burn flash false true true"
39
SoC トレース
主要な SoC コンポーネントのスタティック・インストルメンテーション
を行う低オーバーヘッドのテクノロジー
ユーザー
イベント
レコーダー
V
デバイス
カーネル
デバイスとシステムのインストルメ
ント済みソフトウェア・モジュール
JTAG デバイス
•
•
40
JTAG によるイベントトレース
スマート・ブレークポイント
• 主要イベントの実行で中断

システム・イベント・トレースのビジュア
ル化、解析、デバッグ
• コマンドライン・インターフェイス
• グラフィカル・インターフェイス
SVEN イベント:
その他の機能
(続き)
SoC トレースサポート
この機能はターゲットでシステ
ム・ソフトウェアのサポートを
必要とします
トレースのビジュアル化
•
•
高度なナビゲーションと検索機能
グラフィックとテキストによるイベント
の表示
スマート・イベント・トリガー
•
•
41
イベントトレースを使用してライブ
JTAG システムをデバッグ
トレースイベントの呼び出しで中断する
スマート・ブレークポイント
まとめ
インテル® JTAG デバッガーは強力な機能を提供:
• GUI を使用して BIOS、OS カーネル/ドライバーをソースレベルで
デバッグ
- インテル® Atom™ プロセッサー・ベースの CPU と SoC をサポートする
-
42
ビット・フィールド・エディター
フラッシュおよび周辺レジスターのサポート
ページ変換テーブルとディスクリプター・テーブルへのアクセス
動的にロードされたカーネルモジュールのデバッグ
オンチップのトレースサポート
SMP の実行制御サポート
Linux* を認識
著作権と商標についておよび最適化に関する注意事項
本資料の情報は、現状のまま提供され、明示されているか否かにかかわらず、また禁反言によるとよらずにかかわら
ず、いかなる知的財産権のライセンスを許諾するものではありません。製品に付属の売買契約書『Intel's Terms and
Conditions of Sale』に規定されている場合を除き、インテルはいかなる責任を負うものではなく、またインテル製品の
販売や使用に関する明示または黙示の保証(特定目的への適合性、商品性に関する保証、第三者の特許権、著作権、
その他、知的財産権の侵害への保証を含む)をするものではありません。
性能に関するテストに使用されるソフトウェアとワークロードは、性能がインテル® マイクロプロセッサー用に最適
化されていることがあります。SYSmark* や MobileMark* などの性能テストは、特定のコンピューター・システム、
コンポーネント、ソフトウェア、操作、機能に基づいて行ったものです。結果はこれらの要因によって異なります。
製品の購入を検討される場合は、他の製品と組み合わせた場合の本製品の性能など、ほかの情報や性能テストも参考
にして、パフォーマンスを総合的に評価することをお勧めします。
© 2013 Intel Corporation. 無断での引用、転載を禁じます。Intel、インテル、Intel ロゴ、Intel Atom は、アメリカ合
衆国およびその他の国における Intel Corporation の商標です。
最適化に関する注意事項
インテル® コンパイラーは、互換マイクロプロセッサー向けには、インテル製マイクロプロセッサー向けと同等レベルの最適化が行われな
い可能性があります。これには、インテル® SSE2、インテル® SSE3、インテル® SSSE3 命令セットに関連する最適化およびその他の最適化
が含まれます。インテルでは、インテル製ではないマイクロプロセッサーに対して、最適化の提供、機能、効果を保証していません。本製
品のマイクロプロセッサー固有の最適化は、インテル製マイクロプロセッサーでの使用を目的としています。インテル® マイクロアーキテ
クチャーに非固有の特定の最適化は、インテル製マイクロプロセッサー向けに予約されています。この注意事項の適用対象である特定の命
令セットの詳細は、該当する製品のユーザー・リファレンス・ガイドを参照してください。
改訂 #20110804
43
Fly UP