はじめまして。Giggsと申します。
RX72Mで、フラッシュメモリデータ管理モジュールFITを使用してデータフラッシュに書き込み/読み出ししようとしています。データ番号0に書き込むことが出来たので、続けてデータ番号1に書き込もうとしましたがうまくできません。書き込もうとすると「消去ブロックなしのため、データ更新処理実行不可能」になるので、ブロック消去しようとすると「無効ブロックなし」になります。データ番号0に書き込んでからデータ番号1に書き込む間で何か処理が必要でしょうか?
以上、宜しくお願い致します。
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をデモプログラムと合わせたら書き込みできました。
理解が足りていませんでした。
書き込まれたデータを確認して理解を深めたいと思います。
本当に有難う御座いました。
はじめまして、SAM と申します。『書き込みできました。』ということでしたが、その後いかがでしょうか。私は RX72N を使っていますが、しばらく書き込むと書き込みができなくなります。Giggs さんと同様に書き込もうとすると「消去ブロックなしのため、データ更新処理実行不可能」になります。ここからが違っていて R_FLASH_DM_Erase() で FLASH_DM_FINISH_ERASE が返ってきたので、次は書き込めるのかなと思うと同じ状態になります。ルネサスに質問していますが、まだ回答はありません。フラッシュメモリデータ管理モジュールFIT について質問しているのが Giggs さんだけでしたのでこのような Reply をさせていただきました。ご迷惑でしたらすみません。
SAMさん、こんにちは。
少し前なので記憶が曖昧ですが、私の方はその後特に問題は起きていません。
一度書き込みができるようになってからは、書き込みができなくなったことはないと思います。
何か思い出したら、再度Replyします。
SAMさん、こんにちは。NoMaYです。このスレッドに関わっていましたので気になっているのですけれども、先日のGiggsさんのリプライ以降で何か状況に変わりはありましたでしょうか?(動いていましたよ、の返事の後に見直したら問題箇所が見付かった、ルネサスさんからなかなか回答が来なかったけれども、ようやく回答があって問題箇所が分かった、とか。)
NoMaYさん、こんにちは。途中経過です。ルネサスに xxx_config.h の内容を求められたのでr_datfrx_rx_config.h と r_flash_rx_config.h を添付し、説明文を添えることでそれに応じました。#define FLASH_CFG_CODE_FLASH_ENABLE (1)という内容に対して『・・・コードフラッシュメモリを書き換えることは想定しておりません。』と返してきたので、修正して動作確認しましたが、改善されなかったのでその旨を伝えました。他の設定については触れていませんでした。バンク切替にして動作させながらファームウェアアップデートしようと考えての設定なのですが以下の1文を付け加えました。『改めて r01an2184jj0480-rx-flash.pdf を読みましたが、書き換えコードをデーターフラッシュメモリーに置かなければ問題ないと思ったのですが如何でしょうか?』また報告します。SAM
SAMさん、こんにちは。NoMaYです。いえ、そういう目的であれば、このスレッドで扱ったr_datfrx_rxモジュールは不要ですよ。r_flash_rxモジュールでコードフラッシュを書き換えることが出来ますよ。(r_datfrx_rxモジュールが不要というより、ルネサスさんの返信とおり、r_datfrx_rxモジュールはコードフラッシュに対して使うように設計されたものでは無いです。)デュアルバンクでのコードフラッシュの書き換えについては、咄嗟に探して、以下のスレッドがあるのですけれども、参考にはならないでしょうか?ひょっとして、r_flash_rxモジュールで書き換え出来ることは分かっているけれども、それでも、r_datfrx_rxモジュールが持つ何かの特徴ゆえにを使おうとしているのですか?思うに、そのようなことであれば、別のレッドを立てるのが良さそうに思うのです。(ただ、その場合でも、私からのリプライも、r_datfrx_rxモジュールはコードフラッシュに対して使うように設計されたものでは無いのです、というのが前提になってしまうのですけれども。)RX66Nでデュアルバンク機能の起動バンク選択機能でのプログラム切り替えが上手くいかないcommunity-ja.renesas.com/cafe_rene/forums-groups/mcu-mpu/rx/f/forum5/8077/rx66nflash_demo_rskrxについてcommunity-ja.renesas.com/cafe_rene/forums-groups/mcu-mpu/rx/f/forum5/7949/flash_demo_rskrxr_flash_rx のサンプルについてcommunity-ja.renesas.com/cafe_rene/forums-groups/mcu-mpu/rx/f/forum5/7726/r_flash_rxデュアルバンク機能時のオブジェクトダウンロード方法とVECTRESETの割り当てについてcommunity-ja.renesas.com/cafe_rene/forums-groups/mcu-mpu/rx/f/forum5/7901/vectresetスマートコンフィグレータ使用時のブート領域、フラッシュ領域の分割方法についてcommunity-ja.renesas.com/cafe_rene/forums-groups/mcu-mpu/rx/f/forum5/7915/thread
SAMさん、こんにちは。NoMaYです。それとも、デュアルバンクでのコードフラッシュの書き換えだけでなく、プログラムとして、フラッシュメモリデータ管理モジュールによるデータフラッシュ書き換えも、両方扱うように作っていて、それでそういう設定になっていた、ということでしょうか、、、
NoWayさん、こんにちは。NoWayさんのおっしゃる通りです。パラメーターの保存にデーターフラッシュを使います。RX210 の時にいくつかのブロックに分けて格納していましたが、サイズが増えてブロックが複数に亘り、ブロックがずれて、痛い目にあったので DATFRX に飛びついたのです。(マクロを使えば良かったとは思ったのですが)デュアルバンクは、遠隔ファームウェアバックアップしたいなということで設定だけしていました。SAM
横から意見を述べて失礼します
Giggs said:ブロック消去しようとすると「無効ブロックなし」になります。
ということですが
ブロックを確保するAPIを何度も呼んでブロック確保しないのが原因ではないですか
ブロックはすぐに無くなってしまいます
イレースする前には十分なブロックを確保してからでないとエラーになります。