External Flash Definition Editor使用時のエラー

MCU:RX71M

e2studioを使用して、MCUの外部にある2つの並列16ビットコンポーネントからなる32ビットフラッシュROMにファームウェアを書き込むには、USD(User System Definition)ファイルが必要です。 USDファイルは、ルネサスWebサイトからExternal Flash Definition Editorツールをダウンロードすることで生成することができます。

External Flash Definition Editorツールを使用する場合、標準プログラム(Standered program)では2*16bitフラッシュ回路接続に対応しておらず、USDファイルを生成するためのカスタムプログラムの作成が必要です。

カスタムプログラムのサンプルプログラムがあり、これはHEWのプロジェクトファイルに.c .h .lib ファイルをコピーして、新たに作成したe2studioプロジェクトに格納したものです。

コンパイル時に以下のエラーが発生します。

E0562320:Section address overflowed out of range : "$ADDR_B_84080"

84080のアドレスはRXファミリーのIOアドレスなので、上記のようなエラーになります。 しかし、このアドレスは.cと.hのファイルでは使われておらず、.libのソースコードがなければ変更できない.libで使われていると推察されます。

プログラムのデバッグ中に外部フラッシュROMにファームウェアを書き込む必要がある場合の解決策を提示してください。

Parents
  • baobaoさん、こんにちは。NoMaYです。

    HEWでMAPファイルを詳細出力にしてビルドして以下が得られました。これはデバッグコンソールの入出力アドレスですね。なので、リンカのセクション設定でセクションを確保してやれば良いと思います。(今は昔よりチェックが厳しくなったのだと思われます。)

    SECTION=$ADDR_B_84080
    FILE=EFE_RX_lib
                                      00084080  00084087         8
      _C2E_0
                                      00084080         4   data ,g         0
      _C2E_1
                                      00084084         4   data ,g         0

    SECTION=$ADDR_B_84090
    FILE=EFE_RX_lib
                                      00084090  00084097         8
      _E2C_0
                                      00084090         4   data ,g         0
      _E2C_1
                                      00084094         4   data ,g         0

     
    以下、FITのBSPモジュールのlowlvl.cの抜粋です。

    /***************************************************************************************
    Macro definitions
    ***************************************************************************************/
    #define BSP_PRV_E1_DBG_PORT (*(volatile st_dbg_t     R_BSP_EVENACCESS_SFR *)0x84080)
    #define BSP_PRV_TXFL0EN     (0x00000100)          /* debug tx flow control bit */
    #define BSP_PRV_RXFL0EN     (0x00001000)          /* debug RX flow control bit */

    /***************************************************************************************
    Typedef definitions
    ***************************************************************************************/
    typedef struct
    {
        uint32_t   tx_data;     /* Debug Virtual Console TX data */
        char       wk1[12];     /* spacer */
        uint32_t   rx_data;     /* Debug Virtual Console RX data */
        char       wk2[44];     /* spacer */
        uint32_t   dbgstat;     /* Debug Virtual Console Status */
    } st_dbg_t;

     

Reply
  • baobaoさん、こんにちは。NoMaYです。

    HEWでMAPファイルを詳細出力にしてビルドして以下が得られました。これはデバッグコンソールの入出力アドレスですね。なので、リンカのセクション設定でセクションを確保してやれば良いと思います。(今は昔よりチェックが厳しくなったのだと思われます。)

    SECTION=$ADDR_B_84080
    FILE=EFE_RX_lib
                                      00084080  00084087         8
      _C2E_0
                                      00084080         4   data ,g         0
      _C2E_1
                                      00084084         4   data ,g         0

    SECTION=$ADDR_B_84090
    FILE=EFE_RX_lib
                                      00084090  00084097         8
      _E2C_0
                                      00084090         4   data ,g         0
      _E2C_1
                                      00084094         4   data ,g         0

     
    以下、FITのBSPモジュールのlowlvl.cの抜粋です。

    /***************************************************************************************
    Macro definitions
    ***************************************************************************************/
    #define BSP_PRV_E1_DBG_PORT (*(volatile st_dbg_t     R_BSP_EVENACCESS_SFR *)0x84080)
    #define BSP_PRV_TXFL0EN     (0x00000100)          /* debug tx flow control bit */
    #define BSP_PRV_RXFL0EN     (0x00001000)          /* debug RX flow control bit */

    /***************************************************************************************
    Typedef definitions
    ***************************************************************************************/
    typedef struct
    {
        uint32_t   tx_data;     /* Debug Virtual Console TX data */
        char       wk1[12];     /* spacer */
        uint32_t   rx_data;     /* Debug Virtual Console RX data */
        char       wk2[44];     /* spacer */
        uint32_t   dbgstat;     /* Debug Virtual Console Status */
    } st_dbg_t;

     

