評価ボードDK-S7G2をつかったセルフプログラミングについて

初めて投稿させていただきます。

外部フラッシュメモリをつかったセルフプログラミング(プログラムの書き換え処理)を検討しております。

当初は、内蔵フラッシュメモリ内のアプリケーション更新の事例(アプリケーションノート)を参考に、MMFを使って内蔵フラッシュで行おうと思っておりましたが、プログラムサイズの関係上断念しました。

外部フラッシュメモリにフラッシュローダーを使ってダウンロードを行い、ダウンロード完了した場合は、ダウンロードしたプログラムのスタートから起動させたい場合どのようなことをすればよいのかご存知の方がいらっしゃいましたらご教示ください。

  • わわいです
    ・その外部フラッシュがどういうシーケンスで書き換えするのか、そのフラッシュのデータシートで確認しましょう
    ・フラッシュの書き換え時は、そのフラッシュからのデータ読み出しはできなくなります
     なので、消去/書き換えプログラムは、そのフラッシュ以外のメモリ上で実行する必要があります
  • 返信ありがとうございます。
    消去/書き換えプログラムについては、内蔵フラッシュのほうで実行させようと思います。
    当方では今まで、プログラムの書き換えについては、専用モードでしかやったことがないためセルフプログラミングの手法についての知識がありません。
    一般的に皆さんはどのようにやられていらっしゃるのか教えていただけたら助かります。
  • わわいです
    外付けフラッシュであれば、そのフラッシュで決められた手順で書き換える必要があります
    それはフラッシュメモリのデータシートを見てその手順通りにアクセスするようコードを書きます。
    まあ、評価ボードに搭載されてるフラッシュなら、書換のサンプルプログラムは付属してそうですが。

    一般的にフラッシュメモリは
    ブロック消去>書き込み、の繰り返しとなります
    消去には数秒の単位で時間がかかるので、書き込みデータをどういうふうに取得するのか、工夫が必要となりますね
  • 返信ありがとうございます。
    ルネサスシナジーのアプリケーションノートに外部フラッシュメモリへのアクセスについての外部フラッシュの書き込みおよび消去のサンプルは例示されおりますので参考になりそうです。

    たとえば内蔵フラッシュに書き込まれたアプリケーションAで、USBをつかって外部フラッシュにアプリケーションBをダウンロード書き込みし、今度は、アプリケーションBで起動する。
    また同様にアプリケーションBを起動して、アプリケーションCを内蔵フラッシュにUSBでダウンロード書き込みしてして今度はアプリケーションCで動かす。といったことをしたいと考えております。わかりづらかったら申し訳ありません。
    こういった場合は、一般的にどういった手法をもちいるのかがよくわかっておりません。
    ベクタテーブルを動的に変更する?のかなということはなんとなくわかるのですが他にどういった処理が必要なのかご存知でしたらご教示いただけると助かります。
    漠然としたかきかたで、わかりづらいかもしれませんがよろしくお願いします。