以前からやってみたいことの一つとして、PCから操作可能なUSB HIDデバイスを使って何かしらの操作をする、ということがありました。
実現する手段はいくつか考えられます。一つはBadUSBと呼ばれるデバイスの応用です。これは一般的に販売されているUSBデバイスの一部に一般ユーザーが書き換え可能なファームウェアが搭載されていて、任意のUSBデバイスとして動作させることができるものです。キーロガーなど悪用される可能性があるということで広く問題になりました。この方法で利用可能なデバイスが現在でも手に入るかどうかわからなかったので、この方法はあきらめました。
電子工作界隈では、V-USBというマイコンで動作するUSBターゲット用のオープンソースなファームウェアがあります。オリジナルのV-USBはAVR用となっていますが、Arduinoで動くArduino USBというものもあります。
今回はHIDデバイスという明確にターゲットが決まっていたので、REVIVE USBというキットを使いました。Amazonや秋葉原の三月兎などで購入できます。私ははキットの方を三月兎で購入しました。ほかに配線済みの完成品も販売されているのですが、千円ぐらい値段が違います。
自力で組み立てる必要があるわけですが、自宅は狭いうえに整理がなされていなくてあまりはんだ付けなどの作業には向いていない環境です。たまたま秋葉原のガード下を見ていたところ、Assemblageという電子工作スペースがあることに気付いたので、そちらを利用してみました。休日は1時間200円ほどで利用できます。
はんだ付け作業は10年ぶりぐらいでしたが、45分ほどかけてなんとか完成しました。
できあがったデバイスをLinuxマシンに差すと、USB ID 22ea:0006とでます。linux-usb/usb.idsには該当するデータがないようです。ともあれ無事認識したので、これで何かしら作ってみたいと思います。
開発環境がGCCでOpenOCDでJTAGでつないでGDBでデバッグ、というような向きには、手っ取り早く、下記がおすすめかもしれません。2000円しないのでは?
STM32F3 Discovery Kit:
http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/LN1848/PF254044
STM32F4 Discovery Kit:
http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/LN1848/PF252419
ベンダーが配布しているファームウェアのexampleを修正する・拡張する感じでだいぶ楽しめると思います。
バイナリを持ってきて実行する程度ならいいですが、PICでの開発はなかなか厳しいと思います、よ。
JTAGのインターフェースを扱えるデバイスを持っていないのですが、
ご紹介いただいたデバイスについても試してみようと思います。
情報提供ありがとうございます。
> JTAGのインターフェースを扱えるデバイスを持っていないのですが、
えー、最近のキットはですね、ホストPCからJTAGあるいはSWDでアクセスしてフラッシュに書き込んだり、デバックできるように、ターゲットボードとデバッグインタフェースが込みという構成になっています。
製品の画像を見ていただくとわかると思いますが、ホストPCにつなぐUSBのコネクタと、もう一つ、USBデバイスとして動くためのUSBコネクタと二つあることが確認できると思います。
なるほど、これは単体で完結するのですね。重ね重ねありがとうございます。
REVIVE USBの方もインターフェースは1つなのですが、ジャンパ設定で書き込みモードにできて一応単体で書き込みはできるようにはなっています。