(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-06-14
(45)【発行日】2022-06-22
(54)【発明の名称】情報処理装置及び制御方法
(51)【国際特許分類】
G06F 21/60 20130101AFI20220615BHJP
G11C 16/10 20060101ALI20220615BHJP
【FI】
G06F21/60
G11C16/10 103
(21)【出願番号】P 2018132068
(22)【出願日】2018-07-12
【審査請求日】2021-01-15
(73)【特許権者】
【識別番号】302062931
【氏名又は名称】ルネサスエレクトロニクス株式会社
(74)【代理人】
【識別番号】100103894
【氏名又は名称】家入 健
(72)【発明者】
【氏名】倉藤 崇
(72)【発明者】
【氏名】山本 智志
【審査官】田名網 忠雄
(56)【参考文献】
【文献】特開2006-031276(JP,A)
【文献】特開平08-272698(JP,A)
【文献】特開2001-154926(JP,A)
【文献】特開2016-157186(JP,A)
【文献】特開2015-191395(JP,A)
【文献】特開2013-037430(JP,A)
【文献】特開2016-133874(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/60
G06F 12/14-12/16
G11C 16/00-16/34
(57)【特許請求の範囲】
【請求項1】
第1のデータが記憶される第1のメモリ領域と、第2のデータが記憶される第2のメモリ領域と、前記第1のデータと前記第2のデータのうちどちらが有効であるかを示す有効指示フラグが記憶される第3のメモリ領域とを含む記憶部と、
前記記憶部に対する消去及び書き込みを制御する制御部と、
前記第1のデータと前記第2のデータのうちどちらが有効であるかを判定し、使用するデータを決定する使用データ決定部と、
を有し、
前記制御部は、前記記憶部に、前記第1のデータの更新状況を示す第1の更新状況フラグと前記第2のデータの更新状況を示す第2の更新状況フラグと前記有効指示フラグの更新状況を示す第3の更新状況フラグを記憶し、
前記使用データ決定部は、前記有効指示フラグに基づく判定が不可能である場合、前記第1の更新状況フラグ、前記第2の更新状況フラグ、及び前記第3の更新状況フラグの値に基づいて、前記第1のデータと前記第2のデータのうちどちらが有効であるかを判定
し、
前記第1の更新状況フラグは、前記第2のメモリ領域に記憶され、前記第1のデータの更新のために行われる前記第1のメモリ領域の消去処理が開始したか否か又は完了したか否かを示すフラグであり、
前記第2の更新状況フラグは、前記第1のメモリ領域に記憶され、前記第2のデータの更新のために行われる前記第2のメモリ領域の消去処理が開始したか否か又は完了したか否かを示すフラグであり、
前記第3の更新状況フラグは、前記第1のメモリ領域又は前記第2のメモリ領域に記憶され、前記有効指示フラグの更新のために行われる前記第3のメモリ領域の消去処理が開始したか否か又は完了したか否かを示すフラグである
情報処理装置。
【請求項2】
第1のデータが記憶される第1のメモリ領域と、第2のデータが記憶される第2のメモリ領域と、前記第1のデータと前記第2のデータのうちどちらが有効であるかを示す有効指示フラグが記憶される第3のメモリ領域とを含む記憶部と、
前記記憶部に対する消去及び書き込みを制御する制御部と、
前記第1のデータと前記第2のデータのうちどちらが有効であるかを判定し、使用するデータを決定する使用データ決定部と、
を有し、
前記制御部は、前記記憶部に、前記第1のデータの更新状況を示す第1の更新状況フラグと前記第2のデータの更新状況を示す第2の更新状況フラグと前記有効指示フラグの更新状況を示す第3の更新状況フラグを記憶し、
前記使用データ決定部は、前記有効指示フラグに基づく判定が不可能である場合、前記第1の更新状況フラグ、前記第2の更新状況フラグ、及び前記第3の更新状況フラグの値に基づいて、前記第1のデータと前記第2のデータのうちどちらが有効であるかを判定し、
前記制御部は、現在有効なデータが前記第1のデータである場合、前記第2のメモリ領域に前記第2のデータが記憶されている場合に限り、
CPU(Central Processing Unit)から消去コマンドを受信したことに応じて実行される消去である、前記第3のメモリ領域の消去を実施し、現在有効なデータが前記第2のデータである場合、前記第1のメモリ領域に前記第1のデータが記憶されている場合に限り、
前記CPUから消去コマンドを受信したことに応じて実行される消去である、前記第3のメモリ領域の消去を実施する
情報処理装置。
【請求項3】
第1のデータが記憶される第1のメモリ領域と、第2のデータが記憶される第2のメモリ領域と、前記第1のデータと前記第2のデータのうちどちらが有効であるかを示す有効指示フラグが記憶される第3のメモリ領域とを含む記憶部と、
前記記憶部に対する消去及び書き込みを制御する制御部と、
前記第1のデータと前記第2のデータのうちどちらが有効であるかを判定し、使用するデータを決定する使用データ決定部と、
を有し、
前記制御部は、前記記憶部に、前記第1のデータの更新状況を示す第1の更新状況フラグと前記第2のデータの更新状況を示す第2の更新状況フラグと前記有効指示フラグの更新状況を示す第3の更新状況フラグを記憶し、
前記使用データ決定部は、前記有効指示フラグに基づく判定が不可能である場合、前記第1の更新状況フラグ、前記第2の更新状況フラグ、及び前記第3の更新状況フラグの値に基づいて、前記第1のデータと前記第2のデータのうちどちらが有効であるかを判定し、
前記記憶部には、さらに、
前記第3の更新状況フラグに含まれる、前記有効指示フラグの書き込みが完了したか否かを示す書き込み完了フラグが記憶され、
前記制御部は、前記書き込み完了フラグが書き込みの完了を示す場合に限り、
CPUから消去コマンドを受信したことに応じて実行される消去である、前記第1のメモリ領域又は前記第2のメモリ領域の消去を実施する
情報処理装置。
【請求項4】
第1のデータが記憶される第1のメモリ領域と、第2のデータが記憶される第2のメモリ領域と、前記第1のデータと前記第2のデータのうちどちらが有効であるかを示す有効指示フラグが記憶される第3のメモリ領域とを含む記憶部と、
前記記憶部に対する消去及び書き込みを制御する制御部と、
前記第1のデータと前記第2のデータのうちどちらが有効であるかを判定し、使用するデータを決定する使用データ決定部と、
を有し、
前記制御部は、前記記憶部に、前記第1のデータの更新状況を示す第1の更新状況フラグと前記第2のデータの更新状況を示す第2の更新状況フラグと前記有効指示フラグの更新状況を示す第3の更新状況フラグを記憶し、
前記使用データ決定部は、前記有効指示フラグに基づく判定が不可能である場合、前記第1の更新状況フラグ、前記第2の更新状況フラグ、及び前記第3の更新状況フラグの値に基づいて、前記第1のデータと前記第2のデータのうちどちらが有効であるかを判定し、
前記記憶部には、さらに、
前記第1の更新状況フラグとは異なるフラグである前記第1のデータの書き込みが完了したか否かを示す第1の書き込み完了フラグと
前記第2の更新状況フラグとは異なるフラグである前記第2のデータの書き込みが完了したか否かを示す第2の書き込み完了フラグが記憶され、
前記制御部は、前記第1の書き込み完了フラグ又は前記第2の書き込み完了フラグが、新たに有効とすべきデータについて書き込みの完了を示す場合に限り、
CPUから消去コマンドを受信したことに応じて実行される消去である、前記第3のメモリ領域の消去を実施する
情報処理装置。
【請求項5】
情報処理装置であって、
第1のデータが記憶される第1のメモリ領域と、第2のデータが記憶される第2のメモリ領域と、前記第1のデータと前記第2のデータのうちどちらが有効であるかを示す有効指示フラグが記憶される第3のメモリ領域とを含む記憶部と、
前記記憶部に対する消去及び書き込みを制御する制御部と、
前記第1のデータと前記第2のデータのうちどちらが有効であるかを判定し、使用するデータを決定する使用データ決定部と、
を有し、
前記制御部は、前記記憶部に、前記第1のデータの更新状況を示す第1の更新状況フラグと前記第2のデータの更新状況を示す第2の更新状況フラグと前記有効指示フラグの更新状況を示す第3の更新状況フラグを記憶し、
前記使用データ決定部は、前記有効指示フラグに基づく判定が不可能である場合、前記第1の更新状況フラグ、前記第2の更新状況フラグ、及び前記第3の更新状況フラグの値に基づいて、前記第1のデータと前記第2のデータのうちどちらが有効であるかを判定し、
前記記憶部は、さらに、所定の機能についての機能設定データが記憶される第4のメモリ領域及び第5のメモリ領域を含み、
前記第1のデータ及び前記第2のデータは、前記第4のメモリ領域に記憶された前記機能設定データ又は前記第5のメモリ領域に記憶された前記機能設定データのいずれを前記情報処理装置において使用するかを指定するデータであり、
前記制御部は、前記機能設定データが
値の変更を禁止する対象である場合、前記第4のメモリ領域と前記第5のメモリ領域のいずれか一方に対し新たな前記機能設定データの書き込み指示を受け付けたとき、当該新たな前記機能設定データに代えて、他方に記憶されている
、現在有効なデータである前記機能設定データを書き込む
情報処理装置。
【請求項6】
情報処理装置であって、
第1のデータが記憶される第1のメモリ領域と、第2のデータが記憶される第2のメモリ領域と、前記第1のデータと前記第2のデータのうちどちらが有効であるかを示す有効指示フラグが記憶される第3のメモリ領域とを含む記憶部と、
前記記憶部に対する消去及び書き込みを制御する制御部と、
前記第1のデータと前記第2のデータのうちどちらが有効であるかを判定し、使用するデータを決定する使用データ決定部と、
を有し、
前記制御部は、前記記憶部に、前記第1のデータの更新状況を示す第1の更新状況フラグと前記第2のデータの更新状況を示す第2の更新状況フラグと前記有効指示フラグの更新状況を示す第3の更新状況フラグを記憶し、
前記使用データ決定部は、前記有効指示フラグに基づく判定が不可能である場合、前記第1の更新状況フラグ、前記第2の更新状況フラグ、及び前記第3の更新状況フラグの値に基づいて、前記第1のデータと前記第2のデータのうちどちらが有効であるかを判定し、
前記記憶部は、さらに、所定の機能についての機能設定データが記憶される第4のメモリ領域及び第5のメモリ領域を含み、
前記第1のデータ及び前記第2のデータは、前記第4のメモリ領域に記憶された前記機能設定データ又は前記第5のメモリ領域に記憶された前記機能設定データのいずれを前記情報処理装置において使用するかを指定するデータであり、
前記制御部は、有効であるデータが前記第1のデータであることを示す前記有効指示フラグを前記第3のメモリ領域に書き込む場合、前記第1のデータが記憶され、かつ、記憶された前記第1のデータにより指定される前記機能設定データが記憶されている場合に限り、前記有効指示フラグの書き込みを実施する
情報処理装置。
【請求項7】
情報処理装置であって、
第1のデータが記憶される第1のメモリ領域と、第2のデータが記憶される第2のメモリ領域と、前記第1のデータと前記第2のデータのうちどちらが有効であるかを示す有効指示フラグが記憶される第3のメモリ領域とを含む記憶部と、
前記記憶部に対する消去及び書き込みを制御する制御部と、
前記第1のデータと前記第2のデータのうちどちらが有効であるかを判定し、使用するデータを決定する使用データ決定部と、
を有し、
前記制御部は、前記記憶部に、前記第1のデータの更新状況を示す第1の更新状況フラグと前記第2のデータの更新状況を示す第2の更新状況フラグと前記有効指示フラグの更新状況を示す第3の更新状況フラグを記憶し、
前記使用データ決定部は、前記有効指示フラグに基づく判定が不可能である場合、前記第1の更新状況フラグ、前記第2の更新状況フラグ、及び前記第3の更新状況フラグの値に基づいて、前記第1のデータと前記第2のデータのうちどちらが有効であるかを判定し、
前記記憶部は、さらに、所定の機能についての機能設定データが記憶される第4のメモリ領域及び第5のメモリ領域を含み、
前記第1のデータ及び前記第2のデータは、前記第4のメモリ領域に記憶された前記機能設定データ又は前記第5のメモリ領域に記憶された前記機能設定データのいずれを前記情報処理装置において使用するかを指定するデータであり、
前記記憶部は、前記第4のメモリ領域及び前記第5のメモリ領域の組をn個(nは2以上の整数)含み、
前記第1のメモリ領域は、n個の前記第1のデータを記憶し、
前記第2のメモリ領域は、n個の前記第2のデータを記憶する
情報処理装置。
【請求項8】
第1のデータが記憶される第1のメモリ領域と、第2のデータが記憶される第2のメモリ領域と、前記第1のデータと前記第2のデータのうちどちらが有効であるかを示す有効指示フラグが記憶される第3のメモリ領域とを含む記憶部と、
前記記憶部に対する消去及び書き込みを制御する制御部と、
前記第1のデータと前記第2のデータのうちどちらが有効であるかを判定し、使用するデータを決定する使用データ決定部と、
を有し、
前記制御部は、前記記憶部に、前記第1のデータの更新状況を示す第1の更新状況フラグと前記第2のデータの更新状況を示す第2の更新状況フラグと前記有効指示フラグの更新状況を示す第3の更新状況フラグを記憶し、
前記使用データ決定部は、前記有効指示フラグに基づく判定が不可能である場合、前記第1の更新状況フラグ、前記第2の更新状況フラグ、及び前記第3の更新状況フラグの値に基づいて、前記第1のデータと前記第2のデータのうちどちらが有効であるかを判定し、
前記記憶部は、フラッシュメモリであり、
前記制御部は、
前記第1の更新状況フラグを前記第2のメモリ領域に記憶し、
前記第2の更新状況フラグを前記第1のメモリ領域に記憶し、
前記第3の更新状況フラグを前記第1のメモリ領域又は前記第2のメモリ領域に記憶する
情報処理装置。
【請求項9】
第1のデータが記憶される第1のメモリ領域と、第2のデータが記憶される第2のメモリ領域と、前記第1のデータと前記第2のデータのうちどちらが有効であるかを示す有効指示フラグが記憶される第3のメモリ領域とを含む
フラッシュメモリである記憶部
の前記第2のメモリ領域に前記第1のデータの更新状況を示す第1の更新状況フラグ
を記憶し、前記第1のメモリ領域に前記第2のデータの更新状況を示す第2の更新状況フラグ
を記憶し、前記第1のメモリ領域又は前記第2のメモリ領域に前記有効指示フラグの更新状況を示す第3の更新状況フラグを記憶し、
前記有効指示フラグに基づく判定が不可能である場合、前記第1の更新状況フラグ、前記第2の更新状況フラグ、及び前記第3の更新状況フラグの値に基づいて、前記第1のデータと前記第2のデータのうちどちらが有効であるかを判定する
制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は情報処理装置及び制御方法に関し、例えば有効なデータを判定するための技術に関する。
【背景技術】
【0002】
特許文献1は、フラッシュメモリにおけるデータの消去回数を記憶する情報処理装置を開示している。この情報処理装置では、3つのメモリ領域(A領域、B領域、及びフラグ領域)により、消去回数を管理している。A領域とB領域のうち一方には更新前の消去回数が記憶され、他方には更新後の消去回数が記憶される。フラグ領域には、どちらの領域が有効であるか、すなわち、どちらの領域が現在の消去回数を記憶しているかを示すフラグが記憶される。
【0003】
この情報処理装置では、A領域が有効であるとフラグが示している場合、B領域の消去を行った後、B領域に更新後の消去回数を記憶し、その後、B領域が有効であると示すようフラグの書き換えが行われる。このような構成により、消去回数の更新処理に中断が発生したとしても、記憶された消去回数が消失しないようにしている。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、上述の技術では、不測の事態等に依り、フラグの書き換え処理中に処理が中断してしまうと、適切な値がフラグとして記憶されなくなってしまう。すなわち、A領域とB領域のどちらが有効であるかが不確定になる場合がある。また、A領域及びB領域に記憶される内容が消去回数ではなく、MCU(Micro Control Unit:マイクロコントロールユニット)などの機器における設定データ(例えば、システム起動時にアクセスするメモリ領域を特定する設定データ、セキュリティ設定データなど)である場合、設定データが不確定になることを意味する。このような場合、ソフトウェアやセキュリティ設定の意図しない切り替えが発生し、システム障害を引き起こす可能性がある。
このため、データの更新処理の中断が発生しても、有効なデータを特定することができる技術が求められている。
【0006】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【0007】
一実施の形態によれば、制御部は、記憶部に、第1のデータの更新状況を示す第1の更新状況フラグと第2のデータの更新状況を示す第2の更新状況フラグと有効指示フラグの更新状況を示す第3の更新状況フラグを記憶し、使用データ決定部は、有効指示フラグに基づく判定が不可能である場合、前記第1の更新状況フラグ、前記第2の更新状況フラグ、及び前記第3の更新状況フラグの値に基づいて、前記第1のデータと前記第2のデータのうちどちらが有効であるかを判定する。
【発明の効果】
【0008】
前記一実施の形態によれば、データの更新処理の中断が発生しても、有効なデータを特定することができる。
【図面の簡単な説明】
【0009】
【
図1】実施の形態の概要にかかる情報処理装置1の構成の一例を示すブロック図である。
【
図2】実施の形態にかかるマイクロコントローラ10の構成の一例を示すブロック図である。
【
図3】機能設定用フラッシュメモリ15に配置される3つのメモリ領域の一例を示す模式図である。
【
図4】スイッチ領域100の構成の一例を示す模式図である。
【
図5】タグ領域200の構成の一例を示す模式図である。
【
図6】フラッシュシーケンサ17のコマンドを示す図である。
【
図7】「スイッチ領域消去」コマンドを受信した場合の実施の形態1にかかるフラッシュシーケンサ17の動作の一例を示すフローチャートである。
【
図8】「スイッチ領域書き込み」コマンドを受信した場合のフラッシュシーケンサ17の動作の一例を示すフローチャートである。
【
図9】「タグ領域消去」コマンドを受信した場合の実施の形態1にかかるフラッシュシーケンサ17の動作の一例を示すフローチャートである。
【
図10】「タグ領域更新」コマンドを受信した場合の実施の形態1にかかるフラッシュシーケンサ17の動作の一例を示すフローチャートである。
【
図11A】スイッチ領域100_0における各設定データと各フラグの推移を示す表である。
【
図11B】スイッチ領域100_1における各設定データと各フラグの推移を示す表である。
【
図11C】タグ領域200におけるフラグの推移を示す表である。
【
図13】「スイッチ領域消去」コマンドを受信した場合の実施の形態2にかかるフラッシュシーケンサ17の動作の一例を示すフローチャートである。
【
図14】「タグ領域消去」コマンドを受信した場合の実施の形態2にかかるフラッシュシーケンサ17の動作の一例を示すフローチャートである。
【
図15】
図13に示した処理の前に実行される処理を示すフローチャートである。
【
図16】
図14に示した処理の前に実行される処理を示すフローチャートである。
【
図17】実施の形態3にかかる機能設定用フラッシュメモリ15の構成の一例を示す模式図である。
【
図18】コンフィギュレーション設定領域300Aの2つの分割領域CNF_0、CNF_1の構成の一例を示す模式図である。
【
図19】設定領域300についてのコマンドを示す図である。
【
図20】コンフィギュレーション設定領域300Aのアドレスがアドレス指定レジスタに設定された状態で「設定領域消去」コマンドを受信した場合のフラッシュシーケンサ17の動作の一例を示すフローチャートである。
【
図21】コンフィギュレーション設定領域300Aのアドレスがアドレス指定レジスタに設定された状態で「設定領域書き込み」コマンドを受信した場合のフラッシュシーケンサ17の動作の一例を示すフローチャートである。
【
図22A】分割領域CNF_0における各機能設定データと各フラグの推移を示す表である。
【
図22B】分割領域CNF_1における各機能設定データと各フラグの推移を示す表である。
【
図23】スイッチ領域100_0/スイッチ領域100_1/タグ領域200と、コンフィギュレーション設定領域300A/セキュリティ設定領域300B/ブロック保護設定領域300Cの関係を示す模式図である。
【
図24】マイクロコントローラ10の状態の一例を示す図である。
【
図25】マイクロコントローラ10の状態の一例を示す図である。
【
図26】「タグ領域更新」コマンドを受信した場合の実施の形態3にかかるフラッシュシーケンサ17の動作の一例を示すフローチャートである。
【発明を実施するための形態】
【0010】
説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
【0011】
<実施の形態の概要>
まず、実施の形態の詳細な説明に先立って、実施の形態の概要について説明する。
図1は、実施の形態の概要にかかる情報処理装置1の構成の一例を示すブロック図である。情報処理装置1は、記憶部2と、制御部3と、使用データ決定部4とを有する。
【0012】
記憶部2は、データ6_1(第1のデータ)が記憶されるメモリ領域5_1(第1のメモリ領域)と、データ6_2(第2のデータ)が記憶されるメモリ領域5_2(第2のメモリ領域)と、有効指示フラグ7が記憶されるメモリ領域5_3(第3のメモリ領域)とを含む。記憶部2は、例えばフラッシュメモリであるが、他の種類の記憶装置であってもよい。有効指示フラグ7は、データ6_1とデータ6_2のうちどちらが有効であるかを示すフラグである。したがって、有効指示フラグ7として、所定値が正常に記憶されている場合、有効指示フラグ7の値に基づいて有効なデータを特定することができる。なお、有効指示フラグ7は、メモリ領域5_1とメモリ領域5_2のうち、いずれが有効な領域であるかを示すフラグとも言うことができる。この場合、データ6_1とデータ6_2のうち、有効な領域であると指定された領域に記憶されたデータが有効なデータであると言うことができる。
【0013】
制御部3は、記憶部2に対する消去及び書き込みを制御する。ここで、制御部3は、メモリ領域5_1、5_2、5_3の記憶内容を更新するための消去指示又は書き込み指示を受け付けると、更新状況フラグの記憶処理を実施する。具体的には、制御部3は、記憶部2に、データ6_1の更新状況を示す更新状況フラグ8_1(第1の更新状況フラグ)とデータ6_2の更新状況を示す更新状況フラグ8_2(第2の更新状況フラグ)と有効指示フラグ7の更新状況を示す更新状況フラグ8_3(第3の更新状況フラグ)を記憶する。なお、更新状況フラグ8_1、8_2、8_3のそれぞれの記憶先は、メモリ領域5_1、5_2、5_3のいずれかの領域であってもよいし、これらとは別の領域であってもよい。一例として、記憶部2が、フラッシュメモリである場合、制御部3は、更新状況フラグ8_1をメモリ領域5_2に記憶し、更新状況フラグ8_2をメモリ領域5_1に記憶し、更新状況フラグ8_3をメモリ領域5_1又はメモリ領域5_2に記憶する。
【0014】
使用データ決定部4は、データ6_1とデータ6_2のうちどちらが有効であるかを判定し、使用するデータを決定する。より詳細には、使用データ決定部4は、有効であると判定されたデータを、使用するデータとする。使用データ決定部4は、有効指示フラグ7に基づく判定が可能である場合、有効指示フラグ7の値に基づいて、データ6_1とデータ6_2のうちどちらが有効であるかを判定する。なお、有効指示フラグ7に基づく判定が可能である場合とは、例えば、有効指示フラグ7の書き込み状態が所定の条件を満たす場合である。ここで、所定の条件とは、有効指示フラグ7の値が正常であることが保障されるための条件であり、例えば、有効指示フラグ7の値が所定値(すなわち、データ6_1が有効であることを示す所定の第1の値、又はデータ6_2が有効であることを示す所定の第2の値)であることであってもよい。また、例えば記憶部2が有効指示フラグ7の書き込みの完了を示すフラグ(書き込み完了フラグ)を記憶する場合には、上述の所定の条件は、有効指示フラグ7の値が所定値であり、かつ、当該書き込み完了フラグが書き込み済みであることであってもよい。
【0015】
これに対し、使用データ決定部4は、有効指示フラグ7に基づく判定が不可能である場合、すなわち、有効指示フラグ7の書き込み状態が所定の条件を満たさない場合、更新状況フラグ8_1、8_2、及び8_3の値に基づいて、データ6_1とデータ6_2のうちどちらが有効であるかを判定する。この場合、具体的には、使用データ決定部4は、更新状況フラグ8_1、8_2、及び8_3の値のパターンが、参照パターンのどれと合致するかを確認することによりデータ6_1とデータ6_2のうちどちらが有効であるかを判定する。参照パターンは、予め定義されたパターンであり、データ6_1を有効と判定する場合の更新状況フラグ8_1、8_2、及び8_3の値のパターン、又は、データ6_2を有効と判定する場合の更新状況フラグ8_1、8_2、及び8_3の値のパターンである。例えば、使用データ決定部4は、記憶部2に記憶されている更新状況フラグ8_1、8_2、及び8_3の値のパターンが、データ6_1を有効と判定するための参照パターンと一致する場合、データ6_1が有効であると判定する。また、例えば、使用データ決定部4は、記憶部2に記憶されている更新状況フラグ8_1、8_2、及び8_3の値のパターンが、データ6_2を有効と判定するための参照パターンと一致する場合、データ6_2が有効であると判定する。
【0016】
なお、使用データ決定部4は、記憶部2に記憶されている更新状況フラグ8_1、8_2、及び8_3の値のパターンが、データ6_1を有効と判定するためのいずれの参照パターンとも一致しない場合、データ6_2が有効であると判定してもよい。同様に、使用データ決定部4は、記憶部2に記憶されている更新状況フラグ8_1、8_2、及び8_3の値のパターンが、データ6_2を有効と判定するためのいずれの参照パターンとも一致しない場合、データ6_1が有効であると判定してもよい。
【0017】
上述の通り、情報処理装置1では、有効指示フラグ7に基づく判定が不可能である場合、更新状況フラグ8_1、8_2、及び8_3の値に基づいて、一意に、有効なデータ(有効なメモリ領域)を確定することができる。このため、情報処理装置1によれば、データの更新処理の中断が発生しても、有効なデータを特定することができる。
【0018】
<実施の形態の詳細>
以下、実施の形態の詳細について説明する。
図2は、実施の形態にかかるマイクロコントローラ10の構成の一例を示すブロック図である。マイクロコントローラ10は、
図1の情報処理装置1に相当する。
図2に示すように、マイクロコントローラ10は、CPU(Central Processing Unit)11と、RAM(Random Access Memory)12と、周辺回路13と、データ格納用フラッシュメモリ14と、機能設定用フラッシュメモリ15と、使用データ決定部16と、フラッシュシーケンサ17と、周辺バス18とを有する。周辺バス18は、CPU11、フラッシュシーケンサ17、及び周辺回路13が接続されるバスである。
【0019】
CPU11は、データ格納用フラッシュメモリ14に格納されたデータに基づいて処理を実行する。すなわち、データ格納用フラッシュメモリ14に格納されるデータには、マイクロコントローラ10としての機能を実現する処理をCPU11に実行させるプログラム(ソフトウェア)が含まれる。なお、CPU11は、データ格納用フラッシュメモリ14に格納されたプログラムをRAM12にロードしてから実行するようにしてもよい。
【0020】
RAM12は、CPU11によって利用されるデータが格納される揮発性メモリである。このRAM12に格納されるデータには、例えば、CPU11がプログラムを実行している際の演算処理中のデータ等が含まれる。また、上述したように、データ格納用フラッシュメモリ14からロードしたプログラムを格納するようにしてもよい。
【0021】
周辺回路13は、例えば、タイマ、シリアルI/O等の回路である。CPU11は、周辺回路13を任意に利用して処理を実行する。データ格納用フラッシュメモリ14は、CPU11によって利用されるデータが格納される不揮発性メモリである。
【0022】
機能設定用フラッシュメモリ15は、
図1の記憶部2に相当する。機能設定用フラッシュメモリ15は、マイクロコントローラ10の機能設定に使用されるデータが格納される不揮発性メモリである。
図3は、機能設定用フラッシュメモリ15に配置される3つのメモリ領域の一例を示す模式図である。
図3に示すように、機能設定用フラッシュメモリ15は、メモリ領域として、スイッチ領域100_0とスイッチ領域100_1とタグ領域200とを含む。以下の説明では、スイッチ領域100_0とスイッチ領域100_1とを特に区別せずに言及する場合、スイッチ領域100と称す。スイッチ領域100_0は
図1のメモリ領域5_1に相当する。スイッチ領域100_1は
図1のメモリ領域5_2に相当する。タグ領域200は
図1のメモリ領域5_3に相当する。なお、機能設定用フラッシュメモリ15は、フラッシュメモリであるため、記憶されているデータの更新(書き換え)のためには、一度、データを消去した後に、新たなデータを書き込む必要がある。
【0023】
図4は、2つのスイッチ領域100_0およびスイッチ領域100_1の構成の一例を示す模式図である。
図4に示すように、スイッチ領域100_0には、設定データD0-0、D0-1、D0-2と、書き込み完了フラグA0PC、消去開始フラグA1ES、消去完了フラグA1EC、消去開始フラグTES0、消去完了フラグTEC0が記憶される。同様に、スイッチ領域100_1には、設定データD1-0、D1-1、D1-2と、書き込み完了フラグA1PC、消去開始フラグA0ES、消去完了フラグA0EC、消去開始フラグTES1、消去完了フラグTEC1が記憶される。
【0024】
スイッチ領域100_0の設定データD0-0、D0-1、D0-2は、
図1のデータ6_1に相当する。また、スイッチ領域100_1の設定データD1-0、D1-1、D1-2は、
図1のデータ6_2に相当する。ここで、設定データD0-0、D0-1、D0-2、D1-0、D1-1、D1-2は、マイクロコントローラ10の機能を設定するデータである。例えば、これらの設定データは、システム起動時にアクセスするメモリ領域を指定するデータであってもよいし、セキュリティ機能を設定するためのデータなどであってもよい。なお、本実施の形態では、スイッチ領域100_0及び100_1には、それぞれ、3つの設定データが格納される態様を示しているが、格納されるデータ数は3つに限らず、それ以上でもそれ以下でもよい。
【0025】
書き込み完了フラグA0PCは、設定データD0-0、D0-1、D0-2の全ての書き込みが完了したか否かを示すフラグである。同様に、書き込み完了フラグA1PCは、設定データD1-0、D1-1、D1-2の全ての書き込みが完了したか否かを示すフラグである。より詳細に説明すると、書き込み完了フラグA0PCは、スイッチ領域100_0における設定データD0-0、D0-1、D0-2の更新のために行われる書き込み処理が完了した時点で所定の値に設定されるフラグである。同様に、書き込み完了フラグA1PCは、スイッチ領域100_1における設定データD1-0、D1-1、D1-2の更新のために行われる書き込み処理が完了した時点で所定の値に設定されるフラグである。すなわち、書き込み完了フラグA0PC、A1PCが消去状態である場合、設定データの書き込みが完了していないことを意味する。
【0026】
消去開始フラグA1ESは、スイッチ領域100_1の消去処理が開始したか否かを示すフラグである。同様に、消去開始フラグA0ESは、スイッチ領域100_0の消去処理が開始したか否かを示すフラグである。より詳細に説明すると、消去開始フラグA1ESは、スイッチ領域100_1における設定データD1-0、D1-1、D1-2の更新のために行われる消去処理が開始した時点で所定の値に設定されるフラグである。同様に、消去開始フラグA0ESは、スイッチ領域100_0における設定データD0-0、D0-1、D0-2の更新のために行われる消去処理が開始した時点で所定の値に設定されるフラグである。すなわち、消去開始フラグA1ESが消去状態である場合、スイッチ領域100_1の消去処理が開始されていないことを意味し、A0ESが消去状態である場合、スイッチ領域100_0の消去処理が開始されていないことを意味する。
【0027】
消去完了フラグA1ECは、スイッチ領域100_1の消去処理が完了したか否かを示すフラグである。同様に、消去完了フラグA0ECは、スイッチ領域100_0の消去処理が完了したか否かを示すフラグである。より詳細に説明すると、消去完了フラグA1ECは、スイッチ領域100_1における設定データD1-0、D1-1、D1-2の更新のために行われる消去処理が完了した時点で所定の値に設定されるフラグである。同様に、消去完了フラグA0ECは、スイッチ領域100_0における設定データD0-0、D0-1、D0-2の更新のために行われる消去処理が完了した時点で所定の値に設定されるフラグである。すなわち、消去完了フラグA1ECが消去状態である場合、スイッチ領域100_1の消去処理が完了していないことを意味し、A0ECが消去状態である場合、スイッチ領域100_0の消去処理が完了していないことを意味する。
【0028】
消去開始フラグTES0、TES1は、タグ領域200の消去処理が開始したか否かを示すフラグである。より詳細に説明すると、消去開始フラグTES0、TES1は、タグ領域200における有効スイッチ領域フラグVAF(
図5参照)の更新のために行われる消去処理が開始した時点で所定の値に設定されるフラグである。すなわち、消去開始フラグTES0、TES1が消去状態である場合、タグ領域200の消去処理が開始されていないことを意味する。
【0029】
消去完了フラグTEC0、TEC1は、タグ領域200の消去処理が完了したか否かを示すフラグである。より詳細に説明すると、消去完了フラグTEC0、TEC1は、タグ領域200における有効スイッチ領域フラグVAF(
図5参照)の更新のために行われる消去処理が完了した時点で所定の値に設定されるフラグである。すなわち、消去完了フラグTEC0、TEC1が消去状態である場合、タグ領域200の消去処理が完了していないことを意味する。
【0030】
図5は、タグ領域200の構成の一例を示す模式図である。
図5に示すように、タグ領域200には、有効スイッチ領域フラグVAFと、書き込み完了フラグVAPCが記憶される。
【0031】
有効スイッチ領域フラグVAFは、スイッチ領域100_0とスイッチ領域100_1のうち、いずれが有効な領域であるかを示すフラグである。すなわち、有効スイッチ領域フラグVAFは、スイッチ領域100_0とスイッチ領域100_1のうち、いずれの領域に格納されている設定データが有効なデータであるかを示すフラグである。有効スイッチ領域フラグVAFは、
図1の有効指示フラグ7に相当する。
【0032】
書き込み完了フラグVAPCは、有効スイッチ領域フラグVAFの書き込みが完了したか否かを示すフラグである。より詳細に説明すると、書き込み完了フラグVAPCは、タグ領域200における有効スイッチ領域フラグVAFの更新のために行われる書き込み処理が完了した時点で所定の値に設定されるフラグである。すなわち、書き込み完了フラグVAPCが消去状態である場合、有効スイッチ領域フラグVAFの書き込みが完了していないことを意味する。
【0033】
使用データ決定部16は、
図1の使用データ決定部4に相当し、スイッチ領域100_0とスイッチ領域100_1のうち、いずれが有効な領域であるかを判定し、マイクロコントローラ10が使用するデータを決定する回路である。言い換えると、使用データ決定部16は、スイッチ領域100_0とスイッチ領域100_1のうち、いずれの領域に格納されている設定データが有効なデータであるかを判定し、有効であると判定したデータをマイクロコントローラ10が使用するデータとする。なお、使用データ決定部16における具体的な判定方法については後述する。
【0034】
使用データ決定部16は、例えば、マイクロコントローラ10のリセット時など、所定のタイミングで、マイクロコントローラ10の任意の構成要素が使用するデータを決定する。なお、使用データ決定部16は、使用すると決定したデータを機能設定用フラッシュメモリ15から読み出して、このデータを使用する構成要素又はこのデータを使用する構成要素がアクセス可能なレジスタなどに送信してもよい。
【0035】
フラッシュシーケンサ17は、データ格納用フラッシュメモリ14及び機能設定用フラッシュメモリ15に対する消去処理及び書き込み処理などを制御する回路である。フラッシュシーケンサ17は、
図1の制御部3に相当する。本実施の形態では、データ格納用フラッシュメモリ14及び機能設定用フラッシュメモリ15に対するCPU11の書き込み処理及び消去処理は、フラッシュシーケンサ17を介して実施される。なお、CPU11によるデータ格納用フラッシュメモリ14及び機能設定用フラッシュメモリ15からのデータの読み出しは、フラッシュシーケンサ17を介して行われてもよいし、フラッシュシーケンサ17を介することなく直接行われてもよい。
【0036】
フラッシュシーケンサ17は、データ格納用フラッシュメモリ14又は機能設定用フラッシュメモリ15に対しどのアドレスについての消去処理又は書き込み処理をするかを指定するためのアドレスデータが格納されるアドレス指定レジスタを内蔵している。このアドレス指定レジスタには、CPU11から送信されたアドレスデータが格納される。また、フラッシュシーケンサ17は、消去処理又は書き込み処理などを指示するコマンドが格納されるコマンド指定レジスタも内蔵している。このコマンド指定レジスタには、フラッシュシーケンサ17に対するライトデータとしてCPU11から送信されたデータが格納される。
【0037】
CPU11は、周辺バス18経由で、予め定められた順序でライトデータをフラッシュシーケンサ17に対して書き込むことで、フラッシュシーケンサ17が実施する制御内容を指定する。フラッシュシーケンサ17は、コマンド指定レジスタに書き込まれたライトデータに対応する制御を、フラッシュシーケンサ17のアドレス指定レジスタに書き込まれたアドレスデータが示すアドレスに対して実施する。
【0038】
ここでは、具体的な一例として
図6を参照し、フラッシュシーケンサ17のコマンドについて説明する。
図6に示すように、フラッシュシーケンサ17を制御するコマンドとして、「スイッチ領域消去」コマンドと、「スイッチ領域書き込み」コマンドと、「タグ領域消去」コマンドと、「タグ領域更新」コマンドとが用意されている。
【0039】
CPU11は、スイッチ領域100_0又はスイッチ領域100_1の消去を行う場合、「スイッチ領域消去」コマンドを用いる。具体的には、CPU11は、例えばコマンドデータ(H’87、H’D0)をフラッシュシーケンサ17のコマンド指定レジスタに順次書き込む。ここで、「H’」は、それに続く数値が16進数表記であることを意味する。フラッシュシーケンサ17は、「スイッチ領域消去」コマンドを受信すると、スイッチ領域100_0とスイッチ領域100_1のうち現在無効な領域を消去する。なお、スイッチ領域100の消去処理の具体的な流れについては、
図7を参照して後述する。
【0040】
また、CPU11は、スイッチ領域100_0又はスイッチ領域100_1へのデータの書き込みを行う場合、「スイッチ領域書き込み」コマンドを用いる。具体的には、CPU11は、例えばコマンドデータ(H’85、H’08、WD0、WD1、WD2、H’D0)をフラッシュシーケンサ17のコマンド指定レジスタに順次書き込む。ここで、WD0、WD1、WD2は、新たに書き込まれる設定データである。すなわち、WD0、WD1、WD2は、新たな設定データD0-0、D0-1、D0-2又は新たな設定データD1-0、D1-1、D1-2である。フラッシュシーケンサ17は、「スイッチ領域書き込み」コマンドを受信すると、スイッチ領域100_0とスイッチ領域100_1のうち現在無効な領域に、新たな設定データとして、WD0、WD1、WD2を書き込む。なお、スイッチ領域100の書き込み処理の具体的な流れについては、
図8を参照して後述する。
【0041】
また、CPU11は、タグ領域200の消去を行う場合、「タグ領域消去」コマンドを用いる。具体的には、CPU11は、例えばコマンドデータ(H’89、H’D0)をフラッシュシーケンサ17のコマンド指定レジスタに順次書き込む。フラッシュシーケンサ17は、「タグ領域消去」コマンドを受信すると、タグ領域200を消去する。なお、タグ領域200の書き込み処理の具体的な流れについては、
図9を参照して後述する。
【0042】
また、CPU11は、タグ領域200の更新を行う場合、すなわち、有効スイッチ領域フラグVAFの値を切替える場合、「タグ領域更新」コマンドを用いる。具体的には、CPU11は、例えばコマンドデータ(H’83、H’D0)をフラッシュシーケンサ17のコマンド指定レジスタに順次書き込む。フラッシュシーケンサ17は、「タグ領域更新」コマンドを受信すると、有効スイッチ領域フラグVAFの値を更新する。なお、タグ領域200の更新処理の具体的な流れについては、
図10を参照して後述する。
【0043】
次に、マイクロコントローラ10の動作について、図を参照しながら説明する。なお、以下に述べるように、フラッシュシーケンサ17は、コマンドを受信すると、使用データ決定部16と同様、スイッチ領域100_0とスイッチ領域100_1のうち、いずれが有効な領域であるかを判定する。なお、本実施の形態では、フラッシュシーケンサ17と使用データ決定部16のそれぞれが、同様の判定機能を備えるが、いずれか一方が判定機能を備える構成とし、他方が一方の判定機能を利用してもよい。また、フラッシュシーケンサ17と使用データ決定部16とが1つの制御回路により構成されてもよい。
【0044】
図7は、「スイッチ領域消去」コマンドを受信した場合のフラッシュシーケンサ17の動作の一例を示すフローチャートである。フラッシュシーケンサ17は「スイッチ領域消去」コマンドを受信すると、無効なスイッチ領域100の消去と、この消去に対応する消去開始フラグ及び消去完了フラグの書き込みを実施する。以下、
図7に沿って、「スイッチ領域消去」コマンドを受信した場合のフラッシュシーケンサ17の動作の流れを説明する。
【0045】
ステップ100(S100)において、フラッシュシーケンサ17は、スイッチ領域100_0とスイッチ領域100_1のどちらが無効な領域であるか、すなわち、有効な領域ではない領域がどちらであるかを判定する。フラッシュシーケンサ17は、スイッチ領域100_0に格納されているフラグ、スイッチ領域100_1に格納されているフラグ、及びタグ領域200に格納されているフラグを参照し、スイッチ領域100_0とスイッチ領域100_1のいずれが無効な領域であるかを判定する。なお、マイクロコントローラ10の動作に設定データの内容を反映するために、マイクロコントローラ10の起動時にスイッチ領域100_0、スイッチ領域100_1、及びタグ領域200からそれぞれ読み出したフラグがレジスタ(図示せず)に格納されている場合には、フラッシュシーケンサ17は、機能設定用フラッシュメモリ15に格納されているフラグではなく当該レジスタの値を参照して無効領域を決定してもよい。このことは、使用データ決定部16においても同様である。なお、具体的な判定方法については、
図12を参照して後述する。
【0046】
無効な領域がスイッチ領域100_1である場合には、ステップ111(S111)において、フラッシュシーケンサ17は、スイッチ領域100_0に、消去開始フラグA1ESとして、消去の開始を示す所定値を書き込む。
次に、ステップ112(S112)において、フラッシュシーケンサ17は、スイッチ領域100_1を消去する。
次に、ステップ113(S113)において、フラッシュシーケンサ17は、スイッチ領域100_0に、消去完了フラグA1ECとして、消去の完了を示す所定値を書き込む。
【0047】
同様に、無効な領域がスイッチ領域100_0である場合には、ステップ121(S121)において、フラッシュシーケンサ17は、スイッチ領域100_1に、消去開始フラグA0ESとして、消去の開始を示す所定値を書き込む。
次に、ステップ122(S122)において、フラッシュシーケンサ17は、スイッチ領域100_0を消去する。
次に、ステップ123(S123)において、フラッシュシーケンサ17は、スイッチ領域100_1に、消去完了フラグA0ECとして、消去の完了を示す所定値を書き込む。
【0048】
図8は、「スイッチ領域書き込み」コマンドを受信した場合のフラッシュシーケンサ17の動作の一例を示すフローチャートである。フラッシュシーケンサ17は「スイッチ領域書き込み」コマンドを受信すると、無効なスイッチ領域100へのWD0、WD1、WD2の書き込みとスイッチ領域100についての書き込み完了フラグの書き込みを実施する。以下、
図8に沿って、「スイッチ領域書き込み」コマンドを受信した場合のフラッシュシーケンサ17の動作の流れを説明する。
【0049】
ステップ200(S200)において、
図7のステップ100と同様、フラッシュシーケンサ17は、スイッチ領域100_0とスイッチ領域100_1のいずれが無効な領域であるか、すなわち、有効な領域ではない領域がどちらかを判定する。
【0050】
無効な領域がスイッチ領域100_1である場合には、ステップ211(S211)において、フラッシュシーケンサ17は、スイッチ領域100_1の設定データD1-0として、CPU11から受信したWD0を書き込む。次に、ステップ212(S212)において、フラッシュシーケンサ17は、スイッチ領域100_1の設定データD1-1として、CPU11から受信したWD1を書き込む。次に、ステップ213(S213)において、フラッシュシーケンサ17は、スイッチ領域100_1の設定データD1-2として、CPU11から受信したWD2を書き込む。
次に、ステップ214(S214)において、フラッシュシーケンサ17は、スイッチ領域100_1に、書き込み完了フラグA1PCとして、書き込みの完了を示す所定値を書き込む。
【0051】
同様に、無効な領域がスイッチ領域100_0である場合には、ステップ221(S221)において、フラッシュシーケンサ17は、スイッチ領域100_0の設定データD0-0として、CPU11から受信したWD0を書き込む。次に、ステップ222(S222)において、フラッシュシーケンサ17は、スイッチ領域100_0の設定データD0-1として、CPU11から受信したWD1を書き込む。次に、ステップ223(S223)において、フラッシュシーケンサ17は、スイッチ領域100_0の設定データD0-2として、CPU11から受信したWD2を書き込む。
次に、ステップ224(S224)において、フラッシュシーケンサ17は、スイッチ領域100_0に、書き込み完了フラグA0PCとして、書き込みの完了を示す所定値を書き込む。
【0052】
図9は、「タグ領域消去」コマンドを受信した場合のフラッシュシーケンサ17の動作の一例を示すフローチャートである。フラッシュシーケンサ17は「タグ領域消去」コマンドを受信すると、タグ領域200の消去と、タグ領域200の消去開始フラグ及び消去完了フラグの書き込みを実施する。本実施の形態では、フラッシュシーケンサ17は、無効なスイッチ領域100において、タグ領域200の消去開始フラグ及び消去完了フラグの書き込みを実施する。以下、
図9に沿って、「タグ領域消去」コマンドを受信した場合のフラッシュシーケンサ17の動作の流れを説明する。
【0053】
ステップ300(S300)において、
図7のステップ100と同様、フラッシュシーケンサ17は、スイッチ領域100_0とスイッチ領域100_1のいずれが無効な領域であるか、すなわち、有効な領域ではない領域がいずれであるかを判定する。
【0054】
無効な領域がスイッチ領域100_1である場合には、ステップ311(S111)において、フラッシュシーケンサ17は、スイッチ領域100_1に、消去開始フラグTES1として、消去の開始を示す所定値を書き込む。
次に、ステップ312(S312)において、フラッシュシーケンサ17は、タグ領域200を消去する。
次に、ステップ313(S313)において、フラッシュシーケンサ17は、スイッチ領域100_1に、消去完了フラグTEC1として、消去の完了を示す所定値を書き込む。
【0055】
同様に、無効な領域がスイッチ領域100_0である場合には、ステップ321(S321)において、フラッシュシーケンサ17は、スイッチ領域100_0に、消去開始フラグTES0として、消去の開始を示す所定値を書き込む。
次に、ステップ322(S322)において、フラッシュシーケンサ17は、タグ領域200を消去する。
次に、ステップ323(S323)において、フラッシュシーケンサ17は、スイッチ領域100_0に、消去完了フラグTEC0として、消去の完了を示す所定値を書き込む。
【0056】
図10は、「タグ領域更新」コマンドを受信した場合のフラッシュシーケンサ17の動作の一例を示すフローチャートである。フラッシュシーケンサ17は「タグ領域更新」コマンドを受信すると、タグ領域200に、有効スイッチ領域フラグVAFとして次回の有効領域(すなわち、現在の無効領域)を示す設定値を書き込む。また、その後、フラッシュシーケンサ17は、書き込み完了フラグVAPCの書き込みを実施する。以下、
図10に沿って、「タグ領域更新」コマンドを受信した場合のフラッシュシーケンサ17の動作の流れを説明する。
【0057】
ステップ400(S400)において、
図7のステップ100と同様、フラッシュシーケンサ17は、スイッチ領域100_0とスイッチ領域100_1のいずれが無効な領域であるか、すなわち、有効な領域ではない領域がいずれであるかを判定する。
【0058】
無効な領域がスイッチ領域100_1である場合には、ステップ411(S411)において、フラッシュシーケンサ17は、タグ領域200に、有効スイッチ領域フラグVAFとして、スイッチ領域100_1が有効な領域であることを示す設定値“Area 1”を書き込む。
次に、ステップ412(S412)において、フラッシュシーケンサ17は、タグ領域200に、書き込み完了フラグVAPCとして、書き込みの完了を示す所定値を書き込む。
【0059】
同様に、無効な領域がスイッチ領域100_0である場合には、ステップ421(S421)において、フラッシュシーケンサ17は、タグ領域200に、有効スイッチ領域フラグVAFとして、スイッチ領域100_0が有効な領域であることを示す設定値“Area 0”を書き込む。
次に、ステップ422(S422)において、フラッシュシーケンサ17は、タグ領域200に、書き込み完了フラグVAPCとして、書き込みの完了を示す所定値を書き込む。
【0060】
機能設定用フラッシュメモリ15を更新する場合、CPU11は、例えば設定データを更新するためのプログラム(ソフトウェア)に従って、「スイッチ領域消去」コマンド、「スイッチ領域書き込み」コマンド、「タグ領域消去」コマンド、「タグ領域更新」コマンドの順に4つのコマンドを実行する。これにより、マイクロコントローラ10が使用する設定データが更新される。
【0061】
図11A、
図11B、及び
図11Cは、上述の順番で4つのコマンドが実行された場合の各値の一例を示している。ただし、この例では、有効な設定データを、スイッチ領域100_1の設定データD1-0、D1-1、D1-2として格納されているD100、D110、D120から、スイッチ領域100_0の設定データD0-0、D0-1、D0-2として新たに格納されるD001、D011、D021に切り替える場合の値の推移を示している。
図11Aは、スイッチ領域100_0における各設定データと各フラグの推移を示す表である。
図11Bは、スイッチ領域100_1における各設定データと各フラグの推移を示す表である。
図11Cは、タグ領域200におけるフラグの推移を示す表である。なお、
図11A、
図11B、及び
図11Cに示す各フラグにおいて、“E”は消去された状態であることを示し、“P”は値が書き込まれた状態であることを示し、“X”は任意の状態を示す。また、表中の太い枠線は、理解を容易にするために、前のステップの値から変更となった値を示している。これらの表記は、
図12、
図22A、
図22Bにおいても同様である。
【0062】
図11Aに示すように、4つのコマンドが上記順序で実行されると、スイッチ領域100_0では、設定データ及びフラグが消去され、その後、新たな設定データが書き込まれ、さらに、設定データの書き込み完了フラグA0PCの書き込みが行われる。また、その後、タグ領域200の消去の際に、消去開始フラグTES0の書き込みと、消去完了フラグTEC0の書き込みが行われる。
【0063】
これに対し、スイッチ領域100_1では、
図11Bに示すように、スイッチ領域100_0の消去の際に、消去開始フラグA0ESの書き込みと、消去完了フラグA0ECの書き込みが行われる。また、タグ領域200では、
図11Cに示すように、有効スイッチ領域フラグVAFと、書き込み完了フラグVAPCの消去が行われた後、スイッチ領域100_0が有効な領域であることを示す設定値“Area 0”が有効スイッチ領域フラグVAFの値として書き込まれ、さらに、書き込み完了フラグVAPCへの書き込みが行われる。
【0064】
このように、更新処理が中断することなく実行された場合には、タグ領域200は、有効スイッチ領域フラグVAFの値として“Area 0”又は“Area 1”を保持し、書き込み完了フラグVAPCの値として書き込みの完了を示す所定値を保持する。しかしながら、例えば、マイクロコントローラ10の電源瞬断などを含む様々な要因により、例えばタグ領域200の更新中などに処理が中断した場合、有効スイッチ領域フラグVAFの値又は書き込み完了フラグVAPCの値は不定となる。本実施の形態では、そのような中断が発生した場合であっても、有効なスイッチ領域100(有効な設定データ)を一意に確定するよう次のような判定が行われる。
【0065】
フラッシュシーケンサ17及び使用データ決定部16は、有効スイッチ領域フラグVAFに基づく判定が可能である場合、有効スイッチ領域フラグVAFの値に基づいて、スイッチ領域100_0とスイッチ領域100_1のうちどちらが有効な領域であるかを判定する。なお、本実施の形態では、有効スイッチ領域フラグVAFの値が“Area 0”又は“Area 1”であり、かつ、書き込み完了フラグVAPCが消去状態でない場合に、フラッシュシーケンサ17及び使用データ決定部16は、有効スイッチ領域フラグVAFに基づく判定が可能であるとする。
【0066】
これに対し、フラッシュシーケンサ17及び使用データ決定部16は、有効スイッチ領域フラグVAFに基づく判定が不可能である場合、現在のフラグの値の組み合わせのパターンに応じて、スイッチ領域100_0とスイッチ領域100_1のうちどちらが有効な領域であるかを判定する。すなわち、フラッシュシーケンサ17及び使用データ決定部16は、有効スイッチ領域フラグVAFの値が“Area 0”でも“Area 1”でもない場合、又は、書き込み完了フラグVAPCが消去状態である場合、現在のフラグの値の組み合わせのパターンに応じて有効な領域を決定する。より具体的には、フラッシュシーケンサ17及び使用データ決定部16は、現在のフラグの値の組み合わせのパターンが予め定義された参照パターンのいずれに該当するかを確認し、該当する参照パターンに予め対応づけられている領域を有効な領域であると決定する。
【0067】
なお、ステップ100(
図7参照)、ステップ200(
図8参照)、ステップ300(
図9参照)、ステップ400(
図10参照)における無効領域の判定では、有効領域の判定で有効と判定したスイッチ領域100ではない側の領域を無効領域とすればよい。
【0068】
図12を参照し、フラッシュシーケンサ17及び使用データ決定部16による判定の一例を説明する。
図12は、参照パターンの一例を示す表である。なお、参照パターンは、例えば、フラッシュシーケンサ17及び使用データ決定部16において記憶されているが、マイクロコントローラ10内の他のいずれかの構成要素に記憶されていてもよい。
【0069】
本実施の形態では、フラッシュシーケンサ17及び使用データ決定部16は、有効なスイッチ領域100の判定のために、スイッチ領域100_0の消去開始フラグA1ES、消去完了フラグA1EC、消去開始フラグTES0、消去完了フラグTEC0、スイッチ領域100_1の消去開始フラグA0ES、消去完了フラグA0EC、消去開始フラグTES1、消去完了フラグTEC1、タグ領域200の有効スイッチ領域フラグVAF、書き込み完了フラグVAPCを使用する。
【0070】
図12の表に示すように、タグ領域200の書き込み完了フラグVAPCが書き込み状態“P”であり、かつ、有効スイッチ領域フラグVAFの設定値が“Area 0”又は“Area 1”である場合(
図12における状態(A)、(E)に相当)には、フラッシュシーケンサ17及び使用データ決定部16は、有効なスイッチ領域100は有効スイッチ領域フラグVAFの設定値に従って決定する。
【0071】
有効スイッチ領域フラグVAFの設定値が“Area 0”又は“Area 1”ではない場合や書き込み完了フラグVAPCが消去状態“E”の場合(
図12における状態(B)、(C)、(D)、(F)、(G)、(H)に相当)には、フラッシュシーケンサ17及び使用データ決定部16は、消去開始フラグA0ES、A1ES、TES0、TES1、及び消去完了フラグA0EC、A1EC、TEC0、TEC1の各状態のパターンに従って、有効なスイッチ領域100を決定する。つまり、消去開始フラグA0ES、消去完了フラグA0ECは、
図1の更新状況フラグ8_1の一例である。また、消去開始フラグA1ES、消去完了フラグA1ECは、
図1の更新状況フラグ8_2の一例である。さらに、消去開始フラグTES0、TES1、及び消去完了フラグTEC0、TEC1は、
図1の更新状況フラグ8_3の一例である。
【0072】
図12における状態(B)、(C)、(D)は、
図11A、
図11B、
図11Cにおけるタグ領域消去のStep 2、Step 3、タグ領域更新のStep 1に対応しており、スイッチ領域100_1からスイッチ領域100_0への有効領域の切り替え途中に、電源瞬断等により更新処理が中断した場合に発生するフラグのパターンを示している。これらの状態の場合、領域の切り替え処理が完全に終わっていないため、スイッチ領域100_0ではなくスイッチ領域100_1を有効領域と判定する。
同様に、
図12における状態(F)、(G)、(H)は、スイッチ領域100_0からスイッチ領域100_1への有効領域の切り替え途中において、電源瞬断等により更新処理が中断した場合に発生するフラグのパターンを示している。これらの状態の場合も、領域の切り替え処理が完全に終わっていないため、スイッチ領域100_1ではなくスイッチ領域100_0を有効領域と判定する。
【0073】
例えば、マイクロコントローラ10は、有効領域とすべきスイッチ領域100が対応づけられている参照パターンを予め記憶しており、フラッシュシーケンサ17及び使用データ決定部16は、参照パターンを参照し、フラグのパターンがどの参照パターンに一致するかを確認することにより、有効領域を特定する。なお、
図12に示した例では、状態(A)、(B)、(C)、(D)のフラグのパターンが、スイッチ領域100_1を有効領域と判定するための参照パターンであり、これらのパターンには「スイッチ領域100_1」が対応づけられている。同様に、状態(E)、(F)、(G)、(H)のフラグのパターンが、スイッチ領域100_0を有効領域と判定するための参照パターンであり、これらのパターンには「スイッチ領域100_0」が対応づけられている。
【0074】
なお、
図12に示した判定論理は一例である。有効スイッチ領域フラグVAFの値による有効領域の判定が不可能である場合の判定論理として
図12に示した参照パターン以外の他の参照パターンを用いてもよい。また、各参照パターンにいずれのスイッチ領域100を対応づけるかについても、他のルールで対応付けを行ってもよい。例えば、
図12で示した例では、有効スイッチ領域フラグVAFの値による有効領域の判定が不可能である場合、8つのフラグ(消去開始フラグA1ES、A0ES、TES0、TES1、及び消去完了フラグA1EC、A0EC、TEC0、TEC1)のパターンを用いたが、これらの一部のフラグのパターンにより有効領域の判定が行われてもよい。また、書き込み完了フラグA0PC、A1PCを参照パターンに用いてもよい。
【0075】
また、参照パターンは、フラグの状態が経時変化した場合のパターンを含んでもよい。フラグの書き込み処理の際に、電源瞬断が発生すると、その書き込み状態はリテンション不足となってしまう。このため、そのようなフラグは、時間が経つと、消去状態に変化する可能性がある。したがって、そのような場合も考慮し、タグ領域200の消去中又は更新中に処理の中断が発生した場合に発生するフラグのパターン(
図12の状態(B)、(C)、(D)、(F)、(G)、(H)に示した参照パターン)のみならず、これらのパターンにおいて一部のフラグが消去状態に経時変化した場合のパターンを用いて有効領域の判定を行ってもよい。
【0076】
また、本実施の形態では、タグ領域200の消去時の消去開始フラグ及び消去完了フラグを無効なスイッチ領域100に書き込んでいるが、有効なスイッチ領域100に書き込んでもよい。すなわち、無効な領域がスイッチ領域100_1である場合には、スイッチ領域100_0の消去開始フラグTES0と消去完了フラグTEC0の書き込みが行われてもよく、無効な領域がスイッチ領域100_0である場合には、スイッチ領域100_1の消去開始フラグTES1と消去完了フラグTEC1の書き込みが行われてもよい。
【0077】
また、フラグの値の組み合わせにおいて論理圧縮が可能な場合、参照パターンとして用いるフラグ数を減少させてもよい。例えば、
図12に示した例では、消去開始フラグTES0、TES1の値は、状態(B)、(C)、(D)、(F)、(G)、(H)において同じであるため、これらのフラグを用いずに、判定が行われてもよい。
【0078】
以上説明した通り、マイクロコントローラ10では、有効スイッチ領域フラグVAFの値に基づく判定ができない場合であっても、その他のフラグの状態に基づいて、一意に、有効なスイッチ領域100を特定することができる。このため、有効スイッチ領域フラグVAFの更新中に処理が中断し、有効スイッチ領域フラグVAFが不確定な値になった場合でも、有効領域を確定することができる。すなわち、有効な設定データを特定することができる。
【0079】
<実施の形態2>
次に、実施の形態2について説明する。以下、実施の形態1と異なる点について説明し、実施の形態1と同様な点については説明を省略する。
【0080】
実施の形態1によれば、タグ領域200の有効スイッチ領域フラグVAFにより有効領域の特定ができない場合であっても、スイッチ領域100_0とスイッチ領域100_1のフラグのパターンにより、有効領域の特定が可能である。ただし、フラグのパターンを確認するためには、スイッチ領域100_0及びスイッチ領域100_1がともに消去状態でない必要がある。つまり、有効スイッチ領域フラグVAFにより有効領域の特定ができない状態で、無効なスイッチ領域100の消去が行われてしまうと、有効な領域を正しく判定することができなくなってしまう。
また、無効なスイッチ領域100への設定データの書き込みが行われる前に有効スイッチ領域フラグVAFの更新が行われると、設定データの書き込みが行われていないにもかかわらず、当該スイッチ領域100が有効な領域と判定されてしまう。例えば、「スイッチ領域消去」コマンド、「タグ領域消去」コマンド、「タグ領域更新」コマンドという順でコマンドが実行された場合、すなわち、「スイッチ領域書き込み」コマンドが実行されない誤った手順で機能設定用フラッシュメモリ15の更新が実施されると、有効領域の判定を正しく行えなくなる。
このように、上述した有効領域の判定方法では、タグ領域200とスイッチ領域100_0が同時に消去された場合、又はタグ領域200とスイッチ領域100_1が同時に消去された場合、有効な領域を正しく判定できない恐れがある。そこで、本実施の形態では、フラッシュシーケンサ17は、所定の条件を満たした場合に限り、メモリ領域の消去を行う。
【0081】
図13は、「スイッチ領域消去」コマンドを受信した場合の実施の形態2にかかるフラッシュシーケンサ17の動作の一例を示すフローチャートである。
図13のフローチャートは、無効領域の判定(ステップ100)の前に、タグ領域200の有効スイッチ領域フラグVAFが書き込み済みであるかを判定するステップ(ステップ130)が追加されている点で、実施の形態1のフローチャート(
図7)と異なっている。
【0082】
すなわち、実施の形態2では、フラッシュシーケンサ17は「スイッチ領域消去」コマンドを受信すると、ステップ130(S130)において、タグ領域200の有効スイッチ領域フラグVAFが書き込み済みであるかを判定する。有効スイッチ領域フラグVAFが書き込み済みである場合(ステップ130でYes)、処理は、ステップ100へ移行し、
図7に示した処理と同様の処理が行われる。これに対し、有効スイッチ領域フラグVAFが書き込み済みでない場合(ステップ130でNo)、処理はエラー終了する。すなわち、この場合、スイッチ領域の消去は行われない。
【0083】
フラッシュシーケンサ17は、例えば、有効スイッチ領域フラグVAFを参照し、消去状態(すなわち、例えば全ビットが1である状態)でない場合、有効スイッチ領域フラグVAFが書き込み済みであると判定し、消去状態である場合、有効スイッチ領域フラグVAFが書き込み済みではないと判定する。なお、フラッシュシーケンサ17は、有効スイッチ領域フラグVAFの値が、“Area 0”又は“Area 1”である場合に、有効スイッチ領域フラグVAFが書き込み済みであると判定し、有効スイッチ領域フラグVAFの値が“Area 0”でも“Area 1”でもない場合に、有効スイッチ領域フラグVAFが書き込み済みではないと判定してもよい。
【0084】
このように、実施の形態2では、フラッシュシーケンサ17は、タグ領域200に有効スイッチ領域フラグVAFが記憶されている場合に限り、スイッチ領域100_0又はスイッチ領域100_1の消去を実施する。このため、有効スイッチ領域フラグVAFが書き込み済みでない状態で、スイッチ領域100の消去が開始されてしまうことを防ぐことができる。したがって、実施の形態1よりも、有効領域の判定の確実性を向上できる。
【0085】
図14は、「タグ領域消去」コマンドを受信した場合の実施の形態2にかかるフラッシュシーケンサ17の動作の一例を示すフローチャートである。
図14のフローチャートは、無効領域の判定(ステップ300)の後に、無効領域の設定データが書き込み済みであるかを判定するステップ(ステップ331、ステップ332)が追加されている点で、実施の形態1のフローチャート(
図9)と異なっている。
【0086】
すなわち、実施の形態2では、無効な領域がスイッチ領域100_1である場合には、処理はステップ300の後、ステップ331(S331)に移行する。ステップ331では、フラッシュシーケンサ17は、スイッチ領域100_1の全ての設定データ(すなわち、設定データD1-0、D1-1、D1-2)が、書き込み済みであるかを判定する。フラッシュシーケンサ17は、例えば、設定データを参照し、消去状態(すなわち、全ビットが1である状態)でない場合、設定データが書き込み済みであると判定し、消去状態である場合、設定データが書き込み済みではないと判定する。
スイッチ領域100_1の全ての設定データが書き込み済みである場合(ステップ331でYes)、処理は、ステップ311へ移行し、
図9に示した処理と同様の処理が行われる。これに対し、スイッチ領域100_1のいずれかの設定データが書き込み済みでない場合(ステップ331でNo)、処理はエラー終了する。すなわち、この場合、タグ領域200の消去は行われない。
【0087】
同様に、実施の形態2では、無効な領域がスイッチ領域100_0である場合には、処理はステップ300の後、ステップ332(S332)に移行する。ステップ332では、フラッシュシーケンサ17は、スイッチ領域100_0の全ての設定データ(すなわち、設定データD0-0、D0-1、D0-2)が、書き込み済みであるかを判定する。スイッチ領域100_0の全ての設定データが書き込み済みである場合(ステップ332でYes)、処理は、ステップ321へ移行し、
図9に示した処理と同様の処理が行われる。これに対し、スイッチ領域100_0のいずれかの設定データが書き込み済みでない場合(ステップ332でNo)、処理はエラー終了する。すなわち、この場合、タグ領域200の消去は行われない。
【0088】
すなわち、実施の形態2では、フラッシュシーケンサ17は、現在有効な領域がスイッチ領域100_0である場合、換言すると、現在有効なデータがスイッチ領域100_0の設定データである場合、スイッチ領域100_1に設定データが記憶されている場合に限り、タグ領域200の消去を実施する。また、フラッシュシーケンサ17は、現在有効な領域がスイッチ領域100_1である場合、換言すると、現在有効なデータがスイッチ領域100_1の設定データである場合、スイッチ領域100_0に設定データが記憶されている場合に限り、タグ領域200の消去を実施する。
このため、設定データが書き込み済みでない状態で、タグ領域200の消去が開始されてしまうことを防ぐことができる。したがって、実施の形態1よりも、有効領域の判定の確実性を向上できる。
【0089】
ところで、
図13に示す処理においては、タグ領域200が書き込み済みであるか判定する際に有効スイッチ領域フラグVAFが用いられ、
図14に示す処理においては、スイッチ領域100が書き込み済みであるか判定する際に設定データD0-0、D0-1、D0-2又は設定データD1-0、D1-1、D1-2が用いられている。これらのフラグ又はデータの書き込み状態がリテンション不足であり、それにより値が経時変化する可能性を考えた場合、
図13又は
図14の処理を実行することにより、システムの動作が不安定になる恐れがある。そこで、以下に説明するように、
図13又は
図14の処理の実行の前に、これらのフラグやデータの書き込みの実施直後に書き込まれる書き込み完了フラグを確認してもよい。書き込み完了フラグが消去状態である場合、すなわち、書き込み状態ではない場合、何らかの理由により上述したフラグ又はデータの書き込みが中断し、処理が書き込み完了フラグの書き込みまで進まなかったことを意味する。これに対し、書き込み完了フラグが消去状態ではない場合、すなわち書き込み状態である場合、上述したフラグ又はデータの書き込みが正常に完了したことを意味する。つまり、リテンション不足ではないことが保障される。
【0090】
図15は、
図13に示した処理の前に実行される処理を示すフローチャートである。ここでは、
図15に示した処理がソフトウェア処理であるものとして説明する。この場合、CPU11がプログラムを実行することにより、以下の処理を実行する。
【0091】
ステップ500(S500)において、CPU11は、書き込み完了フラグVAPCが書き込み済みであるかを判定する。書き込み完了フラグVAPCが書き込み済みである場合、有効スイッチ領域フラグVAFが正常に書き込まれていることが保障される。すなわち、リテンション不足による値の変化が発生していないことが保障される。したがって、書き込み完了フラグVAPCが書き込み済みである場合(ステップ500でYes)、ステップ501において、CPU11は、「スイッチ領域消去」コマンドをフラッシュシーケンサ17に送信する。これにより、
図13に示した処理が実行される。
【0092】
ステップ501の後、ステップ502において、CPU11は、「スイッチ領域消去」コマンドが正常に実行されたか否かを判定する。
図13に示した処理においてエラー終了することなく処理が終了した場合、CPU11は、「スイッチ領域消去」コマンドが正常に実行されたと判定し、処理を終了する。
【0093】
図13に示した処理においてエラー終了した場合、すなわち、ステップ130において有効スイッチ領域フラグVAFが書き込み済みでないと判定された場合、有効スイッチ領域フラグVAFの書き込みを行う必要がある。また、ステップ500において、書き込み完了フラグVAPCが書き込み済みではないと判定された場合(ステップ500でNo)も、有効スイッチ領域フラグVAFの書き込みを正常に実施する必要がある。したがって、これらの場合には、CPU11は、タグ領域200消去及びタグ領域200更新の処理を行い、有効スイッチ領域フラグVAFの書き込みを実施する。
【0094】
このように、フラッシュシーケンサ17は、書き込み完了フラグVAPCが有効スイッチ領域フラグVAFの書き込みの完了を示す場合に限り、スイッチ領域100_0又はスイッチ領域100_1の消去を実施する。このため、システムの動作を安定させることができる。
【0095】
図16は、
図14に示した処理の前に実行される処理を示すフローチャートである。ここでは、
図16に示した処理がソフトウェア処理であるものとして説明する。この場合、CPU11がプログラムを実行することにより、以下の処理を実行する。
【0096】
ステップ600(S600)において、CPU11は、スイッチ領域100_0とスイッチ領域100_1のいずれが無効な領域であるか、すなわち、有効な領域ではない領域がいずれであるかを判定する。なお、この判定は、実施の形態1において説明した判定方法と同じである。
【0097】
無効な領域がスイッチ領域100_1である場合には、ステップ601(S601)において、CPU11は、書き込み完了フラグA1PCが書き込み済みであるかを判定する。また、無効な領域がスイッチ領域100_0である場合には、ステップ602(S602)において、CPU11は、書き込み完了フラグA0PCが書き込み済みであるかを判定する。書き込み完了フラグA1PCが書き込み済みである場合、スイッチ領域100_1の設定データD1-0、D1-1、D1-2が正常に書き込まれていることが保障される。同様に、書き込み完了フラグA0PCが書き込み済みである場合、スイッチ領域100_0の設定データD0-0、D0-1、D0-2が正常に書き込まれていることが保障される。つまり、リテンション不足による値の変化が発生していないことが保障される。したがって、書き込み完了フラグA1PCが書き込み済みである場合(ステップ601でYes)、及び、書き込み完了フラグA0PCが書き込み済みである場合(ステップ602でYes)、ステップ603において、CPU11は、「タグ領域消去」コマンドをフラッシュシーケンサ17に送信する。これにより、
図14に示した処理が実行される。
【0098】
ステップ603の後、ステップ604において、CPU11は、「タグ領域消去」コマンドが正常に実行されたか否かを判定する。
図14に示した処理においてエラー終了することなく処理が終了した場合、CPU11は、「タグ領域消去」コマンドが正常に実行されたと判定し、処理を終了する。
【0099】
図14に示した処理においてエラー終了した場合、すなわち、ステップ331又はステップ332において設定データが書き込み済みでないと判定された場合、設定データの書き込みを行う必要がある。また、ステップ601又はステップ602において、書き込み完了フラグA1PC又は書き込み完了フラグA0PCが書き込み済みではないと判定された場合(ステップ601でNo、又はステップ602でNo)も、設定データの書き込みを正常に実施する必要がある。したがって、これらの場合には、CPU11は、スイッチ領域消去及びスイッチ領域書き込みの処理を行い、設定データの書き込みを実施する。
【0100】
このように、フラッシュシーケンサ17は、書き込み完了フラグA0PC又は書き込み完了フラグA1PCが、新たに有効とすべき設定データについて書き込みの完了を示す場合に限り、タグ領域200の消去を実施する。このため、システムの動作を安定させることができる。
【0101】
なお、ここでは、
図15の処理における書き込み完了フラグVAPCの確認、及び
図16の処理における書き込み完了フラグA0PC、A1PCの確認を、ソフトウェア(CPU11)により実施する例を示したが、フラッシュシーケンサ17が実施してもよい。
【0102】
<実施の形態3>
次に、実施の形態3について説明する。以下、実施の形態1又は実施の形態2と異なる点について説明し、実施の形態1又は実施の形態2と同様な点については説明を省略する。
【0103】
図17は、実施の形態3にかかる機能設定用フラッシュメモリ15の構成の一例を示す模式図である。実施の形態3にかかる機能設定用フラッシュメモリ15は、メモリ領域として、スイッチ領域100_0、スイッチ領域100_1、及びタグ領域200に加え、コンフィギュレーション設定領域300Aと、セキュリティ設定領域300Bと、ブロック保護設定領域300Cを含む。実施の形態1及び実施の形態2では、マイクロコントローラ10の機能を設定するデータが、スイッチ領域100_0及びスイッチ領域100_1に、設定データD0-0、D0-1、D0-2、D1-0、D1-1、D1-2として記憶された。これに対し、本実施の形態では、マイクロコントローラ10の機能を設定するデータ(以下、機能設定データと称す。)は、コンフィギュレーション設定領域300A、セキュリティ設定領域300B、及びブロック保護設定領域300Cに記憶される。そして、スイッチ領域100_0及びスイッチ領域100_1には、いずれの機能設定データを使用するかを指定するデータが、設定データD0-0、D0-1、D0-2、D1-0、D1-1、D1-2として記憶される。
【0104】
コンフィギュレーション設定領域300Aは、システム起動時にアクセスするメモリ領域を指定する設定情報などといった、マイクロコントローラ10の基本機能を設定するための機能設定データを記憶する領域である。
セキュリティ設定領域300Bは、IDなどのセキュリティ機能を設定するための機能設定データを記憶する領域である。
ブロック保護設定領域300Cは、データ格納用フラッシュメモリ14の各ブロックに対する書き換え許可及び禁止などを設定するための機能設定データを記憶する領域である。
【0105】
コンフィギュレーション設定領域300A、セキュリティ設定領域300B、及びブロック保護設定領域300Cは、それぞれが2つの領域から構成されている。具体的には、コンフィギュレーション設定領域300Aは、分割領域CNF_0と分割領域CNF_1から構成されている。また、セキュリティ設定領域300Bは、分割領域SEC_0と分割領域SEC_1から構成されている。ブロック保護設定領域300Cは、分割領域BP_0と分割領域BP_1から構成されている。したがって、コンフィギュレーション設定領域300A、セキュリティ設定領域300B、及びブロック保護設定領域300Cは、それぞれ、機能設定データを2セット記憶することができる。すなわち、一方の分割領域に機能設定データの第1のセット(第1のグループ)を記憶し、他方の分割領域に機能設定データの第2のセット(第2のグループ)を記憶することができる。したがって、例えば、これら2つのセットのうち、一方を旧機能設定データとし、他方を新機能設定データとすることができる。
【0106】
2つのセットのうち、いずれのセットをマイクロコントローラ10の動作時に実際に使用するかは、有効なスイッチ領域100に格納されている設定データ(すなわち、設定データD0-0、D0-1、D0-2、又は設定データD1-0、D1-1、D1-2)によって決定される。つまり、いずれの分割領域の機能設定データを使用するかは、有効なスイッチ領域100に格納されている設定データにより指定される。
【0107】
なお、コンフィギュレーション設定領域300A、セキュリティ設定領域300B、及びブロック保護設定領域300Cは、マイクロコントローラ10の各種機能を設定するための領域の一例に過ぎない。したがって、機能設定用フラッシュメモリ15には、これらの領域に限らず、マイクロコントローラ10の所定の機能についての機能設定データが記憶される他のメモリ領域が設けられてもよい。
本実施の形態では、マイクロコントローラ10の所定の機能についての機能設定データが記憶されるメモリ領域として、機能設定用フラッシュメモリ15は、コンフィギュレーション設定領域300A、セキュリティ設定領域300B、及びブロック保護設定領域300Cの3つのメモリ領域を備える。これに対応して、スイッチ領域100_0は3つの設定データD0-0、D0-1、D0-2を記憶し、スイッチ領域100_1も3つの設定データD1-0、D1-1、D1-2を記憶している。つまり、マイクロコントローラ10の所定の機能についての機能設定データが記憶されるメモリ領域の数に応じて、スイッチ領域100_0及びスイッチ領域100_1に記憶すべき設定データ数は変わる。
なお、以下の説明では、コンフィギュレーション設定領域300A、セキュリティ設定領域300B、及びブロック保護設定領域300Cについて、区別せずに言及する場合、設定領域300と称す。
【0108】
図18は、コンフィギュレーション設定領域300Aの2つの分割領域CNF_0、CNF_1の構成の一例を示す模式図である。分割領域CNF_0と、分割領域CNF_1は、同じ構成を備えている。
図18に示すように、分割領域CNF_0、CNF_1には、オプションバイトと称される機能設定データOPBT0、・・・、OPBTxと、書き込み完了フラグVOF0、・・・、VOFxと、書き込み完了フラグVOFC0、・・・、VOFCxが記憶される。
【0109】
機能設定データOPBTi(ただし、iは0からxまでの整数であり、以下の説明でも同様である。)は、上述の通り、マイクロコントローラ10の機能を設定するデータである。また、書き込み完了フラグVOFiは機能設定データOPBTiの書き込みが完了したか否かを示すフラグである。書き込み完了フラグVOFCiは、書き込み完了フラグVOFiの書き込みが完了したか否かを示すフラグである。
【0110】
セキュリティ設定領域300Bの分割領域SEC_0、SEC_1、及びブロック保護設定領域300Cの分割領域BP_0、BP_1の構成は、コンフィギュレーション設定領域300Aの分割領域CNF_0、CNF_1と同様である。ただし、マイクロコントローラ10の仕様に依存して必要な機能設定データのデータ数がコンフィギュレーション設定領域300Aとは異なる場合がある。
【0111】
本実施の形態においても、実施の形態1及び実施の形態2と同様に、CPU11は、周辺バス18経由で、予め定められた順序でライトデータをフラッシュシーケンサ17に対して書き込むことで、フラッシュシーケンサ17が実施する制御内容を指定する。ただし、本実施の形態では、設定領域300についての次のようなコマンドがさらに用意されている。
図19は設定領域300についてのコマンドを示す図である。
図19に示すように、本実施の形態では、
図6に示したコマンドに加え、さらに、フラッシュシーケンサ17を制御するコマンドとして、「設定領域消去」コマンドと「設定領域書き込み」コマンドが用意されている。
【0112】
CPU11は、設定領域300の消去を行う場合、「設定領域消去」コマンドを用いる。具体的には、CPU11は、例えばコマンドデータ(H’47、H’D0)をフラッシュシーケンサ17のコマンド指定レジスタに順次書き込む。フラッシュシーケンサ17は、「設定領域消去」コマンドを受信すると、コンフィギュレーション設定領域300Aとセキュリティ設定領域300Bとブロック保護設定領域300Cのうち、CPU11により指定された設定領域300を消去する。なお、CPU11は、フラッシュシーケンサ17に内蔵されているアドレス指定レジスタに値を設定することにより消去対象の設定領域300を指定する。
【0113】
また、CPU11は、設定領域300へのデータの書き込みを行う場合、「設定領域書き込み」コマンドを用いる。具体的には、CPU11は、例えばコマンドデータ(H’45、H’08、WD0、WD1、WD2、WD3、H’D0)をフラッシュシーケンサ17のコマンド指定レジスタに順次書き込む。ここで、WD0、WD1、WD2、WD3は、新たに書き込まれる機能設定データである。すなわち、WD0、WD1、WD2、WD3は、新たな機能設定データOPBTiである。フラッシュシーケンサ17は、「設定領域書き込み」コマンドを受信すると、コンフィギュレーション設定領域300Aとセキュリティ設定領域300Bとブロック保護設定領域300Cのうち、CPU11により指定された設定領域300に、新たな機能設定データとして、WD0、WD1、WD2、WD3を書き込む。なお、CPU11は、フラッシュシーケンサ17に内蔵されているアドレス指定レジスタに値を設定することにより書き込み対象の設定領域300を指定する。
【0114】
図20は、コンフィギュレーション設定領域300Aのアドレスがアドレス指定レジスタに設定された状態で「設定領域消去」コマンドを受信した場合のフラッシュシーケンサ17の動作の一例を示すフローチャートである。フラッシュシーケンサ17は「設定領域消去」コマンドを受信すると、設定領域300の分割領域のうち無効な分割領域の消去を実施する。以下、
図20に沿って、「設定領域消去」コマンドを受信した場合のフラッシュシーケンサ17の動作の流れを説明する。
【0115】
ステップ700(S700)において、フラッシュシーケンサ17は、分割領域CNF_0と分割領域CNF_1のいずれが無効な領域であるか、すなわち、有効な領域ではない領域がいずれであるかを判定する。ここで、有効な分割領域とは、実際に使用する方の機能設定データを格納した領域である。無効な分割領域とは、実際に使用しない方の機能設定データを格納した領域である。フラッシュシーケンサ17は、無効な分割領域を判定するために、スイッチ領域100に格納されている設定データD0-0とD1-0のうち、有効なスイッチ領域100に格納されている方の設定データを参照する。有効なスイッチ領域100に格納されている設定データにおいて、分割領域CNF_0が指定されている場合、分割領域CNF_0が有効な分割領域であり、分割領域CNF_1が無効な分割領域であることを意味する。逆に、有効なスイッチ領域100に格納されている設定データにおいて、分割領域CNF_1が指定されている場合、分割領域CNF_1が有効な分割領域であり、分割領域CNF_0が無効な分割領域であることを意味する。
なお、マイクロコントローラ10の起動時に、各種機能設定のためにスイッチ領域100から読み出した設定データをレジスタ(図示せず)に格納している場合には、フラッシュシーケンサ17は、スイッチ領域100の設定データではなくレジスタの値を参照して、分割領域CNF_0と分割領域CNF_1のいずれが無効な領域であるかを決定してもよい。
【0116】
無効な分割領域が分割領域CNF_1である場合には、処理はステップ700の次に、ステップ711へ移行し、無効な分割領域が分割領域CNF_0である場合には、処理はステップ700の次に、ステップ721へ移行する。ステップ711(S711)では、フラッシュシーケンサ17は、分割領域CNF_1を消去する。これに対し、ステップ721(S721)では、フラッシュシーケンサ17は、分割領域CNF_0を消去する。
【0117】
セキュリティ設定領域300B及びブロック保護設定領域300Cについての「設定領域消去」コマンドを受信した場合のフラッシュシーケンサ17の動作も、
図20で示した動作と同様であるが、ステップ700で参照されるスイッチ領域100の設定データ、及び消去対象領域が、処理対象の領域に応じて異なる。具体的には、セキュリティ設定領域300Bの場合には、参照されるスイッチ領域100のデータは設定データD0-1または設定データD1-1となり、消去対象領域は分割領域SEC_0または分割領域SEC_1となる。また、ブロック保護設定領域300Cの場合には、参照されるスイッチ領域100のデータは設定データD0-2またはD1-2となり、消去対象領域は分割領域BP_0または分割領域BP_1となる。
【0118】
図21は、コンフィギュレーション設定領域300Aのアドレスがアドレス指定レジスタに設定された状態で「設定領域書き込み」コマンドを受信した場合のフラッシュシーケンサ17の動作の一例を示すフローチャートである。「設定領域書き込み」コマンドは例えば16バイト単位の書き込みコマンドであり、アドレス指定レジスタには16バイト単位で各機能設定データOPBTiのアドレスを設定できる。フラッシュシーケンサ17は「設定領域書き込み」コマンドを受信すると、設定領域300の分割領域のうち無効な分割領域内の指定された機能設定データOPBTiについての書き込みを実施する。ところで、各機能設定データOPBTiは、保護設定ビットやID認証などを用いた任意の保護機能により、値の変更を禁止する保護が可能である。このため、機能設定データOPBTiが保護対象である場合、「設定領域書き込み」コマンドにより指定された書き込み内容を書き込むことを禁止する必要がある。したがって、フラッシュシーケンサ17は、受信した「設定領域書き込み」コマンドが、保護対象の機能設定データOPBTiについての新たな書き込みの指示であるか否かによって異なる動作を行う。以下、
図21に沿って、「設定領域書き込み」コマンドを受信した場合のフラッシュシーケンサ17の動作の流れを説明する。
【0119】
ステップ800(S800)において、
図20のステップ700と同様、フラッシュシーケンサ17は、分割領域CNF_0と分割領域CNF_1のいずれが無効な領域であるか、すなわち、有効な領域ではない領域がいずれであるかを判定する。
【0120】
無効な領域が分割領域CNF_1である場合、ステップ811からステップ815において、分割領域CNF_1に対し書き込み処理が行われる。以下、無効な領域が分割領域CNF_1である場合の動作について説明する。
【0121】
ステップ811(S811)において、フラッシュシーケンサ17は、受信した「設定領域書き込み」コマンドが、保護対象の機能設定データOPBTiについての新たな書き込みの指示であるか否かを判定する。なお、フラッシュシーケンサ17は、実装されている保護機能に従った確認方法により、この判定を実施する。例えば、保護設定ビットにより保護の設定が行われる場合、フラッシュシーケンサ17は、当該機能設定データOPBTiに対応する保護設定ビットを参照することにより、この機能設定データOPBTiが保護対象であるか否かを判定する。
【0122】
書き込み対象の機能設定データOPBTiが保護対象でない場合(ステップ811でNo)、ステップ812(S812)において、フラッシュシーケンサ17は、新たな機能設定データOPBTiとして、CPU11から受信したWD0、WD1、WD2、WD3を無効な領域である分割領域CNF_1に書き込む。これに対し、書き込み対象の機能設定データOPBTiが保護対象である場合(ステップ811でYes)、ステップ813(S813)において、フラッシュシーケンサ17は、有効な領域である分割領域CNF_0の機能設定データOPBTiの設定値を、無効な領域である分割領域CNF_1に書き込む。すなわち、フラッシュシーケンサ17は、設定値をコピーする。これにより機能設定データOPBTiの設定値が維持され、異なる値への変更を禁止することができる。ステップ812の後、又はステップ813の後、処理はステップ814へ移行する。
【0123】
機能設定データOPBTiの書き込みが完了すると、ステップ814(S814)において、フラッシュシーケンサ17は、分割領域CNF_1において、書き込み完了フラグVOFiとして、機能設定データOPBTiの書き込みの完了を示す所定値を書き込む。その後、ステップ815(S815)において、書き込み完了フラグVOFCiとして、書き込み完了フラグVOFiの書き込みの完了を示す所定値を書き込む。これにより、設定領域書き込みの動作が終了する。
【0124】
これに対し、無効な領域が分割領域CNF_0である場合、ステップ821からステップ825において、分割領域CNF_0に対し書き込み処理が行われる。ステップ821からステップ825は、無効な領域が逆である点を除き、上述したステップ811からステップ815と同様の処理である。すなわち、書き込み対象の機能設定データOPBTiが保護対象でない場合(ステップ821でNo)、フラッシュシーケンサ17は、WD0、WD1、WD2、WD3を分割領域CNF_0に書き込み(ステップ822)、保護対象である場合、フラッシュシーケンサ17は、分割領域CNF_1の機能設定データOPBTiの設定値を、分割領域CNF_0にコピーする(ステップ823)。そして、フラッシュシーケンサ17は、分割領域CNF_0において、書き込み完了フラグVOFi及び書き込み完了フラグVOFCiの書き込みを実施する(ステップ824、825)。
【0125】
セキュリティ設定領域300B及びブロック保護設定領域300Cについての「設定領域書き込み」コマンドを受信した場合のフラッシュシーケンサ17の動作も、
図21で示した動作と同様であるが、書き込み対象領域が、処理対象の領域に応じて異なる。具体的には、セキュリティ設定領域300Bの場合には、書き込み対象領域は分割領域SEC_0または分割領域SEC_1となる。また、ブロック保護設定領域300Cの場合には、書き込み対象領域は分割領域BP_0または分割領域BP_1となる。
【0126】
図21のステップ813、823のように、フラッシュシーケンサ17は、機能設定データOPBTiが保護対象である場合、組をなす2つのメモリ領域(分割領域)のいずれか一方に対し新たな機能設定データOPBTiの書き込み指示を受け付けたとき、当該新たな機能設定データに代えて、他方に記憶されている機能設定データを書き込む。これにより、保護対象となっている機能設定データOPBTiが別のデータ書き換えられてしまうことを防ぐことができる。
【0127】
設定領域300を更新する場合、CPU11は、例えば機能設定データを更新するためのプログラム(ソフトウェア)に従って、「設定領域消去」コマンドと、全ての機能設定データOPBTi(すなわち、機能設定データOPBT0、・・・、OPBTx)についての「設定領域書き込み」コマンドを順に実行する。これにより、コンフィギュレーション設定領域300A、セキュリティ設定領域300B、又はブロック保護設定領域300Cの無効な分割領域に新しい設定値が格納される。
【0128】
図22A及び
図22Bは、「設定領域消去」コマンド及び「設定領域書き込み」コマンドが実行された場合の各値の一例を示している。ただし、この例では、「設定領域消去」コマンド及び「設定領域書き込み」コマンドを使用してコンフィギュレーション設定領域300Aの無効な分割領域CNF_0に新しい設定値を格納する場合の値の推移を示している。
図22Aは、分割領域CNF_0における各機能設定データと各フラグの推移を示す表である。
図22Bは、分割領域CNF_1における各機能設定データと各フラグの推移を示す表である。
【0129】
図22Aに示すように、「設定領域消去」コマンドと各機能設定データOPBTiについての「設定領域書き込み」コマンドが実行されると、無効な分割領域CNF_0では、まず、機能設定データとフラグが消去され、その後、新たな機能設定データOPBTi及び書き込み完了フラグVOFi、VOFCiの書き込みが繰り返される。なお、この間、
図22Bに示すように、有効な分割領域CNF_1では、値の変更は発生しない。
図22A、
図22Bでは、コンフィギュレーション設定領域300Aの更新を例示したが、セキュリティ設定領域300B、及びブロック保護設定領域300Cも、同様な手順で無効な分割領域に新しい設定値を格納できる。
【0130】
図23は、スイッチ領域100_0/スイッチ領域100_1/タグ領域200と、コンフィギュレーション設定領域300A/セキュリティ設定領域300B/ブロック保護設定領域300Cの関係を示す模式図である。有効な設定データが格納されているスイッチ領域100(すなわち、有効なスイッチ領域100)が、
図12に従って、スイッチ領域100_0、スイッチ領域100_1、及びタグ領域200のフラグにより決定される。さらに、有効なスイッチ領域100の設定データによって、コンフィギュレーション設定領域300Aの有効な分割領域、セキュリティ設定領域300Bの有効な分割領域、及びブロック保護設定領域300Cの有効な分割領域が決定される。
【0131】
ここで、スイッチ領域100_0の設定データD0-0とスイッチ領域100_1の設定データD1-0は、コンフィギュレーション設定領域300Aのいずれかの分割領域を指定するデータである。換言すると、設定データD0-0、D1-0は、分割領域CNF_0に記憶された機能設定データ又は分割領域CNF_1に記憶された機能設定データのいずれかを指定するデータである。
また、スイッチ領域100_0の設定データD0-1とスイッチ領域100_1の設定データD1-1は、セキュリティ設定領域300Bのいずれかの分割領域を指定するデータである。換言すると、設定データD0-1、D1-1は、分割領域SEC_0に記憶された機能設定データ又は分割領域SEC_1に記憶された機能設定データのいずれかを指定するデータである。
また、スイッチ領域100_0の設定データD0-2とスイッチ領域100_1の設定データD1-2は、ブロック保護設定領域300Cのいずれかの分割領域を指定するデータである。換言すると、設定データD0-2、D1-2は、分割領域BP_0に記憶された機能設定データ又は分割領域BP_1に記憶された機能設定データのいずれかを指定するデータである。
【0132】
各領域が
図23に示すような関係を持つため、設定領域300に格納した新しい機能設定データに切り替える場合には、設定領域300の無効な分割領域に新しい機能設定データを格納した後に、
図11A、
図11B、
図11Cで示したように4つのコマンドを実行すればよい。すなわち、「スイッチ領域消去」コマンド、「スイッチ領域書き込み」コマンド、「タグ領域消去」コマンド、「タグ領域更新」コマンドの順に4つのコマンドを順に実行することにより、スイッチ領域100の設定データを、新しい機能設定データが格納されている分割領域を指定するデータに変更すればよい。
【0133】
スイッチ領域100の各設定データには、任意の値を設定することができる。このため、
図24のようにスイッチ領域100_0の設定データで分割領域CNF_0、分割領域SEC_1、及び分割領域BP_0をそれぞれ有効領域として選択していた状態から、
図25のようにスイッチ領域100_1の設定データで分割領域CNF_1、分割領域SEC_1、及び分割領域BP_1をそれぞれ有効領域として選択した状態に切替えることが可能である。すなわち、セキュリティ設定のみ切り替えずにマイクロコントローラ10を使用することも可能である。
【0134】
また、設定領域300の更新有無に関わらず、スイッチ領域100及びタグ領域200のみ更新することも可能である。このため、スイッチ領域100_0を消去後に、スイッチ領域100_0に分割領域CNF_0、分割領域SEC_1、及び分割領域BP_0を選択する設定データを書き込み、さらにタグ領域消去とタグ更新を実施すると、マイクロコントローラ10の機能設定を
図24と同じ状態に戻すことも可能である。すなわち、ロールバックを実施することができる。
【0135】
スイッチ領域100及びタグ領域200のみ独立的に更新することが可能であることは上記のような利点を有するが、スイッチ領域100及びタグ領域200の更新により、消去状態の分割領域が誤選択されると、マイクロコントローラ10の各種機能の設定が消失してしまうため、システム障害を引き起こす可能性がある。このような問題を回避するために、本実施の形態では、フラッシュシーケンサ17は、設定領域300の書き込み状態を判定して、タグ領域更新を実施する。
図26は、「タグ領域更新」コマンドを受信した場合の実施の形態3にかかるフラッシュシーケンサ17の動作の一例を示すフローチャートである。
図26のフローチャートは、ステップ400の後に、ステップ431、ステップ432、ステップ441、及びステップ442が追加されている点で、
図10のフローチャートと異なっている。以下、
図26に沿って、本実施の形態のフラッシュシーケンサ17の「タグ領域更新」コマンド受信時の動作の流れを説明する。
【0136】
本実施の形態では、無効なスイッチ領域100の判定(ステップ400)が行われると、フラッシュシーケンサ17は、無効なスイッチ領域100の設定データの書き込み状態の確認(ステップ431、441)及び設定領域300の書き込み状態の確認(ステップ432、442)を行う。
【0137】
まず、無効なスイッチ領域100がスイッチ領域100_1である場合について説明する。この場合、処理は、ステップ400の後、ステップ431へ移行する。ステップ431(S431)では、フラッシュシーケンサ17は、スイッチ領域100_1の全ての設定データ(すなわち、設定データD1-0、D1-1、D1-2)が、書き込み済みであるかを判定する。スイッチ領域100_1の全ての設定データが書き込み済みである場合(ステップ431でYes)、処理は、ステップ432へ移行する。これに対し、スイッチ領域100_1のいずれかの設定データが書き込み済みでない場合(ステップ431でNo)、処理はエラー終了する。すなわち、この場合、タグ領域200の更新は行われない。
【0138】
ステップ432(S432)では、フラッシュシーケンサ17は、スイッチ領域100_1に書き込みされている設定データで指定されている分割領域の全ての書き込み完了フラグVOFiが書き込み済みであるかを判定する。全ての書き込み完了フラグVOFiが書き込み済みである場合(ステップ432でYes)、
図10に示した処理と同様の処理(ステップ411、ステップ412)が行われる。これに対し、全ての書き込み完了フラグVOFiが書き込み済みでない場合(ステップ432でNo)、処理はエラー終了する。すなわち、この場合、タグ領域200の更新は行われない。
【0139】
このように、フラッシュシーケンサ17は、有効であるスイッチ領域がスイッチ領域100_1であることを示す有効スイッチ領域フラグVAFをタグ領域200に書き込む場合、スイッチ領域100_1に設定データD1-0、D1-1、D1-2が記憶され、かつ、記憶された設定データD1-0、D1-1、D1-2により指定される分割領域に機能設定データが記憶されている場合に限り、有効スイッチ領域フラグVAFの書き込みを実施する。換言すると、フラッシュシーケンサ17は、有効である設定データがスイッチ領域100_1の設定データであることを示す有効スイッチ領域フラグVAFをタグ領域200に書き込む場合、当該設定データが記憶され、かつ、記憶された当該設定データにより指定される機能設定データが設定領域300に記憶されている場合に限り、有効スイッチ領域フラグVAFの書き込みを実施する。このようにすることで、消去状態の分割領域が誤選択されることを防ぐことができる。
【0140】
無効なスイッチ領域100がスイッチ領域100_0である場合、処理は、ステップ400の後、ステップ441へ移行する。ステップ441(S441)では、フラッシュシーケンサ17は、スイッチ領域100_0の全ての設定データ(すなわち、設定データD0-0、D0-1、D0-2)が、書き込み済みであるかを判定する。スイッチ領域100_0の全ての設定データが書き込み済みである場合(ステップ441でYes)、処理は、ステップ442へ移行する。これに対し、スイッチ領域100_0のいずれかの設定データが書き込み済みでない場合(ステップ441でNo)、処理はエラー終了する。すなわち、この場合、タグ領域200の更新は行われない。
【0141】
ステップ442(S442)では、フラッシュシーケンサ17は、スイッチ領域100_0に書き込みされている設定データで指定されている分割領域の全ての書き込み完了フラグVOFiが書き込み済みであるかを判定する。全ての書き込み完了フラグVOFiが書き込み済みである場合(ステップ442でYes)、
図10に示した処理と同様の処理(ステップ421、ステップ422)が行われる。これに対し、全ての書き込み完了フラグVOFiが書き込み済みでない場合(ステップ442でNo)、処理はエラー終了する。すなわち、この場合、タグ領域200の更新は行われない。
【0142】
このように、フラッシュシーケンサ17は、有効であるスイッチ領域がスイッチ領域100_0であることを示す有効スイッチ領域フラグVAFをタグ領域200に書き込む場合、スイッチ領域100_0に設定データD0-0、D0-1、D0-2が記憶され、かつ、記憶された設定データD0-0、D0-1、D0-2により指定される分割領域に機能設定データが記憶されている場合に限り、有効スイッチ領域フラグVAFの書き込みを実施する。換言すると、フラッシュシーケンサ17は、有効である設定データがスイッチ領域100_0の設定データであることを示す有効スイッチ領域フラグVAFをタグ領域200に書き込む場合、当該設定データが記憶され、かつ、記憶された当該設定データにより指定される機能設定データが設定領域300に記憶されている場合に限り、有効スイッチ領域フラグVAFの書き込みを実施する。このようにすることで、消去状態の分割領域が誤選択されることを防ぐことができる。
【0143】
なお、書き込み完了フラグVOFiの書き込み状態がリテンション不足であり、それにより値が経時変化する可能性を考えた場合、
図26の処理を実行することにより、システムの動作が不安定になる恐れがある。よって、
図26の処理の実行の前に、書き込み完了フラグVOFiの書き込みの実施直後に書き込まれる書き込み完了フラグVOFCiを確認してもよい。そして、フラッシュシーケンサ17は、書き込み完了フラグVOFCiが書き込み完了フラグVOFiの書き込みの完了を示す場合に限り、
図26の処理を実施してもよい。このようにすることで、システムの動作を安定させることができる。
【0144】
なお、本実施の形態では、機能設定データに対し読み出し禁止の保護が設定された場合であっても適切に動作するように、フラッシュシーケンサ17は、書き込み完了フラグVOFiを確認している(
図26のステップ432、442)。すなわち、機能設定データの参照により機能設定データの書き込み状態を確認できない場合であっても適切に動作するように、フラッシュシーケンサ17は、書き込み完了フラグVOFiを確認している。したがって、機能設定データに対し読み出し禁止の保護が設定されることがないシステムにおいては、フラッシュシーケンサ17は、機能設定データを参照することにより機能設定データの書き込み状態を確認してもよい。この場合、
図26の処理の実行の前に、書き込み完了フラグVOFCiではなく、書き込み完了フラグVOFiを確認するようにしてもよい。つまり、このような構成の場合、書き込み完了フラグVOFCiは不要である。
【0145】
以上、実施の形態3について説明した。本実施の形態では、機能設定用フラッシュメモリ15は、スイッチ領域100_0、スイッチ領域100_1、及びタグ領域200に加え、さらに、所定の機能についての機能設定データが記憶される2つのメモリ領域を含む。ここで、所定の機能についての機能設定データが記憶される2つのメモリ領域は、例えば、分割領域CNF_0及び分割領域CNF_1である。また、この2つのメモリ領域は、分割領域SEC_0及び分割領域SEC_1であってもよいし、分割領域BP_0及び分割領域BP_1であってもよい。そして、この2つのメモリ領域の一方をメモリ領域Aと称し、他方をメモリ領域Bと称した場合、本実施の形態におけるスイッチ領域100_0及びスイッチ領域100_1の設定データは、次のようなデータであると言える。すなわち、スイッチ領域100_0及びスイッチ領域100_1の設定データは、メモリ領域Aに記憶された機能設定データ又はメモリ領域Bに記憶された機能設定データのいずれかを指定するデータである。このような構成によれば、有効スイッチ領域フラグVAFの更新中に処理が中断し、有効スイッチ領域フラグVAFが不確定な値になった場合でも、マイクロコントローラ10に適用される機能設定データを一意に特定することができる。
【0146】
また、特に、所定の機能についての機能設定データが記憶される2つのメモリ領域の組をn個(nは2以上の整数)含むことも可能である。上述の構成では、機能設定用フラッシュメモリ15は、そのような組を3個(分割領域CNF_0、CNF_1と、分割領域SEC_0、SEC_1と、分割領域BP_0、BP_1)備えている。そして、スイッチ領域100_0とスイッチ領域100_1は、いずれもn個の設定データを記憶する。このような構成によれば、適用する機能設定データの組み合わせを自由に切替えることができる。したがって、例えば、
図24に示した状態から
図25に示した状態への切替えや、切替え後のロールバックも容易に実現することができる。
【0147】
さらに、
図21に示したように、フラッシュシーケンサ17は、保護対象の機能設定データについての書き込み指示を受信すると、受信したデータの書き込みではなく、有効な分割領域の機能設定データのコピーを実施する。このため、機能設定データの設定値が不正な値に変更されないように保護できる。また、
図26に示したように、フラッシュシーケンサ17は、タグ領域200の更新の際には、更新後に選択される分割領域の書き込み完了フラグVOFiを確認することで、各種機能の設定が消失することを防止している。
【0148】
<その他の実施の形態>
上記に示した全ての実施形態において、上述した処理を行う各要素は、ハードウェア的には、プロセッサ、メモリ、その他の回路で構成することができ、ソフトウェア的には、メモリにロードされたプログラム等によって実現される。したがって、これらの処理がハードウェアのみ、ソフトウェアのみ、又はそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。
【0149】
また、上述したプログラムは、様々なタイプの非一時的なコンピュータ可読媒体を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、CD-ROM(Read Only Memory)、CD-R、CD-R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(Random Access Memory))を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【0150】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
【符号の説明】
【0151】
1 情報処理装置
2 記憶部
3 制御部
4 使用データ決定部
5_1、5_2、5_3 メモリ領域
6_1、6_2 データ
7 有効指示フラグ
8_1、8_2、8_3 更新状況フラグ
10 マイクロコントローラ
11 CPU
12 RAM
13 周辺回路
14 データ格納用フラッシュメモリ
15 機能設定用フラッシュメモリ
16 使用データ決定部
17 フラッシュシーケンサ
18 周辺バス
100、100_0、100_1 スイッチ領域
200 タグ領域
300 設定領域
300A コンフィギュレーション設定領域
300B セキュリティ設定領域
300C ブロック保護設定領域
BP_0、BP_1、CNF_0、CNF_1、SEC_0、SEC_1 分割領域