USB 2.0 カーネル デバッグ 前編


こんにちは、K 里です。どうぞよろしくお願いします。


 


さて、今回は USB 2.0 カーネル デバッグについて紹介しようと思います。現在、カーネル デバッグの方法として、シリアルや 1394 インターフェースを用いてのデバッグが私たちの中では主流です。しかし、最近これらのインターフェースが搭載されない機器が出てきました。なので、おなじみ USB 2.0 インターフェースを使用してのデバッグ方法を 2 回に分けて説明しようと思います。皆様のお役に立てれば幸いです。


 




まずは、以下のモノをご用意くださいませ。


 


- USB 2.0 デバッグ ケーブル


USB2 Debug Device Functional Specification の要件を満たすケーブルであること。私たちは、PLX Technology 社製 NET20DC を使ってます。


- ホスト コンピューター


EHCI コントローラーを搭載していること。サポートされた OS は、Windows 2000 以降。


- ターゲット コンピューター


EHCI コントローラーを搭載し、且つデバッグ ポートが外部的にアクセス可能であること。サポートされた OS は、Windows Vista 以降。


- デバッガー


Debugging Tools for Windows (Windbg) は、最新版をご使用ください。


 



それでは、設定手順について説明していきます。


 


1. デバイスドライバのインストール


(1) ホスト マシンに Windbg をインストールします。


(2) ホスト マシンとターゲット マシンを USB 2.0 ケーブルで接続します。


(3) ホスト マシンに USB 2.0 Debug Connection Driver (usb2dbg.sys) をインストールします。(*1)


*1 usb2dbg.sys は、"Debugging Tools for Windows" 以下の usb フォルダ内にあります。


 


2. ターゲットマシンのデバッグ設定


bcdedit.exe を使用して以下のように設定します。


(1) デバッグ接続用のエントリを作成します。


    bcdedit /copy {current} /d DebugMode


(2) デバッグ タイプを USB に設定し、ターゲット名を指定します。


    bcdedit /dbgsettings usb targetname:myVistaTarget


(3) 使用する EHCI コントローラーを指定します。


    bcdedit /set {identifier} loadoptions busparams=x.y.z (*1)(*2)


(4) 対象エントリのデバッグモードを有効にします。


    bcdedit /debug {identifier} on


*1 ターゲット コンピューターに搭載される EHCI コントローラーが複数ある場合に指定します。


*2 EHCI コントローラーの指定方法について


デバイス マネージャーより、デバッグに使用する EHCI コントローラーをダブルクリックします。下記の PCI バス 0, デバイス 29, 機能 7 より busparams=0.1d.7 となります。(<bus>.<device>.<function> は、それぞれ 16進数での指定が必要です) busparams による指定は、1394 デバッグ接続の場合でも同様に設定します。


ehci


例えばこんな感じ。







/********************************/


/*** 設定前のブート構成データ ***/


/********************************/


C:\Windows\system32>bcdedit


 


Windows ブート マネージャ


--------------------------------


identifier              {bootmgr}


device                  partition=C:


description             Windows Boot Manager


locale                  ja-JP


inherit                 {globalsettings}


default                 {default}


resumeobject            {default}


displayorder            {current}


toolsdisplayorder       {memdiag}


timeout                 30


 


Windows ブート ローダー


--------------------------------


identifier              {current}


device                  partition=C:


path                    \Windows\system32\winload.exe


description             Microsoft Windows Vista


locale                  ja-JP


inherit                 {bootloadersettings}


osdevice                partition=C:


systemroot              \Windows


resumeobject            {default}


nx                      OptIn


 


/********************************/


/*** デバッグ用エントリの設定 ***/


/********************************/


C:\Windows\system32>bcdedit /copy {current} /d DebugMode


エントリは {bf406aaa-9c00-11dc-9fd4-001aa0c59b79} に正常にコピーされました。


 


C:\Windows\system32>bcdedit /dbgsettings usb targetname:myVistaTarget


この操作を正しく終了しました。


 


C:\Windows\system32>bcdedit /set {bf406aaa-9c00-11dc-9fd4-001aa0c59b79} loadoptions busparams=0.1d.7


この操作を正しく終了しました。


 


C:\Windows\system32>bcdedit /debug {bf406aaa-9c00-11dc-9fd4-001aa0c59b79} on


この操作を正しく終了しました。


 


/********************************/


/*** 設定後のブート構成データ ***/


/********************************/


C:\Windows\system32>bcdedit


 


Windows ブート マネージャ


--------------------------------


identifier              {bootmgr}


device                  partition=C:


description             Windows Boot Manager


locale                  ja-JP


inherit                 {globalsettings}


default                 {default}


resumeobject            {default}


displayorder            {current}


                        {bf406aaa-9c00-11dc-9fd4-001aa0c59b79}


toolsdisplayorder       {memdiag}


timeout                 30


 


Windows ブート ローダー


--------------------------------


identifier              {current}


device                  partition=C:


path                    \Windows\system32\winload.exe


description             Microsoft Windows Vista


locale                  ja-JP


inherit                 {bootloadersettings}


osdevice                partition=C:


systemroot              \Windows


resumeobject            {default}


nx                      OptIn


Windows ブート ローダー


--------------------------------


identifier              {bf406aaa-9c00-11dc-9fd4-001aa0c59b79}


device                  partition=C:


path                    \Windows\system32\winload.exe


description             DebugMode


locale                  ja-JP


loadoptions             busparams=0.1d.7


inherit                 {bootloadersettings}


osdevice                partition=C:


systemroot              \Windows


resumeobject            {default}


nx                      OptIn


debug                   Yes


 


C:\Windows\system32>bcdedit /dbgsettings


targetname              myVistaTarget


debugtype               USB



3. 接続確認


  (1) ホスト コンピューターとターゲット コンピューターを USB2.0 ケーブルで接続します。(*1)


  (2) ターゲット コンピューターをデバッグ モードで起動します。


  (3) ホスト コンピューター上で、Windbg を起動し、[File] -> [Kernel Debug] USB2.0 を指定します。


*1 ターゲット コンピューター側では、EHCI コントローラーのデバッグ ポートに接続します。Intel EHCI コントローラーにおける規定の設定では、PORT1 がデバッグポートとして設定されています。ポート番号については、"Debugging Tools for Windows" 以下の usbview.exe にて確認できます。


usbview


いかがでしたでしょうか。


それでは次回もお楽しみにー。


 


Appendix


Setting Up a USB 2.0 Debug Cable Connection


http://msdn.microsoft.com/en-us/library/cc266326.aspx


Boot Parameters to Enable Debugging


http://msdn.microsoft.com/en-us/library/ms791527.aspx


BCD Boot Options Reference


http://msdn.microsoft.com/en-us/library/aa906217.aspx


USB に関する FAQ: 中級レベル


http://www.microsoft.com/japan/whdc/connect/usb/USBFAQ_intermed.mspx

Skip to main content