PC上で動作する既存のROMライタホストプログラムは次のようなコマンドを発行します。これを受けて応答を返すようにROMライタ本体のファームウェアのI/Fを変更しました
ケースに組み込んだ際、コントローラをPIC16F914からPIC16F1939に差し替えておきました。プログラムエリアが4kWから16kWと4倍になったので消費量は23%となり一気に余裕ができています
これでホストプログラムから制御できるようになりました。
ただ一点問題があり、バッファメモリ128kB<ターゲットROM容量512kBとサイズが異なります。現状のホストプログラムはバッファの0番地からバッファサイズmaxまでをROMの0番地からベタで書き込むようにROMライタファームへ指示しているためROMの0x20000番地以降が書き込めません。仕方がないのでRomBaseSelectというコマンドI/Fを追加してROMの開始アドレスを変更できるようにしました
普通はアセンブラだろうがCだろうが128kBに達するようなコーディングはまず無いのでリセットベクタを含むROMの後半1/4、ROMBASE=0x60000に指定しておけばたいてい事は足ります
ROMライタファームウェア側の機能としてエレクトロニックシグネチャの取得も付け加えました。UVEPROMにもある機能ですが従来は+12Vくらいの高電圧印加が必要でした。FLASH-ROMではオペレーション電圧のまま決まったコマンドシーケンスで読み出すことができます
データシートに記載されている通り”014F”が返ってきました。