趣味の電子工作などの記録。時にLinuxへ行ったり、ガジェットに浮気したりするので、なかなかまとまらない。
RSS icon
  • UBWを試す

    投稿日 2011年 8月 31日 コメントはありません

    これまでAVR中心に扱ってきましたが、AVRにおけるArduinoと似たような存在として、PICの方でもUBW(USB Bit Whacker)というものがあることを知りました。こちらはマイコンにUSBコントローラを内蔵しているPIC18F2550を使用可能で、しかも、秋月で売っている18F2550マイコンボードをほぼそのまま使えるようです。しかも、ホストとの通信にはデバイス内臓のUSBコントローラを使うということで、極小サイズでデバッグができるようです。

    というわけで、試してみることにしました。

    ハードウェアの準備

    ハードウェアは千秋ゼミのサイトを参考に、AE-18F2550を使ってブレッドボード上に構成しました。

    ブートローダの書き込み

    UBWでは、ブートローダのことをFirmware Bと呼ぶようです。このFirmware Bは、こちらのページの「UBW driver」というリンクの先にあるB.zipファイルに入っています。これを展開すると、FW_B_20MHz.hexというファイルが「output_20MHz」フォルダの下にあるので、これをWindows上の「PICkit 2 Programmer」で書き込みます。

    書き込み完了後、UbuntuマシンにAE-18F2550を接続しても・・・・なにも起きません。動いてないと困るので、ポートRC2をGNDに落としながらMCLRをリリースすると、LEDが交互点滅し、どうやらブートローダが動いていることがわかりました。

    ダウンロード用プログラムのコンパイル

    次にダウンロード(ブートローダにアプリケーションを流し込んで書き込む)用のプログラムをコンパイルします。

    こちらのサイトを参考に fsusb-0.1.11-2.tar.gz をダウンロード、コンパイルします。一次配布サイトなのかどうかよくわからなかったのですが、make一発でコンパイルします。

    ファームウェアの書き込み

    次に、Firmware D と呼ばれるアプリケーションをダウンロードします。こちらのページの途中に「・・・・ UBW Firmware D released」というリンクがありますので、それをクリックすると、Firmware D の圧縮ファイルが入手できます。これを展開したら、ポートRC2をGNDに落としながらMCLRをリリースして、LEDを交互点滅させます。この状態でブートローダが待機しているようですので、

    $ sudo ./fsusb FW_D_2553.hex

    として書き込んで、再度MCLRでリセットをかけると、異なるパターンのLED点滅が始まりました。

    追伸

    fsusb をルート権限で動かすのは面倒くさいので、こちらの記事で追加した /etc/udev/rules.d/60-local.rules に

    # PICkit2 programmer
    ATTRS{idVendor}=="0d48",ATTRS{idProduct}=="0033",GROUP="usbuser",MODE="0660"
    # UBW bootloader
    ATTRS{idVendor}=="0d48",ATTRS{idProduct}=="000b",GROUP="usbuser",MODE="0660"

    を追加してみました。再起動しないと効果がわからないので、うまくいくかわかりませんが・・・。

    追伸の追伸

    やっぱりダメでした・・・。何でroot権限要求するのかソース読んでみないと・・・。