PICmonitor
PIC18FによるHID genericなmonitor†
元ねた mcc18 usbserial pic18hidkey
■ 概要
これは、MicroChipが提供している PIC18 のUSBアプリケーションフレームワーク に含まれているHID-Bootloader をもとにして作成した PIC18F専用の簡易モニタです。
■ 現在のステータス
PIC 18F2550上で動作します。
まず、hidmon-2550を使用してファームウェアを書き込みます。 C:> picboot -r firmware/picmon-18F2550.hex
次に、picmonitor を起動します。 C:> cd host C:host> picmonit.exe
現在実装されているのは HIDCMD_PEEK と POKEだけです。 TARGET DEV_ID=25 PIC> d 000000 00 00 40 00 20 78 02 00 000008 08 41 22 68 05 00 07 20 000010 bf 04 02 80 ac 40 84 41 000018 5d 44 88 83 05 03 c4 41 000020 fe 20 85 84 0c e9 24 cb 000028 36 50 8c 22 22 f8 51 21 000030 04 44 25 dc 02 c0 31 14 000038 81 09 48 d4 43 10 d6 35 PIC> l 0 0000 6af7 clrf 0xf7, 0 0002 6af8 clrf 0xf8, 0 0004 d054 bra 0xae 0006 d330 bra 0x668 0008 ef04 f004 goto 0x808 000c d05d bra 0xc8 000e d27b bra 0x506 0010 d328 bra 0x662 0012 d32c bra 0x66c 0014 d32f bra 0x674 0016 d345 bra 0x6a2 0018 ef0c f004 goto 0x818 001c 0112 movlb 0x12 001e 0200 mulwf 0, 0 0020 0000 nop 0022 4000 rrncf 0, 0, 0 0024 04d8 decf 0xd8, 0, 0 0026 003c dw 0x3c ;unknown opcode PIC> q Bye. C:>
================================================== ■ hidmon-14k50 や hidmon-2550との違い
・一応、C言語で書かれています。(mcc18)
・コードサイズが大きいです。(4kB弱)
・USB のPIDが違います。
・プロトコルも違います。
・HID Reportの転送方法が異なります。 hidmonでは、全てコントロール転送(HidD_SetFeature/HidD_GetFeature) で行っていますが、picmonit.exeでは、EndPoint1に対するインタラプト転送 によりデータの受け渡しを行っています。
■ 何に使えますか?
・picmonit.exe 上のコマンドと、firmware上のコマンド受け取り処理の対を 自分で追加することにより、いろいろな機能を追加することが出来ます。
■ 応用1 ------------------------------------------------------------------------- PS/2 タイプのキーボードを繋いで、打鍵されたキーコードを16進ダンプします -------------------------------------------------------------------------
接続: PORTB.bit0 <---- PS/2 KeyBoard CLK PORTB.bit1 <---- PS/2 KeyBoard DATA
使い方: (1)firmware/picmon-18F2550.hex を焼きます。 (2)PC上にて、picmon/picmonit.exe を起動します。
普通にメモリーダンプ('D'コマンド)や逆アセンブル('L'コマンド)が使えることを 確認します。 (3)userコマンドを入力します。
PIC> user そして、繋いだPS/2キーボードを打鍵すると、コンソールに16進でコード表示が 出ます。 80個のコードが表示されるか、もしくはパソコン側から[ESC]キーを押したら終了です。
■ 応用2 ------------------------------------------------------------------------- PIC上からprintfやputsを試せます。 -------------------------------------------------------------------------
firmware/Makefile に記述している OBJ項の keybtest.o を usercmd.o と置き換えます。 firmwareディレクトリで make clean して make します。 firmware/picmon-18F2550.hex を焼きます。 PC上にて、picmon/picmonit.exe を起動します。 そしてuserコマンドを入力します。 PIC> user これで、PIC上からprintされた文字をPC上で見ることが出来ます。 usercmd.c をいろいろ書き換えて試すことが出来ます。
ダウンロード(usercmdを有効にした新バージョン)
ダウンロード(ps2keyboardを接続する旧バージョン)