(57)【要約】【課題】組込制御装置の不揮発性メモリに書き込まれたデータが、不揮発性メモリの経年劣化により不良データとなった場合においても、特別なデータ復旧手段によらず、元のデータを正確に読み出すことができる技術を提供する。【解決手段】本発明に係る組込制御装置は、不揮発性メモリ上のアドレスに書き込むデータを複数纏めて１ビットとして符号化し、不揮発性メモリにデータが書き込まれているか否かを不揮発性メモリ上のアドレス毎に判定した結果を複数結合して復号化する。【選択図】図５
2014026568.tif 000002
【特許請求の範囲】
【請求項１】
データを記憶する不揮発性メモリと、
前記不揮発性メモリにデータが書き込まれているか否かを前記不揮発性メモリの１以上のアドレス毎に判定する書込状態判定部と、
前記不揮発性メモリ上のアドレスに書き込むデータを複数纏めて１ビットの情報を表すデータとして符号化して前記不揮発性メモリに記憶させる符号化部と、
前記不揮発性メモリにデータが書き込まれているか否かを前記書込状態判定部が前記不揮発性メモリ上の１以上のアドレス毎に判定した結果を結合し、その結合個数と同じビット数の情報を表すデータとして前記不揮発性メモリから読み出す復号化部と、
を備えることを特徴とする組込制御装置。
【請求項２】
前記復号化部は、
前記書込状態判定部が前記不揮発性メモリにデータが書き込まれていると判定した前記不揮発性メモリ上のアドレスから読み出したデータを、ビット値０または１を表す第１データとして復号化し、
前記書込状態判定部が前記不揮発性メモリにデータが書き込まれていないと判定した前記不揮発性メモリ上のアドレスから読み出したデータを、前記第１データとは異なるビット値を表す第２データとして復号化する
ことを特徴とする請求項１記載の組込制御装置。
【請求項３】
前記符号化部は、
前記復号化部が前記第１データとして復号化する１ビットの情報を前記不揮発性メモリに記憶させる場合は、前記不揮発性メモリ上のアドレス毎に所定値を書き込むことによって情報を記憶させ、
前記復号化部が前記第２データとして復号化する１ビットの情報を前記不揮発性メモリに記憶させる場合は、前記不揮発性メモリにデータを書き込まないことによって間接的に情報を記憶させる
ことを特徴とする請求項２記載の組込制御装置。
【請求項４】
前記符号化部は、
前記復号化部が前記第１データとして復号化する１ビットの情報を前記不揮発性メモリに記憶させる場合は、
前記符号化部が前記不揮発性メモリに書き込む情報と同じビット値、またはこれに関連付けられたビット値を、前記不揮発性メモリ上の複数のアドレスに前記所定値としてそれぞれ書き込む
ことを特徴とする請求項３記載の組込制御装置。
【請求項５】
前記符号化部が前記不揮発性メモリに書き込んだ値を用いて前記復号化部が復号化した情報のエラーをチェックするエラーチェック部を備えた
ことを特徴とする請求項４記載の組込制御装置。
【請求項６】
前記不揮発性メモリ上のアドレスのうち一部を、前記符号化部と前記復号化部が使用する記憶領域として割り当てるアドレス割当部を備えた
ことを特徴とする請求項１記載の組込制御装置。
【請求項７】
前記書込状態判定部は、演算装置が内蔵している回路として実装されている
ことを特徴とする請求項１記載の組込制御装置。
【請求項８】
前記符号化部と前記復号化部は、ソフトウェアとして実装されており、
前記組込制御装置は、
前記符号化部と前記復号化部を格納する記憶部と、
前記符号化部と前記復号化部を実行する演算部と、
を備えていることを特徴とする請求項１記載の組込制御装置。
【請求項９】
前記不揮発性メモリは、
データを書き込む際に、先に書き込まれている複数の連続バイトを一括して消去した上で新たにデータを書き込むことが必要なフラッシュメモリとして構成されている
ことを特徴とする請求項１記載の組込制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリを備える組込制御装置に関するものである。
【背景技術】
【０００２】
車載電子制御装置は、フラッシュメモリを内蔵したマイクロコンピュータ（以下、マイコンという）と、マイコンの外部に接続したＥＥＰＲＯＭかを備えたものがある。車載電子制御装置は、保存するデータの種類によってこれら２つの不揮発性メモリを使い分け、できるだけ安価な構成となるような工夫がなされている。
【０００３】
フラッシュメモリは、複数バイトを１ブロックとしてブロック単位でデータを書き込むことを特徴とする不揮発性メモリであり、データを書き込む際に書込先の記憶領域に先に書き込まれているデータをあらかじめ必ず消去する必要がある。そのため、データが頻繁に更新されるような使用方法（例えば書き換え回数が３００００回を超えるような使用方法）によりデバイスの劣化が早まり、長期間（例えば１５年以上）に渡って書き込まれたデータを保証することは難しい。しかし、ＥＥＰＲＯＭよりも安価で大容量の記憶領域を取得できるため、制御プログラムや適合定数（エンジンを動作させるための燃料マップや点火マップなどの定数）を保存する、読出専用のメモリとして多用されている。
【０００４】
ＥＥＰＲＯＭは、１バイトごとにデータを書き換えることができ、フラッシュメモリのようにデータを書き込む際の消去処理が必要ないため、フラッシュメモリよりも簡単なプログラム構造でデータを書き換えることができる。また、フラッシュメモリとは異なり、一度書き込まれた情報を２０年以上の間保持することが容易にできる。しかし、フラッシュメモリよりも高価であるため、大容量のデータを保存するのには向かず、運転環境に合わせて変化する学習値や車載電子制御装置毎に個別に設定することが必要な定数（例えば、定電圧電源装置の出力電圧精度やＡＤ変換器の変換精度等のバラツキを補正するための較正情報）などを保存し、さらに保持するデータ種類を絞って使用されることが多い。
【０００５】
下記特許文献１は、車載電子制御装置が従来使用していたＥＥＰＲＯＭを廃止し、ＥＥＰＲＯＭが記憶していた情報をマイコン内のフラッシュメモリに記憶する方法を提案している。この方法においては、制御プログラムおよび制御定数やバックアップが必要な制御変数を、各データの特性に基づき更新するものと更新しないものに分けて、それぞれをフラッシュメモリの異なる領域に格納することによって車載電子制御装置のＥＥＰＲＯＭを廃止している。
【０００６】
一方、電気的に書き換え可能な不揮発性メモリであるフラッシュメモリの一般的な構成は、１ビットに対応する１つのキャパシタに電荷が蓄電されているかによってデータを表現するものが広く実用されている。このキャパシタに蓄電された電荷は、データ書込直後すなわち１ビットに対応するキャパシタに電荷が蓄電された直後より、デバイスの微細欠陥によるリークなどが原因で徐々に情報が失われる。フラッシュメモリにデータが書き込まれた状態で長時間放置した場合、すなわちデータ保証年数を過ぎると、データが“０”であったのか“１”であったのかが分からなくなるデータ化けが発生する可能性が高くなる。そのため、データ化けが発生したデータに対して元のデータを復元するための技術やデータ化けによる影響が少ないデータ表現方法が提案されている。
【０００７】
下記特許文献２は、フラッシュメモリの書換回数を正確に取得するため、フラッシュメモリ中のデータが存在するアドレスと書換回数を対応させることによって、読み出した値がデータ化けしていても、読み出したアドレスの位置情報に基づき正確に元の記憶データを復元する手法を提案している。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００６−７２４６１号公報
【特許文献２】特願平１０−２１２５８４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
特許文献１に記載されている手法では、車載電子制御装置毎に個別に設定することが必要な較正値などの情報は、制御プログラムと同じ領域に格納される。そのため、あらかじめ制御プログラム内において、較正値などのデータが同じ領域に格納されることを想定しておく必要があり、制御プログラムやこれを搭載した車載制御装置を製造するプログラムが複雑になる懸念がある。
【００１０】
特許文献２に記載されている技術は、フラッシュメモリ内に保持すべき値が更新される場合は有効である。しかし、いったん書き込まれた後は更新されない値については、書換回数が変化しないため、本文献が提案する手法は有効ではないと考えられる。
【００１１】
本発明は、上記のような課題に鑑みてなされたものであり、組込制御装置の不揮発性メモリに書き込まれたデータが、不揮発性メモリの経年劣化により不良データとなった場合においても、特別なデータ復旧手段によらず、元のデータを正確に読み出すことができる技術を提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明に係る組込制御装置は、不揮発性メモリ上のアドレスに書き込むデータを複数纏めて１ビットとして符号化し、不揮発性メモリにデータが書き込まれているか否かを不揮発性メモリ上のアドレス毎に判定した結果を複数結合して復号化する。
【発明の効果】
【００１３】
本発明に係る組込制御装置によれば、不揮発性メモリに書き込まれたデータが経年劣化によってどのような値に変化しても、データが書き込まれた形跡が残っている限り読み出すことができる。
【００１４】
上記した以外の課題、構成、および効果は、以下の実施形態の説明により明らかになるであろう。
【図面の簡単な説明】
【００１５】
【図１】実施形態１に係る組込制御装置１００の構成図である。
【図２】ブランクチェック機能によって得られる判定結果を説明する図である。
【図３】フラッシュメモリ１５５に１６進数の”７Ｄ”を書き込む手順を説明する図である。
【図４】フラッシュメモリ１５５からデータを読み出す手順を説明する図である。
【図５】フラッシュメモリ１５５に書き込んだデータが経年劣化によって変化した際にデータを読み取る手順を説明する図である。
【図６】ＣＰＵ１５１がフラッシュメモリ１５５からデータを読み出す処理をフローチャートとして記載した図である。
【発明を実施するための形態】
【００１６】
以下では本発明の実施形態として、エンジン制御用の電子制御装置を例示するが、本発明の対象はこれに限らず組込制御装置全般について適用できるものである。
【００１７】
＜実施の形態１：装置構成＞
図１は、本発明の実施形態１に係る組込制御装置１００の構成図である。組込制御装置１００は、車両が備えるエンジンの動作を制御する電子制御装置であり、入力Ｉ／Ｆ１１０、出力Ｉ／Ｆ１２０、通信Ｉ／Ｆ１３０、電源回路１４０、マイコン１５０を備える。
【００１８】
入力Ｉ／Ｆ１１０は、アナログセンサ２０１とディジタルスイッチ２０２がそれぞれ出力する信号を取り込むインターフェースであり、取り込んだ信号をマイコン１５０に出力する。アナログセンサ２０１は、車両またはエンジンに備え付けられたアナログセンサ（例えば、吸入空気量センサやアクセル開度センサ）である。ディジタルスイッチ２０２は、車両またはエンジンに備え付けられたＯＮ／ＯＦＦなどのスイッチ（例えば、イグニッションスイッチやブレーキランプスイッチ）である。
【００１９】
出力Ｉ／Ｆ１２０は、アクチュエータ２０３に対して制御信号を出力するインターフェースである。アクチュエータ２０３は、エンジンの稼動部位であり、組込制御装置１００が出力する制御信号にしたがって動作する。
【００２０】
通信Ｉ／Ｆ１３０は、外部通信機器２０４と通信するためのインターフェースである。外部通信機器２０４は、組込制御装置１００に接続される他の電子制御装置やディーラーサービスなどの検査設備などの装置である。
【００２１】
電源回路１４０は、電源２０５より入力された電圧を、組込制御装置１００の各部品を駆動させるための電圧（例えば５Ｖ）に変換する回路である。
【００２２】
マイコン１５０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１５１、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１５２、Ｉ／Ｏ１５３、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１５４、フラッシュメモリ１５５を備える。
【００２３】
ＣＰＵ１５１は、ＲＯＭ１５２が格納している制御プログラム１５２１を実行することにより、エンジンの制御演算を実行する。また、制御プログラム１５２１を実行している間は、入力Ｉ／Ｆ１１０を介してアナログセンサ２０１やディジタルスイッチ２０２からの信号を取り込む。入力Ｉ／Ｆ１１０が取り込んだ信号は、Ｉ／Ｏ１５３を介して数値化され、ＣＰＵ１５１がその値を取得する。また、通信Ｉ／Ｆ１３０を介して外部通信機器２０４からの信号を取り込み、外部通信機器２０４が要求する処理を実行する。
【００２４】
ＣＰＵ１５１は、Ｉ／Ｏ１５３を介して取得した各入力値、ＲＯＭ１５２が格納しているエンジン制御定数１５２２、およびフラッシュメモリ１５５が格納しているエンジン制御装置固有定数１５５２を読み込んで、エンジン制御変数１５４１を算出する。ＣＰＵ１５１は、算出したエンジン制御変数１５４１をＲＡＭ１５４に格納し、以後の制御演算においてその値を使用する。
【００２５】
ＣＰＵ１５１は、Ｉ／Ｏ１５３と出力Ｉ／Ｆ１２０を介して、制御演算に基づく信号をアクチュエータ２０３に出力する。外部通信機器２０４に制御演算の結果を出力する場合は、Ｉ／Ｏ１５３と通信Ｉ／Ｆ１３０を介して出力する。
【００２６】
ＲＯＭ１５２とフラッシュメモリ１５５は、それぞれデータ書換可能回数とデータ保持年数が異なっている。ＲＯＭ１５２のデータ書換可能回数は１０００回以下、データ保持年数２０年であるものとする。フラッシュメモリ１５５のデータ書換可能回数は５００００回以下、データ保持年数は１５年までが保証されているものとする。
【００２７】
エンジン制御定数１５２２は、噴射量や点火時期を算出するために用いる定数であり、組込制御装置１００毎に共通であるため、ＲＯＭ１５２内に格納されている。エンジン制御装置固有定数１５５２は、例えば組込制御装置１００を構成する部品のバラつきなどによって生じるＡ／Ｄ変換器の誤差を補正するための較正値などのデータであり、組込制御装置１００毎に値が異なるため、フラッシュメモリ１５５内に格納されている。エンジン制御変数バックアップ１５５１は、エンジン制御変数１５２２と同じ値をバックアップしたものである。
【００２８】
本実施形態１における「書込状態判定部」「符号化部」「復号化部」は、マイコン１５０およびＣＰＵ１５１がこれに相当する。これらの機能はＣＰＵ１５１が実行するソフトウェアとして実装することもできるし、マイコン１５０などが備える回路デバイスなどのハードウェアとして実装することもできる。以下では「書込状態判定部」についてはマイコン１５０が備える回路デバイスとして実装され、「符号化部」「復号化部」は制御プログラム１５２１の一部としてソフトウェア実装されているものとするが、実装形態はこれに限られるものではない。
【００２９】
＜実施の形態１：ブランクチェック＞
以下では、ＣＰＵ１５１がフラッシュメモリ１５５に格納されているデータを読み取る際に使用する、ブランクチェック機能について説明する。ブランクチェック機能は、マイコン１５０が一般的に備えている機能の１つであり、フラッシュメモリ１５５内のある領域（１ブロック）に対して既にデータが書き込まれているか、それとも未だ何らのデータも書き込まれていないかを判別し、その判定結果を“０”または“１”によって返す機能である。
【００３０】
図２は、ブランクチェック機能によって得られる判定結果を説明する図である。ここではフラッシュメモリ１５５内のアドレス空間の一部とそのアドレス空間に格納されるデータを模式的に例示した。
【００３１】
図２（ａ）は、アドレス＄６０３０番地の１バイトのデータを表している。図２（ｂ）は、図２（ａ）のアドレスから連続した８バイトを１つのデータの塊としたものであり、このデータの塊を１ブロックとする。図２（ｂ）で示す１ブロックが、フラッシュメモリ１５５へ１回アクセスする毎にデータを書き込むことができる最小単位である。マイコン１５０によっては１ブロックの大きさが異なる場合があるので、図２に示す８バイトは例示である。
【００３２】
図２（ｃ）は、既にデータが書き込まれているブロックを示す。ここでは８バイト連続して “ＦＦ”または“００”が格納されている例を示したが、後述するように何らかの値が書き込まれていることが分かればよいので、具体的な値は何でもよい。
【００３３】
図２（ｄ）は、データが何も書き込まれていないブロックを示す。データが書き込まれていないとは、例えば“ＦＦ”や“００”のように初期値として用いられる値を含む、いかなる値も書き込まれていない状態を意味する。
【００３４】
マイコン１５０が図２（ｃ）の領域に対してブランクチェックを実施すると、マイコン１５０は何らかのデータが当該ブロックに書き込まれていると判断し、 “０（書込有）”を返答する。マイコン１５０が図２（ｄ）の領域に対してブランクチェックを実施すると、マイコン１５０はデータが当該ブロックに全く書き込まれていないと判断し、 “１（書込無）”を返答する。
【００３５】
＜実施の形態１：データ書込手順＞
図３は、フラッシュメモリ１５５に１６進数の”７Ｄ”を書き込む手順を説明する図である。具体的には、エンジン制御装置固有定数１５５２としてデータを書き込む際に、本手順が用いられる。以下図３にしたがって、ＣＰＵ１５１がフラッシュメモリ１５５にデータを書き込む手順を説明する。
【００３６】
図３（ａ）は、ＣＰＵ１５１が１６進数“７Ｄ”を２進数に変換して各ビットにアドレスを割り当てる様子を示す図である。ＣＰＵ１５１は、フラッシュメモリ１５５に書き込むデータを２進数に変換し、ビット毎に書込先ブロックのアドレスを割り当てる。１ビットに対して１ブロック（１バイト）分の領域が割り当てられることに留意されたい。ＣＰＵ１５１が実施する図３（ａ）の処理を、本実施形態１では符号化と称する。“７Ｄ”を２進数に変換すると、“０１１１”（７）、“１１０１”（Ｄ）となる。ここでは各ビットに割り当てたブロックの番号を１〜８とした。各ブロックと書き込むデータの対応関係については図３（ｃ）で説明する。
【００３７】
図３（ｂ）は、図３（ａ）で割り当てた各ブロックをフラッシュメモリ１５５上のアドレスに配置した様子を示す図である。この例では、ブロック１をアドレス＄６０００〜６００７番地に、ブロック２をアドレス＄６００８〜６００Ｆ番地というように８つのブロックを配置している。具体的にどのアドレスを割り当てるかについては、ＣＰＵ１５１が任意に決定してもよいし、例えばフラッシュメモリ１５５内部のコントローラが特定の領域を指定するようにしてもよい。
【００３８】
図３（ｃ）は、図３（ｂ）で割り当てた各ブロックに対してデータを書き込んだ状態を示す図である。ここではビット“０”に対応するブロックにデータを書き込み、ビット“１”に対応するブロックにはデータを書き込まないこととしたが、ビット値と書込有無の対応関係が一意であればこの反対でもよい。ＣＰＵ１５１は、ビット“０”に対応するブロックに任意の値を書き込む。後述するようにデータが書き込まれていることが分かればよいので、値そのものは何でもよいし、ブロック内の全てのバイトが同じ値でなくともよい。
【００３９】
なお、フラッシュメモリ１５５の特性上、新たなデータを書き込む際には、先に書き込まれているデータをいったん一括消去する必要がある。したがってＣＰＵ１５１は、ビット“１”に対応するブロックを、図３（ｃ）に示す処理とは別に改めて未書込状態にする必要はない。
【００４０】
＜実施の形態１：データ読取手順＞
図４は、フラッシュメモリ１５５からデータを読み出す手順を説明する図である。ここでは図３で説明した１６進数“７Ｄ”を読み出す例を示した。ＣＰＵ１５１がフラッシュメモリ１５５からデータを読み出して１６進数に変換する処理を、本実施形態１では復号化と称する。
【００４１】
図４（ａ）は、図３においてＣＰＵ１５１がデータを書き込んだブロック１〜８の書き込み状態を、ブランクチェック機能によってブロック１から順にチェックし、“０”または“１”の判定結果を取得する様子を示す。図４（ｂ）は、各ブロックについてのブランクチェック結果をまとめた表である。図４（ｃ）は、ブロック１〜８のブランクチェック結果を繋ぎ合わせて２進数８ビットのデータを復号化する様子を示す。図４（ｃ）に示すように、ブランクチェックの結果を結合すると、図３においてＣＰＵ１５１が書き込んだデータを復号化できる。
【００４２】
図５は、フラッシュメモリ１５５に書き込んだデータが経年劣化によって変化した際にデータを読み取る手順を説明する図である。図５（ａ）はＣＰＵ１５１がフラッシュメモリ１５５へ最初に書き込んだデータを示す。図５（ｂ）は、経年劣化によってデータが変化した様子を示す。図５（ａ）においてＣＰＵ１５１が書き込んだデータは喪失していることが分かる。
【００４３】
図５（ｃ）は、図５（ｂ）に示すデータ状態に対して、図４（ａ）（ｂ）と同様にブランクチェックを実施した結果を示す。ブランクチェック機能は、フラッシュメモリ１５５に何らかのデータが書き込まれていればその値によらず同一の結果を返答するため、図５（ｃ）に示すブランクチェック結果は図４（ｂ）と同一である。したがって図５（ｄ）に示すように、ＣＰＵ１５１は図４（ｃ）と同じ復号化結果を得ることができる。すなわち本実施形態１においては、フラッシュメモリ１５５に何らかの値が格納されていれば、常に同一のデータを読み出すことができるので、経年劣化に対して耐性があるといえる。
【００４４】
図６は、ＣＰＵ１５１がフラッシュメモリ１５５からデータを読み出す処理をフローチャートとして記載した図である。本フローチャートが説明する処理は、図４〜図５で説明した処理に相当する。以下、図６の各ステップについて説明する。
（図６：ステップＳ６０１）
ＣＰＵ１５１は、制御プログラム１５２１を実行する過程において、フラッシュメモリ１５５からエンジン制御装置固有定数１５５２を読み出す際に、本フローチャートを起動する。
（図６：ステップＳ６０２）
ＣＰＵ１５１は、一時的な変数ｉに、フラッシュメモリ１５５に書き込まれた、エンジン制御装置固有定数１５５２を表現する領域の先頭ブロックを設定する。変数ｉは、ブランクチェックを実施するブロックを指定する値であると同時に、ブランクチェックを実施した回数を数えるブランクチェック回数カウンタの役割を果たす。
【００４５】
（図６：ステップＳ６０３）
ＣＰＵ１５１は、一時的な変数ｎに、エンジン制御装置固有定数１５５２を表現する領域の最後のブロックを設定する。変数ｎは、ブランクチェック終了回数を意味する。Ｓ６０２とＳ６０３における制御定数が格納されている領域を示すブロックは、例えばあらかじめＲＯＭ１５２内のエンジン制御定数１５４１として格納しておいてもよいし、通常制御中にＣＰＵ１５１が演算してＲＡＭ１５４に格納しておいてもよい。いずれの場合においても、最終的にはＣＰＵ１５１がフラッシュメモリ１５５上の書込先アドレスを割り当てる。
（図６：ステップＳ６０３：補足）
フラッシュメモリ１５５の全領域を本実施形態１の対象とする必要はなく、格納すべきデータ容量を確保できる範囲で書込先アドレスを割り当てることができればよい。残りの記憶容量はその他一般の記憶装置として開放することもできる。
【００４６】
（図６：ステップＳ６０４〜Ｓ６０５）
ＣＰＵ１５１は、ブランクチェックの結果を一時記憶する変数ｄａｔａを、０に初期化する（Ｓ６０４）。ＣＰＵ１５１は、変数ｉと変数ｎを比較し、ｉの方が大きければ本フローチャートを終了し、それ以外であれば以下のステップに進む（Ｓ６０５）。
（図６：ステップＳ６０６）
マイコン１５０は、ブランクチェックを実行する。ブランクチェックしたいブロックの番号（またはアドレス）は、変数ｉによって指定される。ブランクチェックの結果は、変数ｄａｔａ１に格納される。
【００４７】
（図６：ステップＳ６０７）
ＣＰＵ１５１は、変数ｄａｔａの値を左にシフトした結果とＳ６０６で得られた変数ｄａｔａ１の論理和を演算して変数ｄａｔａに格納する。本ステップは、各ブロックに対するブランクチェックの結果を変数ｄａｔａの右側から順に追加する処理である。
（図６：ステップＳ６０８）
ＣＰＵ１５１は、ブロック番号を１ずつ増加させながら、ステップＳ６０５〜Ｓ６０８の処理を所定ブロック数（本実施形態１では８）だけ繰り返し実行する。最終的に、変数ｄａｔａにはフラッシュメモリ１５５から読み出した２進数の値が格納される。ＣＰＵ１５１は、これを１６進数に変換して復号化の結果を得ることができる。
【００４８】
＜実施の形態１：まとめ＞
以上のように、本実施形態１に係る組込制御装置１００は、複数のアドレスに対して書き込むデータを纏めて１ビットとして符号化し、これらアドレスに対するブランクチェック結果を複数結合してその結合個数と同数のビット数を有するデータとして復号化する。これにより、ブランクチェックが有効に機能する限り、フラッシュメモリ１５５内のデータが劣化しても元のデータを確実に読み出すことができる。したがって、仮にデータが書き込まれているブロックにデータ化けが発生して不正データとなったとしても、データを喪失させることなく長期間保存することができる。
【００４９】
なお、本実施形態１で説明した手法は、フラッシュメモリ１５５に書き込むビット値そのものを書き込む場合と比較して多くの記憶容量を必要とするが、先に説明したようにフラッシュメモリ１５５へ格納するデータ種類は限られているので、実際上は問題にならないと考えられる。
【００５０】
＜実施の形態２＞
実施形態１では、ＣＰＵ１５１がフラッシュメモリ１５１に書き込む値は何でもよいことを説明したが、この値をより積極的に活用することも考えられる。例えばフラッシュメモリ１５５に書き込むビット値そのもの（実施形態１では“７Ｄ”）を、実施形態１で説明した“００”や“ＦＦ”の代わりに書き込み、図４〜図６で説明した手順にしたがって復号化した結果と実際にフラッシュメモリ１５５上に実際に書き込まれている値を比較してエラーチェックを実施することができる。この場合、ＣＰＵ１５１は本実施形態２における「エラーチェック部」として動作する。
【００５１】
あるいは、フラッシュメモリ１５５に書き込むビット値そのものに代えて、これに関連付けられた値（例えば暗号化した値）を書き込み、読み出すときは所定の関連付け規則にしたがってデータを復元することもできる。
【００５２】
上述のエラーチェック機能は、ＣＰＵ１５１内部の機能としてハードウェアによって実装することもできるし、例えば制御プログラム１５２１の一部としてソフトウェアによって実装することもできる。
【００５３】
なお、復号化結果とフラッシュメモリ１５５上に実際に書き込まれている値が異なる場合における処理は、組込制御装置１００の仕様などによって異なる。例えば両者が互いに異なる場合はエラーとして取り扱うこともできるし、値が異なることを通知してフラッシュメモリ１５５の交換を促すようにすることもできる。
【００５４】
本発明は上記した実施形態に限定されるものではなく、様々な変形例が含まれる。上記実施形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施形態の構成の一部を他の実施形態の構成に置き換えることもできる。また、ある実施形態の構成に他の実施形態の構成を加えることもできる。また、各実施形態の構成の一部について、他の構成を追加・削除・置換することもできる。
【００５５】
例えば、上記実施形態ではブランクチェック機能がマイコンに搭載され、最小書込み単位が１ブロック８バイトのフラッシュメモリ１５５を用いた例を説明したが、ブランクチェックの単位は１ブロック８バイトに限られるものではなく、１ブロック２バイトや４バイト単位でブランクチェックする場合においても本発明を適用することができる。また、本発明はブランクチェック機能が搭載されているマイコンまたは電子機器とフラッシュメモリで構成されるすべての組込制御装置において適用することができる。
【００５６】
上記各構成、機能、処理部、処理手段等は、それらの一部や全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリ、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記録装置、ＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体に格納することができる。
【符号の説明】
【００５７】
１００：組込制御装置、１１０：入力Ｉ／Ｆ、１２０：出力Ｉ／Ｆ、１３０：通信Ｉ／Ｆ、１４０：電源回路、１５０：マイコン、１５１：ＣＰＵ、１５２：ＲＯＭ、１５３：Ｉ／Ｏ、１５４：ＲＡＭ、１５５：フラッシュメモリ、２０１：アナログセンサ、２０２：ディジタルスイッチ、２０３：アクチュエータ、２０４：外部通信機器、２０５：電源。
【図１】
2014026568.tif 000003
【図２】
2014026568.tif 000004
【図３】
2014026568.tif 000005
【図４】
2014026568.tif 000006
【図５】
2014026568.tif 000007
【図６】
2014026568.tif 000008