(57)【特許請求の範囲】
【請求項１】
書換え可能な不揮発性メモリ（３０）と、
前記不揮発性メモリに書込み用データを書込む書込み処理において、前記書込み用データの所定位置に設定された妥当性判定データと、前記書込み用データと、既に前記不揮発性メモリに書込まれているデータとに基づいて、前記書込み用データの妥当性を判定する妥当性判定手段（Ｓ４１２、Ｓ４１４）と、
前記書込み用データが妥当であると前記妥当性判定手段が判定すると、前記書込み用データを前記不揮発性メモリに書込み、前記書込み用データが妥当ではないと前記妥当性判定手段が判定すると、前記不揮発性メモリへの前記書込み用データの書込みを中止する書込み手段（Ｓ４１６、Ｓ４１８）と、
を備えることを特徴とするマイクロコンピュータ（２０）。
【請求項２】
書換え可能な不揮発性メモリ（３０）と、
前記不揮発性メモリに書込み用データを書込む書込み処理において、前記書込み用データとは別に取得する妥当性判定データと、前記書込み用データと、既に前記不揮発性メモリに書込まれているデータとに基づいて、前記書込み用データの妥当性を判定する妥当性判定手段（Ｓ４３６、Ｓ４３８）と、
前記書込み用データが妥当であると前記妥当性判定手段が判定すると、前記書込み用データを前記不揮発性メモリに書込み、前記書込み用データが妥当ではないと前記妥当性判定手段が判定すると、前記不揮発性メモリへの前記書込み用データの書込みを中止する書込み手段（Ｓ４４０、Ｓ４４２）と、
を備えることを特徴とするマイクロコンピュータ（２０）。
【請求項３】
請求項１または２に記載のマイクロコンピュータであって、
前記不揮発性メモリはブロック単位でデータを書込まれるメモリであり、
前記書込み手段はブロック単位で前記不揮発性メモリに前記書込み用データを書込む、ことを特徴とするマイクロコンピュータ。
【請求項４】
請求項３に記載のマイクロコンピュータであって、
前記妥当性判定手段は、前記不揮発性メモリの最終ブロックに前記書込み用データを書込むときに前記妥当性を判定する、
ことを特徴とするマイクロコンピュータ。
【請求項５】
請求項４に記載のマイクロコンピュータであって、
前記妥当性判定手段は、さらに前記最終ブロックよりも前に前記不揮発性メモリのブロックに前記書込み用データを書込むときに前記妥当性を判定する、
ことを特徴とするマイクロコンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、書換え可能な不揮発性メモリに書込む書込み用データの妥当性を判定する技術に関する。
【背景技術】
【０００２】
フラッシュメモリ等の書換え可能な不揮発性メモリを内蔵したマイクロコンピュータにおいて、書換え可能な不揮発性メモリにデータを書込む技術が知られている（例えば、特許文献１参照。）。
【０００３】
書換え可能な不揮発性メモリにデータを書込む場合、不正なデータが書込まれ、書込まれた不正なデータが使用されることを防止するために、書込み用データが書込まれてから書込まれたデータの妥当性を判定することが行われる。
【０００４】
書込まれたデータが不正なデータの場合、不正データであることを示すステータス情報として例えばフラグをセットし、マイクロコンピュータの起動時にフラグがセットされている場合、不正なデータが書込まれたと判定することが考えられる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１３−１５３４４９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、書換え可能な不揮発性メモリに対して不正なデータの書込みが完了した後に、処理を強制的に終了し、書込み用データの妥当性の判定処理が実行されないようにする不正書込みが行われるおそれがある。この場合、フラグがセットされないので、書込まれた不正データが使用されるおそれがある。
【０００７】
本発明は、上記課題を解決するためになされたものであり、書換え可能な不揮発性メモリに不正なデータの書込みが完了することを防止する技術を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明のマイクロコンピュータは、書換え可能な不揮発性メモリと、妥当性判定手段と、書込み手段と、を備える。
妥当性判定手段は、不揮発性メモリに書込み用データを書込む書込み処理において、書込み用データと既に不揮発性メモリに書込まれているデータとに基づいて書込み用データの妥当性を判定する。
【０００９】
書込み手段は、書込み用データが妥当であると妥当性判定手段が判定すると、書込み用データを不揮発性メモリに書込み、書込み用データが妥当ではないと妥当性判定手段が判定すると、不揮発性メモリへの書込み用データの書込みを中止する。
【００１０】
この構成によれば、書込み用データの書込みが完了してから書込まれたデータの妥当性を判定するのではなく、書込み用データを書込むときに、これから不揮発性メモリに書込む書込み用データと既に不揮発性メモリに書込まれているデータとに基づいて書込み用データの妥当性を判定する。書込みが完了する前に、書込み用データの妥当性を判定するので、不正なデータの書込みが完了することを防止できる。
【００１１】
書込み用データが妥当でない場合には、再書込みを行うか、不正な書込みが行われたことを通知する等の適切な処理を行うことができる。
データの再書込みを行う場合、不正なデータの書込みが完了する前に再書込みに移行できるので、再書込みに要する時間を短縮できる。
【００１２】
また、書換え可能な不揮発性メモリがフラッシュメモリ等のブロック単位で書込まれるメモリの場合、従来のように書込み用データの書込みが完了してから、書込んだデータの妥当性を判定すると、書込んだデータの妥当性を判定する妥当性判定データを不揮発性メモリに書込むために、書込み用データを書込むブロック以外にさらに１ブロックが必要になる。
【００１３】
特に、不揮発性メモリの容量が十分に確保できないマイクロコンピュータの場合、書込んだデータの妥当性を判定する妥当性判定データのためだけに１ブロックを使用することは避けたいところである。
【００１４】
本発明では、書込みが完了する前に書込み用データの妥当性を判定するので、書込み用データの妥当性を判定する妥当性判定データを不揮発性メモリに書込む場合、書込み用データと同じブロックに書込むことができる。したがって、書込み用データの妥当性を判定する妥当性判定データだけのために１ブロックを使用することを防止できる。
【００１５】
尚、特許請求の範囲に記載した括弧内の符号は、一つの態様として後述する実施形態に記載の具体的手段との対応関係を示すものであって、本発明の技術的範囲を限定するものではない。
【図面の簡単な説明】
【００１６】
【図１】第１実施形態の書込みシステムを示すブロック図。
【図２】データ書込装置による書込み処理を示すフローチャート。
【図３】マイクロコンピュータによる書込み処理を示すフローチャート。
【図４】第１実施形態によるデータの書込みを説明する説明図。
【図５】第２実施形態のデータ書込装置による書込み処理を示すフローチャート。
【図６】第２実施形態のマイクロコンピュータによる書込み処理を示すフローチャート。
【図７】第２実施形態によるデータの書込みを説明する説明図。
【図８】第３実施形態によるデータの書込みを説明する説明図。
【図９】第４実施形態によるデータの書込みを説明する説明図。
【発明を実施するための形態】
【００１７】
以下、本発明が適用された実施形態について図を用いて説明する。
［１．第１実施形態］
［１−１．構成］
図１に示す第１実施形態の書込みシステム２は、電子制御装置（ＥＣＵ）１０と、データ書込装置５０とを備えている。
【００１８】
ＥＣＵ１０に搭載されたマイクロコンピュータ（以下、「マイコン」とも言う。）２０は、ＣＰＵ２２と、ＲＡＭ２４と、書換え可能な不揮発性メモリであるフラッシュメモリ３０と、外部通信部４０とを備えている。
【００１９】
ＣＰＵ２２は、外部通信部４０にデータ書込装置５０が接続され、データ書込装置５０から送信される書込み用データをフラッシュメモリ３０の書込み領域３２に書込むときには、非書込み領域３４に記憶されているデータ書込みプログラムを実行する。書込み用データには、制御プログラム、テーブルのデータ等が含まれる。
【００２０】
それ以外の場合、ＣＰＵ２２は、フラッシュメモリ３０の書込み領域３２に書込まれている制御プログラムを実行する。
［１−２．処理］
書込みシステム２が実行するデータの書込み処理について図２および図３のフローチャートに基づいて説明する。図２はデータ書込装置５０が実行するデータ書込み処理であり、図３はマイコン２０が実行するデータ書込み処理である。
【００２１】
（データ書込装置５０のデータ書込み処理）
図２のＳ４００において、データ書込装置５０は、マイコン２０に対して正式なデータ書込装置であることを照合するための照合用コマンドと、照合用の認証データとをマイコン２０に送信する。
【００２２】
マイコン２０から正式なデータ書込装置であることを認証されると、データ書込装置５０は、フラッシュメモリ３０に記憶されているデータを消去する消去コマンドをマイコン２０に送信する（Ｓ４０２）。
【００２３】
次に、データ書込装置５０は、フラッシュメモリ３０に書込む書込み用データをマイコン２０に送信するとともに、書込み用データをフラッシュメモリ３０に書込むコマンドをマイコン２０に送信する（Ｓ４０４）。データ書込装置５０からマイコン２０に送信される書込み用データのうち、フラッシュメモリ３０の最終ブロックに書込む書込み用データの所定位置に、書込み用データの妥当性を判定するための妥当性判定データが設定されている。
【００２４】
マイコン２０が書込み用データの書込みを完了すると、データ書込装置５０は、書込んだデータをベリファイするベリファイ用コマンドをマイコン２０に送信する（Ｓ４０６）。
【００２５】
（マイコン２０のデータ書込み処理）
図３のデータ書込み処理は、マイコン２０がデータ書込装置５０から照合用コマンドと消去用コマンドとを受信し、マイコン２０がデータ書込装置５０の照合と、フラッシュメモリ３０の消去が終了すると実行される。
【００２６】
データ書込装置５０からすべての書込み用データを受信しＲＡＭ２４に記憶すると（Ｓ４１０：Ｙｅｓ）、マイコン２０は、図４に示すように、消去したフラッシュメモリ３０の書込み領域３２のブロックに、データ書込装置５０から受信してＲＡＭ２４に記憶した書込み用データを順次書込む。
【００２７】
マイコン２０は、フラッシュメモリ３０の最終ブロックに書込み用データを書込むときに、既にフラッシュメモリ３０に書込んだデータと、これから最終ブロックに書込む書込み用データとから、フラッシュメモリ３０に書込む書込み用データの妥当性を判定するための期待値を算出する。書込み用データの妥当性を判定するための期待値は、公知のＡＥＳ、ＭＩＳＴＹ等の暗号アルゴリズムを用いて算出される。
【００２８】
そして、算出した期待値と、最終ブロックに書込む書込み用データの所定位置に設定された妥当性判定データとが一致するか否かにより、書込み用データの妥当性を判定する（Ｓ４１２）。
【００２９】
期待値と妥当性判定データとが一致し書込み用データが妥当であれば（Ｓ４１４：Ｙｅｓ）、マイコン２０は最終ブロックに期待値を設定された書込み用データを書込む（Ｓ４１６）。期待値と妥当性判定データとが一致せず書込み用データが妥当でなければ（Ｓ４１４：Ｎｏ）、マイコン２０は書込み用データの書込みを中止し、書込み異常をデータ書込装置５０に通知する（Ｓ４１８）。
【００３０】
フラッシュメモリ３０への書込み用データの書込みが完了すると、マイコン２０は、データ書込装置５０からベリファイ用コマンドを受信し、フラッシュメモリ３０にデータが正常に書込まれた否かを判定する。
【００３１】
マイコン２０は起動時にフラッシュメモリ３０の最終ブロックにデータが書込まれているか否かを判定する。データが書込まれていない場合、マイコン２０は、非書込み領域３４のデータ書込みプログラムを起動してデータ書込み処理をリトライする。
【００３２】
フラッシュメモリ３０の最終ブロックにデータが書込まれている場合、マイコン２０は、正常なデータがフラッシュメモリ３０に書込まれたと判断し、書込み領域３２の制御プログラムを実行する。
【００３３】
［１−３．効果］
以上説明した第１実施形態によると、以下の効果を得ることができる。
（１）フラッシュメモリ３０の最終ブロックに書込み用データを書込むときに、書込み用データと既にフラッシュメモリ３０に書込まれているデータとに基づいて書込み用データの妥当性を判定し、書込み用データが妥当ではない場合、書込みを中止する。これにより、妥当性のない不正なデータの書込みが完了することを防止できる。
【００３４】
（２）書込み用データが妥当ではないときに書込み処理をリトライする場合、最終ブロックにデータを書込む前にリトライするので、最終ブロックにデータを書込んでからリトライするよりも書込み処理に要する時間を短縮できる。
【００３５】
（３）最終ブロックに書込む書込み用データに妥当性判定データを設定できるので、妥当性判定データを書込むためのブロックを、書込み用データを書込むブロック以外に使用する必要がない。これにより、書込み用データの書込みに要するフラッシュメモリの容量を低減できる。
【００３６】
［２．第２実施形態］
［２−１．第１実施形態との相違点］
第２実施形態の書込みシステムの構成は、第１実施形態の書込みシステム２と実質的に同一である。第２実施形態は、データ書込み処理の一部が第１実施形態と異なる。以下の処理の説明において、第１実施形態の構成と同一符号を使用する。
【００３７】
［２−２．処理］
第２実施形態の書込みシステム２が実行するデータの書込み処理について図５〜図７に基づいて説明する。図５はデータ書込装置５０が実行するデータ書込み処理を示すフローチャートであり、図６はマイコン２０が実行するデータ書込み処理を示すフローチャートである。
【００３８】
（データ書込装置５０のデータ書込み処理）
図５のＳ４２０において、データ書込装置５０は、マイコン２０に対して正式なデータ書込装置であることを照合するための照合用コマンドと、照合用の認証データと、書込み用データの妥当性を判定するための妥当性判定データとをマイコン２０に送信する。図５のＳ４２２〜Ｓ４２６の処理は、図２のＳ４０２〜Ｓ４０６の処理と実質的に同一であるから説明を省略する。
【００３９】
（マイコン２０のデータ書込み処理）
図６のデータ書込み処理は、マイコン２０がデータ書込装置５０の照合と、フラッシュメモリ３０の消去を終了すると実行される。
【００４０】
データ書込装置５０から書込み用データの妥当性を判定するための妥当性判定データを受信すると（Ｓ４３０：Ｙｅｓ）、マイコン２０は、受信した妥当性判定データをＲＡＭ２４に記憶する（Ｓ４３２）。
【００４１】
データ書込装置５０からすべての書込み用データを受信しＲＡＭ２４に記憶すると（Ｓ４３４：Ｙｅｓ）、マイコン２０は、図７に示すように、消去したフラッシュメモリ３０の書込み領域３２のブロックに、データ書込装置５０から受信してＲＡＭ２４に記憶した書込み用データを順次書込む。
【００４２】
マイコン２０は、フラッシュメモリ３０の最終ブロックに書込み用データを書込むときに、既にフラッシュメモリ３０に書込んだデータと、これから最終ブロックに書込む書込み用データとから、フラッシュメモリ３０に書込む書込み用データの妥当性を判定するための期待値を算出する。
【００４３】
そして、算出した期待値と、ＲＡＭ２４に記憶した妥当性判定データとが一致するか否かにより、フラッシュメモリ３０に書込む書込み用データの妥当性を判定する（Ｓ４３６）。図６のＳ４３８〜Ｓ４４２の処理は図３のＳ４１４〜Ｓ４１８の処理と実質的に同一であるから説明を省略する。
【００４４】
［２−３．効果］
以上説明した第２実施形態によると、第１実施形態の効果（１）〜（３）に加え、以下の効果が得られる。
【００４５】
書込み用データの妥当性を判定するための妥当性判定データを、書込み用データとは別にデータ書込装置５０から受信して取得し、書込み用データの妥当性を判定するときに使用するので、フラッシュメモリ３０に妥当性判定データは書込まれない。これにより、第３者がフラッシュメモリ３０に書込まれたデータを解析しても、妥当性判定データを知ることはできない。
【００４６】
［３．第３実施形態］
［３−１．第１実施形態との相違点］
第３実施形態の書込みシステムの構成は、第１実施形態の書込みシステム２と実質的に同一である。第３実施形態は、データ書込み処理の一部が第１実施形態と異なる。以下の説明において、第１実施形態の構成と同一符号を使用する。
【００４７】
図８に示すように、第３実施形態では、フラッシュメモリ３０の最終ブロックに書込み用データを書込むときだけでなく、最終ブロックよりも前に少なくとも一つのブロックに書込み用データを書込むときに、既にフラッシュメモリ３０に書込まれているデータと、これから該当するブロックに書込む書込み用データとに基づいて、書込み用データの妥当性を判定する。
【００４８】
書込み用データの妥当性を判定する妥当性判定データは、図８に示すように書込み用データ内に設定されてもよいし、第２実施形態のように、書込み用データとは別にデータ書込装置５０から受信し、ＲＡＭ２４に記憶されてもよい。
【００４９】
［３−２．効果］
以上説明した第３実施形態によると、第１実施形態の効果（１）〜（３）に加え、以下の効果が得られる。
【００５０】
最終ブロックよりも前に書込み用データをブロックに書込むときに書込み用データの妥当性を判定し、妥当ではない場合に書込み処理をリトライするので、最終ブロックで書込み用データの妥当性を判定してリトライするよりも、書込み処理に要する時間を短縮できる。
【００５１】
［４．第４実施形態］
［４−１．第１実施形態との相違点］
第４実施形態の書込みシステムの構成は、第１実施形態の書込みシステム２と実質的に同一である。第４実施形態は、データ書込み処理の一部が第１実施形態と異なる。以下の説明において、第１実施形態の構成と同一符号を使用する。
【００５２】
図９に示すように、第４実施形態では、フラッシュメモリ３０の最終ブロックではない一部のブロックを消去してから書込み用データを書込む。このとき、既にフラッシュメモリ３０に書込まれているデータと、これから該当するブロックに書込む書込み用データとに基づいて、書込み用データの妥当性を判定する。
【００５３】
書込み用データの妥当性を判定する妥当性判定データは、図９に示すように、以前に最終ブロックに書込み用データが書込まれたときに設定されているデータを使用する。
この場合、最終ブロックの妥当性判定データを含み既にフラッシュメモリ３０に書込まれているデータと、今回書込む書込み用データとから算出される期待値が最終ブロックの妥当性判定データと一致するように、今回書込む書込み用データは設定されている。
【００５４】
マイコン２０は、最終ブロックの妥当性判定データを含み既にフラッシュメモリ３０に書込まれているデータと、今回書込む書込み用データとから算出される期待値と、最終ブロックから読み出す妥当性判定データとが一致するか否かにより、書込み用データの妥当性を判定する。マイコン２０は、期待値と妥当性判定データとが一致しない場合、該当するブロックへの書込み処理を中止する。
【００５５】
尚、妥当性判定データは、第２実施形態のように、書込み用データとは別にデータ書込装置５０から受信し、ＲＡＭ２４に記憶されてもよい。この場合、今回書込む書込み用データを妥当性判定データに合わせて設定する必要はない。
【００５６】
［４−２．効果］
以上説明した第４実施形態によると、以下の効果が得られる。
（１）フラッシュメモリ３０の最終ブロックではない一部のブロックに書込み用データを書込むときに、書込み用データと既にフラッシュメモリ３０に書込まれているデータとに基づいて書込み用データの妥当性を判定し、書込み用データが妥当ではない場合、書込みを中止する。これにより、妥当性のない不正なデータの書込みが完了することを防止できる。
【００５７】
（２）書込み用データが妥当ではないときに書込み処理をリトライする場合、書込み対象のブロックにデータを書込む前にリトライするので、書込み対象のブロックにデータを書込んでからリトライするよりも書込み処理に要する時間を短縮できる。
【００５８】
（３）最終ブロックに設定された妥当性判定データをそのまま使用するので、書込み用データを書込むブロック以外に妥当性判定データを設定するためのブロックを使用する必要がない。これにより、書込み用データの書込みに要するフラッシュメモリの容量を低減できる。
【００５９】
［５．他の実施形態］
以上、本発明の実施形態について説明したが、本発明は上記実施形態に限定されることなく、以下の種々の形態を取り得る。
【００６０】
（１）上記実施形態では、フラッシュメモリ等のブロック単位でデータを書込む書換え可能な不揮発性メモリに対するデータ書込み処理について説明した。これ以外にも、ワード単位またはバイト単位でデータを書込む書換え可能な不揮発性メモリを備えるマイコンに本発明を適用してもよい。
【００６１】
（２）上記実施形態では、外部のデータ書込装置５０から受信する書込み用データをマイコン２０のフラッシュメモリ３０に書込むデータ書込み処理について説明した。これ以外にも、例えばＬＡＮで接続された他のＥＣＵから受信する書込み用データをマイコン２０のフラッシュメモリ３０に書込むデータ書込み処理に本発明を適用してもよい。
【００６２】
この場合も、ＬＡＮに不正なＥＣＵを接続し、このＥＣＵから不正なデータの書込みを要求されても、書込み用データの妥当性を判定できる。
（３）上記実施形態における一つの構成要素が有する機能を複数の構成要素として分散させたり、複数の構成要素が有する機能を一つの構成要素に統合させたりしてもよい。また、上記実施形態の構成の少なくとも一部を、同様の機能を有する公知の構成に置き換えてもよい。また、上記実施形態の構成の一部を省略してもよい。また、上記実施形態の構成の少なくとも一部を、他の上記実施形態の構成に対して付加または置換してもよい。尚、特許請求の範囲に記載した文言のみによって特定される技術思想に含まれるあらゆる態様が本発明の実施形態である。
【００６３】
（４）上述したマイクロコンピュータの他、当該マイクロコンピュータを構成要素とする書込みシステム、当該マイクロコンピュータとしてコンピュータを機能させるためのプログラム、このプログラムを記録した記録媒体、データ書込み方法など、種々の形態で本発明を実現することもできる。
【符号の説明】
【００６４】
２：書込みシステム、２０：マイクロコンピュータ（妥当性判定手段、書込み手段）、３０：フラッシュメモリ（書換え可能な不揮発性メモリ）
【図１】
0006308074.tif 000002
【図２】
0006308074.tif 000003
【図３】
0006308074.tif 000004
【図４】
0006308074.tif 000005
【図５】
0006308074.tif 000006
【図６】
0006308074.tif 000007
【図７】
0006308074.tif 000008
【図８】
0006308074.tif 000009
【図９】
0006308074.tif 000010