Writer509 の制御プログラムです. 一応 Linux + gcc で動くようにしましたが, 基本的な命令しか使ってないので, 他の OS への移植もできると思います.
手抜きにより, 手持ちの PIC (12F629/675/683, 16F84A/648A/819) にしか対応していませんが, 一部の PIC は, 後述の定義ファイルを書き加えるだけで 対応できるはずです.
プログラム一式は こちらです (V0.2). ダウンロードして make した後, ルート様になって make install してください. デフォルトのインストール先は, 実行ファイルが /usr/local/bin/picw509, 定義ファイルが /usr/local/share/picw509/picw509.cfg です. インストール先を変更したい場合は Makefile を適当に書き換えてください.
製作に当たっては Writer509 (2.23) の Delphi ソースを参考にしました. また移植に当たっては, なぜこうなっているのか分からないまま, 処理を模写した部分とか変えた部分, さらに手持ちの PIC では 関係ないので省略した部分とかが多々あります. 期待通りの動作をしない場合は, がんばって ソースを適当に書き換えてください.
以下のような引数をつけて起動します.
例)
picw509 -d /dev/ttyUSB0 -k |
picw509 -c 16F84A -k |
picw509 -d /dev/ttyUSB0 -s 115200 -c 16F648A -r -o hoge.hex |
picw509 -c 12F675 -p -i hoge.hex |
picw509 -c 12F675 -pnv -i hoge.hex |
なお, -repv など複数の動作を指定した時の動作順番は, イレース, リード, ライト, ベリファイです. また, k や x は他のオプションと同時に指定できません.
PIC の特性は定義ファイル (picw509.cfg) から 起動時に毎回読み込むようにしています. めんどうなので, 現在このファイルには 手持ちの 6 種類 (12F629/675/683, 16F84A/648A/819) しか書いていませんが, 適当に書き加えると対応機種を増やすことができます. 書式はデータを覗いて判断してください. 加える情報はオリジナルの Writer509 のソースの DeviceSpec.pas を 参照すればいいと思います. このファイルを編集した結果, 読み込みエラーが出るようになった場合は -b 30 オプションを加えて起動すると, どの行でエラーが出たかが分かります. また, デフォルト値として 16F84A の情報が入っていますので, 特に指定しない場合, 16F84A の情報が継承されます.
なお, あまり厳密な値チェックをしていませんので, 変な値を入れると動作がおかしくなるかもしれません. ご注意ください.
UserIDAddress が 2000, ConfigAddress1 が 2007 以外の PIC は対応させてません. 18 系 PIC も対応していません.
メッセージ及びドキュメントの類も手抜きです. スペルチェックすら行っていません. 訳の分からないメッセージが出たら, 「こいつ学が無いな」と笑ってください.
動作確認ですが,
基本的にバグ報告は歓迎しますが, 私はそれを修正する義務を負いません. 改変・転載等は自由としますので, 各自で修正してください. その際は修正パッチ等を送って頂ければ, できるだけ反映させたいと思います.
2008.5: 多忙のため, 当分の間, 確認・反映できませんが, こちら の方に細かなバグを修正したと言われる物が存在しているようです (OSX で動かしているとのこと).