Children
  • NoMaYさん、こんにちは。

    ご回答ありがとうございます。組み込みは初めてなのでよくわかりませんですが、この問題を解決のため、どのようにセクションを確保しますか

    よろしくお願いいたします。

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

    そうでしたか。RXマイコンの開発環境も初めてになりますね。ユーザフォーラムにビルド出来るプロジェクトのファイル一式が投稿されていても良いような案件なのかも、とも考えるようになりましたので、一度試してzipファイルに固めて投稿してみます。(libファイルまで入れたら、ルネサスさんの中の人に怒られる?かな、、、)

    今日1日ほどお待ち下さい。


    すみません、まだ自分では調べ始めていないのですけれども、e2 studioでも使えます、というのは何かのWeb頁もしくはドキュメント、ユーザーズマニュアル/ヘルプで確認済みでしょうか?10年ほどそのままになっているものですので、気になっているのです。

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

    実は、CS+という開発環境があるのですが、HEWのプロジェクトを読み込む機能も備わっていて、それでくだんのサンプルプログラムを読み込んでビルドすると何事も無くビルド出来ますね。なので、セクション設定をどうのこうのするのでは無くて、昔と同レベルのエラーチェックしかしないようにする、という発想が正解な気がして来ました。

    あと、くだんのサンプルプログラムは必要に応じて改変した後、ビルド出来さえすれば良いわけですので、推測ですけれども、10年ほどそのままになっていても、ルネサスさんのサポート部門的には、CS+で開いてビルドして下さい、ということで済ませているのかも知れません。

    あと、CS+でビルドすると自動的にe2 studioで読み込むことが出来るプロジェクトファイルが生成されるのですけれども、それをe2 studioで読み込むことでも、何事も無くビルド出来ましたね。

    ですので、今しがた思い直し掛けていますのは、くだんのサンプルプログラムのフォルダツリーに上書き出来るようなフォルダ構成としておいて、CS+で変換した、CS+のプロジェクトファイル(mtpjファイル)とe2 studioで読み込むことが出来るプロジェクトファイル(rcpeファイル)をzipファイルに固めてみようか、という気がして来ています。

  • お疲れ様でした。ありがとうございます!

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

    以下のzipファイルに以下のファイルを固めました。くだんのサンプルプログラムのフォルダツリーに上書きして下さい。また、e2 studioでrcpeファイルを開く手順に関しては以下のWeb頁を参照して下さい。

    EFE_Custom_Program_Sample_RX_20230120.zip

    EFE_Custom_Program_Sample_RX/CUI/CUI.mtpj
    EFE_Custom_Program_Sample_RX/CUI/CUI.rcpe
    EFE_Custom_Program_Sample_RX/CUI/ProjectConvertInformation_CUI.txt
    EFE_Custom_Program_Sample_RX/JEDEC/JEDEC.mtpj
    EFE_Custom_Program_Sample_RX/JEDEC/JEDEC.rcpe
    EFE_Custom_Program_Sample_RX/JEDEC/ProjectConvertInformation_JEDEC.txt

     
    CS+からe² studioへの移行方法
    www.renesas.com/jp/ja/software-tool/migration-csplus-to-e2studio

    既存プロジェクトを変換してe² studioの新規プロジェクトを作成



    作成手順

    1. e² studioでメニューバーの[ファイル]、またはプロジェクト・エクスプローラの右クリックメニューから[インポート]を選択します。

       画像 e² studioで[インポート]を選択

    2. e² studio[インポート]ダイアログ内インポート先の選択で[Renesas CC-RX/CC-RL (CS+) プロジェクト]を選択します。
       (32ビット版のe² studioでは[Renesas共通プロジェクト・ファイル]を選択してください)

       画像 import_from_CSp_ja

    3. e² studio[インポート]ダイアログ内[ファイルの選択]で変換対象のCS+用プロジェクト・ファイル(*.rcpe)を指定します。

       画像 [ファイルの選択]

    4. e² studio[インポート]ダイアログの[ターゲットの選択]は、プロジェクト・ファイルが指定されると自動的に入力されます。[Debug Hardware]で使用するデバッガを選択後、[終了]ボタンでダイアログを終了します。

       画像 [終了]ボタンでダイアログを終了


  • NoMaYさん、

    ありがとうございます!