お世話になります。以下の内容について、ご教示のほど、お願い致します。
SH4A 7780 CPU に FlashRom が接続されているボードで、EtherNetのポートがあり、
データ送受信が出来ております。
実現したいことは、EtherNetで別のプログラムをデータ受信し、
FlashRomへの消去/書込みのプログラムを作成したいのです。
動作としては、
1.ボードの起動時はFlashRomからプログラムを読込み、CPU動作を開始する。
2.EtherNetポートが動作してデータ通信を開始する。
3.ボードとEtherNetで接続されたPCなどから、変更したいプログラムをデータ送信する。
4.ボードはデータ受信後DDRメモリなどFlashRomでは無い所でCPUのプログラムを動作する。
5.FlashRomを消去してデータ受信した新たなプログラムをFlashRomへ書込む。
6.FlashRomへ書込みが終了したら、WDTなどでボードを再起動させる。
7.ボードの再起動後は、FlashRomに書込まれた新たなプログラムでCPU動作を開始する。
この様な事を実現したいのですが、上記4項のFlashRomではない場所でCPUのプログラムを
動作させるのが上手く行かない感じなのです。
XrossFinderでのデバックで、DDRメモリでプログラムを動作させると上手く動作する様なのです。
リリースプログラムで、flashRomからプログラムを動作させると、FalshRomの消去の動作は行われ
ますが、その後CPUがリセットされる様な感じでフリーズしてしまします。その後、ボードを再起動
させるとFalshRomの中身が消去されていてCPUが動作開始しません。
最初FlashRomから起動してCPUの動作が開始後に、DDRメモリなど別の場所でCPUのプログラムを
動作させる事が上手く出来れば、実現できるような気がしておりますが、アドバイスを頂けたら有難いです。
よろしくお願い致します。
わわいです フラッシュメモリは消去、書き換えの動作中は読み出しすることはできません。 なので、フラッシュ上でプログラムを実行させてフラッシュを書き換える操作をすると暴走します ということで、プログラム全体、(あるいはフラッシュ書き換えユニット)をRAM上に展開し、実行させるようにしないとダメです。 ということで、これを実現させるためには ・プログラムはRAM上で実行させることを前提として構築する ・生成したプログラムデータをフラッシュの特定領域に書き込むようにする ・上のプログラムをRAM上に展開、実行させるための、フラッシュ上で実行するブートローダを用意する が必要となりますね