仮想EEPROMについて

RX65N Envision Kit で開発をしています。

タッチパネル上から数字を入力し、それを記憶させたいのですがArduinoで言うEEPROMの様な記憶領域に電源OFF後も

残す方法が見つけられません。開発環境がGCCの為かr_vee_rxも表示されないのですが、どなたか良い策をお持ちでないでしょうか?

質問がアバウト過ぎてすみません。

ご教授、何卒よろしくお願い致します。

  • リューキィさん、こんにちは。NoMaYです。

    そのFITモジュールの存在は知らなかったのですが(もっとも全てのFITモジュールの内容を暗記しているわけでは無いですけれども)、その目的であれば、以下のスレッドのr_datfrx_rxモジュールが使えると思います。

    フラッシュメモリデータ管理モジュールFIT
    community-ja.renesas.com/cafe_rene/forums-groups/mcu-mpu/rx/f/forum5/7727/fit

    [追記]

    すみません、こちらの方も、まだ、最新のRX Driver Package V1.36でもGCC対応されていませんね。対応予定などをルネサスさんに問い合わせてみてはどうでしょう?書き換え回数が極端に多くなければ、上記のようなモジュールを使わなくても良いですが、ひょっとして、コードフラッシュとデータフラッシュの違いで、特にフラッシュメモリの書き換え回数の制限の違いとか、そういった知識もお持ちでは無いような気もしますけれども、そのあたりはどうでしょうか?

    アプリケーションノート RXファミリ RX Driver Package Ver.1.36
    R01AN6515JJ0136 Rev.1.36 Pages 12 Jul.26.22
    www.renesas.com/jp/ja/document/apn/rx-family-rx-driver-package-ver136
     

  • GCCに対応されたのが比較的最近なので、それより旧いモジュールは未対応になっているはずです。
    (r_vee_rx_v1.11.xml ファイルの頭の部分を書き換えればGCCプロジェクトに取り込むことも不可能ではないですが自分で色々直さなくてはならなくなります)


  • NoMaYさん、こんにちは。リューキィです。

    すみません。別の急務な作業に手を取られてログイン出来ていませんでした。

    ちなみに、r_flash_rxやr_flash_spiといったモジュールはあるのですが、これらでも対応可能でしょうか?

  • ほやさん、こんにちは。リューキィです。

    ご指導ありがとうございます!

    ちなみにどの様に書き換えたり直したりすれば良いのでしょうか?どこかにそういった資料があればありがたいですm(_ _)m

  • > ちなみにどの様に書き換えたり直したりすれば良いのでしょうか?
    GCCに対応しているFITモジュール(r_flash_rxとか)のファイルと比較してみれば分かります。

    モジュールをGCCに対応させるためにソースの変更も必要ですが、それについてもGCCに対応している他のモジュールを参考にすれば大体どこをどう書き換えれば良いかが見えて来るはずです。

    e² studioでダウンロードしたFITモジュールがどこに展開されているかはこの辺を見れば分かるかと。
    FAQ - ダウンロード済のFITモジュールを使用する方法
    https://ja-support.renesas.com/knowledgeBase/18375707

    > どこかにそういった資料があればありがたいですm(_ _)m
    こういう反則技が書かれた裏技大全は見たことがありません。

  • ほやさん

    ありがとうございます!

    やっぱり資料的な物は無いですよね・・・

    頂いたリンクでの方法でDL済みのFITモジュールの中にveeがあったので、少し試してみます!!

  • リューキィさん、こんにちは。NAKAといいます。

    RX65NならE2フラッシュ機能を使うのはダメでしょうか?

    タッチパネルから入力されたデータをE2フラッシュメモリに残して、電源の再投入後にE2フラッシュメモリから読みだせばいいようなきがします。

  • NAKAさん、こんにちは。リューキィです。

    ご指導ありがとうございます!!

    そんな機能があるんですね!それはどんなモジュールで可能でしょうか??

    全くの素人なので、知識が無くてすみません。

  • リューキィさん

    こんにちは、ルネサスの中の人です。

    NAKAさん、NoMaYさん、ほやさん、毎度どうもです。いつも新鮮な情報をいただきありがとうございます。

    さてRXマイコン内蔵フラッシュのR/W関連のソフトウェアを少し情報まとめてみました。過去経緯などあり整備が不完全で混乱が生じることがありすみません。

    まず、RXマイコンのソフトウェアは以下がトップページです。

    https://www.renesas.com/jp/ja/products/microcontrollers-microprocessors/rx-32-bit-performance-efficiency-mcus/software-tools/software

    RX Driver Packageというので、RXマイコンの周辺機能(タイマとかA/DとかIICとか)用のドライバソフトを周辺機能単位でモジュール化して包含しています。上記ページの中段くらいにある「FITモジュールリスト」というリンクから現在メンテナンス継続中のFITモジュールのリストが参照できます。

    https://www.renesas.com/jp/ja/software-tool/fit-modules-list

    この中で、「フラッシュメモリ(内蔵フラッシュ書き換え)」というのが基本部品となっております。RXマイコン内蔵フラッシュメモリへのデータ書き込み機能を単機能で提供します。ソースコードのフォルダ名が 「r_flash_rx」 となっているものです。

    この中で、「フラッシュメモリデータ管理モジュール」というのが応用部品となっております。上記基本部品のAPIを活用し、書き換え中の電源断によるデータ破損の復旧機構、データ書き込みブロックの平滑化による書き換え回数上限の引き上げ(ウェアレベリング)などが実装されています。ソースコードのフォルダ名が「r_datfrx_rx」となっているものです。

    それで残念ながらソースコードのフォルダ名が「r_vee_rx」となっているものは「r_datfrx_rx」と同じく「r_flash_rx」 の応用部品なのですが、2022年10月現在メンテナンスが出来ておりませんので最新RXマイコンに非対応となっておりご利用いただくのは非推奨となります。

    総合すると、試作目的なので電源断対策等は検討不要、であれば「r_flash_rx」 、量産目的なので電源断対策等の検討も必要、であれば「r_flash_rx」 +「r_datfrx_rx」の構成が推奨です。また、これらはサンプルコードですので不揮発性メモリの制御を得意とするソフトウェアベンダから「r_flash_rx」 +「r_datfrx_rx」に相当するソフトウェア部品を購入いただくことを検討するのも良いかと思います。

    またさらに「r_flash_rx」 等のサンプルを利用せず、RX65Nマイコンのユーザーズマニュアルを参照しながら、内蔵フラッシュメモリのコントローラのレジスタを操作するソフトウェアを自作する、という道も存在します。

    以上です

  • リューキィさん

    シェルティです、こんにちは。

    上記は一般情報でして、初心者さんですと、RX65N Envision Kitを使ってRX65Nマイコン内蔵フラッシュメモリを書き換える機能(NAKAさんが「E2フラッシュ機能」と仰った機能ですね)については、「r_flash_rx」のみで先ずは実機で確認されるのをお勧めします。具体的な手順を書きだしてみました。

    (1) e2 studio最新版をダウンロード: https://www.renesas.com/jp/ja/software-tool/e-studio

    (2) インストール時にRXマイコン関連のツール類を選択してインストール

    (3) e2 studioを起動し、新規プロジェクト作成でRX65N Envision Kitをボード選択で選択しプロジェクト作成(選択肢に出てこない場合はe2 studio画面上のダウンロードリンクを押してボード用データをダウンロード)

    (4) スマートコンフィグレータのコンポーネントタブで「r_flash_rx」をプロジェクトに登録

    (5) 「r_flash_rx」の設定でデータフラッシュ機能のソフトウェアを有効にする。

    (6) main()内でR_Flash_Open()をよび、R_FLASH_Write()で書き込む。0x00100000番地がデータフラッシュの先頭なので、とりあえずこの番地を指定し、uint32_t write_data = 0x12345678; とかの4バイトデータもあわせてR_FLASH_Write()に指定し書き込んでみる。R_FLASH_Write()のあとにwhile(1); を設置しストッパーにしておく。

    (7) e2 studio上でビルド、虫アイコンを押してデバッガ起動(このときにビルドしたソフトがマイコンに書き込まれます)、実行ボタンを押してソフトウェアを走らせる

    (8) ブレークするとwhile(1);でプログラムカウンタが止まっていると思うので、その状態でe2 studioのメモリウィンドウで0x00100000番地をメモリダンプしてみて、0x12345678が書き込めているかどうか確認する 

    R_FLASH_xxxxx() の各関数の使い方詳細は「r_flash_rx」のdocフォルダ内のPDFを参照してください。

    以下にもPDFを置いてあります。(というよりe2 studioは以下GitHub上のデータをダウンロードしてプロジェクト生成などを行っています)

    https://github.com/renesas/rx-driver-package/tree/master/source/r_flash_rx/r_flash_rx_vx.xx/r_flash_rx/doc/ja

    上記、記憶の範囲で書いているので何か細かい手順が書ききれていないかもしれません。不明点などありましたらまた書き込んでください。

    以上です