初めて投稿いたします。 ふんと申します。
RX210を使用した製品でフィールドでのファームウェア書き換え機能が必要になり、USBメモリやSDカード等を使用したROM書き換えを開発中です。 開発環境にはHEW,ROM書き換えにはルネサス提供のフラッシュAPIを使用し、PDGも使用しています。
フラッシュAPIのROM消去単位は2Kバイトなのですが、0xffffff80番地にはエンディアン指定レジスタがあり、ビッグエンディアンで開発してきているので、ここを含む領域が消去できません。 そのため固定ベクタのExcep_PrivilegedInst、Excep_UndefinedInst、Interrupt_NMI の内容を 0xfffff800に移動し、エンディアンレジスタ・固定ベクタと固定ベクタの処理関数を含むブロック0は消去しないようにして、ブロック255からブロック1までを消去・書き込みするようにしてみました。 Excep_PrivilegedInst、Excep_UndefinedInst、Interrupt_NMI はPDGが生成するInterupt_INTC.cファイルの内容をそのままにして、0xfffff800以降の番地に割り付けてあります。
これで動作しているように見えますが、このような方法をとって問題ないでしょうか?
もう一つ、消去・書き込みをするのにフラッシュAPI自身が使用する標準ライブラリがあるらしくて、これらを消去すると動作しないので、P領域にある標準ライブラリは全て 初期化時ROMからRAMへコピーするセクションに移しました。(_INITSCTは別)
このような方法も問題ないものでしょうか?
ROM書き換えは初めて行うので、不安になりお伺いする次第です。