ファームウェアのロードに失敗する。【デュアルバンク】【RX72N】

はじめまして。

以下のアプリケーションノートを参考に自分のアプリケーションにファームウェアアップデート機能を実装しようとしています。

RX ファミリ Flash モジュール、SCI モジュールとデュアルバンク機能を用いたファーム ウェアアップデートサンプルプログラム

4.3節までは手順通りいきましたが、4.4節デバッグでデバッグアイコンをクリックしてファイルをフラッシュにダウンロードしようとすると、以下の画像のエラーが出ます。

起動バンクとは逆のバンク(バンク1)へのロードに失敗しているようです。

4.3節で設定したデバッグ構成のStartupは以下の画像の通りです。

自分のアプリケーションに原因があるのかと思い、アプリケーションノートにあるRX72M用のサンプルを試しましたが同じエラーが出ました。(ターゲットCPUはRX72Nなのでサンプルに少し手を加えています。)

調べても同じような事例が出てこず、お手上げな状態です。

原因として何が考えられるのでしょうか。

ご存じの方いましたらアドバイスいただけると幸いです。

---

開発環境

ターゲットボード:アルファプロジェクト AP-RX72N-0A

ツールチェイン:Renesas CCRX v3.03.00

IDE:Renesas e2 studio 2021-04

Renesas Flash Programmer V3.08.02

  • NoMaYさん

    ハギです。

    解決策のご提示ありがとうございます。

    (A)の方法を試したところ上手くいきました。

    サンプルのvecttbl.cの以下の記述をコメントアウトし、そのビルド結果のファイルをバンク1にダウンロードしたところ上手くいきました。

    #pragma address __MDEreg     = 0xFE7F5D00
    #pragma address __OFS0reg    = 0xFE7F5D04
    #pragma address __OFS1reg    = 0xFE7F5D08
    #pragma address __TMINFreg   = 0xFE7F5D10
    #pragma address __BANKSELreg = 0xFE7F5D20
    #pragma address __SPCCreg    = 0xFE7F5D40
    #pragma address __TMEFreg    = 0xFE7F5D48
    #pragma address __OSIS1reg   = 0xFE7F5D50
    #pragma address __OSIS2reg   = 0xFE7F5D54
    #pragma address __OSIS3reg   = 0xFE7F5D58
    #pragma address __OSIS4reg   = 0xFE7F5D5C
    #pragma address __FAWreg     = 0xFE7F5D64
    #pragma address __ROMCODEreg = 0xFE7F5D70

    const uint32_t __MDEreg     = (BSP_PRV_MDE_VALUE & BSP_PRV_BANK_MODE_VALUE);
    const uint32_t __OFS0reg    = BSP_CFG_OFS0_REG_VALUE;
    const uint32_t __OFS1reg    = BSP_CFG_OFS1_REG_VALUE;
    const uint32_t __TMINFreg   = 0xffffffff;
    const uint32_t __BANKSELreg = BSP_PRV_START_BANK_VALUE;
    const uint32_t __SPCCreg    = 0xffffffff;
    const uint32_t __TMEFreg    = BSP_CFG_TRUSTED_MODE_FUNCTION;
    const uint32_t __OSIS1reg   = BSP_CFG_ID_CODE_LONG_1;
    const uint32_t __OSIS2reg   = BSP_CFG_ID_CODE_LONG_2;
    const uint32_t __OSIS3reg   = BSP_CFG_ID_CODE_LONG_3;
    const uint32_t __OSIS4reg   = BSP_CFG_ID_CODE_LONG_4;
    const uint32_t __FAWreg     = BSP_CFG_FAW_REG_VALUE;
    const uint32_t __ROMCODEreg = BSP_CFG_ROMCODE_REG_VALUE;

    (B)の方法についても試してみたいと思います。

    大変助かりました。ありがとうございました。

  • ハギさん、こんにちは。NoMaYです。

    連絡ありがとうございました。ルネサスさんの方でアプリケーションノートを改版する必要がありそうですね。

    >  サンプルのvecttbl.cの以下の記述をコメントアウトし、そのビルド結果のファイルをバンク1にダウンロードしたところ上手くいきました。

    ということですと、アプリケーションノートが発行された当時もオプション設定メモリデータはダウンロードプログラムに含まれていた、ということになりそうですね。そして、アプリケーションノートが発行された後、どこかの時点でe2 studioのエラーチェックが厳しくなって、アプリケーションノートのやり方が通用しなくなってしまっていた、ということになりそうですね。

  • NoMaYさん

    ハギです。

    先週から技術サポートの方にも同じ内容を問い合わせしておりましたが、昨日以下の回答をいただきました。


    Renesas e2 studio Version: 2021-04で仕様変更があったため、e2 studioのメニュー

    [実行]→[デバッグの構成]で開くデバッグ構成ダイアログのStartupタブにある初期化

    コマンド欄とコマンドを実行欄に、下記を設定いただけますでしょうか。

     ・初期化コマンド欄

          delete mem

           mem 0x00000000 0x100000000 rw nocache

     ・コマンドを実行欄

           mem auto


    上記対策でも動くことを確認しました。

    どこかの時点でe2 studioのエラーチェックが厳しくなって、アプリケーションノートのやり方が通用しなくなってしまっていた、ということになりそうですね。

    その通りでした。