Windows IoT Coreを搭載したRaspberryPi2に対して通信する場合、LAN経由
で通信してやり取りするのが一般的である。USB-UART変換ケーブル
で直接接続してダンプを表示しているドキュメントがあったので、どんなことができるのか実際に試してみたときのメモ。
発端となったドキュメントを見ると、RaspberryPi2の6、8、10番ピン
にシリアル変換ケーブル
を接続して、WINDBG
で COMポートを監視すると、情報が流れてくるような内容である。
ただFTDI製のケーブル
を使う前提で、UART
側のどのピンに接続するか明記されていない。RaspberryPi2側も6番
ピンがGND
なのはわかったが、8と10番
がReserved
とだけ書かれてなんなのか不明。このドキュメントに沿ってやってみたもののうまくいかなかった。
情報が圧倒的に少ないなか、ネットをさまよっていると、同じような内容のブログを発見。なんとかダンプ表示までこぎつけたので、やり方をまとめる。
USB-UART変換モジュール
まず、USB-UART変換モジュールは、aitendoのUSB-UART変換モジュールCP2102で、いくつかマイナーチェンジしていてこれの終了版3
を使用している。
Raspberry Pi2の設定
Power Shell
でログインして以下のコマンドを実行して、デバッグ出力をONにする
bcdedit -store C:\EFIESP\efi\Microsoft\Boot\bcd -dbgsettings serial
bcdedit -store C:\EFIESP\efi\Microsoft\Boot\bcd -debug on
WINDBGの起動
windbg.exeを起動し、ファイルメニューからKernel Debugging
を選択する。オプションパネルが表示されるので、下図のように設定値を入力して起動する。
接続待ち状態になれば、準備完了。
ワイヤの接続
基本的には、GndとGnd
、TxDとRxD
、RxDとTxD
となるように接続すればよいはず。
上記ブログだと、8番ピンがTxD
、10番ピンがRxD
とあるので、これに従って接続してみる(RaspberryPi2の関連の他サイトでもそう書いてある)
が、なにも反応なしである。またネットを徘徊するも情報なし。PinレイアウトはWindows IoT Coreのドキュメントでは”Reserved”になっており、TxD、RxDが明記されてないのが気になっていたので、配線を逆にしてみたところ下図のようにダンプが表示された。
なにが間違っていて、なにが正しいのか良くわからないが、とりあえず下表のようにしたらダンプが出力されたことを確認。
Raspberry Pi2 | USB-UART変換モジュール |
---|---|
Gnd(6pin) | Gnd |
RxD(8pin) | TxD |
TxD(10pin) | RxD |
ピンレイアウトは、レジスタを変更すれば変えることができると思うので、ひょっとするとWindows IoT Coreがそうしているのかもしれないし、今はReserved
なだけなので、将来的に変更になるかもしれない。
あと、気になったのは、シリアル接続が成功
すると、必ずLANが切断
される。Windows IoT Core Watcherを見ると、チェックが外れてオフラインになっているのがわかる。これも仕様なのかは不明。ただちょっと不便である。
いちおうシリアル接続に成功?したわけだが、接続時にログが少し表示するだけで、それ以降なにも変化なし。Windows IoT Core向けのAPIでシリアル通信向けのprint関数でもあれば、ここに動作中アプリからログ出力できて使い道もありそうである。LAN経由オンリーだと、オフライン環境では、動作確認できないので、また進展あれば追記する予定。