RL78 セルフ・プログラミングライブラリにてブート・スワップをしようとしています。
以下お教え願えますでしょうか。
RL78 F13/F14のユーザーズマニュアル ハードウェア編 29.1章 オプション・バイト では以下のように記載されています。> セルフ・プログラミング時にブート・スワップ動作を使用する際には,> 000C0H-000C3Hは020C0H-020C3Hと切り替わるので,> 020C0H-020C3Hにも000C0H-000C3Hと同じ値を設定してください。
スワップするブート0、ブート1領域はそれぞれ00000H-00FFFH、01000H-01FFFH なのですが、誤記ではなく、オプション・バイトだけそのような外れた所を参照する仕様なのでしょうか?
フクダさん
メモリマップを見るかぎりクラスタ1は2000Hから始まるみたいですよ。
フクダさん020C0H-020C3Hの4バイトは別に書かなくても大丈夫です。新しいブートプログラムは2000h~書き込みする必要がありますけれども、2000h番地に書き込むためのブートプログラムをコンパイルする際にオプションバイトもくっついてくるので、いずれにしても2000h~に新しいブートプログラムを書き込むことで結果的に020C0H-020C3Hの4バイトに新しいオプションバイトが設定されてます。
リセットが発生したタイミングで2000h~が0000h~に変更されて、新しいオプションバイトが読み込まれるので新しいブートプログラムを書き込むまでは20C0h~3hには何も書き込まれてなくても構いません。
ちなみに、UMにはさらりと「 注意 ブート・スワップ時は,000C0Hと020C0Hが切り替わるので,020C0Hにも000C0Hと同じ値を設定してください。」とありますけれども 現在設定されているオプションバイトと違う値を、新しく設定して内部リセットを使うと、暴走することがありますので注意してください。危ないのはC2h番地のクロック設定だけだと思いますけど。