前の内容と関連しますが、これまた大分昔の話。
その案件ではフラッシュROMへ書き込みを行う必要があった。しかし、プログラムは間違っていない
はずなのに消去・書き込み共に失敗。
原因はプログラム実行でアドレスバスとデータバスにフラッシュアクセス以外の信号が出てしまってい
るからではないか?との疑問から、CPU内部にある数KBのメモリにフラッシュ書き込みプログラムを
転送して行うことにした。案の定無事に書き込みはできたけど、そこにいたるまでには問題もあった
わけで。
まず、CPUのマニュアルが無かったのでアセンブラのニーモニックがわからなかった。仕方なくコンパイラ
の出すアセンブラソースを見て「こんな感じ?」ってアセンブラでリロケータブルなフラッシュアクセスルー
チンをこしらえてCPUのRAMに転送。
更に、当時は開発費の関係上使用していたICEはROMICE。CPUICEならデバッグできたんだろうけど、CPU
内部のRAMに処理が移ったとたんステップ実行不可。当然そこにはブレークも張れない。
製品の開発だったら不具合対応とかを考えるとゾっとするけど、試作品の開発だったからか、その後は特に
トラブルも無かった。
# そのフラッシュアクセスルーチンだけは他の人が使い回ししていたようだけど