(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-02-12
(45)【発行日】2025-02-20
(54)【発明の名称】電子制御装置及び計数方法
(51)【国際特許分類】
G06F 12/00 20060101AFI20250213BHJP
【FI】
G06F12/00 550Z
(21)【出願番号】P 2021190415
(22)【出願日】2021-11-24
【審査請求日】2024-04-12
(31)【優先権主張番号】P 2020194304
(32)【優先日】2020-11-24
(33)【優先権主張国・地域又は機関】JP
(73)【特許権者】
【識別番号】509186579
【氏名又は名称】日立Astemo株式会社
(74)【代理人】
【識別番号】100129425
【氏名又は名称】小川 護晃
(74)【代理人】
【氏名又は名称】西山 春之
(74)【代理人】
【識別番号】100168642
【氏名又は名称】関谷 充司
(72)【発明者】
【氏名】鳥海 史
【審査官】後藤 彰
(56)【参考文献】
【文献】特開2002-197874(JP,A)
【文献】特開2004-038971(JP,A)
【文献】特開平04-372224(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/00
(57)【特許請求の範囲】
【請求項1】
消去ブロック単位で各ビットに1を書き込んで消去するとともに、任意のビットに0を書き込んでデータを書き換える不揮発性メモリと、揮発性メモリと、を備えた電子制御装置であって、
前記不揮発性メモリの連続したアドレスには、第1のカウンタ及び第2のカウンタが順不同で割り当てられ、
計数要求に応答して、前記第1のカウンタの最上位ビット及び最下位ビットの一方から他方に向けて0を順次書き込み、前記第1のカウンタの全ビットが0になったとき、前記第2のカウンタの値を前記揮発性メモリに退避して前記第1のカウンタ及び前記第2のカウンタの値を消去するとともに、前記揮発性メモリに退避させた前記第2のカウンタの値に1を加算して前記第2のカウンタに復元する、
電子制御装置。
【請求項2】
計数のクリア要求に応答して、前記第2のカウンタの値を前記揮発性メモリに退避させ、前記第1のカウンタ及び前記第2のカウンタの値を消去し、前記揮発性メモリに退避させた前記第2のカウンタの値に1を加算して前記第2のカウンタに復元する、
請求項1に記載の電子制御装置。
【請求項3】
前記第1のカウンタ及び前記第2のカウンタの値を読み込み、『計数値=(前記第1のカウンタのビット数)×前記第2のカウンタの値+前記第1のカウンタにおいて0となっているビット数』という式により計数値を求める、
請求項1又は請求項2に記載の電子制御装置。
【請求項4】
前記不揮発性メモリの連続したアドレスには、前記第1のカウンタ及び前記第2のカウンタに加えて第3のカウンタが順不同で確保され、
前記第1のカウンタに対する1又は0の書き込み異常が発生すると、前記第1のカウンタ、前記第2のカウンタ及び前記第3のカウンタの値を前記揮発性メモリに退避させ、前記第1のカウンタ、前記第2のカウンタ及び前記第3のカウンタの値を消去し、前記揮発性メモリに退避させた前記第1のカウンタの値を訂正して前記第1のカウンタに復元するとともに、前記揮発性メモリに退避させた前記第2のカウンタ及び前記第3のカウンタの値に1を加算して前記第2のカウンタ及び前記第3のカウンタに夫々復元する、
請求項1又は請求項2に記載の電子制御装置。
【請求項5】
計数のクリア要求に応答して、前記第3のカウンタに前記第2のカウンタと同値を書き込む、
請求項4に記載の電子制御装置。
【請求項6】
前記第1のカウンタ、前記第2のカウンタ及び前記第3のカウンタの値を読み込み、『計数値=(前記第1のカウンタのビット数)×(前記第2のカウンタの値-前記第3のカウンタの値)+前記第1のカウンタにおいて0となっているビット数』という式により計数値を求める、
請求項4又は請求項5に記載の電子制御装置。
【請求項7】
前記第1のカウンタ、前記第2のカウンタ及び前記第3のカウンタは、電子制御装置の製造時に初期化される、
請求項4~請求項6のいずれか1つに記載の電子制御装置。
【請求項8】
消去ブロック単位で各ビットに1を書き込んで消去するとともに、任意のビットに0を書き込んでデータを書き換える不揮発性メモリと、揮発性メモリと、を備え、前記不揮発性メモリの連続したアドレスに第1のカウンタ及び第2のカウンタが順不同で割り当てられた電子制御装置のプロセッサが、計数要求に応答して、前記第1のカウンタの最上位ビット及び最下位ビットの一方から他方に向けて0を順次書き込み、前記第1のカウンタの全ビットが0になったとき、前記第2のカウンタの値を前記揮発性メモリに退避して前記第1のカウンタ及び前記第2のカウンタの値を消去するとともに、前記揮発性メモリに退避させた前記第2のカウンタの値に1を加算して前記第2のカウンタに復元する、
計数方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、不揮発性メモリの書換え回数など任意の回数を計数する、電子制御装置及び計数方法に関する。
【背景技術】
【0002】
不揮発性メモリを備えた電子制御装置では、不揮発性メモリの書換え回数に限度があることから、特開2003-141880号公報(特許文献1)に記載されるように、書換え回数が保証回数に達したときに、予備記憶領域に切り換えて対応していた。このため、電子制御装置の不揮発性メモリには、電源遮断によって書換え回数が消失することを防止すべく、書換え回数を保持する記憶領域が確保されていた。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
ところで、不揮発性メモリにおいては、データを書き換えるとき、消去ブロック単位で既存のデータを消去した後、消去ブロック単位よりも小さい書込ブロック単位で新たなデータを書き込む必要がある。従来の計数方法では、複数の記憶領域に書換え回数を順次書き込み、すべての記憶領域に書換え回数を書き込んだならば、すべての記憶領域を消去して書換え回数の計数を再開していた。しかしながら、不揮発性メモリの書換え回数に制限があることから、多くの書換え回数を計数するためには多くの記憶領域を確保する必要があり、例えば、他の用途で使用可能な記憶領域が小さくなるなどの弊害があった。
【0005】
そこで、本発明は、不揮発性メモリの記憶領域を使用して、任意の回数を効率的に計数可能な、電子制御装置及び計数方法を提供することを目的とする。
【課題を解決するための手段】
【0006】
電子制御装置は、消去ブロック単位で各ビットに1を書き込んで消去するとともに、任意のビットに0を書き込んでデータを書き換える不揮発性メモリと、揮発性メモリと、を備えている。また、不揮発性メモリの連続したアドレスには、第1のカウンタ及び第2のカウンタが順不同で割り当てられている。そして、電子制御装置は、計数要求に応答して、第1のカウンタの最上位ビット及び最下位ビットの一方から他方に向けて0を順次書き込み、第1のカウンタの全ビットが0になったとき、第2のカウンタの値を揮発性メモリに退避して第1のカウンタ及び第2のカウンタの値を消去するとともに、揮発性メモリに退避させた第2のカウンタの値に1を加算して第2のカウンタに復元する。
【発明の効果】
【0007】
本発明によれば、不揮発性メモリの記憶領域を使用して、任意の回数を効率的に計数することができる。
【図面の簡単な説明】
【0008】
【
図1】車両に搭載された電子制御システムの一例を示す概要図である。
【
図2】電子制御装置の内部構造の一例を示す概要図である。
【
図3】不揮発性メモリに割り当てられたカウンタ1~3の説明図である。
【
図4】計数処理の一例を示すフローチャートである。
【
図6】カウンタ1及びカウンタ2の変化状態の説明図である。
【
図7】計数クリア処理の一例を示すフローチャートである。
【
図8】計数クリア要求に応じて変化するカウンタ2及び3の説明図である。
【
図9】異常時処理の一例を示すフローチャートである。
【
図10】書込み異常に応じて変化するカウンタ2及び3の説明図である。
【
図11】カウンタ1~3による計数結果を求める方法の一例を示す説明図である。
【
図12】カウンタ1~3による計数結果を求める方法の他の例を示す説明図である。
【
図13】カウンタ1~3を使用してイグニッションスイッチがOFFからONに操作された回数を計数する一例を示す説明図である。
【
図14】従来技術による計数の具体例を示す説明図である。
【
図15】提案技術による計数の具体例を示す説明図である。
【発明を実施するための形態】
【0009】
以下、添付された図面を参照し、本発明を実施するための実施形態について詳述する。
車両100には、例えば、エンジン、自動変速機、アダプティブクルーズコントロールシステムなどを電子制御する、複数の電子制御装置200が搭載されている。複数の電子制御装置200は、例えば、CAN(Controller Area Network)などの周知の車載ネットワーク300を介して、任意のデータを送受信可能に接続されている。ここで、車両100としては、乗用車、トラック、バス、建設機械などとすることができる。なお、
図1に示す例では、車両100に4つの電子制御装置200が搭載されているが、電子制御装置200の数は任意である。
【0010】
電子制御装置200は、
図2に示すように、CPU(Central Processing Unit)などのプロセッサ210と、不揮発性メモリ220と、揮発性メモリ230と、入出力回路240と、通信回路250と、これらを相互通信可能に接続する内部バス260と、を内蔵している。
【0011】
プロセッサ210は、アプリケーションプログラムに記述された命令セット(データの転送、演算、加工、制御、管理など)を実行するハードウエアであって、演算装置、命令やデータを格納するレジスタ、周辺回路などから構成されている。不揮発性メモリ220は、例えば、電源供給を遮断してもデータを保持可能なフラッシュROM(Read Only Memory)などからなり、本実施形態を実装するためのアプリケーションプログラム(コンピュータプログラム)を保持する。揮発性メモリ230は、電源供給を遮断するとデータが消失するダイナミックRAM(Random Access Memory)などからなり、プロセッサ210の演算過程においてデータを一時的に格納する記憶領域を提供する。
【0012】
入出力回路240は、A/Dコンバータ、D/Aコンバータ、D/Dコンバータなどからなり、外部機器に対するアナログ信号及びデジタル信号の入出力機能を提供する。通信回路250は、例えば、CANトランシーバなどからなり、車載ネットワーク300に接続する機能を提供する。内部バス260は、各デバイス間でデータを交換するための経路であって、アドレスを転送するためのアドレスバス、データを転送するためのデータバス、アドレスバスやデータバスで実際に入出力を行うタイミングや制御情報を遣り取りするコントロールバスを含んでいる。
【0013】
電子制御装置200の不揮発性メモリ220には、
図3に示すように、不揮発性メモリ220の書換え回数を計数するためのカウンタとして、連続したアドレスに、カウンタ1、カウンタ2及びカウンタ3が予め割り当てられている。カウンタ1~3のサイズ(ビット数)は、計数対象を考慮して適宜決定することができる。ここで、カウンタ1~3が、第1のカウンタ、第2のカウンタ及び第3のカウンタの一例として夫々挙げられる。なお、
図3に示す一例では、不揮発性メモリ220の連続したアドレスにカウンタ1、カウンタ2及びカウンタ3がこの順序で割り当てられているが、その順序は任意(順不同)である。
【0014】
電子制御装置200の不揮発性メモリ220は、消去ブロック単位で各ビットに「1」を書き込んで消去するとともに、任意のビットに「0」を書き込んでデータを書き換えることができる。従って、カウンタ1~3は、消去ブロック単位を考慮し、少なくとも1つの消去ブロックに含まれるように配置すべきである。ここで、カウンタ1はそのビット数に応じた回数を計数するカウンタ、カウンタ2はカウンタ1~3を含む消去ブロックの書換え回数を計数するカウンタ、カウンタ3は書き込み異常が発生した回数を計数するカウンタとして機能する。
【0015】
本実施形態においては、電子制御装置200のプロセッサ210が、計数要求に応答して、カウンタ1の最上位ビット及び最下位ビットの一方から他方に向けて0を順次書き込む。そして、電子制御装置200のプロセッサ210が、カウンタ1の全ビットが0になったとき、カウンタ2の値を揮発性メモリ230に退避してカウンタ1及び2の値を消去するとともに、揮発性メモリ230に退避させたカウンタ2の値に1を加算してカウンタ2に書き込んで復元する。
【0016】
図4は、不揮発性メモリ220の書換え回数を計数するカウントイベント(計数要求)に応答して、電子制御装置200のプロセッサ210が実行する計数処理の一例を示している。ここで、電子制御装置200のプロセッサ210は、不揮発性メモリ220に格納されているアプリケーションプログラムに従って計数処理を実行する。なお、不揮発性メモリ220のカウンタ1~3は、例えば、電子制御装置200の製造時に初期化される。具体的には、初期化として、カウンタ1の全ビットに「1」が書き込まれ、カウンタ2及び3の全ビットに「0」が書き込まれる。
【0017】
ステップ1(
図4では「S1」と略記する。以下同様。)では、電子制御装置200のプロセッサ210が、不揮発性メモリ220のカウンタ1を参照し、カウンタ1の全ビットが0であるか否かを判定する。そして、電子制御装置200のプロセッサ210は、カウンタ1の全ビットが0であると判定すると(Yes)、処理をステップ2へと進める。一方、電子制御装置200のプロセッサ210は、カウンタ1の全ビットが0でないと判定すると(No)、処理をステップ6へと進める。
【0018】
ステップ2では、電子制御装置200のプロセッサ210が、カウンタ2及び3の値を揮発性メモリ230に退避する。
【0019】
ステップ3では、電子制御装置200のプロセッサ210が、カウンタ1~3を含む少なくとも1つの消去ブロックに「1」を書き込んで消去する。
【0020】
ステップ4では、電子制御装置200のプロセッサ210が、ステップ2において揮発性メモリ230に退避したカウンタ2の値に「1」を加算して、これを不揮発性メモリ220のカウンタ2に書き込んで復元する。
【0021】
ステップ5では、電子制御装置200のプロセッサ210が、ステップ2において揮発性メモリ230に退避したカウンタ3の値をそのまま、不揮発性メモリ220のカウンタ3に書き込んで復元する。
【0022】
ステップ6では、電子制御装置200のプロセッサ210が、不揮発性メモリ220のカウンタ1について、その最上位ビットから最下位ビットに向けて順次「0」を書き込んで更新する。要するに、電子制御装置200のプロセッサ210は、カウントイベントに応答して、カウンタ1の最上位ビットから最下位ビットに向けて「1」に設定されたビットを走査し、そのビットに「0」を書き込んで更新する。なお、電子制御装置200のプロセッサ210は、カウンタ1の最下位ビットから最上位ビットに向けて順次「0」を書き込んで更新してもよい。
【0023】
かかる計数処理によれば、不揮発性メモリ220のカウンタ1は、
図5に示すように、カウントイベントが発生するたびに、最上位ビットから最下位ビットに向けて「1」が順次「0」に書き換えられて更新される。即ち、カウンタ1の全ビットが「1」になっている状態(消去直後)においてカウントイベントが発生すると、最上位ビットが「0」に書き換えられる。これに続いてカウントイベントが発生すると、最上位ビットから2番目のビットが「0」に書き換えられる。そして、カウンタ1の全ビットが「0」になった状態においてカウントイベントが発生すると、カウンタ1の全ビットに「1」が書き込まれて消去され、最上位ビットに「0」が書き込まれて更新される。
【0024】
従って、カウンタ1は、そのビット数に応じたカウンタとして機能し、例えば、
図5のように8ビットの長さを有する場合、8回計数するたびに消去される。要するに、カウンタ1は、その長さをNビットとすると、N進数のカウンタとして機能する。
【0025】
不揮発性メモリ220のカウンタ2は、
図6に示すように、カウンタ1の全ビットが「0」になった状態においてカウントイベントが発生すると、カウンタ2の値(図示の例では「00011001(10進数で25)」)が揮発性メモリ230に退避され、カウンタ1と共に「1」が書き込まれて消去される。そして、カウンタ2の消去が完了すると、揮発性メモリ230に退避されたカウンタ2の値に「1」が加算されて(図示の例では「00011010(10進数で26)」となり)、これが不揮発性メモリ220のカウンタ2に書き込まれて復元される。また、カウンタ1及び2が消去されたことにより、カウンタ1の最上位ビットに「0」が書き込まれる。
【0026】
従って、カウンタ1の全ビットが「0」になって消去されたとき、カウンタ2が「1」インクリメントされるカウンタが実装される。このため、例えば、
図6に示すように、カウンタ1が8ビット(1バイト)、カウンタ2が8ビット(1バイト)のカウンタにおいては、不揮発性メモリ220の書換え回数を8×255=2040回計数することができる。
【0027】
よって、図示の例のような短い2バイトのカウンタであっても、不揮発性メモリ220の書換え回数を低減させつつ、より多くの回数を計数することができる。なお、図示の例は、あくまで本実施形態を簡単かつ理解容易に説明するためのものであり、実際には、カウンタ1及び2は目標計数回数に応じた長さを有していることに留意されたい。
【0028】
図7は、外部からの計数のクリア要求に応答して、電子制御装置200のプロセッサ210が実行する計数クリア処理の一例を示している。なお、電子制御装置200のプロセッサ210は、不揮発性メモリ220に格納されたアプリケーションプログラムに従って、計数クリア処理を実行する。
【0029】
ステップ11では、電子制御装置200のプロセッサ210が、不揮発性メモリ220のカウンタ2の値を揮発性メモリ230に退避する。
【0030】
ステップ12では、電子制御装置200のプロセッサ210が、カウンタ1~3を含む少なくとも1つの消去ブロックに「1」を書き込んで消去する。
【0031】
ステップ13では、電子制御装置200のプロセッサ210が、揮発性メモリ230に退避したカウンタ2の値に「1」を加算し、これを不揮発性メモリ220のカウンタ2及び3に書き込んで復元する。
【0032】
かかる計数クリア処理によれば、外部から計数のクリア要求があると、カウンタ2の値が揮発性メモリ230に退避された状態で、
図8に示すように、カウンタ1~3を含む少なくとも1つの消去ブロックに「1」が書き込まれて消去される。また、カウンタ1~3の消去後、揮発性メモリ230に退避されたカウンタ2の値に「1」が加算されて、不揮発性メモリ220のカウンタ2及び3に夫々書き込まれて復元される。要するに、外部から計数のクリア要求があると、カウンタ1~3の消去後、カウンタ3にカウンタ2と同値が書き込まれる。従って、この状態では、カウンタ2及び3が同じ値を有するため、これらを参照して比較することで、計数がクリアされたことを判断することができる。
【0033】
図9は、不揮発性メモリ220のカウンタ1に対する「1」又は「0」に書き込み異常が発生したことを契機として、電子制御装置200のプロセッサ210が実行する異常時処理の一例を示している。ここで、電子制御装置200のプロセッサ210は、例えば、カウンタ1に書き込んだデータをカウンタ1から読み出したデータと比較することで、書き込み異常が発生したか否かを特定することができる。なお、電子制御装置200のプロセッサ210は、不揮発性メモリ220に格納されたアプリケーションプログラムに従って異常時処理を実行する。
【0034】
ステップ21では、電子制御装置200のプロセッサ210が、不揮発性メモリ220のカウンタ1~3の値を揮発性メモリ230に退避する。
【0035】
ステップ22では、電子制御装置200のプロセッサ210が、不揮発性メモリ220のカウンタ1~3を含む少なくとも1つの消去ブロックに「1」を書き込んで消去する。
【0036】
ステップ23では、電子制御装置200のプロセッサ210が、揮発性メモリ230に退避したカウンタ1の値を正しい値に訂正して、不揮発性メモリ220のカウンタ1に書き込んで復元する。ここで、電子制御装置200のプロセッサ210は、カウンタ1のどのビットに「1」又は「0」を書き込んだときに書き込み異常が発生したかを把握しているので、これを利用してカウンタ1の値を正しい値に訂正することができる。
【0037】
ステップ24では、電子制御装置200のプロセッサ210が、揮発性メモリ230に退避したカウンタ2の値に「1」を加算して、これを不揮発性メモリ220のカウンタ2に書き込んで復元する。要するに、電子制御装置200のプロセッサ210は、カウンタ1への書き込みが異常となった場合、カウンタ1~3を含む消去ブロックが消去されたため、書換え回数を計数するカウンタ2を「1」インクリメントする。
【0038】
ステップ25では、電子制御装置200のプロセッサ210が、揮発性メモリ230に退避したカウンタ3の値に「1」を加算して、これを不揮発性メモリ220のカウンタ3に書き込んで復元する。要するに、電子制御装置200のプロセッサ210は、カウンタ1への書き込みが異常となった場合、その異常回数を計数するカウンタ3を「1」インクリメントする。
【0039】
かかる異常時処理によれば、カウンタ1への書き込みに異常が発生すると、
図10に示すように、カウンタ1~3の値が揮発性メモリ230に退避され、カウンタ1~3を含む少なくとも1つの消去ブロックに「1」が書き込まれて消去される。そして、揮発性メモリ230に退避されたカウンタ1の値が正しい値に訂正され、これが不揮発性メモリ220のカウンタ1に書き込まれて復元される。また、揮発性メモリ230に退避されたカウンタ2及び3の値に「1」が夫々加算され、これらが不揮発性メモリ220のカウンタ2及び3に書き込まれて復元される。従って、カウンタ2によって書換え回数が計数されるとともに、カウンタ3によって書き込み異常の発生回数が計数される。
【0040】
上記のようなカウンタ1~3から不揮発性メモリ220の書換え回数を求める場合、「書換え回数=カウンタ1のサイズ(ビット数)×(カウンタ2の値-カウンタ3の値)+カウンタ1において「0」となっているビット数」という式から求めることができる。
【0041】
例えば、
図11に示すように、カウンタ1の最上位ビットから最下位ビットに向けて2つのビットが「0」になっており、カウンタ2が「25」を示し、カウンタ3が「3」を示す場合を考える。この場合、上記の式に各値を代入することで、不揮発性メモリ220の書換え回数=8×(25-3)+2=178回と求めることができる。
【0042】
また、計数クリア要求に応答して、
図12に示すように、カウンタ1の全ビットが「1」、カウンタ2の値が「25」、カウンタ3の値が「25」になった場合を考える。この場合、上記の式に各値を代入することで、不揮発性メモリ220の書換え回数=8×(25-25)+0=0回と求めることができる。従って、カウンタ2の値によって不揮発性メモリ220の実際の書換え回数を保持しつつ、カウンタ1~3の全体から求められる書換え回数をクリアすることができる。
【0043】
ここで、カウンタ1~3の適用対象の一例として、
図13を参照し、イグニッションスイッチがOFFからONに操作された操作回数を計数する方法について説明する。なお、カウンタ1~3はそれぞれ8ビットで構成され、また、初期状態では、カウンタ1が消去されて全ビットが「0」になっているとともに、カウンタ2及び3の全ビットが「0」になっているものとする。なお、カウンタ2及び3の値は、例えば、出荷検査によって更新され、必ずしも「0」になっていないことに留意されたい。
【0044】
イグニッションスイッチが操作されるたびに、カウンタ1の最上位ビットから最下位ビットに向けて「1」が順次「0」に書き換えられて更新される。この場合、イグニッションスイッチの操作回数は、「操作回数=カウンタ1のサイズ(ビット数)×(カウンタ2の値-カウンタ3の値)+カウンタ1において「0」となっているビット数」という式から求めることができる。従って、第1回目の計数では、操作回数=8×(0-0)+1=1、第2回目の計数では、操作回数=8×(0-0)+2=2、第3回目の計数では、操作回数=8×(0-0)+2=2というように、イグニッションスイッチの操作回数を計数することができる。
【0045】
そして、カウンタ1の全ビットが「0」になった状態でイグニッションスイッチが操作されると、カウンタ1~3が消去されて全ビットが「1」になった後に、カウンタ1の最上位ビットが「1」から「0」に書き換えられて更新される。また、カウンタ2の値に「1」が加算されて「1」となるとともに、カウンタ3の値がそのまま維持される。ここで、カウンタ3は、書き込み異常が発生した回数を計数するカウンタであるため、書き込み異常が発生しない限り、以前の値が維持される。この状態では、カウンタ1において「0」となっているビット数が「1」、カウンタ2及び3の値が夫々「1」及び「0」であるので、操作回数=8×(1-0)+1=9というように、イグニッションスイッチの操作回数を計数することができる。その後、イグニッションスイッチが操作されるたびに、カウンタ1の最上位ビットから最下位ビットに向けて「1」が順次「0」に書き換えられて更新される。
【0046】
カウンタ1への書き込みに異常が発生、例えば、最上位ビットから3番目のビットを「1」から「0」に書き換える際に4番目のビットも「1」から「0」に書き換えられると、カウンタ1~3の値が揮発性メモリ230に退避され、カウンタ1~3が消去されて全ビットが「1」になる。そして、揮発性メモリ230に退避されたカウンタ1の値が正しい値に訂正され、これがカウンタ1に書き込まれて復元される。また、揮発性メモリ230に退避されたカウンタ2及び3の値に「1」が夫々加算され、これらがカウンタ2及び3に書き込まれて復元される。この状態では、カウンタ1において「0」となっているビット数が「3」、カウンタ2の値が「2」、カウンタ3の値が「1」となっているため、操作回数=8×(2-1)+3=11というように、イグニッションスイッチの操作回数を求めることができる。
【0047】
その後、カウンタ1において「0」となっているビット数が「2」、カウンタ2の値が「25」、カウンタ3の値が「3」の状態で、外部からクリア要求があると、カウンタ1~3の値が揮発性メモリ230に退避され、カウンタ1~3が消去されて全ビットが「1」になる。そして、揮発性メモリ230に退避されたカウンタ2の値「25」に「1」が加算されて「26」となり、これがカウンタ2及び3に書き込まれて復元される。従って、図示の例では、クリア要求があると、カウンタ2及び3の値が同値「26」になるので、操作回数=8×(26-26)+0=0と求めることができる。
【0048】
このように、書き込み異常又はクリア要求があっても、正確なイグニッションスイッチの操作回数を計数することができることを理解できるであろう。また、カウンタ2の値を参照することで、不揮発性メモリ220の寿命を確認することもできる。
【0049】
ここで、不揮発性メモリ220の書換え回数を計数するカウンタとして、例えば、不揮発性メモリ220に32バイトの領域を確保した場合について、従来技術と提案技術とを比較する。
【0050】
従来技術においては、
図14に示すように、32バイトの領域を8つに分割して4バイトのカウンタを構成する場合、不揮発性メモリ220の書換え回数を8回計数するたびに、32バイトの領域が消去される。このため、例えば、書き込み保証回数が10万回の不揮発性メモリ220であれば、8×10万回=80万回ほど、不揮発性メモリ220の書換え回数を計数することができる。なお、
図13に示す一例では、各バイトの値は16進数で表されている(以下同様)。
【0051】
一方、本提案技術において、
図15に示すように、32バイトの領域のうち24バイトをカウンタ1に、4バイトをカウンタ2及び3に夫々割り当てると、カウンタ1によって192回の計数がなされるたびに、カウンタ1~3が消去される。このため、例えば、書き込み保証回数が10万回の不揮発性メモリ220であれば、192×10万回=1920万回ほど、不揮発性メモリ220の書換え回数を計数することができる。従って、本提案技術では、同一の領域を使用して、従来技術に比べて24倍の回数を計数することが可能となり、少ない不揮発性メモリ220の記憶領域を使用して書換え回数を効率的に計数可能となる。
【0052】
本実施形態は、特に、セルフシャットダウン機能を有しない電子制御装置において有用である。即ち、セルフシャットダウン機能を有しない電子制御装置では、例えば、車輪速センサのエッジ数、走行距離、起動時間などの高頻度で発生するカウントイベントに応答する場合、従来に比して膨大な数を計数する必要がある。しかしながら、本実施形態を適用すれば、少ない不揮発性メモリの記憶領域によってより多くの回数を計数することが可能となるため、不揮発性メモリの記憶領域の消費を抑制しつつ所望の回数を計数することができるようになる。
【0053】
なお、当業者であれば、様々な上記実施形態の技術的思想について、その一部を省略したり、その一部を適宜組み合わせたり、その一部を周知技術に置換したりすることで、新たな実施形態を生み出せることを容易に理解できるであろう。
【0054】
その一例を挙げると、電子制御装置200の不揮発性メモリ220に2つのカウンタ領域を確保することで、カウンタ1~3に対するデータ書き込み中に電源が遮断されても、いずれかのカウンタ領域が正常であるため、これに対処することができる。また、本実施形態により実装されるカウンタは、不揮発性メモリ220の書換え回数に限らず、任意の回数を計数する用途に使用してもよい。
【0055】
さらに、不揮発性メモリ220に割り当てられたカウンタは、カウンタ1~3のみに限らず、カウンタ1及び2だけであってもよい。この場合、「書換え回数=カウンタ1のサイズ(ビット数)×カウンタ2の値+カウンタ1において「0」となっているビット数」という式から、不揮発性メモリ220の書換え回数を求めることができる。
【符号の説明】
【0056】
200…電子制御装置 210…プロセッサ 220…不揮発性メモリ 230…揮発性メモリ