(2016年7月3日)
PIC32MX シリーズを使う上で、一つのハードルとなるのが、書き込み器の問題。PicKit3 と MPLAB X を使えば Windows, Mac OS X, Linux で開発ができるので、問題ないっちゃあないんですが、純正の PicKit3 は 5,700 円もする(秋月価格、2016/7/3 現在)。オレンジピコショップで取り扱われている「互換品」は 2,980 円なので手頃ではあるが、PIC の書き込みに「しか」使えないものにこれだけの投資はちょっと辛い。PicKit に頼らない書き込み方法を研究しておきたい。
手始めに、Pickle というツールを使って、Raspberry Pi を使った書き込みを試してみた。基本は、ケンケンさん(Machikania の作者)の掲示板にある通り → http://8130.teacup.com/kenken/bbs/387 。ただし、ORANGE pico のファームウェアの書き込みでは、少し手を入れる必要があった。
今回試したのは、Model A+。無線 LAN のドングル(プラネックスの GW-USNano2)を挿して、パソコンからは ssh で接続する。
小さなブレッドボードを1つ用意して、下のように配線する。
Pickle Microchip PIC ICSP https://wiki.kewl.org/dokuwiki/projects:pickle の "Installation" のところにダウンロードのリンクがある。最新版(2016/7/3 時点で pickle-4.0d.tar.gz
)をダウンロードして、Raspberry Pi に転送する(または、Raspberry Pi 上でダウンロード)。
展開して、src
ディレクトリに移動する。
$ tar xfz pickle-4.0d.tar.gz; cd pickle/src
ビルド、インストールする。
$ make; sudo make install
ホームディレクトリ (/home/pi
) に .pickle/config
というディレクトリを作り、その中に設定ファイルを置く。dotconf/gpio-RPI
をそのまま使えばよい。
$ mkdir -p ~/.pickle/config; cp dotconf/gpio-RPI ~/.pickle/config
配布されている ORANGE pico のファームウェア hex ファイルをそのまま書き込むと、なぜか動作しない。次の1行を探し出して、変更する。(現時点での最新版 v0.56 では12行目)
(変更前):040bfc00faffff7f7e
(変更後):040bfc00fbffff7f7d
この1行は、PIC のコンフィギュレーションレジスタ0 (DEVCFG0)
の値を設定するもの。上の変更によって、値が 0x7FFFFFFA
から 0x7FFFFFFB
になる。PicKit3 で書き込むと、この hex ファイルのままでも 0x7FFFFFFB
として書き込まれるのだが、Pickle で書き込むと、元の hex ファイルのまま 0x7FFFFFFA
として書き込まれ、動作しない。何だかよくわからないが、上のように変更すれば動作することは確かめてある。
上のように変更したファームウェアを Raspberry Pi に転送し、Raspberry Pi 上で p32
コマンドを使って書き込む。
$ p32 program ORANGEpicoV056_FB.hex
1分40秒ぐらいかかるが、その間何も表示が出ないので、ちょっとどきどきする。
ベリファイは下のようにする。2分30秒ぐらいかかった。
$ p32 verify ORANGEpicoV056_FB.hex
これもケンケンさんの掲示板からの情報。下の3つのファイルをダウンロード・解凍して、Raspberry Pi の ~/.pickle
ディレクトリに入れておくと、書き込み・ベリファイが高速になる。
やってみると、確かに速い。書き込みは10秒、ベリファイは7秒で終了した。これなら途中に何も表示が出なくても、まあ我慢できるかな。
pi@raspberrypi:~/Documents/Development $ date; p32 program ORANGEpicoV056_FB.hex ; date
Sun 3 Jul 12:27:36 UTC 2016
Total: 191544
Sun 3 Jul 12:27:46 UTC 2016
pi@raspberrypi:~/Documents/Development $ date; p32 verify ORANGEpicoV056_FB.hex ; date
Sun 3 Jul 12:28:10 UTC 2016
Total: 191544 Fail: 0
Sun 3 Jul 12:28:17 UTC 2016
pi@raspberrypi:~/Documents/Development $