JP2004151944A - 不揮発性記憶装置へのデータの書き込み方法、プログラム、および装置、ならびに車載電子制御装置 - Google Patents
不揮発性記憶装置へのデータの書き込み方法、プログラム、および装置、ならびに車載電子制御装置 Download PDFInfo
- Publication number
- JP2004151944A JP2004151944A JP2002315672A JP2002315672A JP2004151944A JP 2004151944 A JP2004151944 A JP 2004151944A JP 2002315672 A JP2002315672 A JP 2002315672A JP 2002315672 A JP2002315672 A JP 2002315672A JP 2004151944 A JP2004151944 A JP 2004151944A
- Authority
- JP
- Japan
- Prior art keywords
- data
- storage means
- rewriting
- storage
- frequency
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Abstract
【課題】故障診断回数等を記録する自動車用制御装置の有する、書き換え回数に上限がある不揮発性記憶装置の取り替え回数を抑え、かつこの不揮発性記憶装置の容量の冗長性を抑える。
【解決手段】当初、AブロックとBブロックを備えたEEPROM3に書き込むデータのうち、書き換え頻度の高いデータをAブロックに、書き換え頻度の低いデータをBブロックに書き込み、書き換え頻度の高いデータのうち、最も書き換え頻度の高いデータの書き換え回数がEEPROM3の書き換え保証回数に達する前に、書き換え頻度の高いデータと書き換え頻度の低いデータを入れ替え、それ以後、書き換え頻度の高いデータをBブロックに、書き換え頻度の低いデータをAブロックに書き込む。
【選択図】 図6
【解決手段】当初、AブロックとBブロックを備えたEEPROM3に書き込むデータのうち、書き換え頻度の高いデータをAブロックに、書き換え頻度の低いデータをBブロックに書き込み、書き換え頻度の高いデータのうち、最も書き換え頻度の高いデータの書き換え回数がEEPROM3の書き換え保証回数に達する前に、書き換え頻度の高いデータと書き換え頻度の低いデータを入れ替え、それ以後、書き換え頻度の高いデータをBブロックに、書き換え頻度の低いデータをAブロックに書き込む。
【選択図】 図6
Description
【0001】
【発明の属する技術分野】
本発明は、自動車用制御装置等における不揮発性記憶装置へのデータの書き込み方法、プログラム、および装置に関するものである。
【0002】
【従来の技術】
従来、電気的に書き換え可能な不揮発性の記憶装置としてEEPROM(Electrically Erasable & Programable ROM)が広く用いられている。このEEPROMは、その記憶内容の書き換え回数に上限(例えば10万回)があり、この上限を超えて書き換えを行えば、書き込まれた記憶内容の信頼性は全く保証の限りでなくなる。したがって、書き換え回数が上限を超えないうちにEEPROMを新しいものに交換する等の処置が必要となる。
【0003】
例えば、自動車電子制御装置においては、CARB(カリフォルニア待機資源保護局)によるOBD(オンボードダイアグノスティック)2の法規に、RateBaseモニタ法があり、そのRateBaseモニタ法では、下記の式で定義されるモニタ頻度を継続的に記憶しておく必要がある。
【0004】
モニタ頻度=モニタリング実施回数/運転回数
なお、モニタ頻度は、故障診断を実施した頻度であり、触媒コンバータ、フューエルエバポレーションシステム、酸素センサ等といった複数の項目の診断についてそれぞれ存在する。そして、運転回数(以下、分母と記す)は、その項目について法規で定められた所定の走行条件が満たされたときにインクリメントされるデータである。また、モニタリング実施回数(以下、分子と記す)は、その項目について自動車メーカで定めた故障診断実施条件が満たされて、正常または異常の判定が終了した時点で、インクリメントされるデータである。このようなデータは、非常に書き換え頻度が高く、自動車電子制御装置の耐用年数内に書き換え回数が書き換え頻度を超えてしまう可能性がある。
【0005】
このような書き換え回数に上限がある不揮発性記憶装置の取り替え回数を極力抑える技術として、不揮発性記憶装置を複数のブロックに分割し、ブロック毎に書き換え回数を記憶する記憶部を持ち、当初一方のブロックに対してのみデータの書き換え行い、このブロックへの書き換え回数が所定値に達したら、書き換えを他のブロックに切り替える方法がある(例えば、特許文献1参照。)。
【0006】
【特許文献1】
特公平5−52000号公報
【0007】
【発明が解決しようとする課題】
しかし、上記技術は、書き換えの切り替えのために空き領域をあらかじめ確保しておく必要があるため、本来不揮発性記憶装置に書き込みたい全データ量の倍の不揮発性記憶装置の容量が必要となる。すなわち、不揮発性記憶装置の容量が冗長になるという問題がある。
【0008】
本発明は上記点に鑑みて、書き換え回数に上限がある不揮発性記憶装置の取り替え回数を抑え、かつこの不揮発性記憶装置の容量の冗長性を抑えることを目的とする。
【0009】
【課題を解決するための手段】
上記目的を達成するための請求項1に記載の発明は、当初、第1の記憶手段と第2の記憶手段を備えた電気的に書き換え可能な不揮発性記憶装置に書き込むデータのうち、書き換え頻度の高いデータを第1の記憶手段に、書き換え頻度の低いデータを第2の記憶手段に書き込む段階と、書き換え頻度の高いデータのうち、最も書き換え頻度の高いデータの書き換え回数が不揮発性記憶装置の書き換え保証回数を超える前に、書き換え頻度の高いデータを第2の記憶手段に、書き換え頻度の低いデータを第1の記憶手段に移し替える段階と、移し替える段階以後、書き換え頻度の高いデータを第2の記憶手段に、書き換え頻度の低いデータを第1の記憶手段に書き込む段階と、を備えた不揮発性記憶装置へのデータの書き込み方法である。
【0010】
これによって、不揮発性記憶装置に書き込むデータのうち、書き換え頻度の高いデータと書き換え頻度の低いデータは別の記憶手段に分けて書き込まれ、また、最も書き換え頻度の高いデータの書き換え回数が不揮発性記憶装置の書き換え保証回数を超える前に、それぞれの領域に書き込まれているデータが相互に移し替えられ、すなわち入れ替えられ、それ以後はその入れ替えられた状態で書き込みを行うようになる。したがって、入れ替え直前に第1の記憶手段が書き換え限度に近づいていても、第2の記憶手段は書き換え限度までには余裕があるので、書き換え頻度の高いデータを第2の記憶手段に入れ替えることによって、不揮発性記憶装置全体として書き換え保証回数を有効利用し、かつ無駄な記憶容量を節約することができるので、書き換え回数に上限がある不揮発性記憶装置の取り替え回数を抑え、かつこの不揮発性記憶装置の容量の冗長性を抑えることが可能となる。
【0011】
また、請求項2に記載の発明は、請求項1に記載の不揮発性記憶装置へのデータの書き込み方法において、移し替える段階は、第1および第2の記憶手段中のデータを、それぞれ移し替える先の記憶手段中の空き領域に書き込むことで、書き換え頻度の高いデータを第2の記憶手段に、書き換え頻度の低いデータを第1の記憶手段に移し替えることを特徴とする。
【0012】
これによって、入れ替えの際に不揮発性記憶装置中からデータの一部が一時的にも消えることがない。したがって、入れ替えの際に他の記憶装置にデータを一事待避させる必要がなく、入れ替え処理が簡易になる。また、仮に入れ替え処理が中断したとしても、EEPROMから必要な情報が欠落することはない。
【0013】
なお、空き領域とは、単に情報を有するデータが書き込まれていない領域に加え、その書き換えたとしても不揮発性記憶装置としては情報を何ら失うことはない領域をも含む概念である。
【0014】
また、請求項3に記載の発明は、請求項2に記載の不揮発性記憶装置へのデータの書き込み方法において、移し替える段階は、第1および第2の記憶手段中のデータを、1データ単位毎に順次それぞれ移し替える先の記憶手段中の1データ単位分の空き領域に書き込むことで、書き換え頻度の高いデータを第2の記憶手段に、書き換え頻度の低いデータを第1の記憶手段に移し替え、第1または第2の記憶手段中の1データ単位分の空き領域は、それぞれ第2または第1の記憶手段中のデータを1データ単位移し替えることで生成される領域であることを特徴とする請求項2に記載の不揮発性記憶装置へのデータの書き込み方法である。
【0015】
また、請求項4〜6の発明は、それぞれ請求項1〜3の発明をコンピュータプログラムとして実現する発明である。
【0016】
また、請求項7〜9の発明は、それぞれ請求項1〜3の発明を不揮発性記憶装置へのデータの書き込み装置として実現する発明である。
【0017】
また、請求項10に記載の発明は、車両に搭載された車載機器を制御し、所定の条件が満たされた場合に前記車載機器における診断対象の故障診断を実施する車載電子制御装置において、車両の1ドライビングサイクル中、前記車両が所定の運転状態となったときに第1の記憶手段と第2の記憶手段を備えた電気的に書き換え可能な不揮発性記憶装置に書き込まれている運転回数を1回分だけ更新した値に書き換えると共に、前記故障診断が実施されたときに前記不揮発性記憶装置に書き込まれている故障診断回数を1回分だけ更新した値に書き換える段階と、当初、前記不揮発性記憶装置に書き込むデータのうち、書き換え頻度の高いデータを前記第1の記憶手段に、書き換え頻度の低いデータを前記第2の記憶手段に書き込む段階と、前記書き換え頻度の高いデータのうち、最も書き換え頻度の高いデータの書き換え回数が前記不揮発性記憶装置の書き換え保証回数を超える前に、前記書き換え頻度の高いデータを前記第2の記憶手段に、前記書き換え頻度の低いデータを前記第1の記憶手段に移し替える段階と、前記移し替える段階以後、書き換え頻度の高いデータを前記第2の記憶手段に、書き換え頻度の低いデータを前記第1の記憶手段に書き込む段階と、を備えた不揮発性記憶装置へのデータの書き込み方法である。
【0018】
これによって、車載電子制御装置において、請求項1と同等の効果を得ることができる。
【0019】
また、請求項11の発明は、請求項10の発明を車載電子制御装置として実現する発明である。
【0020】
【発明の実施の形態】
図1に、本発明の一実施形態に係るエンジンECU(電子制御装置,以下の記載はECUとする)1の構成を示す。このエンジンECU1は、CPU2、EEPROM3、ROM4、およびRAM5を備えている。エンジンECU1は、車両のエンジンの状態を検知し、またエンジンの作動の制御を行うための装置である。またエンジンECU1は、前述したCARB・ODB2のRateBaseモニタ法で定められている故障診断対象項目の各々について、その項目の故障診断実施条件が成立した場合には、該当する項目についての故障診断処理を実施して正常または異常の判定を行う。そして更にエンジンECU1は、上記した故障診断対象項目について、前述したモニタ頻度を表す分子(モニタリング実施回数)と分母(運転回数)のデータを、EEPROM3を用いて継続的に保存、更新する。
【0021】
またこのエンジンECU1には、図示しないツールと呼ばれる外部診断装置を図示しないダイアグ用コネクタを介して接続可能となっている。そして工場、カーディーラ等における診断において、エンジンECU1は、ツールからの故障診断に関する出力要求に応じたデータ(例えば上記した分子、分母)をこのツールに出力するようになっている。
【0022】
CPU2は、書き換え不能な不揮発性メモリであるROM4に書き込まれているプログラムを読み出し、そのプログラムの処理内容を実行し、この実行の段階において必要があればEEPROM3および揮発性メモリであるRAM5に対して情報の読み出し/書き込みを行う。またCPU2は動作時に、イグニッション線を介してイグニッションキーの切り替わりを検知し、車速センサから車速情報の入力を受け、外気温センサから外気温の情報の入力を受け、また図示しない各種センサ類から、アイドル信号、クランク角等の車両に関する各種情報の入力を受ける。またCPU2は動作時に、必要に応じてエンジンの点火装置や噴射装置に制御信号を出力する。
【0023】
EEPROM3は、電気的に書き換え可能な不揮発性メモリである。図2に、このEEPROM3の記憶領域の構造を示す。このEEPROM3は絶対アドレスによって0番地からm番地まで分けられており、またこの記憶領域内に同じサイズの2つのブロック、すなわちAブロックとBブロックとを有している。例えば、絶対アドレス0番地からn番地まではAブロックとして割り当てられている。ただし、m、nはあらかじめ決められた整数であり、m≧2n+2である。このAブロックおよびBブロックの先頭アドレス部分には、後述するアドレス情報が書き込まれる。そして、Aブロックの先頭アドレス以降は、先頭アドレスに近い順にA[0]、A[1]、…、A[n]、というブロック指示アドレスが割り振られる。Bブロックの先頭アドレス以降も同様にB[0]、B[1]、…、B[n]、の順でブロック指示アドレスが割り振られる。このブロック指示アドレスは相対アドレスの一種である。
【0024】
このEEPROM3の各セルは、最大書き換え保証回数が10万回である。EEPROM3のある部分において書き換え回数がこの保証回数を超えると、書き込まれた記憶内容の信頼性は全く保証の限りでなくなる。
【0025】
本実施形態においては、ある後述する所定の時期になると、Aブロックに書き込まれているデータとBブロックに書き込まれているデータを入れ替える。すなわち、AブロックのデータをBブロックに、BブロックのデータをAブロックに移し替える。そしてそれ以降、移し替えられた場所において各データが書き換えられる。
【0026】
なお、「あるデータをEEPROM3のある領域に書き込む」という表現と「EEPROM3のある領域をあるデータに書き換える」という表現は、同じ動作の別の表現形態であって、「書き込む」と「書き換える」という表現の間には、技術上の差違はない。
【0027】
図3に、当初、すなわち出荷後後述するデータ入れ替え前のEEPROM3のA、Bブロック内のデータ構成を示す。
【0028】
各ブロック中、縦方向に並ぶスロットがブロック内の各ブロック指示アドレスに対応するデータ領域を示している。各ブロックの先頭番地にはアドレス情報が格納されている。このアドレス情報は、A、Bブロック間でデータの入れ替えを行うときに用いられる数値であり、当初は双方0となっている。
【0029】
各ブロックの先頭番地の次以降には、アドレスA[0]からA[n]まで、およびB[0]からB[n]までのデータ領域がある。各データ領域に書き込まれるデータのそれぞれを、1データ単位とする。入れ替えが行われる前は、アドレスA[0]、B[0]は空き状態となっている。すなわちA[0]、B[0]の値はデータが書き込まれていない初期状態、具体的にはゼロとなっている。またA[1]〜A[n−1]、B[1]〜B[n−1]までの領域に対しては、エンジンECU1の制御において必要なデータの書き込み/読み出しがCPU2によって行われる。
【0030】
当初Aブロックの当該番地に書き込まれるデータは、書き換えの頻度が高いものである。書き換え頻度が高いとは、EEPROM3の耐用年数内に書き換えられる回数が書き換え保証回数に近いことをいう。書き換え頻度が高いものとしては、例えば車両のイグニッションキーがオンとなる度に1加算された数値に書き換えれられるデータ、すなわちイグニッションキーのオン回数をカウントするデータ、イグニッションキーのオンの度に書き込まれる車両の走行距離、イグニッションキーのオン毎に1回は実行される可能性がある故障判定の実行回数等がある。
【0031】
上記した分子(故障診断実施回数)と分母(運転回数)のデータは、この書き換え頻度の高いデータである。なお、これら分母と分子は、両方共に、自動車のドライビングサイクル、例えばイグニッションスイッチがオンされてオフされるまでの間(すなわち、エンジンECU1に動作電源が投入されてその動作電源が遮断されるまでの1回の動作期間中)に、または「エンジン始動されて、その後エンジン停止されて、更に次のエンジン停止」までの間、1回だけインクリメントされるか、あるいはインクリメントされずにそのままの値を維持するかの何れかである。よって、各項目の分母と分子は、1インクリメントされると、その回の自動車の運転期間中では、それ以上値が更新されることはない。
【0032】
当初Bブロックの当該番地に書き込まれるデータは、書き換えの頻度が低いものである。書き換え頻度が低いとは、EEPROM3の耐用年数内に書き換えられる回数が書き換え保証回数にくらべて小さいことをいう。書き換え頻度が低いものとしては、例えばエンジンECU1の工場出荷時にのみ設定される車種情報、タイヤの交換時にしか変更しないタイヤのサイズ、工場での検査時にしか使用しない工場検査用データ等がある。
【0033】
また、当初Aブロックに書き込まれるデータのうち、最も書き換え頻度が高いものがエンジンECU1の設計時に決められている。最も書き換え頻度が高いものとしては、本実施形態では上記したイグニッションのオン回数である。この最も書き換え頻度が高いデータが当初書き込まれる先のアドレスの情報は、CPU2が実行するプログラム中に記録されている。以降、この最も書き換え頻度が高いデータが書き込まれる先のアドレスをA[mf]番地と記す。
【0034】
またA[n]には、A[mf]のデータが書き換えられた回数が記録されるようになっている。そしてBブロックのn番地には、Bブロック中で最も書き換え頻度が高いデータが書き込まれる。
【0035】
上記のEEPROM3に対してデータの読み出し/書き込み、および入れ替えを行う処理を含む、CPU2の全体的な処理を図4に示す。この処理は、エンジンECU1の起動後に開始される。なお、CPU2はこの処理と並行して、自らの処理によってA[mf]番地のデータが書き換えられることを検知し、検知するたびにA[n]に書き込まれている値を1増加させる。
【0036】
この処理中、本実施形態において最も特徴的となっているのは、ステップ230の入れ替え処理である。この入れ替え処理は、EEPROM3のA[mf]への書き込みが所定回数に達したとき等に実行される。まずこの入れ替え処理について先に説明する。図5に、この入れ替え処理の詳細を示す。
【0037】
入れ替え処理は、通常ステップ305から開始される。特別な場合に限り、ステップ340から開始されるが、この場合については後述する。
【0038】
ステップ305で入れ替え処理が始まると、CPU2はBブロックのアドレス情報を読み出し、この値を変数B_ADに代入する。なお、変数名B_AD等は、CPU2がRAM5内に格納するデータを識別するための名称である。
【0039】
次にステップ310で、A[B_AD+1]のデータを変数DATAに代入する(B_AD+1は、変数B_ADの値に1を加えたものを表す。)。そしてステップ320で、変数DATAの値をB[B_AD]に書き込む。例えば、通常は最初にステップ305が実行されるときにはB_ADは0なので、この場合ステップ310およびステップ320によって、A[1]のデータが当初空き領域であったB[0]に書き込まれる。
【0040】
次にステップ330で、B_AD+1をBブロックのアドレス情報の領域に書き込む。これによって、Bブロックアドレス情報の値が、ステップ305の時点から1だけ増える。
【0041】
次にステップ340でAブロックのアドレス情報を変数A_ADに代入する。そしてステップ350でB[A_AD+1]のデータを変数DATAに代入し、ステップ360で変数DATAの値をA[A_AD]に書き込む。例えば、通常は最初にステップ350が実行されるときにはB_ADは0なので、この場合ステップ350およびステップ360によって、B[1]のデータが空き領域であったA[0]に書き込まれる。
【0042】
次にステップ370で、A_AD+1をAブロックのアドレス情報の領域に書き込む。これによって、Aブロックアドレス情報の値が、ステップ340の時点から1だけ増える。
【0043】
A、Bブロックのアドレス情報の値が共に0であった場合にステップ305からステップ370を実行した後の、A、Bブロック内の状態を図6に示す。当初A[1]にあったデータDA(1)がB[0]に書き込まれており、当初B[1]にあったデータDB(1)がA[0]に書き込まれている。また、ブロックAアドレス情報、ブロックBアドレス情報は共に1となっている。A[1]、B[1]の領域内のデータは実際に消去されるわけではないが、それぞれB[1]、A[1]に複写されているので、A[1]、B[1]の領域には別のデータを書き込んでも、EEPROM3としては情報を何ら失わない状態となっている。すなわち、これらの領域は実質的に空き状態の領域、すなわち空き領域となっている。
【0044】
上記の例を一般化すると、ステップ305から370間での処理で、A、Bブロックのアドレス情報の値が共にi(iは非負整数)なら、当初A[i]にあったデータDA(i)がB[i−1]に書き込まれ、当初B[i]にあったデータDB(i)がA[i−1]に書き込まれ、A[i]およびB[i]の領域が空き状態となり、更にA、Bブロックのアドレス情報の値が1つ加算される。このとき、DA(i)、DB(i)が書き込まれる前のB[i−1]、A[i−1]は実質的に空き状態となっているので、上書きしてもEEPROM3から何らデータが失われることはない。
【0045】
ステップ370の後、処理はステップ380の判定処理に進む。この判定処理では、A_ADとB_ADが共にn−1であるか否かを判定する。この判定は、A、Bブロックのアドレス情報の値が共にnであるか否かの判定と同値である。
【0046】
A_ADとB_ADが共にn−1でなければ再度ステップ305から370までの処理が行われる。したがって、A、Bブロックのアドレス情報の値が共にnになるまで、ステップ305からステップ370までの処理が繰り返され、それぞれのブロックのデータDA(1)〜DA(n)、DB(1)〜DB(n)の全てが小さいアドレスから順次別ブロックの空き領域に書き込まれてゆく。
【0047】
これら書き込みが全て終了すると、ステップ380でA_ADとB_ADが共にn−1であると判定され、入れ替え処理は終了する。
【0048】
入れ替え処理終了後のEEPROM3のA、Bブロックの状態を図7に示す。当初B[1]〜B[n]にあったデータがそれぞれA[0]〜A[n−1]に移し替えられ、当初A[1]〜A[n]にあったデータがそれぞれB[0]〜B[n−1]に移し替えられ、A[n]、B[n]が空き領域となっている。
【0049】
このようなデータの入れ替えでは、ブロックA、B中のデータを、それぞれ移し替える先のブロック中の空き領域に書き込んでおり、入れ替えの際にEEPROM3中からデータの一部が一時的にも消えることがない。したがって、入れ替えの際にRAM5等の他の記憶装置にデータを一事待避させる必要がなく、入れ替え処理が簡易になる。
【0050】
またこの入れ替えは、A、Bブロック中のデータを、1データ単位毎に順次それぞれ移し替える先のブロック中の1データ単位分の空き領域に書き込むようになっており、またA、Bブロックの記憶手段中の1データ単位分の空き領域は、それぞれ相手のブロックであるB、Aブロックのデータを1データ単位移し替えることで生成される領域であると言える。
【0051】
A、Bブロックの間のデータの入れ替えは、正常に行われれば上記のようになる。しかし、データの入れ替えは必ず正常に終了するとは限らない。例えば、データの入れ替えの途中で、イグニッションオフ等のエンジンECU1への電源遮断によって入れ替え処理が中断する可能性がある。
【0052】
しかし、上記したように入れ替えの際にEEPROM3中からデータの一部が一時的にも消えることがないので、仮に電源遮断等で入れ替え処理が中断したとしても、EEPROM3から必要な情報が欠落することはない。
【0053】
本実施形態のエンジンECU1は、この入れ替え処理の中断があっても、その後エンジンECU1の起動後に入れ替え処理を再開できるようになっている。このための処理が、図4のステップ205に示される、エンジンECU1が起動するとすぐに実行される中断判定処理である。この中断判定処理の詳細を図8に示す。
【0054】
まず、中断判定処理が始まると、ステップ405でAブロックアドレス情報を変数A_ADに代入し、またBブロックアドレス情報を変数B_ADに代入する。
【0055】
次に、ステップ410でA_ADとB_ADが共に0、あるいは共にnであるか否かを判定する。共に0、あるいは共にnであれば中断判定は終了する。A、Bブロックアドレス情報が共に0であるということは、まだ入れ替え処理が始まっていないことを示し、またA、Bブロックアドレス情報が共にnであるということは、入れ替え処理が既に終了していることを示している。したがって、この場合は入れ替え処理が中断した状態にないので、中断再開の処理をする必要がなく、そのまま中断処理を終了する。
【0056】
ステップ410でA_ADとB_ADが共に0でも共にnでもない場合、入れ替えの中断があったとして、処理はステップ420に進む。ステップ420では、B_ADがA_ADより大きいか否かを判定する。図4において示したように、まずステップ330でBブロックアドレス情報が1加算され、その後ステップ370でAブロックアドレス情報が1加算される。したがって、中断したタイミングによってB_AD=A_AD、およびB_AD=A_AD+1>A_ADのいずれかの状態になっている。
【0057】
ステップ420でB_AD>A_ADであると判定されると処理はステップ430に進む。B_AD>A_AD=kとすると、この場合、入れ替えが中断したのは、ステップ330でBブロックアドレス情報がk+1に書き換えられてから、ステップ370でAブロックアドレス情報がk+1に書き換えられる前までの間である。このときは、DA(0)〜DA(k+1)、DB(0)〜DB(k)までのデータの移し替えは終了しているが、DB(k+1)のデータが移し替えられているか否かが不明である。また、DA(k+2)の移し替えが終了していないことも確かであるから、B[k+1]にDB(k+1)のデータが残っていることも確かである。
【0058】
そこで、DB(k+1)の移し替えの処理の最初、すなわちステップ340から入れ替えを再開することができる。したがって、ステップ430では図5のBブロックスタートから入れ替えを再開する。そして図5の処理に従って入れ替えが完了すると、中断判定は終了する。
【0059】
また、ステップ420でB_AD>A_ADでない、すなわちB_AD=A_ADであると判定されると、処理はステップ440に進む。B_AD=A_AD=kとすると、この場合、入れ替えが中断したのは、ステップ370でAブロックアドレス情報がkに書き換えられてから、ステップ330でBブロックアドレス情報がk+1に書き換えられる前までの間である。このときは、DA(0)〜DA(k)、DB(0)〜DB(k)までのデータの移し替えは終了しているが、DA(k+1)のデータが移し替えられているか否かが不明である。また、DB(k+2)の移し替えが終了していないことも確かであるから、A[k+1]にDA(k+1)のデータが残っていることも確かである。
【0060】
そこで、DA(k+1)の移し替えの処理の最初、すなわちステップ305から入れ替えを再開することができる。したがって、ステップ440では図5のAブロックスタートから入れ替えを再開する。そして図5の処理に従って入れ替えが完了すると、中断判定は終了する。
【0061】
中断判定が終了すると、CPU2の処理は図4のステップ210のプログラム処理に進む。プログラム処理とは、このエンジンECU1が行うエンジン管理、制御、およびのための処理である。この処理において、例えばクランク角等の情報にもとづいたエンジンの燃料噴射、点火制御が行われる。そしてこの処理内で、EEPROM3中のデータ内容が必要に応じて書き換えられる。例えば、エンジンECU1がイグニッションキーのオンを検知した場合に、イグニッションキーのオンの回数が書き込まれたアドレスのデータを読み出し、それに1を加算した値を再び当該アドレスに書き込む。
【0062】
また例えば、車両が走行状態と判断される所定の運転状態となったときに、車両の実質的な走行回数を記録する所定のアドレスの値を1加算して再度書き込む。すなわち、EEPROM3に書き込まれているこの値を1回分だけ更新した値に書き換える。
【0063】
また例えば、車両が故障診断の条件が満たされ、故障診断が実施されたときに、実施した故障診断に対応するEEPROM3の所定のアドレスの分子データの値を1加算して再度書き込む。すなわち、EEPROM3に書き込まれている故障診断回数を1回分だけ更新した値に書き換える。
【0064】
本実施形態においてはこのプログラム処理の詳細については記述しないが、処理の負荷という観点に立てば、実際にはこの処理およびステップ215の読み出し/書き込み処理がCPU2のメインルーチンであり、そのメインルーチンの周期ごとのステップ220〜230の入れ替えに関わる処理はサブルーチンであると言える。
【0065】
次に処理はステップ215に進み、EEPROM3に対する読み出し/書き込み処理を行う。読み出し/書き込み処理とは、エンジンECU1の制御において必要に応じてEEPROM3に対してデータの書き込みおよび読み出しを行う処理である。本実施形態においては、使用の途中においてデータの書き込み場所が入れ替わるので、それに対応して同じデータでも入れ替えの前と後で読み書きのためのアクセス先を変更しなければならない。
【0066】
この読み出し/書き込み処理の詳細を図9に示す。まずステップ510で、読み出し/書き込みを行いたいデータにアクセスするためのブロック(AまたはB)を変数RW_BLOCKに代入し、アドレスを変数RW_ADDRESSに代入する。ただし、ここで代入されるブロックおよびアドレスは、読み出し/書き込みの時期に関らず、常に当初入れ替えが行われる前に各データが格納されていた場所のものである。
【0067】
次に、ステップ520では、A、Bブロックのアドレス情報をそれぞれ変数A_ADおよび変数B_ADに代入する。
【0068】
次に、ステップ530では、A_ADとB_ADが共にnであるか否か、すなわち、データの入れ替えが終了しているか否かを判定する。
【0069】
共にnでない、すなわち入れ替えが行われていないなら、処理はステップ560に進み、そのままRW_BLOCKで指定されるブロックの、RW_ADDRESSアドレスにアクセスして読み出し/書き込みを行い、その後読み出し/書き込み処理を終了する。
【0070】
共にnである、すなわち入れ替えが終了しているなら、処理はステップ540に進み、RW_BLOCKがAならBに、BならAに置き換える。そしてステップ550で、RW_ADDRESSから1を減算する。これにより、RW_BLOCKおよびRW_ADDRESSは、アクセスしたいデータの入れ替え後のブロックおよびアドレスを指定するようになる。
【0071】
そして、ステップ560で、置き換えられたRW_BLOCKで指定されるブロックの、RW_ADDRESSアドレスにアクセスして読み出し/書き込みを行い、その後読み出し/書き込み処理を終了する。
【0072】
このようにすることで、ステップ520〜550の処理が、現在がデータの入れ替え前か入れ替え後かにもとづいて、アクセスするブロックおよびアドレスの変換を行うので、入れ替え前も入れ替え後も正しくデータにアクセスすることができる。また、CPU2のプログラムのその他の部分(例えばプログラム処理)は、入れ替えによるアクセス先の変化を考慮した処理をする必要がない。
【0073】
データの読み出し/書き込み処理が終了すると、処理は図4のステップ220に進む。
【0074】
ステップ220では、Aブロックの書き込み回数が規定値に到達したか否かの判定を行う。具体的にはAブロックの領域A[n]に書き込まれているデータの書き換え回数を参照し、それがプログラム中にあらかじめ設定されている規定値に達しているか否かの判定を行う。この規定値はEEPROM3のの書き換え保証回数を超えない所定数である。例えば、EEPROM3の書き換え保証回数が10万回で、当初Aブロックに書き込まれるデータのうち最も書き換え頻度の高いデータの生涯書き換え回数が18万回であるとすると、9万をこの規定値とする。ここで生涯書き換え回数とは、自動車の耐用年数(例えば20年)のうちにエンジンECU1の当該データが書き換えられるであろうと予想される回数のことである。
【0075】
また、ステップ225の判定処理は、A、Bブロックのアドレス情報が共にnであるか否か、すなわちデータの入れ替えが終了しているか否かを判定する。
【0076】
書き込み回数が既定値に達しており、かつA、Bブロックのアドレス情報が共にnでない場合に限り、処理はステップ220、225を経てステップ230に進む。すなわち、所定の書き換え時期に達しており、かつまだ書き換えが行われていないときに限り、先に詳述したステップ230の書き換え処理を行う。それ以外の場合は、処理は判定処理を経てステップ210のプログラム処理に戻る。
【0077】
以上のようなCPU2のプログラム実行処理によって、EEPROM3に書き込むデータのうち、書き換え頻度の高いデータと書き換え頻度の低いデータは別の記憶領域(A、Bブロック)に分けて書き込まれ、また、書き換え頻度の最も高いデータの書き換え回数がEEPROM3の書き換え保証回数を超えない所定数に達したとき、それぞれの領域に書き込まれているデータが入れ替えられ、それ以後はその入れ替えられた状態で書き込みを行うようになる。したがって、入れ替え直前にブロックAが書き換え限度に近づいていても、ブロックBは書き換え限度までには余裕があるので、書き換え頻度の高いデータをブロックBに入れ替えることによって、EEPROM3全体として書き換え保証回数を有効利用し、かつ無駄な記憶容量を節約することができる。ひいては、書き換え回数に上限がある不揮発性記憶装置の取り替え回数を抑え、かつこの不揮発性記憶装置の容量の冗長性を抑えることが可能となる。
【0078】
なお、本実施形態と本明細書の特許請求の範囲との対応関係として、Aブロックが第1の記憶手段に対応し、Bブロックが第2の記憶手段に対応する。
【0079】
また、エンジンECU1が、不揮発性記憶装置へのデータの書き込み装置を構成する。
【0080】
また、図9のステップ510→520→530→560という流れの処理が、当初、第1の記憶手段と第2の記憶手段を備えた電気的に書き換え可能な不揮発性記憶装置に書き込むデータのうち、書き換え頻度の高いデータを第1の記憶手段に、書き換え頻度の低いデータを第2の記憶手段に書き込む手段を構成する。
【0081】
また、図4のステップ230の処理、すなわち、図5のAブロックスタートから始まる処理が、書き換え頻度の高いデータのうち、最も書き換え頻度の高いデータの書き換え回数が不揮発性記憶装置の書き換え保証回数を超える前に、書き換え頻度の高いデータを第2の記憶手段に、書き換え頻度の低いデータを第1の記憶手段に移し替える手段を構成する。
【0082】
また、図9のステップ510→520→530→540→550→560という流れの処理が、移し替え以後、書き換え頻度の高いデータを第2の記憶手段に、書き換え頻度の低いデータを第1の記憶手段に書き込む手段を構成する。
【0083】
また、本実施形態においては、1つのEEPROMを2つのブロックに区別して、それぞれの間で書き換え頻度の高いデータと低いデータとの入れ替えを行っているが、例えば2つの同じ容量のEEPROMを用意し、その一方に書き換え頻度の高いデータを書き込み、他方に書き換え頻度の低いデータを書き込むようになっていれば、上記した実施形態において各ブロックを各EEPROMと読み替えることで、上記した実施形態と同等の効果を得ることができる。すなわち、この場合、2つのEEPROMのうち、当初書き換え頻度の高いデータを書き込む方のEEPROMが第1の記憶手段に対応し、他方が第2の記憶手段に対応する。
【0084】
また、図4のステップ210のプログラム処理が、車両の1ドライビングサイクル中、車両が所定の運転状態となったときに不揮発性記憶装置に書き込まれている運転回数を1回分だけ更新した値に書き換えると共に、故障診断が実施されたときに前記不揮発性記憶装置に書き込まれている故障診断回数を1回分だけ更新した値に書き換える手段を構成する。
【0085】
なお、本発明のデータの書き込みにおいては、最も書き換え頻度の高いデータの書き換え回数が不揮発性記憶装置の書き換え保証回数を超える前に、データの移し替えを行えばよいのであって、本実施形態のように、書き換え頻度の最も高いデータの書き換え回数が不揮発性記憶装置の書き換え保証回数を超えない所定数に達したとき、データの移し替えを行うことは、その1つの具体例にすぎない。
【0086】
また、本実施形態においては、ブロックAのデータ量とブロックBのデータ量とは同じであるが、必ずしも同じである必要はない。各ブロックが、書き換え頻度の高いデータの総量と書き換え頻度の低いデータの総量のうち大きい方と、その他のアドレス情報、書き換え情報等を書き込む十分な容量があれば足りる。
【0087】
また、本実施形態においては、最も高い書き換え頻度のデータが書き換えられる回数を記憶する領域(A[n]等)が確保されているが、必ずしもこの領域は必要ない。例えば、この最も高い書き換え頻度のデータが車両のイグニッションのオンの度に書き換えられるものであり、かつこのデータが車両のイグニッションオンの回数を示すものであれば、このデータの書き換え回数とデータの示す回数とが一致するので、このデータを参照することで、最も高い書き換え頻度のデータが書き換えられた回数がわかる。
【図面の簡単な説明】
【図1】本発明の実施形態に係るエンジンECU1の構成図である。
【図2】EEPROM3の記憶領域の構造図である。
【図3】データ入れ替え前のEEPROMのA、Bブロック内のデータ構成図である。
【図4】CPU2の全体的な処理を示すフローチャートである。
【図5】入れ替え処理の詳細を示すフローチャートである。
【図6】A、Bブロックのアドレス情報の値が共に0であった場合にステップ305からステップ370を実行した後のA、Bブロック内の状態を示す図である。
【図7】入れ替え処理終了後のA、Bブロックの状態を示す図である。
【図8】中断判定処理の詳細を示すフローチャートである。
【図9】読み出し/書き込み処理の詳細を示す図である。
【符号の説明】
1…エンジンECU、2…CPU、3…EEPROM、4…ROM、5…RAM。
【発明の属する技術分野】
本発明は、自動車用制御装置等における不揮発性記憶装置へのデータの書き込み方法、プログラム、および装置に関するものである。
【0002】
【従来の技術】
従来、電気的に書き換え可能な不揮発性の記憶装置としてEEPROM(Electrically Erasable & Programable ROM)が広く用いられている。このEEPROMは、その記憶内容の書き換え回数に上限(例えば10万回)があり、この上限を超えて書き換えを行えば、書き込まれた記憶内容の信頼性は全く保証の限りでなくなる。したがって、書き換え回数が上限を超えないうちにEEPROMを新しいものに交換する等の処置が必要となる。
【0003】
例えば、自動車電子制御装置においては、CARB(カリフォルニア待機資源保護局)によるOBD(オンボードダイアグノスティック)2の法規に、RateBaseモニタ法があり、そのRateBaseモニタ法では、下記の式で定義されるモニタ頻度を継続的に記憶しておく必要がある。
【0004】
モニタ頻度=モニタリング実施回数/運転回数
なお、モニタ頻度は、故障診断を実施した頻度であり、触媒コンバータ、フューエルエバポレーションシステム、酸素センサ等といった複数の項目の診断についてそれぞれ存在する。そして、運転回数(以下、分母と記す)は、その項目について法規で定められた所定の走行条件が満たされたときにインクリメントされるデータである。また、モニタリング実施回数(以下、分子と記す)は、その項目について自動車メーカで定めた故障診断実施条件が満たされて、正常または異常の判定が終了した時点で、インクリメントされるデータである。このようなデータは、非常に書き換え頻度が高く、自動車電子制御装置の耐用年数内に書き換え回数が書き換え頻度を超えてしまう可能性がある。
【0005】
このような書き換え回数に上限がある不揮発性記憶装置の取り替え回数を極力抑える技術として、不揮発性記憶装置を複数のブロックに分割し、ブロック毎に書き換え回数を記憶する記憶部を持ち、当初一方のブロックに対してのみデータの書き換え行い、このブロックへの書き換え回数が所定値に達したら、書き換えを他のブロックに切り替える方法がある(例えば、特許文献1参照。)。
【0006】
【特許文献1】
特公平5−52000号公報
【0007】
【発明が解決しようとする課題】
しかし、上記技術は、書き換えの切り替えのために空き領域をあらかじめ確保しておく必要があるため、本来不揮発性記憶装置に書き込みたい全データ量の倍の不揮発性記憶装置の容量が必要となる。すなわち、不揮発性記憶装置の容量が冗長になるという問題がある。
【0008】
本発明は上記点に鑑みて、書き換え回数に上限がある不揮発性記憶装置の取り替え回数を抑え、かつこの不揮発性記憶装置の容量の冗長性を抑えることを目的とする。
【0009】
【課題を解決するための手段】
上記目的を達成するための請求項1に記載の発明は、当初、第1の記憶手段と第2の記憶手段を備えた電気的に書き換え可能な不揮発性記憶装置に書き込むデータのうち、書き換え頻度の高いデータを第1の記憶手段に、書き換え頻度の低いデータを第2の記憶手段に書き込む段階と、書き換え頻度の高いデータのうち、最も書き換え頻度の高いデータの書き換え回数が不揮発性記憶装置の書き換え保証回数を超える前に、書き換え頻度の高いデータを第2の記憶手段に、書き換え頻度の低いデータを第1の記憶手段に移し替える段階と、移し替える段階以後、書き換え頻度の高いデータを第2の記憶手段に、書き換え頻度の低いデータを第1の記憶手段に書き込む段階と、を備えた不揮発性記憶装置へのデータの書き込み方法である。
【0010】
これによって、不揮発性記憶装置に書き込むデータのうち、書き換え頻度の高いデータと書き換え頻度の低いデータは別の記憶手段に分けて書き込まれ、また、最も書き換え頻度の高いデータの書き換え回数が不揮発性記憶装置の書き換え保証回数を超える前に、それぞれの領域に書き込まれているデータが相互に移し替えられ、すなわち入れ替えられ、それ以後はその入れ替えられた状態で書き込みを行うようになる。したがって、入れ替え直前に第1の記憶手段が書き換え限度に近づいていても、第2の記憶手段は書き換え限度までには余裕があるので、書き換え頻度の高いデータを第2の記憶手段に入れ替えることによって、不揮発性記憶装置全体として書き換え保証回数を有効利用し、かつ無駄な記憶容量を節約することができるので、書き換え回数に上限がある不揮発性記憶装置の取り替え回数を抑え、かつこの不揮発性記憶装置の容量の冗長性を抑えることが可能となる。
【0011】
また、請求項2に記載の発明は、請求項1に記載の不揮発性記憶装置へのデータの書き込み方法において、移し替える段階は、第1および第2の記憶手段中のデータを、それぞれ移し替える先の記憶手段中の空き領域に書き込むことで、書き換え頻度の高いデータを第2の記憶手段に、書き換え頻度の低いデータを第1の記憶手段に移し替えることを特徴とする。
【0012】
これによって、入れ替えの際に不揮発性記憶装置中からデータの一部が一時的にも消えることがない。したがって、入れ替えの際に他の記憶装置にデータを一事待避させる必要がなく、入れ替え処理が簡易になる。また、仮に入れ替え処理が中断したとしても、EEPROMから必要な情報が欠落することはない。
【0013】
なお、空き領域とは、単に情報を有するデータが書き込まれていない領域に加え、その書き換えたとしても不揮発性記憶装置としては情報を何ら失うことはない領域をも含む概念である。
【0014】
また、請求項3に記載の発明は、請求項2に記載の不揮発性記憶装置へのデータの書き込み方法において、移し替える段階は、第1および第2の記憶手段中のデータを、1データ単位毎に順次それぞれ移し替える先の記憶手段中の1データ単位分の空き領域に書き込むことで、書き換え頻度の高いデータを第2の記憶手段に、書き換え頻度の低いデータを第1の記憶手段に移し替え、第1または第2の記憶手段中の1データ単位分の空き領域は、それぞれ第2または第1の記憶手段中のデータを1データ単位移し替えることで生成される領域であることを特徴とする請求項2に記載の不揮発性記憶装置へのデータの書き込み方法である。
【0015】
また、請求項4〜6の発明は、それぞれ請求項1〜3の発明をコンピュータプログラムとして実現する発明である。
【0016】
また、請求項7〜9の発明は、それぞれ請求項1〜3の発明を不揮発性記憶装置へのデータの書き込み装置として実現する発明である。
【0017】
また、請求項10に記載の発明は、車両に搭載された車載機器を制御し、所定の条件が満たされた場合に前記車載機器における診断対象の故障診断を実施する車載電子制御装置において、車両の1ドライビングサイクル中、前記車両が所定の運転状態となったときに第1の記憶手段と第2の記憶手段を備えた電気的に書き換え可能な不揮発性記憶装置に書き込まれている運転回数を1回分だけ更新した値に書き換えると共に、前記故障診断が実施されたときに前記不揮発性記憶装置に書き込まれている故障診断回数を1回分だけ更新した値に書き換える段階と、当初、前記不揮発性記憶装置に書き込むデータのうち、書き換え頻度の高いデータを前記第1の記憶手段に、書き換え頻度の低いデータを前記第2の記憶手段に書き込む段階と、前記書き換え頻度の高いデータのうち、最も書き換え頻度の高いデータの書き換え回数が前記不揮発性記憶装置の書き換え保証回数を超える前に、前記書き換え頻度の高いデータを前記第2の記憶手段に、前記書き換え頻度の低いデータを前記第1の記憶手段に移し替える段階と、前記移し替える段階以後、書き換え頻度の高いデータを前記第2の記憶手段に、書き換え頻度の低いデータを前記第1の記憶手段に書き込む段階と、を備えた不揮発性記憶装置へのデータの書き込み方法である。
【0018】
これによって、車載電子制御装置において、請求項1と同等の効果を得ることができる。
【0019】
また、請求項11の発明は、請求項10の発明を車載電子制御装置として実現する発明である。
【0020】
【発明の実施の形態】
図1に、本発明の一実施形態に係るエンジンECU(電子制御装置,以下の記載はECUとする)1の構成を示す。このエンジンECU1は、CPU2、EEPROM3、ROM4、およびRAM5を備えている。エンジンECU1は、車両のエンジンの状態を検知し、またエンジンの作動の制御を行うための装置である。またエンジンECU1は、前述したCARB・ODB2のRateBaseモニタ法で定められている故障診断対象項目の各々について、その項目の故障診断実施条件が成立した場合には、該当する項目についての故障診断処理を実施して正常または異常の判定を行う。そして更にエンジンECU1は、上記した故障診断対象項目について、前述したモニタ頻度を表す分子(モニタリング実施回数)と分母(運転回数)のデータを、EEPROM3を用いて継続的に保存、更新する。
【0021】
またこのエンジンECU1には、図示しないツールと呼ばれる外部診断装置を図示しないダイアグ用コネクタを介して接続可能となっている。そして工場、カーディーラ等における診断において、エンジンECU1は、ツールからの故障診断に関する出力要求に応じたデータ(例えば上記した分子、分母)をこのツールに出力するようになっている。
【0022】
CPU2は、書き換え不能な不揮発性メモリであるROM4に書き込まれているプログラムを読み出し、そのプログラムの処理内容を実行し、この実行の段階において必要があればEEPROM3および揮発性メモリであるRAM5に対して情報の読み出し/書き込みを行う。またCPU2は動作時に、イグニッション線を介してイグニッションキーの切り替わりを検知し、車速センサから車速情報の入力を受け、外気温センサから外気温の情報の入力を受け、また図示しない各種センサ類から、アイドル信号、クランク角等の車両に関する各種情報の入力を受ける。またCPU2は動作時に、必要に応じてエンジンの点火装置や噴射装置に制御信号を出力する。
【0023】
EEPROM3は、電気的に書き換え可能な不揮発性メモリである。図2に、このEEPROM3の記憶領域の構造を示す。このEEPROM3は絶対アドレスによって0番地からm番地まで分けられており、またこの記憶領域内に同じサイズの2つのブロック、すなわちAブロックとBブロックとを有している。例えば、絶対アドレス0番地からn番地まではAブロックとして割り当てられている。ただし、m、nはあらかじめ決められた整数であり、m≧2n+2である。このAブロックおよびBブロックの先頭アドレス部分には、後述するアドレス情報が書き込まれる。そして、Aブロックの先頭アドレス以降は、先頭アドレスに近い順にA[0]、A[1]、…、A[n]、というブロック指示アドレスが割り振られる。Bブロックの先頭アドレス以降も同様にB[0]、B[1]、…、B[n]、の順でブロック指示アドレスが割り振られる。このブロック指示アドレスは相対アドレスの一種である。
【0024】
このEEPROM3の各セルは、最大書き換え保証回数が10万回である。EEPROM3のある部分において書き換え回数がこの保証回数を超えると、書き込まれた記憶内容の信頼性は全く保証の限りでなくなる。
【0025】
本実施形態においては、ある後述する所定の時期になると、Aブロックに書き込まれているデータとBブロックに書き込まれているデータを入れ替える。すなわち、AブロックのデータをBブロックに、BブロックのデータをAブロックに移し替える。そしてそれ以降、移し替えられた場所において各データが書き換えられる。
【0026】
なお、「あるデータをEEPROM3のある領域に書き込む」という表現と「EEPROM3のある領域をあるデータに書き換える」という表現は、同じ動作の別の表現形態であって、「書き込む」と「書き換える」という表現の間には、技術上の差違はない。
【0027】
図3に、当初、すなわち出荷後後述するデータ入れ替え前のEEPROM3のA、Bブロック内のデータ構成を示す。
【0028】
各ブロック中、縦方向に並ぶスロットがブロック内の各ブロック指示アドレスに対応するデータ領域を示している。各ブロックの先頭番地にはアドレス情報が格納されている。このアドレス情報は、A、Bブロック間でデータの入れ替えを行うときに用いられる数値であり、当初は双方0となっている。
【0029】
各ブロックの先頭番地の次以降には、アドレスA[0]からA[n]まで、およびB[0]からB[n]までのデータ領域がある。各データ領域に書き込まれるデータのそれぞれを、1データ単位とする。入れ替えが行われる前は、アドレスA[0]、B[0]は空き状態となっている。すなわちA[0]、B[0]の値はデータが書き込まれていない初期状態、具体的にはゼロとなっている。またA[1]〜A[n−1]、B[1]〜B[n−1]までの領域に対しては、エンジンECU1の制御において必要なデータの書き込み/読み出しがCPU2によって行われる。
【0030】
当初Aブロックの当該番地に書き込まれるデータは、書き換えの頻度が高いものである。書き換え頻度が高いとは、EEPROM3の耐用年数内に書き換えられる回数が書き換え保証回数に近いことをいう。書き換え頻度が高いものとしては、例えば車両のイグニッションキーがオンとなる度に1加算された数値に書き換えれられるデータ、すなわちイグニッションキーのオン回数をカウントするデータ、イグニッションキーのオンの度に書き込まれる車両の走行距離、イグニッションキーのオン毎に1回は実行される可能性がある故障判定の実行回数等がある。
【0031】
上記した分子(故障診断実施回数)と分母(運転回数)のデータは、この書き換え頻度の高いデータである。なお、これら分母と分子は、両方共に、自動車のドライビングサイクル、例えばイグニッションスイッチがオンされてオフされるまでの間(すなわち、エンジンECU1に動作電源が投入されてその動作電源が遮断されるまでの1回の動作期間中)に、または「エンジン始動されて、その後エンジン停止されて、更に次のエンジン停止」までの間、1回だけインクリメントされるか、あるいはインクリメントされずにそのままの値を維持するかの何れかである。よって、各項目の分母と分子は、1インクリメントされると、その回の自動車の運転期間中では、それ以上値が更新されることはない。
【0032】
当初Bブロックの当該番地に書き込まれるデータは、書き換えの頻度が低いものである。書き換え頻度が低いとは、EEPROM3の耐用年数内に書き換えられる回数が書き換え保証回数にくらべて小さいことをいう。書き換え頻度が低いものとしては、例えばエンジンECU1の工場出荷時にのみ設定される車種情報、タイヤの交換時にしか変更しないタイヤのサイズ、工場での検査時にしか使用しない工場検査用データ等がある。
【0033】
また、当初Aブロックに書き込まれるデータのうち、最も書き換え頻度が高いものがエンジンECU1の設計時に決められている。最も書き換え頻度が高いものとしては、本実施形態では上記したイグニッションのオン回数である。この最も書き換え頻度が高いデータが当初書き込まれる先のアドレスの情報は、CPU2が実行するプログラム中に記録されている。以降、この最も書き換え頻度が高いデータが書き込まれる先のアドレスをA[mf]番地と記す。
【0034】
またA[n]には、A[mf]のデータが書き換えられた回数が記録されるようになっている。そしてBブロックのn番地には、Bブロック中で最も書き換え頻度が高いデータが書き込まれる。
【0035】
上記のEEPROM3に対してデータの読み出し/書き込み、および入れ替えを行う処理を含む、CPU2の全体的な処理を図4に示す。この処理は、エンジンECU1の起動後に開始される。なお、CPU2はこの処理と並行して、自らの処理によってA[mf]番地のデータが書き換えられることを検知し、検知するたびにA[n]に書き込まれている値を1増加させる。
【0036】
この処理中、本実施形態において最も特徴的となっているのは、ステップ230の入れ替え処理である。この入れ替え処理は、EEPROM3のA[mf]への書き込みが所定回数に達したとき等に実行される。まずこの入れ替え処理について先に説明する。図5に、この入れ替え処理の詳細を示す。
【0037】
入れ替え処理は、通常ステップ305から開始される。特別な場合に限り、ステップ340から開始されるが、この場合については後述する。
【0038】
ステップ305で入れ替え処理が始まると、CPU2はBブロックのアドレス情報を読み出し、この値を変数B_ADに代入する。なお、変数名B_AD等は、CPU2がRAM5内に格納するデータを識別するための名称である。
【0039】
次にステップ310で、A[B_AD+1]のデータを変数DATAに代入する(B_AD+1は、変数B_ADの値に1を加えたものを表す。)。そしてステップ320で、変数DATAの値をB[B_AD]に書き込む。例えば、通常は最初にステップ305が実行されるときにはB_ADは0なので、この場合ステップ310およびステップ320によって、A[1]のデータが当初空き領域であったB[0]に書き込まれる。
【0040】
次にステップ330で、B_AD+1をBブロックのアドレス情報の領域に書き込む。これによって、Bブロックアドレス情報の値が、ステップ305の時点から1だけ増える。
【0041】
次にステップ340でAブロックのアドレス情報を変数A_ADに代入する。そしてステップ350でB[A_AD+1]のデータを変数DATAに代入し、ステップ360で変数DATAの値をA[A_AD]に書き込む。例えば、通常は最初にステップ350が実行されるときにはB_ADは0なので、この場合ステップ350およびステップ360によって、B[1]のデータが空き領域であったA[0]に書き込まれる。
【0042】
次にステップ370で、A_AD+1をAブロックのアドレス情報の領域に書き込む。これによって、Aブロックアドレス情報の値が、ステップ340の時点から1だけ増える。
【0043】
A、Bブロックのアドレス情報の値が共に0であった場合にステップ305からステップ370を実行した後の、A、Bブロック内の状態を図6に示す。当初A[1]にあったデータDA(1)がB[0]に書き込まれており、当初B[1]にあったデータDB(1)がA[0]に書き込まれている。また、ブロックAアドレス情報、ブロックBアドレス情報は共に1となっている。A[1]、B[1]の領域内のデータは実際に消去されるわけではないが、それぞれB[1]、A[1]に複写されているので、A[1]、B[1]の領域には別のデータを書き込んでも、EEPROM3としては情報を何ら失わない状態となっている。すなわち、これらの領域は実質的に空き状態の領域、すなわち空き領域となっている。
【0044】
上記の例を一般化すると、ステップ305から370間での処理で、A、Bブロックのアドレス情報の値が共にi(iは非負整数)なら、当初A[i]にあったデータDA(i)がB[i−1]に書き込まれ、当初B[i]にあったデータDB(i)がA[i−1]に書き込まれ、A[i]およびB[i]の領域が空き状態となり、更にA、Bブロックのアドレス情報の値が1つ加算される。このとき、DA(i)、DB(i)が書き込まれる前のB[i−1]、A[i−1]は実質的に空き状態となっているので、上書きしてもEEPROM3から何らデータが失われることはない。
【0045】
ステップ370の後、処理はステップ380の判定処理に進む。この判定処理では、A_ADとB_ADが共にn−1であるか否かを判定する。この判定は、A、Bブロックのアドレス情報の値が共にnであるか否かの判定と同値である。
【0046】
A_ADとB_ADが共にn−1でなければ再度ステップ305から370までの処理が行われる。したがって、A、Bブロックのアドレス情報の値が共にnになるまで、ステップ305からステップ370までの処理が繰り返され、それぞれのブロックのデータDA(1)〜DA(n)、DB(1)〜DB(n)の全てが小さいアドレスから順次別ブロックの空き領域に書き込まれてゆく。
【0047】
これら書き込みが全て終了すると、ステップ380でA_ADとB_ADが共にn−1であると判定され、入れ替え処理は終了する。
【0048】
入れ替え処理終了後のEEPROM3のA、Bブロックの状態を図7に示す。当初B[1]〜B[n]にあったデータがそれぞれA[0]〜A[n−1]に移し替えられ、当初A[1]〜A[n]にあったデータがそれぞれB[0]〜B[n−1]に移し替えられ、A[n]、B[n]が空き領域となっている。
【0049】
このようなデータの入れ替えでは、ブロックA、B中のデータを、それぞれ移し替える先のブロック中の空き領域に書き込んでおり、入れ替えの際にEEPROM3中からデータの一部が一時的にも消えることがない。したがって、入れ替えの際にRAM5等の他の記憶装置にデータを一事待避させる必要がなく、入れ替え処理が簡易になる。
【0050】
またこの入れ替えは、A、Bブロック中のデータを、1データ単位毎に順次それぞれ移し替える先のブロック中の1データ単位分の空き領域に書き込むようになっており、またA、Bブロックの記憶手段中の1データ単位分の空き領域は、それぞれ相手のブロックであるB、Aブロックのデータを1データ単位移し替えることで生成される領域であると言える。
【0051】
A、Bブロックの間のデータの入れ替えは、正常に行われれば上記のようになる。しかし、データの入れ替えは必ず正常に終了するとは限らない。例えば、データの入れ替えの途中で、イグニッションオフ等のエンジンECU1への電源遮断によって入れ替え処理が中断する可能性がある。
【0052】
しかし、上記したように入れ替えの際にEEPROM3中からデータの一部が一時的にも消えることがないので、仮に電源遮断等で入れ替え処理が中断したとしても、EEPROM3から必要な情報が欠落することはない。
【0053】
本実施形態のエンジンECU1は、この入れ替え処理の中断があっても、その後エンジンECU1の起動後に入れ替え処理を再開できるようになっている。このための処理が、図4のステップ205に示される、エンジンECU1が起動するとすぐに実行される中断判定処理である。この中断判定処理の詳細を図8に示す。
【0054】
まず、中断判定処理が始まると、ステップ405でAブロックアドレス情報を変数A_ADに代入し、またBブロックアドレス情報を変数B_ADに代入する。
【0055】
次に、ステップ410でA_ADとB_ADが共に0、あるいは共にnであるか否かを判定する。共に0、あるいは共にnであれば中断判定は終了する。A、Bブロックアドレス情報が共に0であるということは、まだ入れ替え処理が始まっていないことを示し、またA、Bブロックアドレス情報が共にnであるということは、入れ替え処理が既に終了していることを示している。したがって、この場合は入れ替え処理が中断した状態にないので、中断再開の処理をする必要がなく、そのまま中断処理を終了する。
【0056】
ステップ410でA_ADとB_ADが共に0でも共にnでもない場合、入れ替えの中断があったとして、処理はステップ420に進む。ステップ420では、B_ADがA_ADより大きいか否かを判定する。図4において示したように、まずステップ330でBブロックアドレス情報が1加算され、その後ステップ370でAブロックアドレス情報が1加算される。したがって、中断したタイミングによってB_AD=A_AD、およびB_AD=A_AD+1>A_ADのいずれかの状態になっている。
【0057】
ステップ420でB_AD>A_ADであると判定されると処理はステップ430に進む。B_AD>A_AD=kとすると、この場合、入れ替えが中断したのは、ステップ330でBブロックアドレス情報がk+1に書き換えられてから、ステップ370でAブロックアドレス情報がk+1に書き換えられる前までの間である。このときは、DA(0)〜DA(k+1)、DB(0)〜DB(k)までのデータの移し替えは終了しているが、DB(k+1)のデータが移し替えられているか否かが不明である。また、DA(k+2)の移し替えが終了していないことも確かであるから、B[k+1]にDB(k+1)のデータが残っていることも確かである。
【0058】
そこで、DB(k+1)の移し替えの処理の最初、すなわちステップ340から入れ替えを再開することができる。したがって、ステップ430では図5のBブロックスタートから入れ替えを再開する。そして図5の処理に従って入れ替えが完了すると、中断判定は終了する。
【0059】
また、ステップ420でB_AD>A_ADでない、すなわちB_AD=A_ADであると判定されると、処理はステップ440に進む。B_AD=A_AD=kとすると、この場合、入れ替えが中断したのは、ステップ370でAブロックアドレス情報がkに書き換えられてから、ステップ330でBブロックアドレス情報がk+1に書き換えられる前までの間である。このときは、DA(0)〜DA(k)、DB(0)〜DB(k)までのデータの移し替えは終了しているが、DA(k+1)のデータが移し替えられているか否かが不明である。また、DB(k+2)の移し替えが終了していないことも確かであるから、A[k+1]にDA(k+1)のデータが残っていることも確かである。
【0060】
そこで、DA(k+1)の移し替えの処理の最初、すなわちステップ305から入れ替えを再開することができる。したがって、ステップ440では図5のAブロックスタートから入れ替えを再開する。そして図5の処理に従って入れ替えが完了すると、中断判定は終了する。
【0061】
中断判定が終了すると、CPU2の処理は図4のステップ210のプログラム処理に進む。プログラム処理とは、このエンジンECU1が行うエンジン管理、制御、およびのための処理である。この処理において、例えばクランク角等の情報にもとづいたエンジンの燃料噴射、点火制御が行われる。そしてこの処理内で、EEPROM3中のデータ内容が必要に応じて書き換えられる。例えば、エンジンECU1がイグニッションキーのオンを検知した場合に、イグニッションキーのオンの回数が書き込まれたアドレスのデータを読み出し、それに1を加算した値を再び当該アドレスに書き込む。
【0062】
また例えば、車両が走行状態と判断される所定の運転状態となったときに、車両の実質的な走行回数を記録する所定のアドレスの値を1加算して再度書き込む。すなわち、EEPROM3に書き込まれているこの値を1回分だけ更新した値に書き換える。
【0063】
また例えば、車両が故障診断の条件が満たされ、故障診断が実施されたときに、実施した故障診断に対応するEEPROM3の所定のアドレスの分子データの値を1加算して再度書き込む。すなわち、EEPROM3に書き込まれている故障診断回数を1回分だけ更新した値に書き換える。
【0064】
本実施形態においてはこのプログラム処理の詳細については記述しないが、処理の負荷という観点に立てば、実際にはこの処理およびステップ215の読み出し/書き込み処理がCPU2のメインルーチンであり、そのメインルーチンの周期ごとのステップ220〜230の入れ替えに関わる処理はサブルーチンであると言える。
【0065】
次に処理はステップ215に進み、EEPROM3に対する読み出し/書き込み処理を行う。読み出し/書き込み処理とは、エンジンECU1の制御において必要に応じてEEPROM3に対してデータの書き込みおよび読み出しを行う処理である。本実施形態においては、使用の途中においてデータの書き込み場所が入れ替わるので、それに対応して同じデータでも入れ替えの前と後で読み書きのためのアクセス先を変更しなければならない。
【0066】
この読み出し/書き込み処理の詳細を図9に示す。まずステップ510で、読み出し/書き込みを行いたいデータにアクセスするためのブロック(AまたはB)を変数RW_BLOCKに代入し、アドレスを変数RW_ADDRESSに代入する。ただし、ここで代入されるブロックおよびアドレスは、読み出し/書き込みの時期に関らず、常に当初入れ替えが行われる前に各データが格納されていた場所のものである。
【0067】
次に、ステップ520では、A、Bブロックのアドレス情報をそれぞれ変数A_ADおよび変数B_ADに代入する。
【0068】
次に、ステップ530では、A_ADとB_ADが共にnであるか否か、すなわち、データの入れ替えが終了しているか否かを判定する。
【0069】
共にnでない、すなわち入れ替えが行われていないなら、処理はステップ560に進み、そのままRW_BLOCKで指定されるブロックの、RW_ADDRESSアドレスにアクセスして読み出し/書き込みを行い、その後読み出し/書き込み処理を終了する。
【0070】
共にnである、すなわち入れ替えが終了しているなら、処理はステップ540に進み、RW_BLOCKがAならBに、BならAに置き換える。そしてステップ550で、RW_ADDRESSから1を減算する。これにより、RW_BLOCKおよびRW_ADDRESSは、アクセスしたいデータの入れ替え後のブロックおよびアドレスを指定するようになる。
【0071】
そして、ステップ560で、置き換えられたRW_BLOCKで指定されるブロックの、RW_ADDRESSアドレスにアクセスして読み出し/書き込みを行い、その後読み出し/書き込み処理を終了する。
【0072】
このようにすることで、ステップ520〜550の処理が、現在がデータの入れ替え前か入れ替え後かにもとづいて、アクセスするブロックおよびアドレスの変換を行うので、入れ替え前も入れ替え後も正しくデータにアクセスすることができる。また、CPU2のプログラムのその他の部分(例えばプログラム処理)は、入れ替えによるアクセス先の変化を考慮した処理をする必要がない。
【0073】
データの読み出し/書き込み処理が終了すると、処理は図4のステップ220に進む。
【0074】
ステップ220では、Aブロックの書き込み回数が規定値に到達したか否かの判定を行う。具体的にはAブロックの領域A[n]に書き込まれているデータの書き換え回数を参照し、それがプログラム中にあらかじめ設定されている規定値に達しているか否かの判定を行う。この規定値はEEPROM3のの書き換え保証回数を超えない所定数である。例えば、EEPROM3の書き換え保証回数が10万回で、当初Aブロックに書き込まれるデータのうち最も書き換え頻度の高いデータの生涯書き換え回数が18万回であるとすると、9万をこの規定値とする。ここで生涯書き換え回数とは、自動車の耐用年数(例えば20年)のうちにエンジンECU1の当該データが書き換えられるであろうと予想される回数のことである。
【0075】
また、ステップ225の判定処理は、A、Bブロックのアドレス情報が共にnであるか否か、すなわちデータの入れ替えが終了しているか否かを判定する。
【0076】
書き込み回数が既定値に達しており、かつA、Bブロックのアドレス情報が共にnでない場合に限り、処理はステップ220、225を経てステップ230に進む。すなわち、所定の書き換え時期に達しており、かつまだ書き換えが行われていないときに限り、先に詳述したステップ230の書き換え処理を行う。それ以外の場合は、処理は判定処理を経てステップ210のプログラム処理に戻る。
【0077】
以上のようなCPU2のプログラム実行処理によって、EEPROM3に書き込むデータのうち、書き換え頻度の高いデータと書き換え頻度の低いデータは別の記憶領域(A、Bブロック)に分けて書き込まれ、また、書き換え頻度の最も高いデータの書き換え回数がEEPROM3の書き換え保証回数を超えない所定数に達したとき、それぞれの領域に書き込まれているデータが入れ替えられ、それ以後はその入れ替えられた状態で書き込みを行うようになる。したがって、入れ替え直前にブロックAが書き換え限度に近づいていても、ブロックBは書き換え限度までには余裕があるので、書き換え頻度の高いデータをブロックBに入れ替えることによって、EEPROM3全体として書き換え保証回数を有効利用し、かつ無駄な記憶容量を節約することができる。ひいては、書き換え回数に上限がある不揮発性記憶装置の取り替え回数を抑え、かつこの不揮発性記憶装置の容量の冗長性を抑えることが可能となる。
【0078】
なお、本実施形態と本明細書の特許請求の範囲との対応関係として、Aブロックが第1の記憶手段に対応し、Bブロックが第2の記憶手段に対応する。
【0079】
また、エンジンECU1が、不揮発性記憶装置へのデータの書き込み装置を構成する。
【0080】
また、図9のステップ510→520→530→560という流れの処理が、当初、第1の記憶手段と第2の記憶手段を備えた電気的に書き換え可能な不揮発性記憶装置に書き込むデータのうち、書き換え頻度の高いデータを第1の記憶手段に、書き換え頻度の低いデータを第2の記憶手段に書き込む手段を構成する。
【0081】
また、図4のステップ230の処理、すなわち、図5のAブロックスタートから始まる処理が、書き換え頻度の高いデータのうち、最も書き換え頻度の高いデータの書き換え回数が不揮発性記憶装置の書き換え保証回数を超える前に、書き換え頻度の高いデータを第2の記憶手段に、書き換え頻度の低いデータを第1の記憶手段に移し替える手段を構成する。
【0082】
また、図9のステップ510→520→530→540→550→560という流れの処理が、移し替え以後、書き換え頻度の高いデータを第2の記憶手段に、書き換え頻度の低いデータを第1の記憶手段に書き込む手段を構成する。
【0083】
また、本実施形態においては、1つのEEPROMを2つのブロックに区別して、それぞれの間で書き換え頻度の高いデータと低いデータとの入れ替えを行っているが、例えば2つの同じ容量のEEPROMを用意し、その一方に書き換え頻度の高いデータを書き込み、他方に書き換え頻度の低いデータを書き込むようになっていれば、上記した実施形態において各ブロックを各EEPROMと読み替えることで、上記した実施形態と同等の効果を得ることができる。すなわち、この場合、2つのEEPROMのうち、当初書き換え頻度の高いデータを書き込む方のEEPROMが第1の記憶手段に対応し、他方が第2の記憶手段に対応する。
【0084】
また、図4のステップ210のプログラム処理が、車両の1ドライビングサイクル中、車両が所定の運転状態となったときに不揮発性記憶装置に書き込まれている運転回数を1回分だけ更新した値に書き換えると共に、故障診断が実施されたときに前記不揮発性記憶装置に書き込まれている故障診断回数を1回分だけ更新した値に書き換える手段を構成する。
【0085】
なお、本発明のデータの書き込みにおいては、最も書き換え頻度の高いデータの書き換え回数が不揮発性記憶装置の書き換え保証回数を超える前に、データの移し替えを行えばよいのであって、本実施形態のように、書き換え頻度の最も高いデータの書き換え回数が不揮発性記憶装置の書き換え保証回数を超えない所定数に達したとき、データの移し替えを行うことは、その1つの具体例にすぎない。
【0086】
また、本実施形態においては、ブロックAのデータ量とブロックBのデータ量とは同じであるが、必ずしも同じである必要はない。各ブロックが、書き換え頻度の高いデータの総量と書き換え頻度の低いデータの総量のうち大きい方と、その他のアドレス情報、書き換え情報等を書き込む十分な容量があれば足りる。
【0087】
また、本実施形態においては、最も高い書き換え頻度のデータが書き換えられる回数を記憶する領域(A[n]等)が確保されているが、必ずしもこの領域は必要ない。例えば、この最も高い書き換え頻度のデータが車両のイグニッションのオンの度に書き換えられるものであり、かつこのデータが車両のイグニッションオンの回数を示すものであれば、このデータの書き換え回数とデータの示す回数とが一致するので、このデータを参照することで、最も高い書き換え頻度のデータが書き換えられた回数がわかる。
【図面の簡単な説明】
【図1】本発明の実施形態に係るエンジンECU1の構成図である。
【図2】EEPROM3の記憶領域の構造図である。
【図3】データ入れ替え前のEEPROMのA、Bブロック内のデータ構成図である。
【図4】CPU2の全体的な処理を示すフローチャートである。
【図5】入れ替え処理の詳細を示すフローチャートである。
【図6】A、Bブロックのアドレス情報の値が共に0であった場合にステップ305からステップ370を実行した後のA、Bブロック内の状態を示す図である。
【図7】入れ替え処理終了後のA、Bブロックの状態を示す図である。
【図8】中断判定処理の詳細を示すフローチャートである。
【図9】読み出し/書き込み処理の詳細を示す図である。
【符号の説明】
1…エンジンECU、2…CPU、3…EEPROM、4…ROM、5…RAM。
Claims (11)
- 当初、第1の記憶手段と第2の記憶手段を備えた電気的に書き換え可能な不揮発性記憶装置に書き込むデータのうち、書き換え頻度の高いデータを前記第1の記憶手段に、書き換え頻度の低いデータを前記第2の記憶手段に書き込む段階と、
前記書き換え頻度の高いデータのうち、最も書き換え頻度の高いデータの書き換え回数が前記不揮発性記憶装置の書き換え保証回数を超える前に、前記書き換え頻度の高いデータを前記第2の記憶手段に、前記書き換え頻度の低いデータを前記第1の記憶手段に移し替える段階と、
前記移し替える段階以後、書き換え頻度の高いデータを前記第2の記憶手段に、書き換え頻度の低いデータを前記第1の記憶手段に書き込む段階と、を備えた不揮発性記憶装置へのデータの書き込み方法。 - 前記移し替える段階は、前記第1および第2の記憶手段中のデータを、それぞれ移し替える先の記憶手段中の空き領域に書き込むことで、前記書き換え頻度の高いデータを前記第2の記憶手段に、前記書き換え頻度の低いデータを前記第1の記憶手段に移し替えることを特徴とする請求項1に記載の不揮発性記憶装置へのデータの書き込み方法。
- 前記移し替える段階は、前記第1および第2の記憶手段中のデータを、1データ単位毎に順次それぞれ移し替える先の記憶手段中の1データ単位分の空き領域に書き込むことで、前記書き換え頻度の高いデータを前記第2の記憶手段に、前記書き換え頻度の低いデータを前記第1の記憶手段に移し替え、
前記第1または第2の記憶手段中の前記1データ単位分の空き領域は、それぞれ前記第2または第1の記憶手段中のデータを1データ単位移し替えることで生成される領域であることを特徴とする請求項2に記載の不揮発性記憶装置へのデータの書き込み方法。 - コンピュータを、
当初、第1の記憶手段と第2の記憶手段を備えた電気的に書き換え可能な不揮発性記憶装置に書き込むデータのうち、書き換え頻度の高いデータを前記第1の記憶手段に、書き換え頻度の低いデータを前記第2の記憶手段に書き込む手段、
前記書き換え頻度の高いデータのうち、最も書き換え頻度の高いデータの書き換え回数が前記不揮発性記憶装置の書き換え保証回数を超える前に、前記書き換え頻度の高いデータを前記第2の記憶手段に、前記書き換え頻度の低いデータを前記第1の記憶手段に移し替える手段、および
前記移し替え以後、書き換え頻度の高いデータを前記第2の記憶手段に、書き換え頻度の低いデータを前記第1の記憶手段に書き込む手段、として機能させるための不揮発性記憶装置へのデータの書き込みプログラム。 - 前記移し替える手段は、前記第1および第2の記憶手段中のデータを、それぞれ移し替える先の記憶領域中の空き領域に書き込むことで、前記書き換え頻度の高いデータを前記第2の記憶手段に、前記書き換え頻度の低いデータを前記第1の記憶手段に移し替えることを特徴とする請求項4に記載の不揮発性記憶装置へのデータの書き込みプログラム。
- 前記移し替える段階は、前記第1および第2の記憶手段中のデータを、1データ単位毎に順次それぞれ移し替える先の記憶手段中の1データ単位分の空き領域に書き込むことで、前記書き換え頻度の高いデータを前記第2の記憶手段に、前記書き換え頻度の低いデータを前記第1の記憶手段に移し替え、
前記第1または第2の記憶手段中の前記1データ単位分の空き領域は、それぞれ前記第2または第1の記憶手段中のデータを1データ単位移し替えることで生成される領域であることを特徴とする請求項5に記載の不揮発性記憶装置へのデータの書き込みプログラム。 - 当初、第1の記憶手段と第2の記憶手段を備えた電気的に書き換え可能な不揮発性記憶装置に書き込むデータのうち、書き換え頻度の高いデータを前記第1の記憶手段に、書き換え頻度の低いデータを前記第2の記憶手段に書き込む手段と、
前記書き換え頻度の高いデータのうち、最も書き換え頻度の高いデータの書き換え回数が前記不揮発性記憶装置の書き換え保証回数を超える前に、前記書き換え頻度の高いデータを前記第2の記憶手段に、前記書き換え頻度の低いデータを前記第1の記憶手段に移し替える手段と、
前記移し替え以後、書き換え頻度の高いデータを前記第2の記憶手段に、書き換え頻度の低いデータを前記第1の記憶手段に書き込む手段と、を備えた不揮発性記憶装置へのデータの書き込み装置。 - 前記移し替える手段は、前記第1および第2の記憶手段中のデータを、それぞれ移し替える先の記憶領域中の空き領域に書き込むことで、前記書き換え頻度の高いデータを前記第2の記憶手段に、前記書き換え頻度の低いデータを前記第1の記憶手段に移し替えることを特徴とする請求項7に記載の不揮発性記憶装置へのデータの書き込み装置。
- 前記移し替える段階は、前記第1および第2の記憶手段中のデータを、1データ単位毎に順次それぞれ移し替える先の記憶手段中の1データ単位分の空き領域に書き込むことで、前記書き換え頻度の高いデータを前記第2の記憶手段に、前記書き換え頻度の低いデータを前記第1の記憶手段に移し替え、
前記第1または第2の記憶手段中の前記1データ単位分の空き領域は、それぞれ前記第2または第1の記憶手段中のデータを1データ単位移し替えることで生成される領域であることを特徴とする請求項8に記載の不揮発性記憶装置へのデータの書き込み装置。 - 車両に搭載された車載機器を制御し、所定の条件が満たされた場合に前記車載機器における診断対象の故障診断を実施する車載電子制御装置において、
車両の1ドライビングサイクル中、前記車両が所定の運転状態となったときに第1の記憶手段と第2の記憶手段を備えた電気的に書き換え可能な不揮発性記憶装置に書き込まれている運転回数を1回分だけ更新した値に書き換えると共に、前記故障診断が実施されたときに前記不揮発性記憶装置に書き込まれている故障診断回数を1回分だけ更新した値に書き換える段階と、
当初、前記不揮発性記憶装置に書き込むデータのうち、書き換え頻度の高いデータを前記第1の記憶手段に、書き換え頻度の低いデータを前記第2の記憶手段に書き込む段階と、
前記書き換え頻度の高いデータのうち、最も書き換え頻度の高いデータの書き換え回数が前記不揮発性記憶装置の書き換え保証回数を超える前に、前記書き換え頻度の高いデータを前記第2の記憶手段に、前記書き換え頻度の低いデータを前記第1の記憶手段に移し替える段階と、
前記移し替える段階以後、書き換え頻度の高いデータを前記第2の記憶手段に、書き換え頻度の低いデータを前記第1の記憶手段に書き込む段階と、を備えた不揮発性記憶装置へのデータの書き込み方法。 - 車両に搭載された車載機器を制御し、所定の条件が満たされた場合に前記車載機器における診断対象の故障診断を実施する車載電子制御装置であって、
第1の記憶手段と第2の記憶手段を備えた電気的に書き換え可能な不揮発性記憶装置と、
車両の1ドライビングサイクル中、前記車両が所定の運転状態となったときに前記不揮発性記憶装置に書き込まれている運転回数を1回分だけ更新した値に書き換えると共に、前記故障診断が実施されたときに前記不揮発性記憶装置に書き込まれている故障診断回数を1回分だけ更新した値に書き換える手段と、
当初、前記不揮発性記憶装置に書き込むデータのうち、書き換え頻度の高いデータを前記第1の記憶手段に、書き換え頻度の低いデータを前記第2の記憶手段に書き込む手段と、
前記書き換え頻度の高いデータのうち、最も書き換え頻度の高いデータの書き換え回数が前記不揮発性記憶装置の書き換え保証回数を超える前に、前記書き換え頻度の高いデータを前記第2の記憶手段に、前記書き換え頻度の低いデータを前記第1の記憶手段に移し替える手段と、
前記移し替え以後、書き換え頻度の高いデータを前記第2の記憶手段に、書き換え頻度の低いデータを前記第1の記憶手段に書き込む手段と、を備えた車載電子制御装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002315672A JP2004151944A (ja) | 2002-10-30 | 2002-10-30 | 不揮発性記憶装置へのデータの書き込み方法、プログラム、および装置、ならびに車載電子制御装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002315672A JP2004151944A (ja) | 2002-10-30 | 2002-10-30 | 不揮発性記憶装置へのデータの書き込み方法、プログラム、および装置、ならびに車載電子制御装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004151944A true JP2004151944A (ja) | 2004-05-27 |
Family
ID=32459595
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002315672A Withdrawn JP2004151944A (ja) | 2002-10-30 | 2002-10-30 | 不揮発性記憶装置へのデータの書き込み方法、プログラム、および装置、ならびに車載電子制御装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004151944A (ja) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008176727A (ja) * | 2007-01-22 | 2008-07-31 | Denso Corp | 情報処理装置、ナビゲーション装置及びプログラム |
JP2009087173A (ja) * | 2007-10-02 | 2009-04-23 | Mitsubishi Electric Corp | フラッシュメモリ管理装置及びフラッシュメモリ管理方法及びプログラム |
JP2009282505A (ja) * | 2008-04-25 | 2009-12-03 | Canon Inc | 不揮発性メモリの制御装置及び画像形成装置 |
JP2009301497A (ja) * | 2008-06-17 | 2009-12-24 | Denso Corp | 制御装置、及びプログラム |
JP2014026511A (ja) * | 2012-07-27 | 2014-02-06 | Denso Corp | 不揮発性半導体記憶装置の書き込み制御方法およびマイクロコンピュータ |
JP2014078262A (ja) * | 2006-11-24 | 2014-05-01 | Lsi Inc | マルチメモリデバイス寿命管理のための技術 |
JP2015222590A (ja) * | 2015-07-24 | 2015-12-10 | 株式会社東芝 | メモリシステム |
JP2016192083A (ja) * | 2015-03-31 | 2016-11-10 | アイシン・エィ・ダブリュ株式会社 | 車両用駆動装置の制御装置 |
-
2002
- 2002-10-30 JP JP2002315672A patent/JP2004151944A/ja not_active Withdrawn
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014078262A (ja) * | 2006-11-24 | 2014-05-01 | Lsi Inc | マルチメモリデバイス寿命管理のための技術 |
JP2008176727A (ja) * | 2007-01-22 | 2008-07-31 | Denso Corp | 情報処理装置、ナビゲーション装置及びプログラム |
JP2009087173A (ja) * | 2007-10-02 | 2009-04-23 | Mitsubishi Electric Corp | フラッシュメモリ管理装置及びフラッシュメモリ管理方法及びプログラム |
JP2009282505A (ja) * | 2008-04-25 | 2009-12-03 | Canon Inc | 不揮発性メモリの制御装置及び画像形成装置 |
JP2009301497A (ja) * | 2008-06-17 | 2009-12-24 | Denso Corp | 制御装置、及びプログラム |
JP2014026511A (ja) * | 2012-07-27 | 2014-02-06 | Denso Corp | 不揮発性半導体記憶装置の書き込み制御方法およびマイクロコンピュータ |
JP2016192083A (ja) * | 2015-03-31 | 2016-11-10 | アイシン・エィ・ダブリュ株式会社 | 車両用駆動装置の制御装置 |
JP2015222590A (ja) * | 2015-07-24 | 2015-12-10 | 株式会社東芝 | メモリシステム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5176728B2 (ja) | 車両用電子制御装置 | |
JP4636118B2 (ja) | 電子機器及びプログラム | |
JP2004218614A (ja) | 車載電子制御装置 | |
JP3969278B2 (ja) | 電子制御装置 | |
JP4789420B2 (ja) | 車両制御システムにおけるデータ処理装置 | |
JP2004151944A (ja) | 不揮発性記憶装置へのデータの書き込み方法、プログラム、および装置、ならびに車載電子制御装置 | |
JP4001088B2 (ja) | 電子制御装置 | |
JP2012241645A (ja) | 車両用電子制御装置 | |
JP4600510B2 (ja) | 制御装置およびプログラム | |
JP4281808B2 (ja) | 車両の制御装置およびその制御方法 | |
US7386714B2 (en) | Transmitting data from a single storage unit between multiple processors during booting | |
JP2007062632A (ja) | 電子制御ユニットおよび異常発生時記憶用データの記憶方法 | |
JP4353126B2 (ja) | 車両状態判定装置 | |
JP4760103B2 (ja) | 車両情報のバックアップ装置 | |
JP2007162586A (ja) | 車載制御装置 | |
WO2018079537A1 (ja) | 電子制御装置及びそのデータ保護方法 | |
JP3296043B2 (ja) | 車両用電子制御装置 | |
JP5635941B2 (ja) | 自動車用電子制御装置 | |
JP2006017468A (ja) | データ記録装置 | |
JP2006277615A (ja) | 自動車用制御ユニット | |
JP3960212B2 (ja) | 電子制御装置 | |
JP7007223B2 (ja) | 制御装置および異常検出方法 | |
JP2020035503A (ja) | 自動車用電子制御装置 | |
JP3551855B2 (ja) | 車両用制御装置 | |
JP2018063527A (ja) | 電子制御装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20060110 |