RL78/G14 データ・フラッシュ sequencer busy 状態でのPFDL_Close()実行について

はじめまして、yasuoと申します。

RL78/G14 のデータ・フラッシュに関してご教示ください。

 

マニュアル「データ・フラッシュ・ライブラリ Type04」の1.2項に 状態遷移図が載っており、

opened状態でPFDL_Execute(Erase)等の 実行後に状態が sequencer busyとなりますが、

このsequencer busy状態 でのPFDL_Close()の実行でフラッシュ・ライブラリを終了させる

ことは可能でしょうか?

 

マニュアルを見てますと、どうもopened状態でないと PFDL_Close()をコールしてはいけないと

自分は捉えているのですが・・・

 

この質問の意図は、電断検出にてデータ・フラッシュの書き込み制御を 諦めてフラッシュライブラリを終了させ、

即座にSTOPモードに入りたい場面があるためです。

 

よろしくお願いいたします。

Parents
  • わわいです
    電源断になるんであれば、フラッシュライブラリを終了させる必要はないのでは?
    どのみちイレーズ実行中の電源断ではどーあがいても異常終了にしかならないですから
  • わわいさん

    お返事ありがとうございます。

    RL78自身はスーパーキャパでマイコン自身の電源電圧を保持しているので

    内蔵SRAMまるごとバックアップして2,3日はデータが消失しないようにしています。

     

    ただ、極力マイコンの消費電力を抑えるために外部電源電圧低下をIRQ割り込みで

    検出したらSTOPモードに移行させるようにしています。

    このSTOPモードの移行にフラッシュ・ライブラリを終了させる必要があります。

     

    ちなみにデータ・フラッシュには機器の設定データを保存します。この設定データは、

    2,3日で消えると面倒な物で、設定データ自身の更新頻度もかなり低い為、

    内蔵データ・フラッシュに保存しようと考えておりました。

     

    データ・フラッシュの書き損じについては電源ON時にバックアップされている内蔵SRAMの

    内容を改めて書き直し、電源ONせずに2,3日以上経過して内蔵SRAMのデータが消失していたら、

    書き直しは諦めようと考えておりました。

  • わわいです
    そうなっているのであれば、電源断のイベントでフラグを立てるだけ、にしておいて、メイン処理では普通にフラッシュ処理を進め、イレーズなり書込みなりの処理が終了した区切りでSTOP処理をさせるようにします。
    わざわざ無理に処理を中断させてエラー終了させる必要もないでしょう
  • わわいです
    追記です
    スーパーキャパシタで電源を保持しているなら、電源断から、フラッシュのデータ書き込み処理を終わらせるだけの時間はじゅうぶんに確保できる、ということですよね?
    なら、上記のように電源断イベントではフラグを立てて、メイン処理で書込み処理が終わった時点でSTOPさせるようにすれば、フラッシュ書込み異常は起こりえなくなり、RAMのバックアップは不要になりますぜ
  • わわいさん
    お返事ありがとうございます。

    >そうなっているのであれば、電源断のイベントでフラグを立てるだけ、にしておいて、

    >メイン処理では普通にフラッシュ処理を進め、イレーズなり書込みなりの処理が終了し

    >た区切りでSTOP処理をさせるようにします。

    実はわわいさんの仰る通りの処理にしてあります。

    ただ、イレース(PFDL_Execute(Erase))の総合処理時間のMax時間が300ms程あるので、
    電源断からSTOPモードに移行するのに300ms以上かかってしまうのは時間的にちょっと長いと思い、

    BGOのイーレス実行中(sequencer busy状態)をPFDL_Close()で中断し、フラッシュライブラリを

    終了できれば良いなと思い今回の質問を投稿したしだいです。

  • Yasuoさん
    FSL_StandBy()関数を使えば消去処理を中断できますよ。(ステータス・チェック・ユーザ・モードで起動する必要あり)
    そのあとPFDL_Close()すれば正常なシーケンスになると思います。

    いきなりPFDL_Closeコールしてフラッシュシーケンサが止まれば、それでいいとは思いますけれども止まったかの確認ができませんし、close関数はシーケンサーを触らないと記載されているのでcloseではシーケンサーが止まっていない可能性があります。(電流を見ればBGOしてるか分かりますけど)

  • わわいです
    うーん、他に色々事情はあるとは思いますが、数百msさえ持ちこたえることができない、ってのはちと設計がおかしいんじゃないかと。
    何のためにバックアップしてるのか、ということから考え直さないといけないんじゃないかと思いますが。

    電源断でフラッシュ操作を確実に失敗させる、という実装をするんであれば、フラッシュは捨ててRAMのバックアップをきちんと行うようにするほうがいいんじゃないかと思いますねー
    #VBATTにリチウム電池でバックアップすれば年単位で保持できますわな
Reply
  • わわいです
    うーん、他に色々事情はあるとは思いますが、数百msさえ持ちこたえることができない、ってのはちと設計がおかしいんじゃないかと。
    何のためにバックアップしてるのか、ということから考え直さないといけないんじゃないかと思いますが。

    電源断でフラッシュ操作を確実に失敗させる、という実装をするんであれば、フラッシュは捨ててRAMのバックアップをきちんと行うようにするほうがいいんじゃないかと思いますねー
    #VBATTにリチウム電池でバックアップすれば年単位で保持できますわな
Children
No Data