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 デバッグ接続の場合でも同様に設定します。
例えばこんな感じ。
/********************************/ /*** 設定前のブート構成データ ***/ /********************************/ 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 にて確認できます。
いかがでしたでしょうか。
それでは次回もお楽しみにー。
Appendix
Setting Up a USB 2.0 Debug Cable Connection
https://msdn.microsoft.com/en-us/library/cc266326.aspx
Boot Parameters to Enable Debugging
https://msdn.microsoft.com/en-us/library/ms791527.aspx
BCD Boot Options Reference
https://msdn.microsoft.com/en-us/library/aa906217.aspx
USB に関する FAQ: 中級レベル
https://www.microsoft.com/japan/whdc/connect/usb/USBFAQ_intermed.mspx