USBホストフラッシュブートローダーの書き込みアドレス範囲エラーについて

先日、首題のブートローダーでお世話になったものです。

ご多忙のところ申し訳ございませんが、お知恵を貸して頂きたい内容が御座います。

 

USBホストフラッシュブートローダー自体のプロジェクト構成や書き込み処理については、先日のご指導もありまして構築ができております。

但し、実際に書き換えしたいmotファイルを「download.mot」という指定ファイル名にてUSBから書き換えしようとしますと、

以下R_Fl_Error(ERROR_PROGRAM_ADDRESS)にてアドレス範囲のエラーとなってしまいます。

 

 ファイル名: r_Flash_main.c 

 

 static Fl_API_SMPL_rtn_t R_Fl_Prg_WriteData(void)

 {

        /* **** Base address Check **** */
        if((fl_writing_data.addr < FL_START_WRITE_ADDRESS) ||
                       (fl_writing_data.addr > ( FL_END_WRITE_ADDRESS - 0x0FF))){
             /* error */
             R_Fl_Error(ERROR_PROGRAM_ADDRESS);
        }

                  以下記述省略

   }

 

こちらでは、fl_writing_data.addrが、0xfffc0000から256byteずつ増加していくのをデバッグにて確認。

0xFFFD7E00になると、次のループでアドレス番地が0xFFFE3F00となり、書き込み終端アドレスが格納されています。

更に次のループでエラー分岐に入り、アドレス範囲エラーとなってしまい、LED表示としては点滅状態になります、

 

プログラム容量は書き込み可能サイズ内であり、アドレス範囲が逸脱する原因を探っていますが、

特定ができておらず、どの様な原因が考えられますでしょうか?

 

 開発環境:CS+ CC-RL

   CPU  :RX621  ROM256Kbyte

  ICE  :E1

  書き込み対象プログラム容量:95Kbyte(mapファイルで表示させたROM容量から記載)

 

今回、製品のプログラムになるため、motファイルやmapファイルをネットワーク上に添付送信する事ができません、、、

勝手を申し上げますが、宜しくお願い致します。

Parents
  • すみません、、、
    自己解決しました。

    motファイルを見ていると、最終のS7レコード直前に0xFFFFA0アドレスへ、
    何かしらのプログラム設定が存在しておりました。

    ちなみに、このS3レコードで出力されていたのは、自動生成されているのだと思いますが、
    vecttbl.c内のID codeプログラムになり、0xFFFFFFA0アドレスにID値を設定する配列となります。

    この0xFFFFFFA0をブート処理しようとするものの、アドレス範囲が超えてしまう為、
    エラーとなっていたのが当方の現象でした。
    ご参考までに原因を記載致します。
Reply
  • すみません、、、
    自己解決しました。

    motファイルを見ていると、最終のS7レコード直前に0xFFFFA0アドレスへ、
    何かしらのプログラム設定が存在しておりました。

    ちなみに、このS3レコードで出力されていたのは、自動生成されているのだと思いますが、
    vecttbl.c内のID codeプログラムになり、0xFFFFFFA0アドレスにID値を設定する配列となります。

    この0xFFFFFFA0をブート処理しようとするものの、アドレス範囲が超えてしまう為、
    エラーとなっていたのが当方の現象でした。
    ご参考までに原因を記載致します。
Children
No Data