Comments
Description
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