フラッシュメモリデータ管理モジュールFIT

はじめまして。Giggsと申します。

RX72Mで、フラッシュメモリデータ管理モジュールFITを使用してデータフラッシュに書き込み/読み出ししようとしています。
データ番号0に書き込むことが出来たので、続けてデータ番号1に書き込もうとしましたがうまくできません。
書き込もうとすると「消去ブロックなしのため、データ更新処理実行不可能」になるので、
ブロック消去しようとすると「無効ブロックなし」になります。
データ番号0に書き込んでからデータ番号1に書き込む間で何か処理が必要でしょうか?

以上、宜しくお願い致します。

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

    あと、別のアプローチとして確認したいのですけれど、「ほぼサンプルコードを使用」とのことですけど、どのような変更をされたのでしょうか?自分で試していない状態で書くのも何ですけれど、こんな感じでしょうか?(CS+では無くe2 studioなのはFITがそちら優先なので。)

    (1) e2 studioでデモプロジェクトを開いてRXスマートコンフィグレータ上でターゲットデバイスをRX72Mへ変更した

    or

    (2) e2 studioでRX72Mの新規プロジェクトを作成して必要なFITモジュールを追加してr_datfrx_rx_main.cを追加した

  • NoMaYさん、有難う御座います。

    変更点は以下の通りです。
    (1)CS+でRX72Mの新規プロジェクトを作成
    (2)スマート・コンフィグレータで必要なFITモジュールを追加
    (3)r_datfrx_rx_main.cを追加
    (4)r_flash_rx_config.hの「#define FLASH_CFG_DATA_FLASH_BGO (0)」を「#define FLASH_CFG_DATA_FLASH_BGO (1)」に変更
    (5)r_datfrx_rx_config.hの「#define FLASH_DM_CFG_DF_SIZE_NO0 (1)」を「#define FLASH_DM_CFG_DF_SIZE_NO0 (***)」に変更
    (6)r_datfrx_rx_config.hの「#define FLASH_DM_CFG_DF_SIZE_NO1 (1)」を「#define FLASH_DM_CFG_DF_SIZE_NO1 (***)」に変更
    (7)r_datfrx_rx_main.cの「#define TEST_BUFF_NUM (256)」を「#define TEST_BUFF_NUM (***)」に変更
    思考錯誤しながら、現状は以上の状態です。

    下記の値は今のところ(1)しか確認できていません...。
    値の確認方法を調べていますが...、経験が浅く、すみません。なんとか確認したいと思います。
    (1) g_flash_dm_handle->erase_block_num = 1
    (2) free
    (3) p_flash_dm_info->data_no
    (4) gc_dm_data_size[p_flash_dm_info->data_no]

Reply
  • NoMaYさん、有難う御座います。

    変更点は以下の通りです。
    (1)CS+でRX72Mの新規プロジェクトを作成
    (2)スマート・コンフィグレータで必要なFITモジュールを追加
    (3)r_datfrx_rx_main.cを追加
    (4)r_flash_rx_config.hの「#define FLASH_CFG_DATA_FLASH_BGO (0)」を「#define FLASH_CFG_DATA_FLASH_BGO (1)」に変更
    (5)r_datfrx_rx_config.hの「#define FLASH_DM_CFG_DF_SIZE_NO0 (1)」を「#define FLASH_DM_CFG_DF_SIZE_NO0 (***)」に変更
    (6)r_datfrx_rx_config.hの「#define FLASH_DM_CFG_DF_SIZE_NO1 (1)」を「#define FLASH_DM_CFG_DF_SIZE_NO1 (***)」に変更
    (7)r_datfrx_rx_main.cの「#define TEST_BUFF_NUM (256)」を「#define TEST_BUFF_NUM (***)」に変更
    思考錯誤しながら、現状は以上の状態です。

    下記の値は今のところ(1)しか確認できていません...。
    値の確認方法を調べていますが...、経験が浅く、すみません。なんとか確認したいと思います。
    (1) g_flash_dm_handle->erase_block_num = 1
    (2) free
    (3) p_flash_dm_info->data_no
    (4) gc_dm_data_size[p_flash_dm_info->data_no]

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

    すみません、最近のかふぇルネの投稿システムにはバグがあるらしくて、数値が伏字になってしまうことがあります。今回も頂いたリプライの一部が伏字になってしまっていました。(5)~(7)の数値を教えて頂けませんか?

    また、以下は、ひょっとして、コンパイラの最適化を掛けたままデバッグしていませんか?そうだとしたら、最適化を無しに変更してビルドし直してデバッグしてみて下さい。

    > 下記の値は今のところ(1)しか確認できていません...。
    > 値の確認方法を調べていますが...、経験が浅く、すみません。なんとか確認したいと思います。

  • NoMaYさん、有難う御座います。

    本当だ。***になってますね...。
    (5)~(7)はの値は全て「***」です。

    コンパイラの最適化の設定なんですね。
    最適化レベルを0にしたら値が出ました!

    データ番号0のとき
    (1) g_flash_dm_handle->erase_block_num = 3
    (2) free = 94
    (3) p_flash_dm_info->data_no = 0
    (4) gc_dm_data_size[p_flash_dm_info->data_no] = ***

    データ番号1のとき
    (1) g_flash_dm_handle->erase_block_num = 1
    (2) free = -12
    (3) p_flash_dm_info->data_no = 1
    (4) gc_dm_data_size[p_flash_dm_info->data_no] = ***

    g_flash_dm_handle->erase_block_numを遡ってみたりしていますが、イマイチわかりません...。

  • またですね...。

    ***は全て64です。

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

    試しに自分で(手持ちの事情でRX72Nですが)やり始めて気付いたのですが、デモプログラムのr_datfrx_rx_config.hとコード生成直後のそれとでは以下の画面コピーの違いがあります。この差分に対して、FLASH_DM_CFG_DF_SIZE_NO1とFLASH_DM_CFG_DF_SIZE_NO2だけ変更するというのは、少し気持ちが前へ進み過ぎている気がしたのです。他の定義も変更して(というか他の定義共々デモプログラムと同じにして)、r_datfrx_rx_main.cもデモプログラムのままにして試すのはどうでしょうか?(手元ではtestmain()は抜けました。)


     

  • NoMaYさん、有難う御座います。

    ご指摘の通り、r_datfrx_rx_config.hをデモプログラムと合わせたら書き込みできました。

    理解が足りていませんでした。

    書き込まれたデータを確認して理解を深めたいと思います。

    本当に有難う御座いました。