データフラッシュライブラリ Type4 PFDL_ERR_PARAMETER について

RL78/G13(R5F100MF) にて、データフラッシュライブラリ Type4を使用しています。

データフラッシュの容量が、8K のマイコンです。

仕様としては、ブロックイレース⇒データ書き込みを、1ブロック分のデータ書き込み完了時次のブロックを消去して順次書き込みする形としています。

問題は、0(相対アドレス0)と1(相対アドレス0x400)の2ブロックまではうまくいくのですが、ブロック#2 相対アドレス0x800 のブロック消去(PFDL_OK)し、書き込みコマンドを実行すると、なぜか”PFDL_ERR_PARAMETER”(パラメータのエラー) が返ってきてしまいます。

ブロック0/1がうまくいっているので、何か 2ブロック以降の相対アドレスが書き込めない状況になっていると思われます。API引数が、アドレスとバイト数、配列だけなので、0x800以降が無視されるような根本的な問題のような気もします。

設定など、思い当たるところがないので、行き詰っています。アドバイスをいただきたいと思い、投稿していますのでよろしくお願いします。

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

    自分で試して思ったのですけれども、以下のことを試して書き換えられるか確認して頂けませんか?

    (1) コード生成機能でデータフラッシュライブラリを使うだけのプロジェクトを作る(ウォッチドッグタイマも使わない)
    (2) 以下のzipファイルのCC-RL用サンプルのr_pfdl_sample_c.cをe2 studioのプロジェクトのsrcフォルダへコピーする
    (3) 同zipファイルのpfdl関連ファイルをe2 studioのプロジェクトへコピーする(今されている通りで構わないです)
    (4) e2 studioのsrcフォルダのr_main.cをビルドから除外する(main()がr_pfdl_sample_c.cと重複してしまうからです)
    (5) CC-RL用サンプルのr_pfdl_sample_c.cを以下のように変更する
    (6) ビルドしてダウンロードする
    (7) CC-RL用サンプルのr_pfdl_sample_c.cの終了箇所にブレークポイントを設定して実行する(以下の画面コピーを参照)
    (8) メモリウィンドウで0xF1800番地を確認する(以下の画面コピーを参照)

    RL78ファミリ データフラッシュライブラリ Type04 パッケージ Ver.2.00
    www.renesas.com/jp/ja/document/upr/data-flash-library-type04-package-ver200-rl78-family
    FDL_RL78_Type04_Installer_V200-doc-j.zip解凍後にインストーラを実行
    インストール後のFDL/CCRL_100/Sample/C/r_pfdl_sample_c.c

    e2 studioのプロジェクトのsrcフォルダへコピーしたCC-RL用サンプルのr_pfdl_sample_c.cの変更箇所(赤文字箇所)

    /* 基本データ */
    #define R_PFDL_SAM_BLOCK_SIZE   0x400l  /* 標準ブロック・サイズ               */
    #define R_PFDL_SAM_TARGET_BLOCK 2/*0*/       /* 書き込み開始ブロック(0x0:F1000H)   */
    #define R_PFDL_SAM_WRITE_SIZE   10      /* 書き込みデータサイズ               */
    #define R_PFDL_SAM_DREAD_OFSET  0x1800/*0x1000*/  /* 直接読み込みオフセット・アドレス   */

     

    /******************************************************************************
    * Outline           : hdwinit function
    * Include           : none
    * Declaration       : void hdwinit(void)
    * Description       : Initialization of the hardware.
    * Argument          : none
    * Return Value      : none
    * Calling Functions : start-up routine
    ******************************************************************************/
    void hdwinit_WHICH_IS_USED_WHEN_WITHOUT_CG( void )
    {
    。。。途中省略。。。
    }

     
    以下、e2 studioの画面コピーです。




     

  • NoMaYさん、いろいろ貴重なお時間にて調査いただきありがとうございました。m(__)m

    設定した内容をログを埋めながら調査を進めていたところ私のプログラムミスであることがわかりました。

    不具合内容的には、ブロック#2以降に限り、アドレスの処理ミスがあり、正常に動作できてませんでした。

    また、ソース修正後正常に全ブロック、全エリア 順次消去書き込みができる確認もできました。

    別途投稿にて、e2studio+CCRLにおいて、今後使用する方々のために、データフラッシュ を使うまでの足取りをまとめておきます

Reply
  • NoMaYさん、いろいろ貴重なお時間にて調査いただきありがとうございました。m(__)m

    設定した内容をログを埋めながら調査を進めていたところ私のプログラムミスであることがわかりました。

    不具合内容的には、ブロック#2以降に限り、アドレスの処理ミスがあり、正常に動作できてませんでした。

    また、ソース修正後正常に全ブロック、全エリア 順次消去書き込みができる確認もできました。

    別途投稿にて、e2studio+CCRLにおいて、今後使用する方々のために、データフラッシュ を使うまでの足取りをまとめておきます

Children
No Data