(57)【要約】【課題】データの更新処理の中断が発生しても、有効なデータを特定する。【解決手段】制御部３は、記憶部２に、第１のデータ６＿１の更新状況を示す第１の更新状況フラグ８＿１と第２のデータ６＿２の更新状況を示す第２の更新状況フラグ８＿２と有効指示フラグ７の更新状況を示す第３の更新状況フラグ８＿３を記憶する。使用データ決定部４は、有効指示フラグ７に基づく判定が不可能である場合、第１の更新状況フラグ８＿１、第２の更新状況フラグ８＿２、及び第３の更新状況フラグ８＿３の値に基づいて、第１のデータ６＿１と第２のデータ６＿２のうちどちらが有効であるかを判定する。【選択図】図１
2020009347.tif 000002
【特許請求の範囲】
【請求項１】
第１のデータが記憶される第１のメモリ領域と、第２のデータが記憶される第２のメモリ領域と、前記第１のデータと前記第２のデータのうちどちらが有効であるかを示す有効指示フラグが記憶される第３のメモリ領域とを含む記憶部と、
前記記憶部に対する消去及び書き込みを制御する制御部と、
前記第１のデータと前記第２のデータのうちどちらが有効であるかを判定し、使用するデータを決定する使用データ決定部と、
を有し、
前記制御部は、前記記憶部に、前記第１のデータの更新状況を示す第１の更新状況フラグと前記第２のデータの更新状況を示す第２の更新状況フラグと前記有効指示フラグの更新状況を示す第３の更新状況フラグを記憶し、
前記使用データ決定部は、前記有効指示フラグに基づく判定が不可能である場合、前記第１の更新状況フラグ、前記第２の更新状況フラグ、及び前記第３の更新状況フラグの値に基づいて、前記第１のデータと前記第２のデータのうちどちらが有効であるかを判定する
情報処理装置。
【請求項２】
前記第１の更新状況フラグは、前記第１のデータの更新のために行われる前記第１のメモリ領域の消去処理が開始したか否か又は完了したか否かを示すフラグであり、
前記第２の更新状況フラグは、前記第２のデータの更新のために行われる前記第２のメモリ領域の消去処理が開始したか否か又は完了したか否かを示すフラグであり、
前記第３の更新状況フラグは、前記有効指示フラグの更新のために行われる前記第３のメモリ領域の消去処理が開始したか否か又は完了したか否かを示すフラグである
請求項１に記載の情報処理装置。
【請求項３】
前記制御部は、前記第３のメモリ領域に前記有効指示フラグが記憶されている場合に限り、前記第１のメモリ領域又は前記第２のメモリ領域の消去を実施する
請求項１に記載の情報処理装置。
【請求項４】
前記制御部は、現在有効なデータが前記第１のデータである場合、前記第２のメモリ領域に前記第２のデータが記憶されている場合に限り、前記第３のメモリ領域の消去を実施し、現在有効なデータが前記第２のデータである場合、前記第１のメモリ領域に前記第１のデータが記憶されている場合に限り、前記第３のメモリ領域の消去を実施する
請求項１に記載の情報処理装置。
【請求項５】
前記記憶部には、さらに、前記有効指示フラグの書き込みが完了したか否かを示す書き込み完了フラグが記憶され、
前記制御部は、前記書き込み完了フラグが書き込みの完了を示す場合に限り、前記第１のメモリ領域又は前記第２のメモリ領域の消去を実施する
請求項１に記載の情報処理装置。
【請求項６】
前記記憶部には、さらに、前記第１のデータの書き込みが完了したか否かを示す第１の書き込み完了フラグと前記第２のデータの書き込みが完了したか否かを示す第２の書き込み完了フラグが記憶され、
前記制御部は、前記第１の書き込み完了フラグ又は前記第２の書き込み完了フラグが、新たに有効とすべきデータについて書き込みの完了を示す場合に限り、前記第３のメモリ領域の消去を実施する
請求項１に記載の情報処理装置。
【請求項７】
前記記憶部は、さらに、所定の機能についての機能設定データが記憶される第４のメモリ領域及び第５のメモリ領域を含み、
前記第１のデータ及び前記第２のデータは、前記第４のメモリ領域に記憶された前記機能設定データ又は前記第５のメモリ領域に記憶された前記機能設定データのいずれかを指定するデータである
請求項１に記載の情報処理装置。
【請求項８】
前記制御部は、前記機能設定データが保護対象である場合、前記第４のメモリ領域と前記第５のメモリ領域のいずれか一方に対し新たな前記機能設定データの書き込み指示を受け付けたとき、当該新たな前記機能設定データに代えて、他方に記憶されている前記機能設定データを書き込む
請求項７に記載の情報処理装置。
【請求項９】
前記制御部は、有効であるデータが前記第１のデータであることを示す前記有効指示フラグを前記第３のメモリ領域に書き込む場合、前記第１のデータが記憶され、かつ、記憶された前記第１のデータにより指定される前記機能設定データが記憶されている場合に限り、前記有効指示フラグの書き込みを実施する
請求項７に記載の情報処理装置。
【請求項１０】
前記記憶部は、前記第４のメモリ領域及び前記第５のメモリ領域の組をｎ個（ｎは２以上の整数）含み、
前記第１のメモリ領域は、ｎ個の前記第１のデータを記憶し、
前記第２のメモリ領域は、ｎ個の前記第２のデータを記憶する
請求項７に記載の情報処理装置。
【請求項１１】
前記記憶部は、フラッシュメモリであり、
前記制御部は、
前記第１の更新状況フラグを前記第２のメモリ領域に記憶し、
前記第２の更新状況フラグを前記第１のメモリ領域に記憶し、
前記第３の更新状況フラグを前記第１のメモリ領域又は前記第２のメモリ領域に記憶する
請求項１に記載の情報処理装置。
【請求項１２】
第１のデータが記憶される第１のメモリ領域と、第２のデータが記憶される第２のメモリ領域と、前記第１のデータと前記第２のデータのうちどちらが有効であるかを示す有効指示フラグが記憶される第３のメモリ領域とを含む記憶部に前記第１のデータの更新状況を示す第１の更新状況フラグと前記第２のデータの更新状況を示す第２の更新状況フラグと前記有効指示フラグの更新状況を示す第３の更新状況フラグを記憶し、
前記有効指示フラグに基づく判定が不可能である場合、前記第１の更新状況フラグ、前記第２の更新状況フラグ、及び前記第３の更新状況フラグの値に基づいて、前記第１のデータと前記第２のデータのうちどちらが有効であるかを判定する
制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理装置及び制御方法に関し、例えば有効なデータを判定するための技術に関する。
【背景技術】
【０００２】
特許文献１は、フラッシュメモリにおけるデータの消去回数を記憶する情報処理装置を開示している。この情報処理装置では、３つのメモリ領域（Ａ領域、Ｂ領域、及びフラグ領域）により、消去回数を管理している。Ａ領域とＢ領域のうち一方には更新前の消去回数が記憶され、他方には更新後の消去回数が記憶される。フラグ領域には、どちらの領域が有効であるか、すなわち、どちらの領域が現在の消去回数を記憶しているかを示すフラグが記憶される。
【０００３】
この情報処理装置では、Ａ領域が有効であるとフラグが示している場合、Ｂ領域の消去を行った後、Ｂ領域に更新後の消去回数を記憶し、その後、Ｂ領域が有効であると示すようフラグの書き換えが行われる。このような構成により、消去回数の更新処理に中断が発生したとしても、記憶された消去回数が消失しないようにしている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１６−１３３８７４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述の技術では、不測の事態等に依り、フラグの書き換え処理中に処理が中断してしまうと、適切な値がフラグとして記憶されなくなってしまう。すなわち、Ａ領域とＢ領域のどちらが有効であるかが不確定になる場合がある。また、Ａ領域及びＢ領域に記憶される内容が消去回数ではなく、ＭＣＵ（Micro Control Unit：マイクロコントロールユニット）などの機器における設定データ（例えば、システム起動時にアクセスするメモリ領域を特定する設定データ、セキュリティ設定データなど）である場合、設定データが不確定になることを意味する。このような場合、ソフトウェアやセキュリティ設定の意図しない切り替えが発生し、システム障害を引き起こす可能性がある。
このため、データの更新処理の中断が発生しても、有効なデータを特定することができる技術が求められている。
【０００６】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００７】
一実施の形態によれば、制御部は、記憶部に、第１のデータの更新状況を示す第１の更新状況フラグと第２のデータの更新状況を示す第２の更新状況フラグと有効指示フラグの更新状況を示す第３の更新状況フラグを記憶し、使用データ決定部は、有効指示フラグに基づく判定が不可能である場合、前記第１の更新状況フラグ、前記第２の更新状況フラグ、及び前記第３の更新状況フラグの値に基づいて、前記第１のデータと前記第２のデータのうちどちらが有効であるかを判定する。
【発明の効果】
【０００８】
前記一実施の形態によれば、データの更新処理の中断が発生しても、有効なデータを特定することができる。
【図面の簡単な説明】
【０００９】
【図１】実施の形態の概要にかかる情報処理装置１の構成の一例を示すブロック図である。
【図２】実施の形態にかかるマイクロコントローラ１０の構成の一例を示すブロック図である。
【図３】機能設定用フラッシュメモリ１５に配置される３つのメモリ領域の一例を示す模式図である。
【図４】スイッチ領域１００の構成の一例を示す模式図である。
【図５】タグ領域２００の構成の一例を示す模式図である。
【図６】フラッシュシーケンサ１７のコマンドを示す図である。
【図７】「スイッチ領域消去」コマンドを受信した場合の実施の形態１にかかるフラッシュシーケンサ１７の動作の一例を示すフローチャートである。
【図８】「スイッチ領域書き込み」コマンドを受信した場合のフラッシュシーケンサ１７の動作の一例を示すフローチャートである。
【図９】「タグ領域消去」コマンドを受信した場合の実施の形態１にかかるフラッシュシーケンサ１７の動作の一例を示すフローチャートである。
【図１０】「タグ領域更新」コマンドを受信した場合の実施の形態１にかかるフラッシュシーケンサ１７の動作の一例を示すフローチャートである。
【図１１Ａ】スイッチ領域１００＿０における各設定データと各フラグの推移を示す表である。
【図１１Ｂ】スイッチ領域１００＿１における各設定データと各フラグの推移を示す表である。
【図１１Ｃ】タグ領域２００におけるフラグの推移を示す表である。
【図１２】参照パターンの一例を示す表である。
【図１３】「スイッチ領域消去」コマンドを受信した場合の実施の形態２にかかるフラッシュシーケンサ１７の動作の一例を示すフローチャートである。
【図１４】「タグ領域消去」コマンドを受信した場合の実施の形態２にかかるフラッシュシーケンサ１７の動作の一例を示すフローチャートである。
【図１５】図１３に示した処理の前に実行される処理を示すフローチャートである。
【図１６】図１４に示した処理の前に実行される処理を示すフローチャートである。
【図１７】実施の形態３にかかる機能設定用フラッシュメモリ１５の構成の一例を示す模式図である。
【図１８】コンフィギュレーション設定領域３００Ａの２つの分割領域ＣＮＦ＿０、ＣＮＦ＿１の構成の一例を示す模式図である。
【図１９】設定領域３００についてのコマンドを示す図である。
【図２０】コンフィギュレーション設定領域３００Ａのアドレスがアドレス指定レジスタに設定された状態で「設定領域消去」コマンドを受信した場合のフラッシュシーケンサ１７の動作の一例を示すフローチャートである。
【図２１】コンフィギュレーション設定領域３００Ａのアドレスがアドレス指定レジスタに設定された状態で「設定領域書き込み」コマンドを受信した場合のフラッシュシーケンサ１７の動作の一例を示すフローチャートである。
【図２２Ａ】分割領域ＣＮＦ＿０における各機能設定データと各フラグの推移を示す表である。
【図２２Ｂ】分割領域ＣＮＦ＿１における各機能設定データと各フラグの推移を示す表である。
【図２３】スイッチ領域１００＿０／スイッチ領域１００＿１／タグ領域２００と、コンフィギュレーション設定領域３００Ａ／セキュリティ設定領域３００Ｂ／ブロック保護設定領域３００Ｃの関係を示す模式図である。
【図２４】マイクロコントローラ１０の状態の一例を示す図である。
【図２５】マイクロコントローラ１０の状態の一例を示す図である。
【図２６】「タグ領域更新」コマンドを受信した場合の実施の形態３にかかるフラッシュシーケンサ１７の動作の一例を示すフローチャートである。
【発明を実施するための形態】
【００１０】
説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
【００１１】
＜実施の形態の概要＞
まず、実施の形態の詳細な説明に先立って、実施の形態の概要について説明する。図１は、実施の形態の概要にかかる情報処理装置１の構成の一例を示すブロック図である。情報処理装置１は、記憶部２と、制御部３と、使用データ決定部４とを有する。
【００１２】
記憶部２は、データ６＿１（第１のデータ）が記憶されるメモリ領域５＿１（第１のメモリ領域）と、データ６＿２（第２のデータ）が記憶されるメモリ領域５＿２（第２のメモリ領域）と、有効指示フラグ７が記憶されるメモリ領域５＿３（第３のメモリ領域）とを含む。記憶部２は、例えばフラッシュメモリであるが、他の種類の記憶装置であってもよい。有効指示フラグ７は、データ６＿１とデータ６＿２のうちどちらが有効であるかを示すフラグである。したがって、有効指示フラグ７として、所定値が正常に記憶されている場合、有効指示フラグ７の値に基づいて有効なデータを特定することができる。なお、有効指示フラグ７は、メモリ領域５＿１とメモリ領域５＿２のうち、いずれが有効な領域であるかを示すフラグとも言うことができる。この場合、データ６＿１とデータ６＿２のうち、有効な領域であると指定された領域に記憶されたデータが有効なデータであると言うことができる。
【００１３】
制御部３は、記憶部２に対する消去及び書き込みを制御する。ここで、制御部３は、メモリ領域５＿１、５＿２、５＿３の記憶内容を更新するための消去指示又は書き込み指示を受け付けると、更新状況フラグの記憶処理を実施する。具体的には、制御部３は、記憶部２に、データ６＿１の更新状況を示す更新状況フラグ８＿１（第１の更新状況フラグ）とデータ６＿２の更新状況を示す更新状況フラグ８＿２（第２の更新状況フラグ）と有効指示フラグ７の更新状況を示す更新状況フラグ８＿３（第３の更新状況フラグ）を記憶する。なお、更新状況フラグ８＿１、８＿２、８＿３のそれぞれの記憶先は、メモリ領域５＿１、５＿２、５＿３のいずれかの領域であってもよいし、これらとは別の領域であってもよい。一例として、記憶部２が、フラッシュメモリである場合、制御部３は、更新状況フラグ８＿１をメモリ領域５＿２に記憶し、更新状況フラグ８＿２をメモリ領域５＿１に記憶し、更新状況フラグ８＿３をメモリ領域５＿１又はメモリ領域５＿２に記憶する。
【００１４】
使用データ決定部４は、データ６＿１とデータ６＿２のうちどちらが有効であるかを判定し、使用するデータを決定する。より詳細には、使用データ決定部４は、有効であると判定されたデータを、使用するデータとする。使用データ決定部４は、有効指示フラグ７に基づく判定が可能である場合、有効指示フラグ７の値に基づいて、データ６＿１とデータ６＿２のうちどちらが有効であるかを判定する。なお、有効指示フラグ７に基づく判定が可能である場合とは、例えば、有効指示フラグ７の書き込み状態が所定の条件を満たす場合である。ここで、所定の条件とは、有効指示フラグ７の値が正常であることが保障されるための条件であり、例えば、有効指示フラグ７の値が所定値（すなわち、データ６＿１が有効であることを示す所定の第１の値、又はデータ６＿２が有効であることを示す所定の第２の値）であることであってもよい。また、例えば記憶部２が有効指示フラグ７の書き込みの完了を示すフラグ（書き込み完了フラグ）を記憶する場合には、上述の所定の条件は、有効指示フラグ７の値が所定値であり、かつ、当該書き込み完了フラグが書き込み済みであることであってもよい。
【００１５】
これに対し、使用データ決定部４は、有効指示フラグ７に基づく判定が不可能である場合、すなわち、有効指示フラグ７の書き込み状態が所定の条件を満たさない場合、更新状況フラグ８＿１、８＿２、及び８＿３の値に基づいて、データ６＿１とデータ６＿２のうちどちらが有効であるかを判定する。この場合、具体的には、使用データ決定部４は、更新状況フラグ８＿１、８＿２、及び８＿３の値のパターンが、参照パターンのどれと合致するかを確認することによりデータ６＿１とデータ６＿２のうちどちらが有効であるかを判定する。参照パターンは、予め定義されたパターンであり、データ６＿１を有効と判定する場合の更新状況フラグ８＿１、８＿２、及び８＿３の値のパターン、又は、データ６＿２を有効と判定する場合の更新状況フラグ８＿１、８＿２、及び８＿３の値のパターンである。例えば、使用データ決定部４は、記憶部２に記憶されている更新状況フラグ８＿１、８＿２、及び８＿３の値のパターンが、データ６＿１を有効と判定するための参照パターンと一致する場合、データ６＿１が有効であると判定する。また、例えば、使用データ決定部４は、記憶部２に記憶されている更新状況フラグ８＿１、８＿２、及び８＿３の値のパターンが、データ６＿２を有効と判定するための参照パターンと一致する場合、データ６＿２が有効であると判定する。
【００１６】
なお、使用データ決定部４は、記憶部２に記憶されている更新状況フラグ８＿１、８＿２、及び８＿３の値のパターンが、データ６＿１を有効と判定するためのいずれの参照パターンとも一致しない場合、データ６＿２が有効であると判定してもよい。同様に、使用データ決定部４は、記憶部２に記憶されている更新状況フラグ８＿１、８＿２、及び８＿３の値のパターンが、データ６＿２を有効と判定するためのいずれの参照パターンとも一致しない場合、データ６＿１が有効であると判定してもよい。
【００１７】
上述の通り、情報処理装置１では、有効指示フラグ７に基づく判定が不可能である場合、更新状況フラグ８＿１、８＿２、及び８＿３の値に基づいて、一意に、有効なデータ（有効なメモリ領域）を確定することができる。このため、情報処理装置１によれば、データの更新処理の中断が発生しても、有効なデータを特定することができる。
【００１８】
＜実施の形態の詳細＞
以下、実施の形態の詳細について説明する。図２は、実施の形態にかかるマイクロコントローラ１０の構成の一例を示すブロック図である。マイクロコントローラ１０は、図１の情報処理装置１に相当する。図２に示すように、マイクロコントローラ１０は、ＣＰＵ（Central Processing Unit）１１と、ＲＡＭ（Random Access Memory）１２と、周辺回路１３と、データ格納用フラッシュメモリ１４と、機能設定用フラッシュメモリ１５と、使用データ決定部１６と、フラッシュシーケンサ１７と、周辺バス１８とを有する。周辺バス１８は、ＣＰＵ１１、フラッシュシーケンサ１７、及び周辺回路１３が接続されるバスである。
【００１９】
ＣＰＵ１１は、データ格納用フラッシュメモリ１４に格納されたデータに基づいて処理を実行する。すなわち、データ格納用フラッシュメモリ１４に格納されるデータには、マイクロコントローラ１０としての機能を実現する処理をＣＰＵ１１に実行させるプログラム（ソフトウェア）が含まれる。なお、ＣＰＵ１１は、データ格納用フラッシュメモリ１４に格納されたプログラムをＲＡＭ１２にロードしてから実行するようにしてもよい。
【００２０】
ＲＡＭ１２は、ＣＰＵ１１によって利用されるデータが格納される揮発性メモリである。このＲＡＭ１２に格納されるデータには、例えば、ＣＰＵ１１がプログラムを実行している際の演算処理中のデータ等が含まれる。また、上述したように、データ格納用フラッシュメモリ１４からロードしたプログラムを格納するようにしてもよい。
【００２１】
周辺回路１３は、例えば、タイマ、シリアルＩ／Ｏ等の回路である。ＣＰＵ１１は、周辺回路１３を任意に利用して処理を実行する。データ格納用フラッシュメモリ１４は、ＣＰＵ１１によって利用されるデータが格納される不揮発性メモリである。
【００２２】
機能設定用フラッシュメモリ１５は、図１の記憶部２に相当する。機能設定用フラッシュメモリ１５は、マイクロコントローラ１０の機能設定に使用されるデータが格納される不揮発性メモリである。図３は、機能設定用フラッシュメモリ１５に配置される３つのメモリ領域の一例を示す模式図である。図３に示すように、機能設定用フラッシュメモリ１５は、メモリ領域として、スイッチ領域１００＿０とスイッチ領域１００＿１とタグ領域２００とを含む。以下の説明では、スイッチ領域１００＿０とスイッチ領域１００＿１とを特に区別せずに言及する場合、スイッチ領域１００と称す。スイッチ領域１００＿０は図１のメモリ領域５＿１に相当する。スイッチ領域１００＿１は図１のメモリ領域５＿２に相当する。タグ領域２００は図１のメモリ領域５＿３に相当する。なお、機能設定用フラッシュメモリ１５は、フラッシュメモリであるため、記憶されているデータの更新（書き換え）のためには、一度、データを消去した後に、新たなデータを書き込む必要がある。
【００２３】
図４は、２つのスイッチ領域１００＿０およびスイッチ領域１００＿１の構成の一例を示す模式図である。図４に示すように、スイッチ領域１００＿０には、設定データＤ０−０、Ｄ０−１、Ｄ０−２と、書き込み完了フラグＡ０ＰＣ、消去開始フラグＡ１ＥＳ、消去完了フラグＡ１ＥＣ、消去開始フラグＴＥＳ０、消去完了フラグＴＥＣ０が記憶される。同様に、スイッチ領域１００＿１には、設定データＤ１−０、Ｄ１−１、Ｄ１−２と、書き込み完了フラグＡ１ＰＣ、消去開始フラグＡ０ＥＳ、消去完了フラグＡ０ＥＣ、消去開始フラグＴＥＳ１、消去完了フラグＴＥＣ１が記憶される。
【００２４】
スイッチ領域１００＿０の設定データＤ０−０、Ｄ０−１、Ｄ０−２は、図１のデータ６＿１に相当する。また、スイッチ領域１００＿１の設定データＤ１−０、Ｄ１−１、Ｄ１−２は、図１のデータ６＿２に相当する。ここで、設定データＤ０−０、Ｄ０−１、Ｄ０−２、Ｄ１−０、Ｄ１−１、Ｄ１−２は、マイクロコントローラ１０の機能を設定するデータである。例えば、これらの設定データは、システム起動時にアクセスするメモリ領域を指定するデータであってもよいし、セキュリティ機能を設定するためのデータなどであってもよい。なお、本実施の形態では、スイッチ領域１００＿０及び１００＿１には、それぞれ、３つの設定データが格納される態様を示しているが、格納されるデータ数は３つに限らず、それ以上でもそれ以下でもよい。
【００２５】
書き込み完了フラグＡ０ＰＣは、設定データＤ０−０、Ｄ０−１、Ｄ０−２の全ての書き込みが完了したか否かを示すフラグである。同様に、書き込み完了フラグＡ１ＰＣは、設定データＤ１−０、Ｄ１−１、Ｄ１−２の全ての書き込みが完了したか否かを示すフラグである。より詳細に説明すると、書き込み完了フラグＡ０ＰＣは、スイッチ領域１００＿０における設定データＤ０−０、Ｄ０−１、Ｄ０−２の更新のために行われる書き込み処理が完了した時点で所定の値に設定されるフラグである。同様に、書き込み完了フラグＡ１ＰＣは、スイッチ領域１００＿１における設定データＤ１−０、Ｄ１−１、Ｄ１−２の更新のために行われる書き込み処理が完了した時点で所定の値に設定されるフラグである。すなわち、書き込み完了フラグＡ０ＰＣ、Ａ１ＰＣが消去状態である場合、設定データの書き込みが完了していないことを意味する。
【００２６】
消去開始フラグＡ１ＥＳは、スイッチ領域１００＿１の消去処理が開始したか否かを示すフラグである。同様に、消去開始フラグＡ０ＥＳは、スイッチ領域１００＿０の消去処理が開始したか否かを示すフラグである。より詳細に説明すると、消去開始フラグＡ１ＥＳは、スイッチ領域１００＿１における設定データＤ１−０、Ｄ１−１、Ｄ１−２の更新のために行われる消去処理が開始した時点で所定の値に設定されるフラグである。同様に、消去開始フラグＡ０ＥＳは、スイッチ領域１００＿０における設定データＤ０−０、Ｄ０−１、Ｄ０−２の更新のために行われる消去処理が開始した時点で所定の値に設定されるフラグである。すなわち、消去開始フラグＡ１ＥＳが消去状態である場合、スイッチ領域１００＿１の消去処理が開始されていないことを意味し、Ａ０ＥＳが消去状態である場合、スイッチ領域１００＿０の消去処理が開始されていないことを意味する。
【００２７】
消去完了フラグＡ１ＥＣは、スイッチ領域１００＿１の消去処理が完了したか否かを示すフラグである。同様に、消去完了フラグＡ０ＥＣは、スイッチ領域１００＿０の消去処理が完了したか否かを示すフラグである。より詳細に説明すると、消去完了フラグＡ１ＥＣは、スイッチ領域１００＿１における設定データＤ１−０、Ｄ１−１、Ｄ１−２の更新のために行われる消去処理が完了した時点で所定の値に設定されるフラグである。同様に、消去完了フラグＡ０ＥＣは、スイッチ領域１００＿０における設定データＤ０−０、Ｄ０−１、Ｄ０−２の更新のために行われる消去処理が完了した時点で所定の値に設定されるフラグである。すなわち、消去完了フラグＡ１ＥＣが消去状態である場合、スイッチ領域１００＿１の消去処理が完了していないことを意味し、Ａ０ＥＣが消去状態である場合、スイッチ領域１００＿０の消去処理が完了していないことを意味する。
【００２８】
消去開始フラグＴＥＳ０、ＴＥＳ１は、タグ領域２００の消去処理が開始したか否かを示すフラグである。より詳細に説明すると、消去開始フラグＴＥＳ０、ＴＥＳ１は、タグ領域２００における有効スイッチ領域フラグＶＡＦ（図５参照）の更新のために行われる消去処理が開始した時点で所定の値に設定されるフラグである。すなわち、消去開始フラグＴＥＳ０、ＴＥＳ１が消去状態である場合、タグ領域２００の消去処理が開始されていないことを意味する。
【００２９】
消去完了フラグＴＥＣ０、ＴＥＣ１は、タグ領域２００の消去処理が完了したか否かを示すフラグである。より詳細に説明すると、消去完了フラグＴＥＣ０、ＴＥＣ１は、タグ領域２００における有効スイッチ領域フラグＶＡＦ（図５参照）の更新のために行われる消去処理が完了した時点で所定の値に設定されるフラグである。すなわち、消去完了フラグＴＥＣ０、ＴＥＣ１が消去状態である場合、タグ領域２００の消去処理が完了していないことを意味する。
【００３０】
図５は、タグ領域２００の構成の一例を示す模式図である。図５に示すように、タグ領域２００には、有効スイッチ領域フラグＶＡＦと、書き込み完了フラグＶＡＰＣが記憶される。
【００３１】
有効スイッチ領域フラグＶＡＦは、スイッチ領域１００＿０とスイッチ領域１００＿１のうち、いずれが有効な領域であるかを示すフラグである。すなわち、有効スイッチ領域フラグＶＡＦは、スイッチ領域１００＿０とスイッチ領域１００＿１のうち、いずれの領域に格納されている設定データが有効なデータであるかを示すフラグである。有効スイッチ領域フラグＶＡＦは、図１の有効指示フラグ７に相当する。
【００３２】
書き込み完了フラグＶＡＰＣは、有効スイッチ領域フラグＶＡＦの書き込みが完了したか否かを示すフラグである。より詳細に説明すると、書き込み完了フラグＶＡＰＣは、タグ領域２００における有効スイッチ領域フラグＶＡＦの更新のために行われる書き込み処理が完了した時点で所定の値に設定されるフラグである。すなわち、書き込み完了フラグＶＡＰＣが消去状態である場合、有効スイッチ領域フラグＶＡＦの書き込みが完了していないことを意味する。
【００３３】
使用データ決定部１６は、図１の使用データ決定部４に相当し、スイッチ領域１００＿０とスイッチ領域１００＿１のうち、いずれが有効な領域であるかを判定し、マイクロコントローラ１０が使用するデータを決定する回路である。言い換えると、使用データ決定部１６は、スイッチ領域１００＿０とスイッチ領域１００＿１のうち、いずれの領域に格納されている設定データが有効なデータであるかを判定し、有効であると判定したデータをマイクロコントローラ１０が使用するデータとする。なお、使用データ決定部１６における具体的な判定方法については後述する。
【００３４】
使用データ決定部１６は、例えば、マイクロコントローラ１０のリセット時など、所定のタイミングで、マイクロコントローラ１０の任意の構成要素が使用するデータを決定する。なお、使用データ決定部１６は、使用すると決定したデータを機能設定用フラッシュメモリ１５から読み出して、このデータを使用する構成要素又はこのデータを使用する構成要素がアクセス可能なレジスタなどに送信してもよい。
【００３５】
フラッシュシーケンサ１７は、データ格納用フラッシュメモリ１４及び機能設定用フラッシュメモリ１５に対する消去処理及び書き込み処理などを制御する回路である。フラッシュシーケンサ１７は、図１の制御部３に相当する。本実施の形態では、データ格納用フラッシュメモリ１４及び機能設定用フラッシュメモリ１５に対するＣＰＵ１１の書き込み処理及び消去処理は、フラッシュシーケンサ１７を介して実施される。なお、ＣＰＵ１１によるデータ格納用フラッシュメモリ１４及び機能設定用フラッシュメモリ１５からのデータの読み出しは、フラッシュシーケンサ１７を介して行われてもよいし、フラッシュシーケンサ１７を介することなく直接行われてもよい。
【００３６】
フラッシュシーケンサ１７は、データ格納用フラッシュメモリ１４又は機能設定用フラッシュメモリ１５に対しどのアドレスについての消去処理又は書き込み処理をするかを指定するためのアドレスデータが格納されるアドレス指定レジスタを内蔵している。このアドレス指定レジスタには、ＣＰＵ１１から送信されたアドレスデータが格納される。また、フラッシュシーケンサ１７は、消去処理又は書き込み処理などを指示するコマンドが格納されるコマンド指定レジスタも内蔵している。このコマンド指定レジスタには、フラッシュシーケンサ１７に対するライトデータとしてＣＰＵ１１から送信されたデータが格納される。
【００３７】
ＣＰＵ１１は、周辺バス１８経由で、予め定められた順序でライトデータをフラッシュシーケンサ１７に対して書き込むことで、フラッシュシーケンサ１７が実施する制御内容を指定する。フラッシュシーケンサ１７は、コマンド指定レジスタに書き込まれたライトデータに対応する制御を、フラッシュシーケンサ１７のアドレス指定レジスタに書き込まれたアドレスデータが示すアドレスに対して実施する。
【００３８】
ここでは、具体的な一例として図６を参照し、フラッシュシーケンサ１７のコマンドについて説明する。図６に示すように、フラッシュシーケンサ１７を制御するコマンドとして、「スイッチ領域消去」コマンドと、「スイッチ領域書き込み」コマンドと、「タグ領域消去」コマンドと、「タグ領域更新」コマンドとが用意されている。
【００３９】
ＣＰＵ１１は、スイッチ領域１００＿０又はスイッチ領域１００＿１の消去を行う場合、「スイッチ領域消去」コマンドを用いる。具体的には、ＣＰＵ１１は、例えばコマンドデータ（Ｈ’８７、Ｈ’Ｄ０）をフラッシュシーケンサ１７のコマンド指定レジスタに順次書き込む。ここで、「Ｈ’」は、それに続く数値が１６進数表記であることを意味する。フラッシュシーケンサ１７は、「スイッチ領域消去」コマンドを受信すると、スイッチ領域１００＿０とスイッチ領域１００＿１のうち現在無効な領域を消去する。なお、スイッチ領域１００の消去処理の具体的な流れについては、図７を参照して後述する。
【００４０】
また、ＣＰＵ１１は、スイッチ領域１００＿０又はスイッチ領域１００＿１へのデータの書き込みを行う場合、「スイッチ領域書き込み」コマンドを用いる。具体的には、ＣＰＵ１１は、例えばコマンドデータ（Ｈ’８５、Ｈ’０８、ＷＤ０、ＷＤ１、ＷＤ２、Ｈ’Ｄ０）をフラッシュシーケンサ１７のコマンド指定レジスタに順次書き込む。ここで、ＷＤ０、ＷＤ１、ＷＤ２は、新たに書き込まれる設定データである。すなわち、ＷＤ０、ＷＤ１、ＷＤ２は、新たな設定データＤ０−０、Ｄ０−１、Ｄ０−２又は新たな設定データＤ１−０、Ｄ１−１、Ｄ１−２である。フラッシュシーケンサ１７は、「スイッチ領域書き込み」コマンドを受信すると、スイッチ領域１００＿０とスイッチ領域１００＿１のうち現在無効な領域に、新たな設定データとして、ＷＤ０、ＷＤ１、ＷＤ２を書き込む。なお、スイッチ領域１００の書き込み処理の具体的な流れについては、図８を参照して後述する。
【００４１】
また、ＣＰＵ１１は、タグ領域２００の消去を行う場合、「タグ領域消去」コマンドを用いる。具体的には、ＣＰＵ１１は、例えばコマンドデータ（Ｈ’８９、Ｈ’Ｄ０）をフラッシュシーケンサ１７のコマンド指定レジスタに順次書き込む。フラッシュシーケンサ１７は、「タグ領域消去」コマンドを受信すると、タグ領域２００を消去する。なお、タグ領域２００の書き込み処理の具体的な流れについては、図９を参照して後述する。
【００４２】
また、ＣＰＵ１１は、タグ領域２００の更新を行う場合、すなわち、有効スイッチ領域フラグＶＡＦの値を切替える場合、「タグ領域更新」コマンドを用いる。具体的には、ＣＰＵ１１は、例えばコマンドデータ（Ｈ’８３、Ｈ’Ｄ０）をフラッシュシーケンサ１７のコマンド指定レジスタに順次書き込む。フラッシュシーケンサ１７は、「タグ領域更新」コマンドを受信すると、有効スイッチ領域フラグＶＡＦの値を更新する。なお、タグ領域２００の更新処理の具体的な流れについては、図１０を参照して後述する。
【００４３】
次に、マイクロコントローラ１０の動作について、図を参照しながら説明する。なお、以下に述べるように、フラッシュシーケンサ１７は、コマンドを受信すると、使用データ決定部１６と同様、スイッチ領域１００＿０とスイッチ領域１００＿１のうち、いずれが有効な領域であるかを判定する。なお、本実施の形態では、フラッシュシーケンサ１７と使用データ決定部１６のそれぞれが、同様の判定機能を備えるが、いずれか一方が判定機能を備える構成とし、他方が一方の判定機能を利用してもよい。また、フラッシュシーケンサ１７と使用データ決定部１６とが１つの制御回路により構成されてもよい。
【００４４】
図７は、「スイッチ領域消去」コマンドを受信した場合のフラッシュシーケンサ１７の動作の一例を示すフローチャートである。フラッシュシーケンサ１７は「スイッチ領域消去」コマンドを受信すると、無効なスイッチ領域１００の消去と、この消去に対応する消去開始フラグ及び消去完了フラグの書き込みを実施する。以下、図７に沿って、「スイッチ領域消去」コマンドを受信した場合のフラッシュシーケンサ１７の動作の流れを説明する。
【００４５】
ステップ１００（Ｓ１００）において、フラッシュシーケンサ１７は、スイッチ領域１００＿０とスイッチ領域１００＿１のどちらが無効な領域であるか、すなわち、有効な領域ではない領域がどちらであるかを判定する。フラッシュシーケンサ１７は、スイッチ領域１００＿０に格納されているフラグ、スイッチ領域１００＿１に格納されているフラグ、及びタグ領域２００に格納されているフラグを参照し、スイッチ領域１００＿０とスイッチ領域１００＿１のいずれが無効な領域であるかを判定する。なお、マイクロコントローラ１０の動作に設定データの内容を反映するために、マイクロコントローラ１０の起動時にスイッチ領域１００＿０、スイッチ領域１００＿１、及びタグ領域２００からそれぞれ読み出したフラグがレジスタ（図示せず）に格納されている場合には、フラッシュシーケンサ１７は、機能設定用フラッシュメモリ１５に格納されているフラグではなく当該レジスタの値を参照して無効領域を決定してもよい。このことは、使用データ決定部１６においても同様である。なお、具体的な判定方法については、図１２を参照して後述する。
【００４６】
無効な領域がスイッチ領域１００＿１である場合には、ステップ１１１（Ｓ１１１）において、フラッシュシーケンサ１７は、スイッチ領域１００＿０に、消去開始フラグＡ１ＥＳとして、消去の開始を示す所定値を書き込む。
次に、ステップ１１２（Ｓ１１２）において、フラッシュシーケンサ１７は、スイッチ領域１００＿１を消去する。
次に、ステップ１１３（Ｓ１１３）において、フラッシュシーケンサ１７は、スイッチ領域１００＿０に、消去完了フラグＡ１ＥＣとして、消去の完了を示す所定値を書き込む。
【００４７】
同様に、無効な領域がスイッチ領域１００＿０である場合には、ステップ１２１（Ｓ１２１）において、フラッシュシーケンサ１７は、スイッチ領域１００＿１に、消去開始フラグＡ０ＥＳとして、消去の開始を示す所定値を書き込む。
次に、ステップ１２２（Ｓ１２２）において、フラッシュシーケンサ１７は、スイッチ領域１００＿０を消去する。
次に、ステップ１２３（Ｓ１２３）において、フラッシュシーケンサ１７は、スイッチ領域１００＿１に、消去完了フラグＡ０ＥＣとして、消去の完了を示す所定値を書き込む。
【００４８】
図８は、「スイッチ領域書き込み」コマンドを受信した場合のフラッシュシーケンサ１７の動作の一例を示すフローチャートである。フラッシュシーケンサ１７は「スイッチ領域書き込み」コマンドを受信すると、無効なスイッチ領域１００へのＷＤ０、ＷＤ１、ＷＤ２の書き込みとスイッチ領域１００についての書き込み完了フラグの書き込みを実施する。以下、図８に沿って、「スイッチ領域書き込み」コマンドを受信した場合のフラッシュシーケンサ１７の動作の流れを説明する。
【００４９】
ステップ２００（Ｓ２００）において、図７のステップ１００と同様、フラッシュシーケンサ１７は、スイッチ領域１００＿０とスイッチ領域１００＿１のいずれが無効な領域であるか、すなわち、有効な領域ではない領域がどちらかを判定する。
【００５０】
無効な領域がスイッチ領域１００＿１である場合には、ステップ２１１（Ｓ２１１）において、フラッシュシーケンサ１７は、スイッチ領域１００＿１の設定データＤ１−０として、ＣＰＵ１１から受信したＷＤ０を書き込む。次に、ステップ２１２（Ｓ２１２）において、フラッシュシーケンサ１７は、スイッチ領域１００＿１の設定データＤ１−１として、ＣＰＵ１１から受信したＷＤ１を書き込む。次に、ステップ２１３（Ｓ２１３）において、フラッシュシーケンサ１７は、スイッチ領域１００＿１の設定データＤ１−２として、ＣＰＵ１１から受信したＷＤ２を書き込む。
次に、ステップ２１４（Ｓ２１４）において、フラッシュシーケンサ１７は、スイッチ領域１００＿１に、書き込み完了フラグＡ１ＰＣとして、書き込みの完了を示す所定値を書き込む。
【００５１】
同様に、無効な領域がスイッチ領域１００＿０である場合には、ステップ２２１（Ｓ２２１）において、フラッシュシーケンサ１７は、スイッチ領域１００＿０の設定データＤ０−０として、ＣＰＵ１１から受信したＷＤ０を書き込む。次に、ステップ２２２（Ｓ２２２）において、フラッシュシーケンサ１７は、スイッチ領域１００＿０の設定データＤ０−１として、ＣＰＵ１１から受信したＷＤ１を書き込む。次に、ステップ２２３（Ｓ２２３）において、フラッシュシーケンサ１７は、スイッチ領域１００＿０の設定データＤ０−２として、ＣＰＵ１１から受信したＷＤ２を書き込む。
次に、ステップ２２４（Ｓ２２４）において、フラッシュシーケンサ１７は、スイッチ領域１００＿０に、書き込み完了フラグＡ０ＰＣとして、書き込みの完了を示す所定値を書き込む。
【００５２】
図９は、「タグ領域消去」コマンドを受信した場合のフラッシュシーケンサ１７の動作の一例を示すフローチャートである。フラッシュシーケンサ１７は「タグ領域消去」コマンドを受信すると、タグ領域２００の消去と、タグ領域２００の消去開始フラグ及び消去完了フラグの書き込みを実施する。本実施の形態では、フラッシュシーケンサ１７は、無効なスイッチ領域１００において、タグ領域２００の消去開始フラグ及び消去完了フラグの書き込みを実施する。以下、図９に沿って、「タグ領域消去」コマンドを受信した場合のフラッシュシーケンサ１７の動作の流れを説明する。
【００５３】
ステップ３００（Ｓ３００）において、図７のステップ１００と同様、フラッシュシーケンサ１７は、スイッチ領域１００＿０とスイッチ領域１００＿１のいずれが無効な領域であるか、すなわち、有効な領域ではない領域がいずれであるかを判定する。
【００５４】
無効な領域がスイッチ領域１００＿１である場合には、ステップ３１１（Ｓ１１１）において、フラッシュシーケンサ１７は、スイッチ領域１００＿１に、消去開始フラグＴＥＳ１として、消去の開始を示す所定値を書き込む。
次に、ステップ３１２（Ｓ３１２）において、フラッシュシーケンサ１７は、タグ領域２００を消去する。
次に、ステップ３１３（Ｓ３１３）において、フラッシュシーケンサ１７は、スイッチ領域１００＿１に、消去完了フラグＴＥＣ１として、消去の完了を示す所定値を書き込む。
【００５５】
同様に、無効な領域がスイッチ領域１００＿０である場合には、ステップ３２１（Ｓ３２１）において、フラッシュシーケンサ１７は、スイッチ領域１００＿０に、消去開始フラグＴＥＳ０として、消去の開始を示す所定値を書き込む。
次に、ステップ３２２（Ｓ３２２）において、フラッシュシーケンサ１７は、タグ領域２００を消去する。
次に、ステップ３２３（Ｓ３２３）において、フラッシュシーケンサ１７は、スイッチ領域１００＿０に、消去完了フラグＴＥＣ０として、消去の完了を示す所定値を書き込む。
【００５６】
図１０は、「タグ領域更新」コマンドを受信した場合のフラッシュシーケンサ１７の動作の一例を示すフローチャートである。フラッシュシーケンサ１７は「タグ領域更新」コマンドを受信すると、タグ領域２００に、有効スイッチ領域フラグＶＡＦとして次回の有効領域（すなわち、現在の無効領域）を示す設定値を書き込む。また、その後、フラッシュシーケンサ１７は、書き込み完了フラグＶＡＰＣの書き込みを実施する。以下、図１０に沿って、「タグ領域更新」コマンドを受信した場合のフラッシュシーケンサ１７の動作の流れを説明する。
【００５７】
ステップ４００（Ｓ４００）において、図７のステップ１００と同様、フラッシュシーケンサ１７は、スイッチ領域１００＿０とスイッチ領域１００＿１のいずれが無効な領域であるか、すなわち、有効な領域ではない領域がいずれであるかを判定する。
【００５８】
無効な領域がスイッチ領域１００＿１である場合には、ステップ４１１（Ｓ４１１）において、フラッシュシーケンサ１７は、タグ領域２００に、有効スイッチ領域フラグＶＡＦとして、スイッチ領域１００＿１が有効な領域であることを示す設定値“Ａｒｅａ  １”を書き込む。
次に、ステップ４１２（Ｓ４１２）において、フラッシュシーケンサ１７は、タグ領域２００に、書き込み完了フラグＶＡＰＣとして、書き込みの完了を示す所定値を書き込む。
【００５９】
同様に、無効な領域がスイッチ領域１００＿０である場合には、ステップ４２１（Ｓ４２１）において、フラッシュシーケンサ１７は、タグ領域２００に、有効スイッチ領域フラグＶＡＦとして、スイッチ領域１００＿０が有効な領域であることを示す設定値“Ａｒｅａ  ０”を書き込む。
次に、ステップ４２２（Ｓ４２２）において、フラッシュシーケンサ１７は、タグ領域２００に、書き込み完了フラグＶＡＰＣとして、書き込みの完了を示す所定値を書き込む。
【００６０】
機能設定用フラッシュメモリ１５を更新する場合、ＣＰＵ１１は、例えば設定データを更新するためのプログラム（ソフトウェア）に従って、「スイッチ領域消去」コマンド、「スイッチ領域書き込み」コマンド、「タグ領域消去」コマンド、「タグ領域更新」コマンドの順に４つのコマンドを実行する。これにより、マイクロコントローラ１０が使用する設定データが更新される。
【００６１】
図１１Ａ、図１１Ｂ、及び図１１Ｃは、上述の順番で４つのコマンドが実行された場合の各値の一例を示している。ただし、この例では、有効な設定データを、スイッチ領域１００＿１の設定データＤ１−０、Ｄ１−１、Ｄ１−２として格納されているＤ１００、Ｄ１１０、Ｄ１２０から、スイッチ領域１００＿０の設定データＤ０−０、Ｄ０−１、Ｄ０−２として新たに格納されるＤ００１、Ｄ０１１、Ｄ０２１に切り替える場合の値の推移を示している。図１１Ａは、スイッチ領域１００＿０における各設定データと各フラグの推移を示す表である。図１１Ｂは、スイッチ領域１００＿１における各設定データと各フラグの推移を示す表である。図１１Ｃは、タグ領域２００におけるフラグの推移を示す表である。なお、図１１Ａ、図１１Ｂ、及び図１１Ｃに示す各フラグにおいて、“Ｅ”は消去された状態であることを示し、“Ｐ”は値が書き込まれた状態であることを示し、“Ｘ”は任意の状態を示す。また、表中の太い枠線は、理解を容易にするために、前のステップの値から変更となった値を示している。これらの表記は、図１２、図２２Ａ、図２２Ｂにおいても同様である。
【００６２】
図１１Ａに示すように、４つのコマンドが上記順序で実行されると、スイッチ領域１００＿０では、設定データ及びフラグが消去され、その後、新たな設定データが書き込まれ、さらに、設定データの書き込み完了フラグＡ０ＰＣの書き込みが行われる。また、その後、タグ領域２００の消去の際に、消去開始フラグＴＥＳ０の書き込みと、消去完了フラグＴＥＣ０の書き込みが行われる。
【００６３】
これに対し、スイッチ領域１００＿１では、図１１Ｂに示すように、スイッチ領域１００＿０の消去の際に、消去開始フラグＡ０ＥＳの書き込みと、消去完了フラグＡ０ＥＣの書き込みが行われる。また、タグ領域２００では、図１１Ｃに示すように、有効スイッチ領域フラグＶＡＦと、書き込み完了フラグＶＡＰＣの消去が行われた後、スイッチ領域１００＿０が有効な領域であることを示す設定値“Ａｒｅａ  ０”が有効スイッチ領域フラグＶＡＦの値として書き込まれ、さらに、書き込み完了フラグＶＡＰＣへの書き込みが行われる。
【００６４】
このように、更新処理が中断することなく実行された場合には、タグ領域２００は、有効スイッチ領域フラグＶＡＦの値として“Ａｒｅａ  ０”又は“Ａｒｅａ  １”を保持し、書き込み完了フラグＶＡＰＣの値として書き込みの完了を示す所定値を保持する。しかしながら、例えば、マイクロコントローラ１０の電源瞬断などを含む様々な要因により、例えばタグ領域２００の更新中などに処理が中断した場合、有効スイッチ領域フラグＶＡＦの値又は書き込み完了フラグＶＡＰＣの値は不定となる。本実施の形態では、そのような中断が発生した場合であっても、有効なスイッチ領域１００（有効な設定データ）を一意に確定するよう次のような判定が行われる。
【００６５】
フラッシュシーケンサ１７及び使用データ決定部１６は、有効スイッチ領域フラグＶＡＦに基づく判定が可能である場合、有効スイッチ領域フラグＶＡＦの値に基づいて、スイッチ領域１００＿０とスイッチ領域１００＿１のうちどちらが有効な領域であるかを判定する。なお、本実施の形態では、有効スイッチ領域フラグＶＡＦの値が“Ａｒｅａ  ０”又は“Ａｒｅａ  １”であり、かつ、書き込み完了フラグＶＡＰＣが消去状態でない場合に、フラッシュシーケンサ１７及び使用データ決定部１６は、有効スイッチ領域フラグＶＡＦに基づく判定が可能であるとする。
【００６６】
これに対し、フラッシュシーケンサ１７及び使用データ決定部１６は、有効スイッチ領域フラグＶＡＦに基づく判定が不可能である場合、現在のフラグの値の組み合わせのパターンに応じて、スイッチ領域１００＿０とスイッチ領域１００＿１のうちどちらが有効な領域であるかを判定する。すなわち、フラッシュシーケンサ１７及び使用データ決定部１６は、有効スイッチ領域フラグＶＡＦの値が“Ａｒｅａ  ０”でも“Ａｒｅａ  １”でもない場合、又は、書き込み完了フラグＶＡＰＣが消去状態である場合、現在のフラグの値の組み合わせのパターンに応じて有効な領域を決定する。より具体的には、フラッシュシーケンサ１７及び使用データ決定部１６は、現在のフラグの値の組み合わせのパターンが予め定義された参照パターンのいずれに該当するかを確認し、該当する参照パターンに予め対応づけられている領域を有効な領域であると決定する。
【００６７】
なお、ステップ１００（図７参照）、ステップ２００（図８参照）、ステップ３００（図９参照）、ステップ４００（図１０参照）における無効領域の判定では、有効領域の判定で有効と判定したスイッチ領域１００ではない側の領域を無効領域とすればよい。
【００６８】
図１２を参照し、フラッシュシーケンサ１７及び使用データ決定部１６による判定の一例を説明する。図１２は、参照パターンの一例を示す表である。なお、参照パターンは、例えば、フラッシュシーケンサ１７及び使用データ決定部１６において記憶されているが、マイクロコントローラ１０内の他のいずれかの構成要素に記憶されていてもよい。
【００６９】
本実施の形態では、フラッシュシーケンサ１７及び使用データ決定部１６は、有効なスイッチ領域１００の判定のために、スイッチ領域１００＿０の消去開始フラグＡ１ＥＳ、消去完了フラグＡ１ＥＣ、消去開始フラグＴＥＳ０、消去完了フラグＴＥＣ０、スイッチ領域１００＿１の消去開始フラグＡ０ＥＳ、消去完了フラグＡ０ＥＣ、消去開始フラグＴＥＳ１、消去完了フラグＴＥＣ１、タグ領域２００の有効スイッチ領域フラグＶＡＦ、書き込み完了フラグＶＡＰＣを使用する。
【００７０】
図１２の表に示すように、タグ領域２００の書き込み完了フラグＶＡＰＣが書き込み状態“Ｐ”であり、かつ、有効スイッチ領域フラグＶＡＦの設定値が“Ａｒｅａ  ０”又は“Ａｒｅａ  １”である場合（図１２における状態（Ａ）、（Ｅ）に相当）には、フラッシュシーケンサ１７及び使用データ決定部１６は、有効なスイッチ領域１００は有効スイッチ領域フラグＶＡＦの設定値に従って決定する。
【００７１】
有効スイッチ領域フラグＶＡＦの設定値が“Ａｒｅａ  ０”又は“Ａｒｅａ  １”ではない場合や書き込み完了フラグＶＡＰＣが消去状態“Ｅ”の場合（図１２における状態（Ｂ）、（Ｃ）、（Ｄ）、（Ｆ）、（Ｇ）、（Ｈ）に相当）には、フラッシュシーケンサ１７及び使用データ決定部１６は、消去開始フラグＡ０ＥＳ、Ａ１ＥＳ、ＴＥＳ０、ＴＥＳ１、及び消去完了フラグＡ０ＥＣ、Ａ１ＥＣ、ＴＥＣ０、ＴＥＣ１の各状態のパターンに従って、有効なスイッチ領域１００を決定する。つまり、消去開始フラグＡ０ＥＳ、消去完了フラグＡ０ＥＣは、図１の更新状況フラグ８＿１の一例である。また、消去開始フラグＡ１ＥＳ、消去完了フラグＡ１ＥＣは、図１の更新状況フラグ８＿２の一例である。さらに、消去開始フラグＴＥＳ０、ＴＥＳ１、及び消去完了フラグＴＥＣ０、ＴＥＣ１は、図１の更新状況フラグ８＿３の一例である。
【００７２】
図１２における状態（Ｂ）、（Ｃ）、（Ｄ）は、図１１Ａ、図１１Ｂ、図１１Ｃにおけるタグ領域消去のＳｔｅｐ  ２、Ｓｔｅｐ  ３、タグ領域更新のＳｔｅｐ  １に対応しており、スイッチ領域１００＿１からスイッチ領域１００＿０への有効領域の切り替え途中に、電源瞬断等により更新処理が中断した場合に発生するフラグのパターンを示している。これらの状態の場合、領域の切り替え処理が完全に終わっていないため、スイッチ領域１００＿０ではなくスイッチ領域１００＿１を有効領域と判定する。
同様に、図１２における状態（Ｆ）、（Ｇ）、（Ｈ）は、スイッチ領域１００＿０からスイッチ領域１００＿１への有効領域の切り替え途中において、電源瞬断等により更新処理が中断した場合に発生するフラグのパターンを示している。これらの状態の場合も、領域の切り替え処理が完全に終わっていないため、スイッチ領域１００＿１ではなくスイッチ領域１００＿０を有効領域と判定する。
【００７３】
例えば、マイクロコントローラ１０は、有効領域とすべきスイッチ領域１００が対応づけられている参照パターンを予め記憶しており、フラッシュシーケンサ１７及び使用データ決定部１６は、参照パターンを参照し、フラグのパターンがどの参照パターンに一致するかを確認することにより、有効領域を特定する。なお、図１２に示した例では、状態（Ａ）、（Ｂ）、（Ｃ）、（Ｄ）のフラグのパターンが、スイッチ領域１００＿１を有効領域と判定するための参照パターンであり、これらのパターンには「スイッチ領域１００＿１」が対応づけられている。同様に、状態（Ｅ）、（Ｆ）、（Ｇ）、（Ｈ）のフラグのパターンが、スイッチ領域１００＿０を有効領域と判定するための参照パターンであり、これらのパターンには「スイッチ領域１００＿０」が対応づけられている。
【００７４】
なお、図１２に示した判定論理は一例である。有効スイッチ領域フラグＶＡＦの値による有効領域の判定が不可能である場合の判定論理として図１２に示した参照パターン以外の他の参照パターンを用いてもよい。また、各参照パターンにいずれのスイッチ領域１００を対応づけるかについても、他のルールで対応付けを行ってもよい。例えば、図１２で示した例では、有効スイッチ領域フラグＶＡＦの値による有効領域の判定が不可能である場合、８つのフラグ（消去開始フラグＡ１ＥＳ、Ａ０ＥＳ、ＴＥＳ０、ＴＥＳ１、及び消去完了フラグＡ１ＥＣ、Ａ０ＥＣ、ＴＥＣ０、ＴＥＣ１）のパターンを用いたが、これらの一部のフラグのパターンにより有効領域の判定が行われてもよい。また、書き込み完了フラグＡ０ＰＣ、Ａ１ＰＣを参照パターンに用いてもよい。
【００７５】
また、参照パターンは、フラグの状態が経時変化した場合のパターンを含んでもよい。フラグの書き込み処理の際に、電源瞬断が発生すると、その書き込み状態はリテンション不足となってしまう。このため、そのようなフラグは、時間が経つと、消去状態に変化する可能性がある。したがって、そのような場合も考慮し、タグ領域２００の消去中又は更新中に処理の中断が発生した場合に発生するフラグのパターン（図１２の状態（Ｂ）、（Ｃ）、（Ｄ）、（Ｆ）、（Ｇ）、（Ｈ）に示した参照パターン）のみならず、これらのパターンにおいて一部のフラグが消去状態に経時変化した場合のパターンを用いて有効領域の判定を行ってもよい。
【００７６】
また、本実施の形態では、タグ領域２００の消去時の消去開始フラグ及び消去完了フラグを無効なスイッチ領域１００に書き込んでいるが、有効なスイッチ領域１００に書き込んでもよい。すなわち、無効な領域がスイッチ領域１００＿１である場合には、スイッチ領域１００＿０の消去開始フラグＴＥＳ０と消去完了フラグＴＥＣ０の書き込みが行われてもよく、無効な領域がスイッチ領域１００＿０である場合には、スイッチ領域１００＿１の消去開始フラグＴＥＳ１と消去完了フラグＴＥＣ１の書き込みが行われてもよい。
【００７７】
また、フラグの値の組み合わせにおいて論理圧縮が可能な場合、参照パターンとして用いるフラグ数を減少させてもよい。例えば、図１２に示した例では、消去開始フラグＴＥＳ０、ＴＥＳ１の値は、状態（Ｂ）、（Ｃ）、（Ｄ）、（Ｆ）、（Ｇ）、（Ｈ）において同じであるため、これらのフラグを用いずに、判定が行われてもよい。
【００７８】
以上説明した通り、マイクロコントローラ１０では、有効スイッチ領域フラグＶＡＦの値に基づく判定ができない場合であっても、その他のフラグの状態に基づいて、一意に、有効なスイッチ領域１００を特定することができる。このため、有効スイッチ領域フラグＶＡＦの更新中に処理が中断し、有効スイッチ領域フラグＶＡＦが不確定な値になった場合でも、有効領域を確定することができる。すなわち、有効な設定データを特定することができる。
【００７９】
＜実施の形態２＞
次に、実施の形態２について説明する。以下、実施の形態１と異なる点について説明し、実施の形態１と同様な点については説明を省略する。
【００８０】
実施の形態１によれば、タグ領域２００の有効スイッチ領域フラグＶＡＦにより有効領域の特定ができない場合であっても、スイッチ領域１００＿０とスイッチ領域１００＿１のフラグのパターンにより、有効領域の特定が可能である。ただし、フラグのパターンを確認するためには、スイッチ領域１００＿０及びスイッチ領域１００＿１がともに消去状態でない必要がある。つまり、有効スイッチ領域フラグＶＡＦにより有効領域の特定ができない状態で、無効なスイッチ領域１００の消去が行われてしまうと、有効な領域を正しく判定することができなくなってしまう。
また、無効なスイッチ領域１００への設定データの書き込みが行われる前に有効スイッチ領域フラグＶＡＦの更新が行われると、設定データの書き込みが行われていないにもかかわらず、当該スイッチ領域１００が有効な領域と判定されてしまう。例えば、「スイッチ領域消去」コマンド、「タグ領域消去」コマンド、「タグ領域更新」コマンドという順でコマンドが実行された場合、すなわち、「スイッチ領域書き込み」コマンドが実行されない誤った手順で機能設定用フラッシュメモリ１５の更新が実施されると、有効領域の判定を正しく行えなくなる。
このように、上述した有効領域の判定方法では、タグ領域２００とスイッチ領域１００＿０が同時に消去された場合、又はタグ領域２００とスイッチ領域１００＿１が同時に消去された場合、有効な領域を正しく判定できない恐れがある。そこで、本実施の形態では、フラッシュシーケンサ１７は、所定の条件を満たした場合に限り、メモリ領域の消去を行う。
【００８１】
図１３は、「スイッチ領域消去」コマンドを受信した場合の実施の形態２にかかるフラッシュシーケンサ１７の動作の一例を示すフローチャートである。図１３のフローチャートは、無効領域の判定（ステップ１００）の前に、タグ領域２００の有効スイッチ領域フラグＶＡＦが書き込み済みであるかを判定するステップ（ステップ１３０）が追加されている点で、実施の形態１のフローチャート（図７）と異なっている。
【００８２】
すなわち、実施の形態２では、フラッシュシーケンサ１７は「スイッチ領域消去」コマンドを受信すると、ステップ１３０（Ｓ１３０）において、タグ領域２００の有効スイッチ領域フラグＶＡＦが書き込み済みであるかを判定する。有効スイッチ領域フラグＶＡＦが書き込み済みである場合（ステップ１３０でＹｅｓ）、処理は、ステップ１００へ移行し、図７に示した処理と同様の処理が行われる。これに対し、有効スイッチ領域フラグＶＡＦが書き込み済みでない場合（ステップ１３０でＮｏ）、処理はエラー終了する。すなわち、この場合、スイッチ領域の消去は行われない。
【００８３】
フラッシュシーケンサ１７は、例えば、有効スイッチ領域フラグＶＡＦを参照し、消去状態（すなわち、例えば全ビットが１である状態）でない場合、有効スイッチ領域フラグＶＡＦが書き込み済みであると判定し、消去状態である場合、有効スイッチ領域フラグＶＡＦが書き込み済みではないと判定する。なお、フラッシュシーケンサ１７は、有効スイッチ領域フラグＶＡＦの値が、“Ａｒｅａ  ０”又は“Ａｒｅａ  １”である場合に、有効スイッチ領域フラグＶＡＦが書き込み済みであると判定し、有効スイッチ領域フラグＶＡＦの値が“Ａｒｅａ  ０”でも“Ａｒｅａ  １”でもない場合に、有効スイッチ領域フラグＶＡＦが書き込み済みではないと判定してもよい。
【００８４】
このように、実施の形態２では、フラッシュシーケンサ１７は、タグ領域２００に有効スイッチ領域フラグＶＡＦが記憶されている場合に限り、スイッチ領域１００＿０又はスイッチ領域１００＿１の消去を実施する。このため、有効スイッチ領域フラグＶＡＦが書き込み済みでない状態で、スイッチ領域１００の消去が開始されてしまうことを防ぐことができる。したがって、実施の形態１よりも、有効領域の判定の確実性を向上できる。
【００８５】
図１４は、「タグ領域消去」コマンドを受信した場合の実施の形態２にかかるフラッシュシーケンサ１７の動作の一例を示すフローチャートである。図１４のフローチャートは、無効領域の判定（ステップ３００）の後に、無効領域の設定データが書き込み済みであるかを判定するステップ（ステップ３３１、ステップ３３２）が追加されている点で、実施の形態１のフローチャート（図９）と異なっている。
【００８６】
すなわち、実施の形態２では、無効な領域がスイッチ領域１００＿１である場合には、処理はステップ３００の後、ステップ３３１（Ｓ３３１）に移行する。ステップ３３１では、フラッシュシーケンサ１７は、スイッチ領域１００＿１の全ての設定データ（すなわち、設定データＤ１−０、Ｄ１−１、Ｄ１−２）が、書き込み済みであるかを判定する。フラッシュシーケンサ１７は、例えば、設定データを参照し、消去状態（すなわち、全ビットが１である状態）でない場合、設定データが書き込み済みであると判定し、消去状態である場合、設定データが書き込み済みではないと判定する。
スイッチ領域１００＿１の全ての設定データが書き込み済みである場合（ステップ３３１でＹｅｓ）、処理は、ステップ３１１へ移行し、図９に示した処理と同様の処理が行われる。これに対し、スイッチ領域１００＿１のいずれかの設定データが書き込み済みでない場合（ステップ３３１でＮｏ）、処理はエラー終了する。すなわち、この場合、タグ領域２００の消去は行われない。
【００８７】
同様に、実施の形態２では、無効な領域がスイッチ領域１００＿０である場合には、処理はステップ３００の後、ステップ３３２（Ｓ３３２）に移行する。ステップ３３２では、フラッシュシーケンサ１７は、スイッチ領域１００＿０の全ての設定データ（すなわち、設定データＤ０−０、Ｄ０−１、Ｄ０−２）が、書き込み済みであるかを判定する。スイッチ領域１００＿０の全ての設定データが書き込み済みである場合（ステップ３３２でＹｅｓ）、処理は、ステップ３２１へ移行し、図９に示した処理と同様の処理が行われる。これに対し、スイッチ領域１００＿０のいずれかの設定データが書き込み済みでない場合（ステップ３３２でＮｏ）、処理はエラー終了する。すなわち、この場合、タグ領域２００の消去は行われない。
【００８８】
すなわち、実施の形態２では、フラッシュシーケンサ１７は、現在有効な領域がスイッチ領域１００＿０である場合、換言すると、現在有効なデータがスイッチ領域１００＿０の設定データである場合、スイッチ領域１００＿１に設定データが記憶されている場合に限り、タグ領域２００の消去を実施する。また、フラッシュシーケンサ１７は、現在有効な領域がスイッチ領域１００＿１である場合、換言すると、現在有効なデータがスイッチ領域１００＿１の設定データである場合、スイッチ領域１００＿０に設定データが記憶されている場合に限り、タグ領域２００の消去を実施する。
このため、設定データが書き込み済みでない状態で、タグ領域２００の消去が開始されてしまうことを防ぐことができる。したがって、実施の形態１よりも、有効領域の判定の確実性を向上できる。
【００８９】
ところで、図１３に示す処理においては、タグ領域２００が書き込み済みであるか判定する際に有効スイッチ領域フラグＶＡＦが用いられ、図１４に示す処理においては、スイッチ領域１００が書き込み済みであるか判定する際に設定データＤ０−０、Ｄ０−１、Ｄ０−２又は設定データＤ１−０、Ｄ１−１、Ｄ１−２が用いられている。これらのフラグ又はデータの書き込み状態がリテンション不足であり、それにより値が経時変化する可能性を考えた場合、図１３又は図１４の処理を実行することにより、システムの動作が不安定になる恐れがある。そこで、以下に説明するように、図１３又は図１４の処理の実行の前に、これらのフラグやデータの書き込みの実施直後に書き込まれる書き込み完了フラグを確認してもよい。書き込み完了フラグが消去状態である場合、すなわち、書き込み状態ではない場合、何らかの理由により上述したフラグ又はデータの書き込みが中断し、処理が書き込み完了フラグの書き込みまで進まなかったことを意味する。これに対し、書き込み完了フラグが消去状態ではない場合、すなわち書き込み状態である場合、上述したフラグ又はデータの書き込みが正常に完了したことを意味する。つまり、リテンション不足ではないことが保障される。
【００９０】
図１５は、図１３に示した処理の前に実行される処理を示すフローチャートである。ここでは、図１５に示した処理がソフトウェア処理であるものとして説明する。この場合、ＣＰＵ１１がプログラムを実行することにより、以下の処理を実行する。
【００９１】
ステップ５００（Ｓ５００）において、ＣＰＵ１１は、書き込み完了フラグＶＡＰＣが書き込み済みであるかを判定する。書き込み完了フラグＶＡＰＣが書き込み済みである場合、有効スイッチ領域フラグＶＡＦが正常に書き込まれていることが保障される。すなわち、リテンション不足による値の変化が発生していないことが保障される。したがって、書き込み完了フラグＶＡＰＣが書き込み済みである場合（ステップ５００でＹｅｓ）、ステップ５０１において、ＣＰＵ１１は、「スイッチ領域消去」コマンドをフラッシュシーケンサ１７に送信する。これにより、図１３に示した処理が実行される。
【００９２】
ステップ５０１の後、ステップ５０２において、ＣＰＵ１１は、「スイッチ領域消去」コマンドが正常に実行されたか否かを判定する。図１３に示した処理においてエラー終了することなく処理が終了した場合、ＣＰＵ１１は、「スイッチ領域消去」コマンドが正常に実行されたと判定し、処理を終了する。
【００９３】
図１３に示した処理においてエラー終了した場合、すなわち、ステップ１３０において有効スイッチ領域フラグＶＡＦが書き込み済みでないと判定された場合、有効スイッチ領域フラグＶＡＦの書き込みを行う必要がある。また、ステップ５００において、書き込み完了フラグＶＡＰＣが書き込み済みではないと判定された場合（ステップ５００でＮｏ）も、有効スイッチ領域フラグＶＡＦの書き込みを正常に実施する必要がある。したがって、これらの場合には、ＣＰＵ１１は、タグ領域２００消去及びタグ領域２００更新の処理を行い、有効スイッチ領域フラグＶＡＦの書き込みを実施する。
【００９４】
このように、フラッシュシーケンサ１７は、書き込み完了フラグＶＡＰＣが有効スイッチ領域フラグＶＡＦの書き込みの完了を示す場合に限り、スイッチ領域１００＿０又はスイッチ領域１００＿１の消去を実施する。このため、システムの動作を安定させることができる。
【００９５】
図１６は、図１４に示した処理の前に実行される処理を示すフローチャートである。ここでは、図１６に示した処理がソフトウェア処理であるものとして説明する。この場合、ＣＰＵ１１がプログラムを実行することにより、以下の処理を実行する。
【００９６】
ステップ６００（Ｓ６００）において、ＣＰＵ１１は、スイッチ領域１００＿０とスイッチ領域１００＿１のいずれが無効な領域であるか、すなわち、有効な領域ではない領域がいずれであるかを判定する。なお、この判定は、実施の形態１において説明した判定方法と同じである。
【００９７】
無効な領域がスイッチ領域１００＿１である場合には、ステップ６０１（Ｓ６０１）において、ＣＰＵ１１は、書き込み完了フラグＡ１ＰＣが書き込み済みであるかを判定する。また、無効な領域がスイッチ領域１００＿０である場合には、ステップ６０２（Ｓ６０２）において、ＣＰＵ１１は、書き込み完了フラグＡ０ＰＣが書き込み済みであるかを判定する。書き込み完了フラグＡ１ＰＣが書き込み済みである場合、スイッチ領域１００＿１の設定データＤ１−０、Ｄ１−１、Ｄ１−２が正常に書き込まれていることが保障される。同様に、書き込み完了フラグＡ０ＰＣが書き込み済みである場合、スイッチ領域１００＿０の設定データＤ０−０、Ｄ０−１、Ｄ０−２が正常に書き込まれていることが保障される。つまり、リテンション不足による値の変化が発生していないことが保障される。したがって、書き込み完了フラグＡ１ＰＣが書き込み済みである場合（ステップ６０１でＹｅｓ）、及び、書き込み完了フラグＡ０ＰＣが書き込み済みである場合（ステップ６０２でＹｅｓ）、ステップ６０３において、ＣＰＵ１１は、「タグ領域消去」コマンドをフラッシュシーケンサ１７に送信する。これにより、図１４に示した処理が実行される。
【００９８】
ステップ６０３の後、ステップ６０４において、ＣＰＵ１１は、「タグ領域消去」コマンドが正常に実行されたか否かを判定する。図１４に示した処理においてエラー終了することなく処理が終了した場合、ＣＰＵ１１は、「タグ領域消去」コマンドが正常に実行されたと判定し、処理を終了する。
【００９９】
図１４に示した処理においてエラー終了した場合、すなわち、ステップ３３１又はステップ３３２において設定データが書き込み済みでないと判定された場合、設定データの書き込みを行う必要がある。また、ステップ６０１又はステップ６０２において、書き込み完了フラグＡ１ＰＣ又は書き込み完了フラグＡ０ＰＣが書き込み済みではないと判定された場合（ステップ６０１でＮｏ、又はステップ６０２でＮｏ）も、設定データの書き込みを正常に実施する必要がある。したがって、これらの場合には、ＣＰＵ１１は、スイッチ領域消去及びスイッチ領域書き込みの処理を行い、設定データの書き込みを実施する。
【０１００】
このように、フラッシュシーケンサ１７は、書き込み完了フラグＡ０ＰＣ又は書き込み完了フラグＡ１ＰＣが、新たに有効とすべき設定データについて書き込みの完了を示す場合に限り、タグ領域２００の消去を実施する。このため、システムの動作を安定させることができる。
【０１０１】
なお、ここでは、図１５の処理における書き込み完了フラグＶＡＰＣの確認、及び図１６の処理における書き込み完了フラグＡ０ＰＣ、Ａ１ＰＣの確認を、ソフトウェア（ＣＰＵ１１）により実施する例を示したが、フラッシュシーケンサ１７が実施してもよい。
【０１０２】
＜実施の形態３＞
次に、実施の形態３について説明する。以下、実施の形態１又は実施の形態２と異なる点について説明し、実施の形態１又は実施の形態２と同様な点については説明を省略する。
【０１０３】
図１７は、実施の形態３にかかる機能設定用フラッシュメモリ１５の構成の一例を示す模式図である。実施の形態３にかかる機能設定用フラッシュメモリ１５は、メモリ領域として、スイッチ領域１００＿０、スイッチ領域１００＿１、及びタグ領域２００に加え、コンフィギュレーション設定領域３００Ａと、セキュリティ設定領域３００Ｂと、ブロック保護設定領域３００Ｃを含む。実施の形態１及び実施の形態２では、マイクロコントローラ１０の機能を設定するデータが、スイッチ領域１００＿０及びスイッチ領域１００＿１に、設定データＤ０−０、Ｄ０−１、Ｄ０−２、Ｄ１−０、Ｄ１−１、Ｄ１−２として記憶された。これに対し、本実施の形態では、マイクロコントローラ１０の機能を設定するデータ（以下、機能設定データと称す。）は、コンフィギュレーション設定領域３００Ａ、セキュリティ設定領域３００Ｂ、及びブロック保護設定領域３００Ｃに記憶される。そして、スイッチ領域１００＿０及びスイッチ領域１００＿１には、いずれの機能設定データを使用するかを指定するデータが、設定データＤ０−０、Ｄ０−１、Ｄ０−２、Ｄ１−０、Ｄ１−１、Ｄ１−２として記憶される。
【０１０４】
コンフィギュレーション設定領域３００Ａは、システム起動時にアクセスするメモリ領域を指定する設定情報などといった、マイクロコントローラ１０の基本機能を設定するための機能設定データを記憶する領域である。
セキュリティ設定領域３００Ｂは、ＩＤなどのセキュリティ機能を設定するための機能設定データを記憶する領域である。
ブロック保護設定領域３００Ｃは、データ格納用フラッシュメモリ１４の各ブロックに対する書き換え許可及び禁止などを設定するための機能設定データを記憶する領域である。
【０１０５】
コンフィギュレーション設定領域３００Ａ、セキュリティ設定領域３００Ｂ、及びブロック保護設定領域３００Ｃは、それぞれが２つの領域から構成されている。具体的には、コンフィギュレーション設定領域３００Ａは、分割領域ＣＮＦ＿０と分割領域ＣＮＦ＿１から構成されている。また、セキュリティ設定領域３００Ｂは、分割領域ＳＥＣ＿０と分割領域ＳＥＣ＿１から構成されている。ブロック保護設定領域３００Ｃは、分割領域ＢＰ＿０と分割領域ＢＰ＿１から構成されている。したがって、コンフィギュレーション設定領域３００Ａ、セキュリティ設定領域３００Ｂ、及びブロック保護設定領域３００Ｃは、それぞれ、機能設定データを２セット記憶することができる。すなわち、一方の分割領域に機能設定データの第１のセット（第１のグループ）を記憶し、他方の分割領域に機能設定データの第２のセット（第２のグループ）を記憶することができる。したがって、例えば、これら２つのセットのうち、一方を旧機能設定データとし、他方を新機能設定データとすることができる。
【０１０６】
２つのセットのうち、いずれのセットをマイクロコントローラ１０の動作時に実際に使用するかは、有効なスイッチ領域１００に格納されている設定データ（すなわち、設定データＤ０−０、Ｄ０−１、Ｄ０−２、又は設定データＤ１−０、Ｄ１−１、Ｄ１−２）によって決定される。つまり、いずれの分割領域の機能設定データを使用するかは、有効なスイッチ領域１００に格納されている設定データにより指定される。
【０１０７】
なお、コンフィギュレーション設定領域３００Ａ、セキュリティ設定領域３００Ｂ、及びブロック保護設定領域３００Ｃは、マイクロコントローラ１０の各種機能を設定するための領域の一例に過ぎない。したがって、機能設定用フラッシュメモリ１５には、これらの領域に限らず、マイクロコントローラ１０の所定の機能についての機能設定データが記憶される他のメモリ領域が設けられてもよい。
本実施の形態では、マイクロコントローラ１０の所定の機能についての機能設定データが記憶されるメモリ領域として、機能設定用フラッシュメモリ１５は、コンフィギュレーション設定領域３００Ａ、セキュリティ設定領域３００Ｂ、及びブロック保護設定領域３００Ｃの３つのメモリ領域を備える。これに対応して、スイッチ領域１００＿０は３つの設定データＤ０−０、Ｄ０−１、Ｄ０−２を記憶し、スイッチ領域１００＿１も３つの設定データＤ１−０、Ｄ１−１、Ｄ１−２を記憶している。つまり、マイクロコントローラ１０の所定の機能についての機能設定データが記憶されるメモリ領域の数に応じて、スイッチ領域１００＿０及びスイッチ領域１００＿１に記憶すべき設定データ数は変わる。
なお、以下の説明では、コンフィギュレーション設定領域３００Ａ、セキュリティ設定領域３００Ｂ、及びブロック保護設定領域３００Ｃについて、区別せずに言及する場合、設定領域３００と称す。
【０１０８】
図１８は、コンフィギュレーション設定領域３００Ａの２つの分割領域ＣＮＦ＿０、ＣＮＦ＿１の構成の一例を示す模式図である。分割領域ＣＮＦ＿０と、分割領域ＣＮＦ＿１は、同じ構成を備えている。図１８に示すように、分割領域ＣＮＦ＿０、ＣＮＦ＿１には、オプションバイトと称される機能設定データＯＰＢＴ０、・・・、ＯＰＢＴｘと、書き込み完了フラグＶＯＦ０、・・・、ＶＯＦｘと、書き込み完了フラグＶＯＦＣ０、・・・、ＶＯＦＣｘが記憶される。
【０１０９】
機能設定データＯＰＢＴｉ（ただし、ｉは０からｘまでの整数であり、以下の説明でも同様である。）は、上述の通り、マイクロコントローラ１０の機能を設定するデータである。また、書き込み完了フラグＶＯＦｉは機能設定データＯＰＢＴｉの書き込みが完了したか否かを示すフラグである。書き込み完了フラグＶＯＦＣｉは、書き込み完了フラグＶＯＦｉの書き込みが完了したか否かを示すフラグである。
【０１１０】
セキュリティ設定領域３００Ｂの分割領域ＳＥＣ＿０、ＳＥＣ＿１、及びブロック保護設定領域３００Ｃの分割領域ＢＰ＿０、ＢＰ＿１の構成は、コンフィギュレーション設定領域３００Ａの分割領域ＣＮＦ＿０、ＣＮＦ＿１と同様である。ただし、マイクロコントローラ１０の仕様に依存して必要な機能設定データのデータ数がコンフィギュレーション設定領域３００Ａとは異なる場合がある。
【０１１１】
本実施の形態においても、実施の形態１及び実施の形態２と同様に、ＣＰＵ１１は、周辺バス１８経由で、予め定められた順序でライトデータをフラッシュシーケンサ１７に対して書き込むことで、フラッシュシーケンサ１７が実施する制御内容を指定する。ただし、本実施の形態では、設定領域３００についての次のようなコマンドがさらに用意されている。図１９は設定領域３００についてのコマンドを示す図である。図１９に示すように、本実施の形態では、図６に示したコマンドに加え、さらに、フラッシュシーケンサ１７を制御するコマンドとして、「設定領域消去」コマンドと「設定領域書き込み」コマンドが用意されている。
【０１１２】
ＣＰＵ１１は、設定領域３００の消去を行う場合、「設定領域消去」コマンドを用いる。具体的には、ＣＰＵ１１は、例えばコマンドデータ（Ｈ’４７、Ｈ’Ｄ０）をフラッシュシーケンサ１７のコマンド指定レジスタに順次書き込む。フラッシュシーケンサ１７は、「設定領域消去」コマンドを受信すると、コンフィギュレーション設定領域３００Ａとセキュリティ設定領域３００Ｂとブロック保護設定領域３００Ｃのうち、ＣＰＵ１１により指定された設定領域３００を消去する。なお、ＣＰＵ１１は、フラッシュシーケンサ１７に内蔵されているアドレス指定レジスタに値を設定することにより消去対象の設定領域３００を指定する。
【０１１３】
また、ＣＰＵ１１は、設定領域３００へのデータの書き込みを行う場合、「設定領域書き込み」コマンドを用いる。具体的には、ＣＰＵ１１は、例えばコマンドデータ（Ｈ’４５、Ｈ’０８、ＷＤ０、ＷＤ１、ＷＤ２、ＷＤ３、Ｈ’Ｄ０）をフラッシュシーケンサ１７のコマンド指定レジスタに順次書き込む。ここで、ＷＤ０、ＷＤ１、ＷＤ２、ＷＤ３は、新たに書き込まれる機能設定データである。すなわち、ＷＤ０、ＷＤ１、ＷＤ２、ＷＤ３は、新たな機能設定データＯＰＢＴｉである。フラッシュシーケンサ１７は、「設定領域書き込み」コマンドを受信すると、コンフィギュレーション設定領域３００Ａとセキュリティ設定領域３００Ｂとブロック保護設定領域３００Ｃのうち、ＣＰＵ１１により指定された設定領域３００に、新たな機能設定データとして、ＷＤ０、ＷＤ１、ＷＤ２、ＷＤ３を書き込む。なお、ＣＰＵ１１は、フラッシュシーケンサ１７に内蔵されているアドレス指定レジスタに値を設定することにより書き込み対象の設定領域３００を指定する。
【０１１４】
図２０は、コンフィギュレーション設定領域３００Ａのアドレスがアドレス指定レジスタに設定された状態で「設定領域消去」コマンドを受信した場合のフラッシュシーケンサ１７の動作の一例を示すフローチャートである。フラッシュシーケンサ１７は「設定領域消去」コマンドを受信すると、設定領域３００の分割領域のうち無効な分割領域の消去を実施する。以下、図２０に沿って、「設定領域消去」コマンドを受信した場合のフラッシュシーケンサ１７の動作の流れを説明する。
【０１１５】
ステップ７００（Ｓ７００）において、フラッシュシーケンサ１７は、分割領域ＣＮＦ＿０と分割領域ＣＮＦ＿１のいずれが無効な領域であるか、すなわち、有効な領域ではない領域がいずれであるかを判定する。ここで、有効な分割領域とは、実際に使用する方の機能設定データを格納した領域である。無効な分割領域とは、実際に使用しない方の機能設定データを格納した領域である。フラッシュシーケンサ１７は、無効な分割領域を判定するために、スイッチ領域１００に格納されている設定データＤ０−０とＤ１−０のうち、有効なスイッチ領域１００に格納されている方の設定データを参照する。有効なスイッチ領域１００に格納されている設定データにおいて、分割領域ＣＮＦ＿０が指定されている場合、分割領域ＣＮＦ＿０が有効な分割領域であり、分割領域ＣＮＦ＿１が無効な分割領域であることを意味する。逆に、有効なスイッチ領域１００に格納されている設定データにおいて、分割領域ＣＮＦ＿１が指定されている場合、分割領域ＣＮＦ＿１が有効な分割領域であり、分割領域ＣＮＦ＿０が無効な分割領域であることを意味する。
なお、マイクロコントローラ１０の起動時に、各種機能設定のためにスイッチ領域１００から読み出した設定データをレジスタ（図示せず）に格納している場合には、フラッシュシーケンサ１７は、スイッチ領域１００の設定データではなくレジスタの値を参照して、分割領域ＣＮＦ＿０と分割領域ＣＮＦ＿１のいずれが無効な領域であるかを決定してもよい。
【０１１６】
無効な分割領域が分割領域ＣＮＦ＿１である場合には、処理はステップ７００の次に、ステップ７１１へ移行し、無効な分割領域が分割領域ＣＮＦ＿０である場合には、処理はステップ７００の次に、ステップ７２１へ移行する。ステップ７１１（Ｓ７１１）では、フラッシュシーケンサ１７は、分割領域ＣＮＦ＿１を消去する。これに対し、ステップ７２１（Ｓ７２１）では、フラッシュシーケンサ１７は、分割領域ＣＮＦ＿０を消去する。
【０１１７】
セキュリティ設定領域３００Ｂ及びブロック保護設定領域３００Ｃについての「設定領域消去」コマンドを受信した場合のフラッシュシーケンサ１７の動作も、図２０で示した動作と同様であるが、ステップ７００で参照されるスイッチ領域１００の設定データ、及び消去対象領域が、処理対象の領域に応じて異なる。具体的には、セキュリティ設定領域３００Ｂの場合には、参照されるスイッチ領域１００のデータは設定データＤ０−１または設定データＤ１−１となり、消去対象領域は分割領域ＳＥＣ＿０または分割領域ＳＥＣ＿１となる。また、ブロック保護設定領域３００Ｃの場合には、参照されるスイッチ領域１００のデータは設定データＤ０−２またはＤ１−２となり、消去対象領域は分割領域ＢＰ＿０または分割領域ＢＰ＿１となる。
【０１１８】
図２１は、コンフィギュレーション設定領域３００Ａのアドレスがアドレス指定レジスタに設定された状態で「設定領域書き込み」コマンドを受信した場合のフラッシュシーケンサ１７の動作の一例を示すフローチャートである。「設定領域書き込み」コマンドは例えば１６バイト単位の書き込みコマンドであり、アドレス指定レジスタには１６バイト単位で各機能設定データＯＰＢＴｉのアドレスを設定できる。フラッシュシーケンサ１７は「設定領域書き込み」コマンドを受信すると、設定領域３００の分割領域のうち無効な分割領域内の指定された機能設定データＯＰＢＴｉについての書き込みを実施する。ところで、各機能設定データＯＰＢＴｉは、保護設定ビットやＩＤ認証などを用いた任意の保護機能により、値の変更を禁止する保護が可能である。このため、機能設定データＯＰＢＴｉが保護対象である場合、「設定領域書き込み」コマンドにより指定された書き込み内容を書き込むことを禁止する必要がある。したがって、フラッシュシーケンサ１７は、受信した「設定領域書き込み」コマンドが、保護対象の機能設定データＯＰＢＴｉについての新たな書き込みの指示であるか否かによって異なる動作を行う。以下、図２１に沿って、「設定領域書き込み」コマンドを受信した場合のフラッシュシーケンサ１７の動作の流れを説明する。
【０１１９】
ステップ８００（Ｓ８００）において、図２０のステップ７００と同様、フラッシュシーケンサ１７は、分割領域ＣＮＦ＿０と分割領域ＣＮＦ＿１のいずれが無効な領域であるか、すなわち、有効な領域ではない領域がいずれであるかを判定する。
【０１２０】
無効な領域が分割領域ＣＮＦ＿１である場合、ステップ８１１からステップ８１５において、分割領域ＣＮＦ＿１に対し書き込み処理が行われる。以下、無効な領域が分割領域ＣＮＦ＿１である場合の動作について説明する。
【０１２１】
ステップ８１１（Ｓ８１１）において、フラッシュシーケンサ１７は、受信した「設定領域書き込み」コマンドが、保護対象の機能設定データＯＰＢＴｉについての新たな書き込みの指示であるか否かを判定する。なお、フラッシュシーケンサ１７は、実装されている保護機能に従った確認方法により、この判定を実施する。例えば、保護設定ビットにより保護の設定が行われる場合、フラッシュシーケンサ１７は、当該機能設定データＯＰＢＴｉに対応する保護設定ビットを参照することにより、この機能設定データＯＰＢＴｉが保護対象であるか否かを判定する。
【０１２２】
書き込み対象の機能設定データＯＰＢＴｉが保護対象でない場合（ステップ８１１でＮｏ）、ステップ８１２（Ｓ８１２）において、フラッシュシーケンサ１７は、新たな機能設定データＯＰＢＴｉとして、ＣＰＵ１１から受信したＷＤ０、ＷＤ１、ＷＤ２、ＷＤ３を無効な領域である分割領域ＣＮＦ＿１に書き込む。これに対し、書き込み対象の機能設定データＯＰＢＴｉが保護対象である場合（ステップ８１１でＹｅｓ）、ステップ８１３（Ｓ８１３）において、フラッシュシーケンサ１７は、有効な領域である分割領域ＣＮＦ＿０の機能設定データＯＰＢＴｉの設定値を、無効な領域である分割領域ＣＮＦ＿１に書き込む。すなわち、フラッシュシーケンサ１７は、設定値をコピーする。これにより機能設定データＯＰＢＴｉの設定値が維持され、異なる値への変更を禁止することができる。ステップ８１２の後、又はステップ８１３の後、処理はステップ８１４へ移行する。
【０１２３】
機能設定データＯＰＢＴｉの書き込みが完了すると、ステップ８１４（Ｓ８１４）において、フラッシュシーケンサ１７は、分割領域ＣＮＦ＿１において、書き込み完了フラグＶＯＦｉとして、機能設定データＯＰＢＴｉの書き込みの完了を示す所定値を書き込む。その後、ステップ８１５（Ｓ８１５）において、書き込み完了フラグＶＯＦＣｉとして、書き込み完了フラグＶＯＦｉの書き込みの完了を示す所定値を書き込む。これにより、設定領域書き込みの動作が終了する。
【０１２４】
これに対し、無効な領域が分割領域ＣＮＦ＿０である場合、ステップ８２１からステップ８２５において、分割領域ＣＮＦ＿０に対し書き込み処理が行われる。ステップ８２１からステップ８２５は、無効な領域が逆である点を除き、上述したステップ８１１からステップ８１５と同様の処理である。すなわち、書き込み対象の機能設定データＯＰＢＴｉが保護対象でない場合（ステップ８２１でＮｏ）、フラッシュシーケンサ１７は、ＷＤ０、ＷＤ１、ＷＤ２、ＷＤ３を分割領域ＣＮＦ＿０に書き込み（ステップ８２２）、保護対象である場合、フラッシュシーケンサ１７は、分割領域ＣＮＦ＿１の機能設定データＯＰＢＴｉの設定値を、分割領域ＣＮＦ＿０にコピーする（ステップ８２３）。そして、フラッシュシーケンサ１７は、分割領域ＣＮＦ＿０において、書き込み完了フラグＶＯＦｉ及び書き込み完了フラグＶＯＦＣｉの書き込みを実施する（ステップ８２４、８２５）。
【０１２５】
セキュリティ設定領域３００Ｂ及びブロック保護設定領域３００Ｃについての「設定領域書き込み」コマンドを受信した場合のフラッシュシーケンサ１７の動作も、図２１で示した動作と同様であるが、書き込み対象領域が、処理対象の領域に応じて異なる。具体的には、セキュリティ設定領域３００Ｂの場合には、書き込み対象領域は分割領域ＳＥＣ＿０または分割領域ＳＥＣ＿１となる。また、ブロック保護設定領域３００Ｃの場合には、書き込み対象領域は分割領域ＢＰ＿０または分割領域ＢＰ＿１となる。
【０１２６】
図２１のステップ８１３、８２３のように、フラッシュシーケンサ１７は、機能設定データＯＰＢＴｉが保護対象である場合、組をなす２つのメモリ領域（分割領域）のいずれか一方に対し新たな機能設定データＯＰＢＴｉの書き込み指示を受け付けたとき、当該新たな機能設定データに代えて、他方に記憶されている機能設定データを書き込む。これにより、保護対象となっている機能設定データＯＰＢＴｉが別のデータ書き換えられてしまうことを防ぐことができる。
【０１２７】
設定領域３００を更新する場合、ＣＰＵ１１は、例えば機能設定データを更新するためのプログラム（ソフトウェア）に従って、「設定領域消去」コマンドと、全ての機能設定データＯＰＢＴｉ（すなわち、機能設定データＯＰＢＴ０、・・・、ＯＰＢＴｘ）についての「設定領域書き込み」コマンドを順に実行する。これにより、コンフィギュレーション設定領域３００Ａ、セキュリティ設定領域３００Ｂ、又はブロック保護設定領域３００Ｃの無効な分割領域に新しい設定値が格納される。
【０１２８】
図２２Ａ及び図２２Ｂは、「設定領域消去」コマンド及び「設定領域書き込み」コマンドが実行された場合の各値の一例を示している。ただし、この例では、「設定領域消去」コマンド及び「設定領域書き込み」コマンドを使用してコンフィギュレーション設定領域３００Ａの無効な分割領域ＣＮＦ＿０に新しい設定値を格納する場合の値の推移を示している。図２２Ａは、分割領域ＣＮＦ＿０における各機能設定データと各フラグの推移を示す表である。図２２Ｂは、分割領域ＣＮＦ＿１における各機能設定データと各フラグの推移を示す表である。
【０１２９】
図２２Ａに示すように、「設定領域消去」コマンドと各機能設定データＯＰＢＴｉについての「設定領域書き込み」コマンドが実行されると、無効な分割領域ＣＮＦ＿０では、まず、機能設定データとフラグが消去され、その後、新たな機能設定データＯＰＢＴｉ及び書き込み完了フラグＶＯＦｉ、ＶＯＦＣｉの書き込みが繰り返される。なお、この間、図２２Ｂに示すように、有効な分割領域ＣＮＦ＿１では、値の変更は発生しない。図２２Ａ、図２２Ｂでは、コンフィギュレーション設定領域３００Ａの更新を例示したが、セキュリティ設定領域３００Ｂ、及びブロック保護設定領域３００Ｃも、同様な手順で無効な分割領域に新しい設定値を格納できる。
【０１３０】
図２３は、スイッチ領域１００＿０／スイッチ領域１００＿１／タグ領域２００と、コンフィギュレーション設定領域３００Ａ／セキュリティ設定領域３００Ｂ／ブロック保護設定領域３００Ｃの関係を示す模式図である。有効な設定データが格納されているスイッチ領域１００（すなわち、有効なスイッチ領域１００）が、図１２に従って、スイッチ領域１００＿０、スイッチ領域１００＿１、及びタグ領域２００のフラグにより決定される。さらに、有効なスイッチ領域１００の設定データによって、コンフィギュレーション設定領域３００Ａの有効な分割領域、セキュリティ設定領域３００Ｂの有効な分割領域、及びブロック保護設定領域３００Ｃの有効な分割領域が決定される。
【０１３１】
ここで、スイッチ領域１００＿０の設定データＤ０−０とスイッチ領域１００＿１の設定データＤ１−０は、コンフィギュレーション設定領域３００Ａのいずれかの分割領域を指定するデータである。換言すると、設定データＤ０−０、Ｄ１−０は、分割領域ＣＮＦ＿０に記憶された機能設定データ又は分割領域ＣＮＦ＿１に記憶された機能設定データのいずれかを指定するデータである。
また、スイッチ領域１００＿０の設定データＤ０−１とスイッチ領域１００＿１の設定データＤ１−１は、セキュリティ設定領域３００Ｂのいずれかの分割領域を指定するデータである。換言すると、設定データＤ０−１、Ｄ１−１は、分割領域ＳＥＣ＿０に記憶された機能設定データ又は分割領域ＳＥＣ＿１に記憶された機能設定データのいずれかを指定するデータである。
また、スイッチ領域１００＿０の設定データＤ０−２とスイッチ領域１００＿１の設定データＤ１−２は、ブロック保護設定領域３００Ｃのいずれかの分割領域を指定するデータである。換言すると、設定データＤ０−２、Ｄ１−２は、分割領域ＢＰ＿０に記憶された機能設定データ又は分割領域ＢＰ＿１に記憶された機能設定データのいずれかを指定するデータである。
【０１３２】
各領域が図２３に示すような関係を持つため、設定領域３００に格納した新しい機能設定データに切り替える場合には、設定領域３００の無効な分割領域に新しい機能設定データを格納した後に、図１１Ａ、図１１Ｂ、図１１Ｃで示したように４つのコマンドを実行すればよい。すなわち、「スイッチ領域消去」コマンド、「スイッチ領域書き込み」コマンド、「タグ領域消去」コマンド、「タグ領域更新」コマンドの順に４つのコマンドを順に実行することにより、スイッチ領域１００の設定データを、新しい機能設定データが格納されている分割領域を指定するデータに変更すればよい。
【０１３３】
スイッチ領域１００の各設定データには、任意の値を設定することができる。このため、図２４のようにスイッチ領域１００＿０の設定データで分割領域ＣＮＦ＿０、分割領域ＳＥＣ＿１、及び分割領域ＢＰ＿０をそれぞれ有効領域として選択していた状態から、図２５のようにスイッチ領域１００＿１の設定データで分割領域ＣＮＦ＿１、分割領域ＳＥＣ＿１、及び分割領域ＢＰ＿１をそれぞれ有効領域として選択した状態に切替えることが可能である。すなわち、セキュリティ設定のみ切り替えずにマイクロコントローラ１０を使用することも可能である。
【０１３４】
また、設定領域３００の更新有無に関わらず、スイッチ領域１００及びタグ領域２００のみ更新することも可能である。このため、スイッチ領域１００＿０を消去後に、スイッチ領域１００＿０に分割領域ＣＮＦ＿０、分割領域ＳＥＣ＿１、及び分割領域ＢＰ＿０を選択する設定データを書き込み、さらにタグ領域消去とタグ更新を実施すると、マイクロコントローラ１０の機能設定を図２４と同じ状態に戻すことも可能である。すなわち、ロールバックを実施することができる。
【０１３５】
スイッチ領域１００及びタグ領域２００のみ独立的に更新することが可能であることは上記のような利点を有するが、スイッチ領域１００及びタグ領域２００の更新により、消去状態の分割領域が誤選択されると、マイクロコントローラ１０の各種機能の設定が消失してしまうため、システム障害を引き起こす可能性がある。このような問題を回避するために、本実施の形態では、フラッシュシーケンサ１７は、設定領域３００の書き込み状態を判定して、タグ領域更新を実施する。図２６は、「タグ領域更新」コマンドを受信した場合の実施の形態３にかかるフラッシュシーケンサ１７の動作の一例を示すフローチャートである。図２６のフローチャートは、ステップ４００の後に、ステップ４３１、ステップ４３２、ステップ４４１、及びステップ４４２が追加されている点で、図１０のフローチャートと異なっている。以下、図２６に沿って、本実施の形態のフラッシュシーケンサ１７の「タグ領域更新」コマンド受信時の動作の流れを説明する。
【０１３６】
本実施の形態では、無効なスイッチ領域１００の判定（ステップ４００）が行われると、フラッシュシーケンサ１７は、無効なスイッチ領域１００の設定データの書き込み状態の確認（ステップ４３１、４４１）及び設定領域３００の書き込み状態の確認（ステップ４３２、４４２）を行う。
【０１３７】
まず、無効なスイッチ領域１００がスイッチ領域１００＿１である場合について説明する。この場合、処理は、ステップ４００の後、ステップ４３１へ移行する。ステップ４３１（Ｓ４３１）では、フラッシュシーケンサ１７は、スイッチ領域１００＿１の全ての設定データ（すなわち、設定データＤ１−０、Ｄ１−１、Ｄ１−２）が、書き込み済みであるかを判定する。スイッチ領域１００＿１の全ての設定データが書き込み済みである場合（ステップ４３１でＹｅｓ）、処理は、ステップ４３２へ移行する。これに対し、スイッチ領域１００＿１のいずれかの設定データが書き込み済みでない場合（ステップ４３１でＮｏ）、処理はエラー終了する。すなわち、この場合、タグ領域２００の更新は行われない。
【０１３８】
ステップ４３２（Ｓ４３２）では、フラッシュシーケンサ１７は、スイッチ領域１００＿１に書き込みされている設定データで指定されている分割領域の全ての書き込み完了フラグＶＯＦｉが書き込み済みであるかを判定する。全ての書き込み完了フラグＶＯＦｉが書き込み済みである場合（ステップ４３２でＹｅｓ）、図１０に示した処理と同様の処理（ステップ４１１、ステップ４１２）が行われる。これに対し、全ての書き込み完了フラグＶＯＦｉが書き込み済みでない場合（ステップ４３２でＮｏ）、処理はエラー終了する。すなわち、この場合、タグ領域２００の更新は行われない。
【０１３９】
このように、フラッシュシーケンサ１７は、有効であるスイッチ領域がスイッチ領域１００＿１であることを示す有効スイッチ領域フラグＶＡＦをタグ領域２００に書き込む場合、スイッチ領域１００＿１に設定データＤ１−０、Ｄ１−１、Ｄ１−２が記憶され、かつ、記憶された設定データＤ１−０、Ｄ１−１、Ｄ１−２により指定される分割領域に機能設定データが記憶されている場合に限り、有効スイッチ領域フラグＶＡＦの書き込みを実施する。換言すると、フラッシュシーケンサ１７は、有効である設定データがスイッチ領域１００＿１の設定データであることを示す有効スイッチ領域フラグＶＡＦをタグ領域２００に書き込む場合、当該設定データが記憶され、かつ、記憶された当該設定データにより指定される機能設定データが設定領域３００に記憶されている場合に限り、有効スイッチ領域フラグＶＡＦの書き込みを実施する。このようにすることで、消去状態の分割領域が誤選択されることを防ぐことができる。
【０１４０】
無効なスイッチ領域１００がスイッチ領域１００＿０である場合、処理は、ステップ４００の後、ステップ４４１へ移行する。ステップ４４１（Ｓ４４１）では、フラッシュシーケンサ１７は、スイッチ領域１００＿０の全ての設定データ（すなわち、設定データＤ０−０、Ｄ０−１、Ｄ０−２）が、書き込み済みであるかを判定する。スイッチ領域１００＿０の全ての設定データが書き込み済みである場合（ステップ４４１でＹｅｓ）、処理は、ステップ４４２へ移行する。これに対し、スイッチ領域１００＿０のいずれかの設定データが書き込み済みでない場合（ステップ４４１でＮｏ）、処理はエラー終了する。すなわち、この場合、タグ領域２００の更新は行われない。
【０１４１】
ステップ４４２（Ｓ４４２）では、フラッシュシーケンサ１７は、スイッチ領域１００＿０に書き込みされている設定データで指定されている分割領域の全ての書き込み完了フラグＶＯＦｉが書き込み済みであるかを判定する。全ての書き込み完了フラグＶＯＦｉが書き込み済みである場合（ステップ４４２でＹｅｓ）、図１０に示した処理と同様の処理（ステップ４２１、ステップ４２２）が行われる。これに対し、全ての書き込み完了フラグＶＯＦｉが書き込み済みでない場合（ステップ４４２でＮｏ）、処理はエラー終了する。すなわち、この場合、タグ領域２００の更新は行われない。
【０１４２】
このように、フラッシュシーケンサ１７は、有効であるスイッチ領域がスイッチ領域１００＿０であることを示す有効スイッチ領域フラグＶＡＦをタグ領域２００に書き込む場合、スイッチ領域１００＿０に設定データＤ０−０、Ｄ０−１、Ｄ０−２が記憶され、かつ、記憶された設定データＤ０−０、Ｄ０−１、Ｄ０−２により指定される分割領域に機能設定データが記憶されている場合に限り、有効スイッチ領域フラグＶＡＦの書き込みを実施する。換言すると、フラッシュシーケンサ１７は、有効である設定データがスイッチ領域１００＿０の設定データであることを示す有効スイッチ領域フラグＶＡＦをタグ領域２００に書き込む場合、当該設定データが記憶され、かつ、記憶された当該設定データにより指定される機能設定データが設定領域３００に記憶されている場合に限り、有効スイッチ領域フラグＶＡＦの書き込みを実施する。このようにすることで、消去状態の分割領域が誤選択されることを防ぐことができる。
【０１４３】
なお、書き込み完了フラグＶＯＦｉの書き込み状態がリテンション不足であり、それにより値が経時変化する可能性を考えた場合、図２６の処理を実行することにより、システムの動作が不安定になる恐れがある。よって、図２６の処理の実行の前に、書き込み完了フラグＶＯＦｉの書き込みの実施直後に書き込まれる書き込み完了フラグＶＯＦＣｉを確認してもよい。そして、フラッシュシーケンサ１７は、書き込み完了フラグＶＯＦＣｉが書き込み完了フラグＶＯＦｉの書き込みの完了を示す場合に限り、図２６の処理を実施してもよい。このようにすることで、システムの動作を安定させることができる。
【０１４４】
なお、本実施の形態では、機能設定データに対し読み出し禁止の保護が設定された場合であっても適切に動作するように、フラッシュシーケンサ１７は、書き込み完了フラグＶＯＦｉを確認している（図２６のステップ４３２、４４２）。すなわち、機能設定データの参照により機能設定データの書き込み状態を確認できない場合であっても適切に動作するように、フラッシュシーケンサ１７は、書き込み完了フラグＶＯＦｉを確認している。したがって、機能設定データに対し読み出し禁止の保護が設定されることがないシステムにおいては、フラッシュシーケンサ１７は、機能設定データを参照することにより機能設定データの書き込み状態を確認してもよい。この場合、図２６の処理の実行の前に、書き込み完了フラグＶＯＦＣｉではなく、書き込み完了フラグＶＯＦｉを確認するようにしてもよい。つまり、このような構成の場合、書き込み完了フラグＶＯＦＣｉは不要である。
【０１４５】
以上、実施の形態３について説明した。本実施の形態では、機能設定用フラッシュメモリ１５は、スイッチ領域１００＿０、スイッチ領域１００＿１、及びタグ領域２００に加え、さらに、所定の機能についての機能設定データが記憶される２つのメモリ領域を含む。ここで、所定の機能についての機能設定データが記憶される２つのメモリ領域は、例えば、分割領域ＣＮＦ＿０及び分割領域ＣＮＦ＿１である。また、この２つのメモリ領域は、分割領域ＳＥＣ＿０及び分割領域ＳＥＣ＿１であってもよいし、分割領域ＢＰ＿０及び分割領域ＢＰ＿１であってもよい。そして、この２つのメモリ領域の一方をメモリ領域Ａと称し、他方をメモリ領域Ｂと称した場合、本実施の形態におけるスイッチ領域１００＿０及びスイッチ領域１００＿１の設定データは、次のようなデータであると言える。すなわち、スイッチ領域１００＿０及びスイッチ領域１００＿１の設定データは、メモリ領域Ａに記憶された機能設定データ又はメモリ領域Ｂに記憶された機能設定データのいずれかを指定するデータである。このような構成によれば、有効スイッチ領域フラグＶＡＦの更新中に処理が中断し、有効スイッチ領域フラグＶＡＦが不確定な値になった場合でも、マイクロコントローラ１０に適用される機能設定データを一意に特定することができる。
【０１４６】
また、特に、所定の機能についての機能設定データが記憶される２つのメモリ領域の組をｎ個（ｎは２以上の整数）含むことも可能である。上述の構成では、機能設定用フラッシュメモリ１５は、そのような組を３個（分割領域ＣＮＦ＿０、ＣＮＦ＿１と、分割領域ＳＥＣ＿０、ＳＥＣ＿１と、分割領域ＢＰ＿０、ＢＰ＿１）備えている。そして、スイッチ領域１００＿０とスイッチ領域１００＿１は、いずれもｎ個の設定データを記憶する。このような構成によれば、適用する機能設定データの組み合わせを自由に切替えることができる。したがって、例えば、図２４に示した状態から図２５に示した状態への切替えや、切替え後のロールバックも容易に実現することができる。
【０１４７】
さらに、図２１に示したように、フラッシュシーケンサ１７は、保護対象の機能設定データについての書き込み指示を受信すると、受信したデータの書き込みではなく、有効な分割領域の機能設定データのコピーを実施する。このため、機能設定データの設定値が不正な値に変更されないように保護できる。また、図２６に示したように、フラッシュシーケンサ１７は、タグ領域２００の更新の際には、更新後に選択される分割領域の書き込み完了フラグＶＯＦｉを確認することで、各種機能の設定が消失することを防止している。
【０１４８】
＜その他の実施の形態＞
上記に示した全ての実施形態において、上述した処理を行う各要素は、ハードウェア的には、プロセッサ、メモリ、その他の回路で構成することができ、ソフトウェア的には、メモリにロードされたプログラム等によって実現される。したがって、これらの処理がハードウェアのみ、ソフトウェアのみ、又はそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。
【０１４９】
また、上述したプログラムは、様々なタイプの非一時的なコンピュータ可読媒体を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  ＰＲＯＭ）、フラッシュＲＯＭ、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【０１５０】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
【符号の説明】
【０１５１】
１    情報処理装置
２    記憶部
３    制御部
４    使用データ決定部
５＿１、５＿２、５＿３    メモリ領域
６＿１、６＿２    データ
７    有効指示フラグ
８＿１、８＿２、８＿３    更新状況フラグ
１０    マイクロコントローラ
１１    ＣＰＵ
１２    ＲＡＭ
１３    周辺回路
１４    データ格納用フラッシュメモリ
１５    機能設定用フラッシュメモリ
１６    使用データ決定部
１７    フラッシュシーケンサ
１８    周辺バス
１００、１００＿０、１００＿１    スイッチ領域
２００    タグ領域
３００    設定領域
３００Ａ    コンフィギュレーション設定領域
３００Ｂ    セキュリティ設定領域
３００Ｃ    ブロック保護設定領域
ＢＰ＿０、ＢＰ＿１、ＣＮＦ＿０、ＣＮＦ＿１、ＳＥＣ＿０、ＳＥＣ＿１    分割領域
【図１】
2020009347.tif 000003
【図２】
2020009347.tif 000004
【図３】
2020009347.tif 000005
【図４】
2020009347.tif 000006
【図５】
2020009347.tif 000007
【図６】
2020009347.tif 000008
【図７】
2020009347.tif 000009
【図８】
2020009347.tif 000010
【図９】
2020009347.tif 000011
【図１０】
2020009347.tif 000012
【図１１Ａ】
2020009347.tif 000013
【図１１Ｂ】
2020009347.tif 000014
【図１１Ｃ】
2020009347.tif 000015
【図１２】
2020009347.tif 000016
【図１３】
2020009347.tif 000017
【図１４】
2020009347.tif 000018
【図１５】
2020009347.tif 000019
【図１６】
2020009347.tif 000020
【図１７】
2020009347.tif 000021
【図１８】
2020009347.tif 000022
【図１９】
2020009347.tif 000023
【図２０】
2020009347.tif 000024
【図２１】
2020009347.tif 000025
【図２２Ａ】
2020009347.tif 000026
【図２２Ｂ】
2020009347.tif 000027
【図２３】
2020009347.tif 000028
【図２４】
2020009347.tif 000029
【図２５】
2020009347.tif 000030
【図２６】
2020009347.tif 000031