RPI2 の Windows10 IoT Core のカーネルデバッグ

Windows10 IoT Core アニバーサリーアップデートを適用した RPI2 で、カーネルデバッグができるように環境を構築してみました。

必要なもの

必要なものは以下の通りです

  • Win10 IoT Core 導入済み RaspberryPI2
  • LANケーブル
  • USB-シリアル変換ケーブル

自分が使用している USB シリアル変換ケーブルは以下のものです。
ちょっとドライバ導入に手間があったりしますが、使えています。


準備(WinDBG)

WinDBG を使う必要があるのでこれを入手します.
これは Windows SDK か Windows Driver Kit に含まれています。
Windows SDK のほうは WinDBG だけインストールも行うことができます。これは インストーラーでどの機能をインストール選択するかの際に、 “Debugging Tools for Windows” のみ選択で、 WinDBG のみをインストールできました。

ドライバの開発という点では Windows Driver Kit を使用しますが、デバッグ目的であれば Windows SDK を選択するのでよいのかなと思います。なお今回使用した Windows Software Development Kit は,Windows 10.0.14393.33 というバージョンのものとなっていました。

準備(RPI2)

Raspberry PI2 の準備を行います。
ブート用のパラメータを編集する必要があるため、有線LANで接続できる必要があります。
PowerShell や ssh などで接続して、以下のコマンドを実行する必要があります.

まずは “シリアルを用いてのデバッグ” を有効化します。Raspberry pi では、シリアルの転送レートは 921600 にハードコードされているとのことです。

続いて以下のコマンドを実行して、デバッグを有効化します。

PowerShell を IoT Dashboard から起動して、これらの作業を行った例です。
win10-iot-kernel-debug-01

デバッグのためのシリアルケーブルを接続します。
Raspberry PI2 ではシリアルのためのピンが以下のように配置されています。
(信号のレベルは 3.3V です)

  • Pin6 : GND
  • Pin8 : UART0 TX
  • Pin10: UART0 RX

今回購入して使用しているケーブルのカラーリングでは以下のようになっていました。
TX と RX をつなぐようにしてこれらを配線します。

  • 黒 : GND
  • 白 : RX
  • 緑 : TX

接続して動作確認

WinDBG を起動します。そして File メニューから、 Kernel Debug を選択します。
このとき、パラメータは以下のようにします。

  • Baud Rate : 921600
  • Port : USB-SERIAL のポート

そしてRaspberry Pi2 の再起動を行います。
うまくいけば以下の画面のように情報が出力されてきます。
win10-iot-kernel-debug-02
ここで一時停止してみると以下のような感じです。
win10-iot-kernel-debug-03