(57)【要約】【課題】フラッシュメモリに対するドライバのアクセスを保護することができるフラッシュメモリの動作保護装置及びフラッシュメモリの動作保護方法を提供する。【解決手段】フラッシュメモリ６がデータ消去単位として持つ複数のブロック７〜１０のうち特定の１つ（本例は、Ｄブロック１０）を、ローテーションに使用しない固定ブロック１０として使用し、この固定ブロック１０に、アプリケーション１１を動作させるのに最低限必要な初期動作情報として製品固有値１４や初期値１５を保存する。そして、電源リセット等によりドライバ１３がアクセス先を見失った際には、固定ブロック１０に保存された製品固有値１４や初期値１５をローテーションブロックに書き込み、これらデータによってドライバ１３を動作させることによって、ドライバ１３を継続動作させる。【選択図】図３
2010176200.tif 000002
【特許請求の範囲】
【請求項１】
データ書き換え可能な不揮発性メモリとしてフラッシュメモリを使用し、アプリケーションからの書き込み指令によりドライバが前記フラッシュメモリにデータ書き込みを行う際、当該フラッシュメモリのメモリ領域を構築しつつデータ消去単位となっている複数のブロックを、順番にローテーションして使用しながらデータの読み書きを実行するフラッシュメモリの動作保護装置において、
複数の前記ブロックのうち前記ローテーションには使用されず、前記アプリケーションを動作させるのに最低限必要な初期動作情報が書き込まれた固定ブロックと、
前記フラッシュメモリに対する前記ドライバのアクセスに対して異常があるか否かを監視する監視手段と、
前記監視手段で前記異常を確認した際、前記固定ブロックに書き込んだ前記初期動作情報を前記ブロックに新たに書き込んで当該初期動作情報により前記ドライバを動作させることで、前記アクセスを継続させる保護実行手段と
を備えたことを特徴とするフラッシュメモリの動作保護装置。
【請求項２】
前記初期動作情報は、前記フラッシュメモリの使用時において書き換えられることのない固定値であることを特徴とする請求項１に記載のフラッシュメモリの動作保護装置。
【請求項３】
データ書き換え可能な不揮発性メモリとしてフラッシュメモリを使用し、アプリケーションからの書き込み指令によりドライバが前記フラッシュメモリにデータ書き込みを行う際、当該フラッシュメモリのメモリ領域を構築するデータ消去単位の複数のブロックを、順番にローテーションして使用しながら前記書き込みを実行するフラッシュメモリの動作保護方法において、
複数の前記ブロックのうち前記ローテーションには使用しないものを固定ブロックとして設け、前記アプリケーションを動作させるのに最低限必要な初期動作情報を当該固定ブロックに書き込み、前記フラッシュメモリに対するアクセスに対して異常があるか否かを監視手段で監視し、前記異常が発生した際、前記固定ブロックに書き込んだ前記初期動作情報を前記ブロックに新たに書き込んで当該初期動作情報により前記ドライバを動作させることで、前記アクセスを継続させることを特徴とするフラッシュメモリの動作保護方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ書き換え可能な不揮発性メモリの一種であるフラッシュメモリに係り、詳しくはその動作保護装置及び動作保護方法に関する。
【背景技術】
【０００２】
従来、装置や機器の動作を統括管理するコンピュータには、動作の際に必要となる各種データの格納先として種々のメモリが搭載されている。このメモリの一種としては、例えば各種データの電気的消去及び書き込みが可能なメモリとして不揮発性メモリが使用され、この不揮発性メモリには、例えば図６に示すようなフラッシュメモリ（Flash Read Only Memory：特許文献１参照）８１が広く使用されている。フラッシュメモリ８１は、データ書き込み先であるメモリ領域が複数（図６ではＡ〜Ｄの４つ）のブロック８２〜８５の集合体により構築され、このブロック単位ごとにデータ消去可能となっている。なお、これらブロック８２〜８５は、データ消去単位であることから、イレーズブロックとも呼ばれている。フラッシュメモリ８１に対するデータ読み書きは、アプリケーション８６からの指令に従って作動するドライバ８７によって管理される。
【０００３】
ところで、フラッシュメモリ８１以外の他のメモリ種であるEEPROM（Electrically Erasable PROM）やSRAM（Static Random Access Memory）には、同じアドレス上にデータを逐次書き込むことができる上書き機能があるので、データ書き込み済みのアドレスにデータ書き込み指令が出されても、このアドレスに逐次データ書き込みが可能である。しかし、前述したフラッシュメモリ８１は、その特性として、データ書き込み済みのアドレス上に新たなデータを書き込む際には、ブロック全体を一旦消去してからでないと、この作業を実行することができないという制限がある。
【０００４】
よって、この種のフラッシュメモリ８１では、データ書き込みに際して、図７及び図８に示すようにＡ〜Ｄのブロック８２〜８５をローテーションして使用する。このとき、まずフラッシュメモリ８１に新規データを書き込む際には、図７に示すように、ドライバ８７は使用ブロック（図７ではＡブロック８２）の空き領域にデータを順次書き増ししていく。そして、Ａブロック８２に空き領域がなくなると、図８に示すように、各データ（図８ではＩＤ１〜ＩＤ３）におけるその最新値を次の使用ブロックであるＢブロック８３にコピーし、このＢブロック８３を新たなデータ書き込み先として使用し、使用ブロックに空き領域が無くなる度に、この作業を順次繰り返すことでデータ書き込みが行われる。また、空き領域がなくなった使用済みブロックは、次のローテーションが回ってくるまでにデータが消去される。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−２４３３４７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、例えばコンピュータの電源が外的要因等により変動して電源が一時的にリセットされると、例えば図９に示すように、ドライバ８７はそれまで保持していた動作情報、即ちＡ〜Ｄのブロック８２〜８５のうち現在使用しているブロックがどれで、その使用ブロック内のどのデータが最新値であるのかの各種情報が全て飛ぶ状態をとることがある。よって、このリセットの後にコンピュータに電源が再度供給された際、ドライバ８７がフラッシュメモリ８１に再アクセスする動作をとっても、電源が落ちる前の動作状態を把握することができず、結果としてドライバ８７は実行すべき動作を認識できずに停止して、アプリケーション８６が動作できなくなってしまう状況に陥ることがあった。
【０００７】
本発明の目的は、フラッシュメモリに対するドライバのアクセスを保護することができるフラッシュメモリの動作保護装置及びフラッシュメモリの動作保護方法を提供することにある。
【課題を解決するための手段】
【０００８】
前記問題点を解決するために、本発明では、データ書き換え可能な不揮発性メモリとしてフラッシュメモリを使用し、アプリケーションからの書き込み指令によりドライバが前記フラッシュメモリにデータ書き込みを行う際、当該フラッシュメモリのメモリ領域を構築しつつデータ消去単位となっている複数のブロックを、順番にローテーションして使用しながらデータの読み書きを実行するフラッシュメモリの動作保護装置において、複数の前記ブロックのうち前記ローテーションには使用されず、前記アプリケーションを動作させるのに最低限必要な初期動作情報が書き込まれた固定ブロックと、前記フラッシュメモリに対する前記ドライバのアクセスに対して異常があるか否かを監視する監視手段と、前記監視手段で前記異常を確認した際、前記固定ブロックに書き込んだ前記初期動作情報を前記ブロックに新たに書き込んで当該初期動作情報により前記ドライバを動作させることで、前記アクセスを継続させる保護実行手段とを備えたことを要旨とする。
【０００９】
この構成によれば、フラッシュメモリがメモリ領域として持つ複数のブロックのうちの所定のものを、データ読み書きのローテーションに使用しない固定ブロックとして用い、アプリケーションを動作させるのに最低限必要な初期動作情報をこの固定ブロックに書き込んでおく。そして、ドライバがフラッシュメモリにアクセスした際のそのアクセス異常の有無を監視手段で監視し、アクセス異常を確認した際には、固定ブロックから初期動作情報を読み出してこれをローテーション用のブロックに書き込み、この初期動作情報によってドライバを動作させる。このため、もし仮に電源リセット等の電圧変動によりドライバの電源が一時的にオフしてドライバが次動作を認識できない状態に陥っても、固定ブロックに書き込んだ初期動作情報によってドライバは次動作を把握可能となるので、ドライバがアクセス先を見失って停止する状況が生じ難くなる。よって、このような電圧変動によってドライバにリセットがかかっても、フラッシュメモリに対するドライバのアクセスを保護することが可能となる。
【００１０】
本発明では、前記初期動作情報は、前記フラッシュメモリの使用時において書き換えられることのない固定値であることを要旨とする。
この構成によれば、フラッシュメモリの使用時において初期動作情報が間違った値に書き換えられる状況がなくなるので、初期動作情報の値を信頼度の高いものとすることが可能となる。
【００１１】
本発明では、データ書き換え可能な不揮発性メモリとしてフラッシュメモリを使用し、アプリケーションからの書き込み指令によりドライバが前記フラッシュメモリにデータ書き込みを行う際、当該フラッシュメモリのメモリ領域を構築するデータ消去単位の複数のブロックを、順番にローテーションして使用しながら前記書き込みを実行するフラッシュメモリの動作保護方法において、複数の前記ブロックのうち前記ローテーションには使用しないものを固定ブロックとして設け、前記アプリケーションを動作させるのに最低限必要な初期動作情報を当該固定ブロックに書き込み、前記フラッシュメモリに対するアクセスに対して異常があるか否かを監視手段で監視し、前記異常が発生した際、前記固定ブロックに書き込んだ前記初期動作情報を前記ブロックに新たに書き込んで当該初期動作情報により前記ドライバを動作させることで、前記アクセスを継続させることを要旨とする。
【発明の効果】
【００１２】
本発明によれば、フラッシュメモリに対するドライバのアクセスを保護することができる。
【図面の簡単な説明】
【００１３】
【図１】一実施形態における車内運転席の外観を示す斜視図。
【図２】コンピュータのソフトウェア構成を含めた概略構成を示すブロック図。
【図３】アクセス異常が発生した際にコンピュータとる対処動作を示すブロック図。
【図４】アクセス異常が発生した際に固定ブロックのデータがローテーションブロックに書き込まれる状態を示す説明図。
【図５】本例に示したコンピュータが持つ効果を説明するブロック図。
【図６】従来におけるコンピュータの概略構成を示すブロック図。
【図７】フラッシュメモリのブロックにデータを書き込むときの動作を示す説明図。
【図８】フラッシュメモリのブロックからデータを消去するときの動作を示す説明図。
【図９】リセット等によりアクセスに不具合が発生したときの状態を示す説明図。
【発明を実施するための形態】
【００１４】
以下、本発明を具体化したフラッシュメモリの動作保護装置及びフラッシュメモリの動作保護方法の一実施形態を図１〜図５に従って説明する。
図１に示すように、車両１には、ステアリングホイール２の操舵角を検出する操舵角検出装置３が設けられている。この操舵角検出装置３には、同装置３のセンサ部品（例えば、磁気式センサ）としてステアリングアングルセンサ４と、操舵角検出装置３のコントロールユニットとしてコンピュータ５とが設けられている。コンピュータ５は、ステアリングアングルセンサ４から取得するセンサ出力値を基に、ステアリングホイール２の操舵角を演算し、この演算した操舵角（演算舵角値）を、必要とする他の車載機器に車内ＬＡＮ（Local Area Network）を介して出力する。
【００１５】
図２に示すように、コンピュータ５には、各種データを書き込むためのメモリとしてフラッシュメモリ（Flash ROM）６が設けられている。フラッシュメモリ６は、自身のメモリ領域に対するデータの書き換えが可能な不揮発性メモリの一種であって、背景技術でも述べたように、データ消去単位として区分けされた複数（本例はＡ〜Ｄの４つ）のブロック７〜１０からなる。即ち、この種のフラッシュメモリ６は、自身のメモリ領域に書き込んだデータが書き換え可能であるものの、データ消去はブロック単位でしか実行することができない特性を持ったメモリである。なお、これらブロック７〜１０は、フラッシュメモリ６のメモリ領域を均等に区分することにより、同じ記憶容量をとる。また、これらＡ〜Ｄのブロック７〜１０がブロックを構成する。
【００１６】
本例のフラッシュメモリ６では、データ書き込みに際して、Ａ〜Ｄのブロック７〜１０のうちＡ〜Ｃのブロック７〜９をデータ書込先としてローテーションして使用する。ここで、これら３つのローテーションブロック７〜９のうち、最初に使用するブロックを例えばＡブロック７とすると、まずはＡブロック７をデータ書き込み先として、操舵角検出装置３に関係する各種データを書き込んでいく。なお、このときにＡブロック７に書き込まれるデータとしては、例えば車両１のイグニッションスイッチ（エンジンスイッチ）がイグニッションオン位置（IG ON位置）に操作されてエンジンが始動したときの時刻（ＩＤ１データ）や、イグニッションスイッチがオンしている間の時間（ＩＤ２データ）や、ステアリングアングルセンサ４のセンサ出力値（ＩＤ３データ）等がある。
【００１７】
ところで、フラッシュメモリ６にデータを書き込む際、フラッシュメモリ６にはデータ消去がブロック単位という制限があるので、データ書き込み済みのアドレスにデータを上書きすることができない。このため、フラッシュメモリ６は、新規書き込みデータを受け付けた際、使用中のＡブロック７において、その空き領域に受け付けデータを順次書き増ししていく動作をとる。そして、書込領域が一杯になると、使用ブロックを次使用ブロック（本例はＢブロック８）に切り換え、ＩＤ１〜ＩＤ３の各データの最新値をＢブロック８に書き込みつつ、データの書き込みをＢブロック８で継続し、ブロックに空き領域が無くなる度にこの動作を繰り返すことにより、データ書き込みを実行する。なお、データ書き込みが一杯になったブロックは、次ローテーションが回ってくるまでの間に、データ書き込みやデータ読み取りを実行していない手の空いたときにデータ消去が実行される。
【００１８】
図２に示すように、コンピュータ５には、同コンピュータ５を動作させるソフトウェアとして、操舵角検出装置３を動作させるための専用ソフトウェアであるアプリケーション１１と、このアプリケーション１１とＯＳ（Operating System）との間の中間的な立場で機能するミドルウェア１２と、フラッシュメモリ６を動作させるためのソフトウェアであるドライバ１３と設けられている。アプリケーション１１は、自身に入力される各種情報やデータに基づき、ミドルウェア１２を介してドライバ１３に動作指令を出力することにより、コンピュータ５を動作させる。また、アプリケーション１１は、ドライバ１３が複数存在する場合、これらドライバ１３を統括管理することが可能となっている。
【００１９】
ドライバ１３は、アプリケーション１１からミドルウェア１２を介して動作指令を受け付けると、この動作指令に従って動いて、フラッシュメモリ６（ブロック７〜１０）へのデータ書き込み、データ読み取り、データ消去等の各種処理を実行する。このとき、ドライバ１３は、アプリケーション１１からの動作指令をトリガとして受け付け、アプリケーション１１が他動作を実行していても、この動作指令に基づく動作をアプリケーション１１の動作状態に依らず実行する。また、ドライバ１３によるブロック７〜１０のデータ消去は、前述したようにドライバ１３がデータ書き込みやデータ読み取りを行っていないときの手の空いたときに実行される。
【００２０】
また、本例の場合、Ａ〜Ｄのブロック７〜１０のうちＤブロック１０は、データ書き込みのローテーションとして使用せずに、予め決められた初期動作情報をデフォルト値として書き込んでおく固定ブロック１０として使用されている。この初期動作情報としては、車両１が持つ製品個々の値として製品固有値１４や、動作過程上でやり取りされるデータ（ＩＤ１〜ＩＤ３）の初期値１５が書き込まれている。例えば、製品固有値１４としては、車両コード、車両１のシリアル番号、仕向情報等がある。また、初期値１５としては、イグニッションオンの開始時刻、イグニッションオン時の経過時間、ステアリングアングルセンサ４等の初期値として「０」がある。これら製品固有値１４や初期値１５は、アプリケーション１１が動作するのに最低限必要なデータであって、車両１の製造ライン上や製品出荷時に固定ブロック１０に書き込まれ、製品出荷後の実際の使用時においては上書きされることのないものとなっている。なお、製品固有値１４及び初期値１５が初期動作情報を構成する。
【００２１】
更に、ドライバ１３には、ドライバ１３がフラッシュメモリ６に正常にアクセスできない異常の有無を監視する異常発生監視部１６が設けられている。本例の異常発生監視部１６は、ドライバ１３がフラッシュメモリ６にアクセスのアクセス先を見失っているか否かを見ることで異常の有無を確認し、例えばフラッシュメモリ６にアクセスしたにも拘わらず、一定時間が経ってもデータを取得できないことを以て、フラッシュメモリ６へのアクセスに異常が発生したと認識する。なお、異常発生監視部１６が監視手段に相当する。
【００２２】
また、ドライバ１３には、異常発生監視部１６が異常を確認した際に、固定ブロック１０の初期動作情報（製品固有値１４、初期値１５）を使用して動作することにより、ドライバ１３がフラッシュメモリ６にアクセスできることを確保する保護処理部１７が設けられている。なお、保護処理部１７が保護実行手段に相当する。また、異常発生監視部１６及び保護処理部１７は、コンピュータ５のＣＰＵがプログラムに沿って動作することにより機能的に生成されるもので、図２ではこれをブロック図で図示する。
【００２３】
次に、本例のコンピュータ５（ドライバ１３）が電源オンした後、例えば一時的な電圧変動によりコンピュータ５がリセット状態をとるときの動作例を図３及び図４に従って説明する。
【００２４】
イグニッションスイッチがイグニッションオン位置に操作された際、コンピュータ５は車載バッテリから電源を受け付けて、それまでの停止状態から起動状態に動作状態が切り換わる。そして、ドライバ１３は、イグニッションスイッチがオンした開始時刻（ＩＤ１データ）や、イグニッションスイッチがオンしてからの経過時間（ＩＤ２データ）、これ以降においてステアリングアングルセンサ４から受け付けるセンサ出力値（ＩＤ３データ）をフラッシュメモリ６に書き込む。本例は、Ａ〜Ｄのブロック７〜１０のうちＡブロック７が最初に使用されるブロックとして設定されているので、まずは最初にＡブロック７からこれらデータが書き込まれる。
【００２５】
ところで、イグニッションスイッチがイグニッションオン位置から例えばエンジンスタート位置に操作された際、この操作過程におけるイグニッションスイッチのスイッチ接点の切り換わりが原因で、コンピュータ５に供給される電圧が変動して、コンピュータ５に供給される電源が一時的にオフして電源がリセットされる場合がある。このときは、瞬間的な電源オフに伴ってコンピュータ５が一時的に電圧が供給されなくなり、電圧が元のレベルまで戻ると、コンピュータ５に電源が再度供給されて、コンピュータ５が起動状態に復帰する動作をとる。
【００２６】
ここで、この状況下では、背景技術でも述べたように、ドライバ１３は電源が落ちる前の各種情報を逐次保持しておく機能を持たないことから、一旦起動した後に一時的に電源が落ちると、ドライバ１３は電源が落ちる前の各種情報、例えば電源オフ前にどのブロックを使用していたのかや、或いは使用ブロックのどのアドレス先にアクセスしていたのかなどを見失うことになる。この場合、電源が再投入された後、ドライバ１３はそれまで使用していたブロックにアクセスしようしとしてもそれを実行できなくなり、場合によってはブロック７〜９に書き込んでいたデータを消失する動作に入ることもあり、結果としてブロック７〜９に書き込んだデータを消失してしまうことがあった。
【００２７】
しかし、本例の場合、図３に示すように、異常発生監視部１６は、電源投入（電源再投入）の際、ドライバ１３がフラッシュメモリ６へのアクセスに対して行き先を見失っていないか否かを確認することにより、アクセス異常の有無を見ている。なお、本例の異常発生監視部１６は、ドライバ１３が実際にフラッシュメモリ６にアクセスしに行って、一定時間の間にデータを読み込めるかどうかを見ることで、アクセス異常の有無を確認する。そして、異常発生監視部１６は、一定時間内にブロック７〜９からデータを正常に読み取ることができれば、ドライバ１３のアクセスに異常は発生していないと認識し、一方で一定時間を経てもブロック７〜９のデータを正常に読み取ることができなければ、ドライバ１３のアクセスに異常が発生していると認識する。異常発生監視部１６は、以上のアクセス異常有無の確認を行った後、この確認結果を保護処理部１７に出力する。
【００２８】
保護処理部１７は、異常発生監視部１６から確認結果を受け付けた際、これが異常無しの通知であれば、電源リセットによってコンピュータ５の電源が一時的に落ちた状況下であっても、電源再投入後のドライバ１３はフラッシュメモリ６のアクセス先を保持できていると認識する。よって、このときは、ドライバ１３が通常通りにブロック７〜９にアクセスしにいってもアクセスが可能であることから、保護処理部１７は特別な対処は行わず、ドライバ１３によるＡ〜Ｃのブロック７〜９へのデータ書き込み、データ読み取り、データ消去等の各種処理を、通常動作に沿ってドライバ１３に実行させる。
【００２９】
一方、保護処理部１７は、異常発生監視部１６から監視結果を受け付けた際、これが異常有りの通知であれば、ドライバ１３によるフラッシュメモリ６へのアクセスに異常が発生して、ドライバ１３がフラッシュメモリ６のアクセス先を見失ってしまっていると認識する。なお、このとき、場合によっては、電源リセットに伴ってＡ〜Ｄのブロック７〜１０のうちローテーションブロック７〜９のデータが消失してしまうことがあるが、Ｄブロック１０は値を書き換えない固定ブロック１０として使用しているので、電源リセットによってローテーションブロック７〜９のデータが仮に飛んでも、この固定ブロック１０に書き込まれているデータ群は保持される状態を保つ。
【００３０】
保護処理部１７は、ドライバ１３によるフラッシュメモリ６のアクセスに異常が発生したことを確認した際、図３に示すように固定ブロック１０から車両１（操舵角検出装置３）が持つ製品固有値１４やＩＤ１〜ＩＤ３等の初期値１５を読み出すとともに、図４に示すようにこのときの読み出しデータを、最先使用に設定されたＡブロック７の先頭に書き込むことにより、ブロック７内のデータを復旧する。なお、このデータ書き込み時、もし仮にＡブロック７にデータが残っていたままの場合には、Ａブロック７に消去処理を実行してＡブロック７を空にしてから、復旧用のデータ書き込を実行する。
【００３１】
これにより、ドライバ１３は電源リセットによって電源オフ前の使用ブロックやアクセス先アドレスが分からなくなっても、電源再投入時には最先使用のＡブロック７に新たに書き込んだ製品固有値１４や初期値１５を読み取ることにより、電源再投入時において実行すべき動作を把握することが可能となる。よって、電源リセットを要因としてドライバ１３がフラッシュメモリ６へのアクセス先を見失っても、ドライバ１３は製品固有値１４や初期値１５というデフォルト値（初期動作情報）からではあるものの、動作の継続実行が可能となる。
【００３２】
さて、本例においては、電源リセットを原因としてドライバ１３がフラッシュメモリ６のアクセス先を見失うアクセス異常が発生しても、各種データを固定値として保持する固定ブロック１０に保存された製品固有値１４や初期値１５をローテーションブロック７〜９に新たに書き込み、このデータ群によって次動作をドライバ１３に把握させる。このため、電源リセットによりドライバ１３がアクセス先を見失っても、ドライバ１３は製品固有値１４や初期値１５によって次動作を継続実行することが可能となる。よって、電源リセットが発生した際に、ドライバ１３が次動作を把握できずに停止してしまう状況が生じ難くなり、ひいてはアプリケーション１１の異常停止の防止も図られる。
【００３３】
本実施形態の構成によれば、以下に記載の効果を得ることができる。
（１）フラッシュメモリ６の複数のブロック７〜１０の中の１つ（本例は、Ｄブロック１０）を、ローテーションに使用しない固定ブロック１０として使用し、この固定ブロック１０に、アプリケーション１１を動作させるのに最低限必要な初期動作情報として製品固有値１４や初期値１５を保存する。そして、電源リセット等によりドライバ１３がアクセス先を見失った際には、固定ブロック１０に保存された製品固有値１４や初期値１５をローテーションブロック７〜９に書き込み、これらデータによってドライバ１３を継続動作させる。よって、一旦起動したコンピュータ５に電源リセットがかかっても、ドライバ１３はアクセス先を把握可能となるので、ドライバ１３の動作が停止してしまう状況を生じ難くすることができる。また、このようにドライバ１３の動作確保を図ることが可能となれば、アプリケーション１１の動作停止も生じ難くなる。
【００３４】
（２）製品固有値１４や初期値１５の保存先としては、実施形態で述べたようなフラッシュメモリ６が持つ複数のブロック７〜１０の１つを固定ブロック１０としてこれを保存先とすることに限定されず、例えば図５に示すように、EEPROM（Electrically Erasable PROM)）２１を別途設けて、これに保存することも想定される。しかし、この場合は、EEPROM２１用のドライバ２２を別途用意しなくてはならないので、計２つのドライバ１３，２２が必要となり、その分だけデータ管理が煩雑化する問題が発生するが、本例の場合はこの種のドライバが１つのドライバ１３で済むので、前述したデータ管理の煩雑さという問題は考えずに済む。また、本例のようにEEPROM２１が不要となれば、その分だけＲＯＭに必要となるメモリ容量も削減することができる。
【００３５】
（３）図５に示すように、製品固有値１４や初期値１５の保存先としてEEPROM２１を使用した場合には、EEPROM２１から読み取った製品固有値１４や初期値１５のデータを、ミドルウェア１２を一旦介してからローテーション用のブロック７〜１０に送る動作を経るので、データ転送においてミドルウェア１２を経る分だけデータ処理時間が余計にかかる問題がある。しかし、本例の場合は、１つのドライバ１３内で完結する処理であるので、ミドルウェア１２を介さない分だけ、製品固有値１４や初期値１５のデータ処理速度を高速化することができる。
【００３６】
（４）固定ブロック１０に予め書き込んでおく初期動作情報は、製品が出荷されてからの実際の使用時において、上書きされることのない固定値として設定されている。このため、製品使用時に初期動作情報が間違った値に書き換えられる状況がなくなるので、初期動作情報の値を信頼度の高いものとすることができる。
【００３７】
なお、実施形態はこれまでに述べた構成に限らず、以下の態様に変更してもよい。
・  アクセス異常の検出方法は、ドライバ１３がフラッシュメモリ６に対するアクセス先を見失っているか否かであることに限定されない。例えば、フラッシュメモリ６（ブロック７〜９）が空になっていることや、フラッシュメモリ６に書き込まれているデータそのものが化けてしまっていることを確認するものでもよい。
【００３８】
・  初期動作情報は、前述した製品固有値１４や初期値１５に限定されず、ドライバ１３が次動作の動作内容を知ることができれば、どのような種類のものでもよい。
・  フラッシュメモリ６に書き込まれるデータは、ＩＤ１〜ＩＤ３で示すイグニッションオン開始時刻、イグニッションオン実行時間、ステアリングアングルセンサのセンサ値に限定されず、操舵角検出装置３の動作時にやり取りされるデータであれば、どのようなものでもよい。
【００３９】
・  ミドルウェア１２は、必ずしも必要ではなく、これを省略してもよい。
・  フラッシュメモリ６のブロック数は、Ａ〜Ｄの計４つに限定されず、これ以外の数をとるものでもよい。
【００４０】
・  固定ブロック１０の個数は、必ずしも１つに限らず、ローテーションブロック７〜９の個数が少なく済むのであれば、２つ以上あってもよい。
・  アクセス異常時において初期動作情報を書き込むその書き込み先は、必ずしもＡブロック７に限らず、例えばＢブロック８やＣブロック９としてもよい。
【００４１】
・  アクセス保護の機能を持つ本例のコンピュータ５は、必ずしも操舵角検出装置３に搭載されることに限らず、メモリとしてフラッシュメモリ６を持つコンピュータ５を備えたものであれば、特に限定されるものではない。
【００４２】
次に、上記実施形態及び別例から把握できる技術的思想について、それらの効果とともに以下に追記する。
（１）請求項１又は２において、前記初期動作情報は、前記ブロックに書き込まれる検出値（測定値）の初期値である。この構成によれば、ドライバがフラッシュメモリ内の検出値にアクセスする際に、そのアクセスが停止してしまう状況を生じ難くすることが可能となる。
【００４３】
（２）請求項１又は２において、前記初期動作情報は、前記フラッシュメモリの製品個々が持つ製品固有値である。この構成によれば、ドライバがフラッシュメモリ内の製品固有値にアクセスする際に、そのアクセスが停止してしまう状況を生じ難くすることが可能となる。
【符号の説明】
【００４４】
６…フラッシュメモリ、７…ブロックを構成するＡブロック、８…ブロックを構成するＢブロック、９…ブロックを構成するＣブロック、１０ブロック（固定ブロック）を構成するＤブロック、１１…アプリケーション、１３，２２…ドライバ、１４…初期動作情報を構成する製品固有値、１５…初期動作情報を構成する初期値、１６…監視手段としての異常発生監視部、１７…保護実行手段としての保護処理部。
【図１】
2010176200.tif 000003
【図２】
2010176200.tif 000004
【図３】
2010176200.tif 000005
【図４】
2010176200.tif 000006
【図５】
2010176200.tif 000007
【図６】
2010176200.tif 000008
【図７】
2010176200.tif 000009
【図８】
2010176200.tif 000010
【図９】
2010176200.tif 000011