最近のPLDやマイコンはボード上で書き込み(ISP)ができるものが多くなりました。 パソコンの操作だけでコンパイル、書き込み、実行とやれるのはとてもらくちんで もうROMライタの世界には戻りたくなくなります。
でもいろんな会社のマイコンやPLDで遊んでいると、それぞれ専用のケーブルとか が必要で面倒ですよね。その点aJileの開発環境は Xilinxのケーブルが使えるようになっていて、こりゃグッドアイデアだな、 と感心しました。
で、そんな時たまたまAtmelの AVRを 使う機会があり「専用ライタを買うような軟弱な真似をしてはいかん」 と思い、手元にあった Xilinx HW-JTAG-PC 互換ケーブル(*1) を使って、下記のような接続でAVRを書き込めるように uispを 改造してしまいました。
(この改造はCVSで最新版を取ってくれば入っています)
この改造は、現在では (uisp-20021201 以降) 標準で uisp に含まれてます。
(*1) ヒューマンデータさんの XC2。 これは汎用変換基板が付属しているので、今回のような遊びには便利なのです。
この勢いで(?) PIC にも挑戦。もちろん、使いたいデバイスは最新の PIC18シリーズです。
データシート、アプリケーションノートを調べると、おお、 LVP (Low Voltage ICSP Programming) モードってのがあるではないか。 これなら特別なハードウェアなしに、以下のような結線で書き込めそうです。
uispのような適当な雛形が見つからなかったので、 書き込みソフトウェアも作ってしまいました。
Cygwinのgcc用 ソースコード: picw-1.0.tar.gz (tar+gzip)
(ライセンス条件は GPLとします)
使い方は簡単。uispと同じでCygwinなどのコマンドラインから起動します。 (GUIなんて洒落たものはありません)
- picw erase
- デバイスを消去します
- picw write < hex-file
- デバイスを消去してから hex-file の内容を書き込みます
- picw read > hex-file
- デバイスの内容を hex-file へ書き出します
- picw verify < hex-file
- デバイスの内容と hex-file の内容を照合します
Windows XPのCygwin上で動作を確認しています。 Cygwinがインストールされていれば、pario.cの中のポートアドレスの設定を適当に 書き換えて(LPT1ならそのまま)あとはmake一発で良いと思います。 Linuxでも動くように作ってあるつもりですが、テストしていないので 駄目かもしれません。:-)
デバイスの種類は自動判定します。 一応 PIC18Fxx2, PIC18Fxx8, PIC18Fxx20 をサポートしているつもりなのですが、 今のところ動作を確認しているのは PIC18F452 のみです。 動作が安定しないときは強め(1kΩ程度)にPGMをプルダウン、 PGDをプルアップしてみてください。
PIC16系でもLVPをサポートしているデバイス(PIC16F627/8,PIC16F870-7など) であれば、同様の結線で書き込めると思いますが、今のところ使う予定がない のでソフト的にサポートしていません。誰か挑戦してみてはいかがでしょう。
ちゃんと作ってあるつもりなのですが、 本ページのソフトウェア、ハードウェアを試したことによる デバイスの破損等あらゆる損害について、当方は一切補償いたしません。 (無料なのですから当然です)
ともあれ、これでAVRもPICもaJileもみんなXilinxケーブルだけで開発できる
ようになったわけです。
めでたし、めでたし。
(2002.9.22)