はじめまして。Giggsと申します。
RX72Mで、フラッシュメモリデータ管理モジュールFITを使用してデータフラッシュに書き込み/読み出ししようとしています。データ番号0に書き込むことが出来たので、続けてデータ番号1に書き込もうとしましたがうまくできません。書き込もうとすると「消去ブロックなしのため、データ更新処理実行不可能」になるので、ブロック消去しようとすると「無効ブロックなし」になります。データ番号0に書き込んでからデータ番号1に書き込む間で何か処理が必要でしょうか?
以上、宜しくお願い致します。
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]
Giggsさん、こんにちは。NoMaYです。すみません、最近のかふぇルネの投稿システムにはバグがあるらしくて、数値が伏字になってしまうことがあります。今回も頂いたリプライの一部が伏字になってしまっていました。(5)~(7)の数値を教えて頂けませんか?また、以下は、ひょっとして、コンパイラの最適化を掛けたままデバッグしていませんか?そうだとしたら、最適化を無しに変更してビルドし直してデバッグしてみて下さい。> 下記の値は今のところ(1)しか確認できていません...。> 値の確認方法を調べていますが...、経験が浅く、すみません。なんとか確認したいと思います。
本当だ。***になってますね...。(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()は抜けました。)
ご指摘の通り、r_datfrx_rx_config.hをデモプログラムと合わせたら書き込みできました。
理解が足りていませんでした。
書き込まれたデータを確認して理解を深めたいと思います。
本当に有難う御座いました。