(57)【要約】【課題】プロセッサの処理を中断せずに周辺回路の設定値の誤りを容易に検出する。【解決手段】記憶部４は、周辺回路３ａ〜３ｃの設定値ａ〜ｃを保持し、記憶部５は、設定値ａ〜ｃの複製値ａａ〜ｃｃを保持し、読み出し時に複製値ａａ〜ｃｃのエラー検出及び訂正を行い、比較検証部６は、複数の設定値ａ〜ｃの記憶部４への書き込み時期に基づき、書き込み時期が古い設定値を優先的に記憶部４から読み出し、読み出した設定値に対応する複製値を記憶部５から読み出し、比較検証を行う。【選択図】図１
2014232420.tif 000002
【特許請求の範囲】
【請求項１】
周辺回路の設定値を保持する第１の記憶部と、
前記設定値の複製値を保持し、読み出し時に前記複製値のエラー検出及び訂正を行う第２の記憶部と、
複数の前記設定値の前記第１の記憶部への書き込み時期に基づき、前記書き込み時期が古い前記設定値を優先的に前記第１の記憶部から読み出し、読み出した前記設定値に対応する前記複製値を前記第２の記憶部から読み出し、比較検証を行う比較検証部と、
を有することを特徴とするマイクロコントローラ。
【請求項２】
プロセッサを有し、
前記設定値と前記設定値に対応する前記複製値とが異なっている場合、前記比較検証部は、前記プロセッサに前記比較検証の結果を通知し、
前記プロセッサは、対応する前記複製値と異なっている前記設定値の更新を行うことを特徴とする請求項１に記載のマイクロコントローラ。
【請求項３】
前記比較検証部は、前記設定値と前記設定値に対応する前記複製値とが異なっている場合、前記プロセッサに、前記設定値の更新履歴または前記比較検証を行った履歴を通知することを特徴とする請求項２に記載のマイクロコントローラ。
【請求項４】
前記設定値と前記設定値に対応する前記複製値とが異なっている場合、前記比較検証部は、前記複製値を用いて、前記設定値を更新することを特徴とする請求項１に記載のマイクロコントローラ。
【請求項５】
周辺回路の設定値を第１の記憶部に書き込み、
前記設定値の複製値を、読み出し時に前記複製値のエラー検出及び訂正を行う第２の記憶部に書き込み、
比較検証部が、複数の前記設定値の前記第１の記憶部への書き込み時期に基づき、前記書き込み時期が古い前記設定値を優先的に前記第１の記憶部から読み出し、読み出した前記設定値に対応する前記複製値を前記第２の記憶部から読み出し、比較検証を行う、
ことを特徴とする誤り検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロコントローラ及び誤り検出方法に関する。
【背景技術】
【０００２】
マイクロコントローラ（マイクロコンピュータと呼ばれる場合もある）は、各種周辺回路（タイマ、通信回路など）などの設定値が格納された記憶素子を有している。このような設定値のなかには、マイクロコントローラによる機器（自動車、家電製品、携帯電話など）の制御に直接影響するデータが含まれる場合があるが、記憶素子が中性子線などの影響を受け、そのデータが変わってしまい、信頼性が劣化する可能性がある。
【０００３】
ＲＡＭ（Random Access Memory）の高信頼化技術としては、ＥＣＣ（Error Correcting Code）などのパリティをＲＡＭに付加して、データの読み出し時に誤りを検出し訂正する手法がある。また、ＲＡＭを多重化したり、ＲＡＭ内に複数の領域を形成し、同一データを複数のＲＡＭまたは同一ＲＡＭ内の複数の領域に記憶しておき、読み出しの際に値を比較するミラーリング手法がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００１−３５６９９８号公報
【特許文献２】特開２００７−１４８７７９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、周辺回路の設定値については、プロセッサ側から読み出される命令コードなどとは異なり、一旦書き込まれた後は、通常プロセッサ側からのリードは発生せず、誤り検出及び訂正の機会がない。そのため、単にＥＣＣ付のＲＡＭを用いた手法では、設定値の信頼性を確保することは難しい。そこで、プロセッサによって、記憶素子に保存された設定値に対する定期的な更新が行われる。また、ミラーリング手法についても、より信頼性を確保したい設定値についてはプロセッサによる設定値の定期的な更新が行われることが考えられる。
【０００６】
このようにプロセッサによる設定値の定期的な更新が行われる場合、プロセッサで行っている処理が、設定値の更新処理のために中断することになり、処理速度の低下など、機器の制御に悪影響を与える懸念がある。
【課題を解決するための手段】
【０００７】
発明の一観点によれば、周辺回路の設定値を保持する第１の記憶部と、前記設定値の複製値を保持し、読み出し時に前記複製値のエラー検出及び訂正を行う第２の記憶部と、複数の前記設定値の前記第１の記憶部への書き込み時期に基づき、前記書き込み時期が古い前記設定値を優先的に前記第１の記憶部から読み出し、読み出した前記設定値に対応する前記複製値を前記第２の記憶部から読み出し、比較検証を行う比較検証部と、を備えたマイクロコントローラが提供される。
【０００８】
また、発明の一観点によれば、周辺回路の設定値を第１の記憶部に書き込み、前記設定値の複製値を、読み出し時に前記複製値のエラー検出及び訂正を行う第２の記憶部に書き込み、比較検証部が、複数の前記設定値の前記第１の記憶部への書き込み時期に基づき、前記書き込み時期が古い前記設定値を優先的に前記第１の記憶部から読み出し、読み出した前記設定値に対応する前記複製値を前記第２の記憶部から読み出し、比較検証を行う、誤り検出方法が提供される。
【発明の効果】
【０００９】
開示のマイクロコントローラ及び誤り検出方法によれば、プロセッサの処理を中断せずに周辺回路の設定値の誤りを容易に検出できる。
【図面の簡単な説明】
【００１０】
【図１】第１の実施の形態のマイクロコントローラの一例を示す図である。
【図２】誤り検出方法の一例を示すフローチャートである。
【図３】第２の実施の形態のマイクロコントローラの一例を示す図である。
【図４】比較検証部の一例を示す図である。
【図５】マイクロコントローラの動作開始時の処理の一例を示すフローチャートである。
【図６】ＥＣＣ付ＲＡＭに格納されるデータの一例を示す図である。
【図７】設定値と複製値との比較検証時の処理の一例を示すフローチャートである。
【図８】優先順位の格納例を示す図である。
【図９】履歴情報の更新例を示す図である。
【図１０】優先順位の更新例を示す図である。
【発明を実施するための形態】
【００１１】
以下、発明を実施するための形態を、図面を参照しつつ説明する。
（第１の実施の形態）
図１は、第１の実施の形態のマイクロコントローラの一例を示す図である。
【００１２】
第１の実施の形態のマイクロコントローラ１は、プロセッサ２、周辺回路３ａ，３ｂ，３ｃ、記憶部４，５、比較検証部６を有する。
プロセッサ２は、マイクロコントローラ１の各部を制御する。プロセッサ２は、たとえば、ＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、またはＰＬＤ（Programmable Logic Device）である。またプロセッサ２は、ＣＰＵ、ＭＰＵ、ＤＳＰ、ＡＳＩＣ、ＰＬＤのうちの２以上の要素の組み合わせであってもよい。
【００１３】
周辺回路３ａ，３ｂ，３ｃは、マイクロコントローラ１が制御する外部機器に対する接続用のインタフェース、タイマなどである。なお、周辺回路３ａ〜３ｃは、マイクロコントローラ１の外部に設けられていてもよい。
【００１４】
記憶部４は、たとえば、レジスタ（フリップフロップなど）４ａ，４ｂ，４ｃを有する。記憶部４は、周辺回路３ａ，３ｂ，３ｃを制御するための設定値ａ，ｂ，ｃを保持している。
【００１５】
記憶部５は、設定値ａ〜ｃの複製値ａａ，ｂｂ，ｃｃを保持する。また、記憶部５には、設定値の書き込み時期（更新時期）に関する情報（履歴情報）も格納される。書き込み時期は、たとえば、図示しないカウンタの値として格納される。記憶部５は、エラー検出、訂正用のパリティを含み、読み出し時に複製値のエラー検出及び訂正を行う。記憶部５は、たとえば、ＥＣＣ付ＲＡＭである。なお、履歴情報は、別の記憶部に記憶されるようにしてもよい。
【００１６】
比較検証部６は、上記履歴情報を参照して、複数の設定値ａ〜ｃの記憶部４への書き込み時期に基づき、書き込み時期が古い設定値を優先的に記憶部４から読み出し、それに対応する複製値を記憶部５から読み出し、それらの比較検証を行う。比較検証部６は、たとえば、図１のように優先順位判定部６ａと比較部６ｂを有している。
【００１７】
優先順位判定部６ａは、履歴情報に基づき、たとえば、設定値ａ〜ｃのうち、どの設定値が最も書き込み時期が古いかを判定し、最も書き込み時期が古い設定値の優先順位を一番高くする。比較部６ｂは、優先順位の高い設定値から順に、所定の間隔で、対応する複製値との比較を行う。記憶部４から読み出された設定値ａ〜ｃが、記憶部５から読み出された複製値ａａ〜ｃｃと異なる場合には、比較部６ｂは、たとえば、その旨をプロセッサ２に通知する。
【００１８】
以下、第１の実施の形態のマイクロコントローラ１による誤り検出方法の一例を、フローチャートを用いて説明する。
図２は、誤り検出方法の一例を示すフローチャートである。
【００１９】
たとえば、ユーザによる設定値ａの書き込み要求があると、プロセッサ２の制御のもと、設定値ａが記憶部４のレジスタ４ａに書き込まれるとともに、その複製値ａａが記憶部５に書き込まれる（ステップＳ１）。また、書き込み時期も記憶部５に記憶される（ステップＳ２）。その他の設定値ｂ，ｃについても書き込み要求があった場合には、同様にプロセッサ２の制御のもと、設定値ｂ，ｃが記憶部４のレジスタ４ｂ，４ｃに書き込まれるとともに、その複製値ｂｂ，ｃｃが記憶部５に書き込まれる。また、その書き込み時期が記憶部５に記憶される。
【００２０】
その後、ステップＳ３の処理が行われる。ステップＳ３の処理では、優先順位判定部６ａは、複数の設定値ａ〜ｃの書き込み時期に基づき、優先順位を決定する。優先順位判定部６ａは、書き込み時期が古い設定値の優先順位を高くする。たとえば、設定値ａ〜ｃの順で書き込みが行われた場合には、設定値ａの優先順位が最も高く、その次に、設定値ｂの優先順位が高く、設定値ｃの最も優先順位が低くなる。
【００２１】
その後、ステップＳ４の処理が行われる。ステップＳ４の処理では、まず比較部６ｂは、たとえば、所定期間経過した後、優先順位の最も高い設定値、すなわち、書き込み時期が最も古い設定値を記憶部４から読み出し、それに対応する複製値を記憶部５から読み出し、それらの比較検証を行う。
【００２２】
たとえば、設定値ａの優先順位が最も高い場合、設定値ａと、設定値ａに対応する複製値ａａとの比較検証が行われる。複製値ａａは、記憶部５から読み出される際にエラー検出及び訂正が行われるため、書き込み時の正しい値である可能性が高い。一方、記憶部４から読み出される設定値ａは、たとえば、記憶部４が中性子線などの影響を受け、ソフトエラーが発生し、書き込み時の値とは変わっている可能性がある。そのため、設定値ａを複製値ａａと比較することで、設定値ａの誤りを検出することが可能となる。
【００２３】
その後、ステップＳ５の更新処理が行われる。
設定値ａが、複製値ａａと異なっている場合には、比較部６ｂはその旨をプロセッサ２に通知し、プロセッサ２は、設定値ａを更新する。そして、履歴情報や優先順位も更新される。設定値ａを更新した場合には、設定値ａが最も新しいものとなるため、優先順位は最も低くなる。また、比較検証部６は、設定値ａと複製値ａａが同じである場合（誤りがない場合）は、比較した時間の情報を履歴情報に保存し、比較した時間が新しいものの優先順位を下げるようにしてもよい。
【００２４】
なお、ステップＳ５の更新処理は、比較検証部６が、記憶部５から読み出した複製値で、対応する設定値を更新するようにしてもよい。
優先順位の最も高い設定値に対して、上記のような比較検証及び更新処理が行われると、比較部６ｂは、所定期間経過後に、次に優先順位の高い設定値に対して、上記と同様の比較検証を行う。
【００２５】
以上のように、本実施の形態のマイクロコントローラ１及び誤り検出方法によれば、比較検証部６が、書き込み時期が古い、誤りが発生している可能性の高い設定値に対して、優先的に誤り検出を行う。これにより、プロセッサ２の処理を中断せずに、設定値の誤りを容易に検出できる。
【００２６】
そして、誤りがあった場合に、たとえば、プロセッサ２による設定値の更新処理が行われる。これにより、プロセッサ２の処理を設定値の更新のために定期的に中断しなくても、設定値の信頼性を容易に確保できるようになる。
【００２７】
また、誤りがあった場合、比較検証部６が、記憶部５から読み出した複製値で、対応する設定値を更新するようにしてもよい。これにより、プロセッサ２の処理を、設定値の更新処理のときも中断しなくてよくなる。
【００２８】
なお、上記の説明では、３つの周辺回路３ａ〜３ｃに対して、それぞれ１つの設定値ａ〜ｃがある場合について説明したが、各周辺回路３ａ〜３ｃに対して、それぞれ複数の設定値があってもよい。また、周辺回路の数が３つに限定されず、２つまたは４つ以上あってもよい。
【００２９】
（第２の実施の形態）
図３は、第２の実施の形態のマイクロコントローラの一例を示す図である。
マイクロコントローラ１０は、ＣＰＵ１１、バスブリッジ１２、周辺回路１３−１，１３−２，…，１３−ｎ、レジスタ１４−１，１４−２，…，１４−ｎ、ＥＣＣ付ＲＡＭ１５、比較検証部１６、クロック生成部１７、バスＢ１，Ｂ２，Ｂ３，Ｂ４を有している。
【００３０】
ＣＰＵ１１は、バスＢ１に接続されており、マイクロコントローラ１０の各部を制御する。バスブリッジ１２は、バスＢ１〜Ｂ３を相互に接続する。
周辺回路１３−１〜１３−ｎは、マイクロコントローラ１０が制御する外部機器に対する接続用のインタフェース、タイマなどである。なお、周辺回路１３−１〜１３−ｎは、マイクロコントローラ１の外部に設けられていてもよい。
【００３１】
レジスタ１４−１〜１４−ｎには、周辺回路１３−１〜１３−ｎを制御するための設定値が書き込まれる。レジスタ１４−１〜１４−ｎは、バスＢ２，Ｂ４間に接続されている。
【００３２】
ＥＣＣ付ＲＡＭ１５は、エラー検出及び１ビットのエラー訂正が可能なＲＡＭであり、レジスタ１４−１〜１４−ｎに書き込まれる設定値の複製値を保持する。ＥＣＣ付ＲＡＭ１５は、レジスタ１４−１〜１４−ｎと同じアドレス領域を持っている。また、ＥＣＣ付ＲＡＭ１５は、設定値の更新履歴や比較検証を行った履歴に関する履歴情報を格納する。ＥＣＣ付ＲＡＭ１５は、バスＢ３と比較検証部１６に接続されている。
【００３３】
比較検証部１６は、履歴情報を参照して、複数の設定値の書き込み時期や比較検証を行った時間に基づき、設定値とそれに対応する複製値を、レジスタ１４−１〜１４−ｎ、ＥＣＣ付ＲＡＭ１５から読み出し、それらの比較検証を行う。比較検証部１６は、バスＢ４とＥＣＣ付ＲＡＭ１５とクロック生成部１７に接続されている。
【００３４】
クロック生成部１７は、比較検証部１６内の後述するカウンタを動作させるためのクロックを生成する。このクロックは、ＣＰＵ１１などで用いられるクロックよりも低速のものでよい。
【００３５】
図４は、比較検証部の一例を示す図である。
比較検証部１６は、カウンタ２０、優先順位判定部２１、ＲＡＭアクセス部２２、レジスタアクセス部２３、比較部２４を有している。
【００３６】
カウンタ２０は、クロック生成部１７から供給されるクロックをカウントする。カウンタ２０は、たとえば、ＥＣＣ付ＲＡＭ１５にレジスタ１４−１〜１４−ｎの初期値が書き込まれたことを検出すると、クロックのカウントを開始する。
【００３７】
優先順位判定部２１は、履歴情報を参照して、各設定値において、最後に書き込みを行ったとき、または複製値との比較検証を行ったときのカウンタ値と、現在のカウンタ値との差を求め、比較検証を行う設定値の優先順位を判定する。その差が大きい設定値ほど、優先順位判定部２１は、優先順位を高くする。そして、優先順位判定部２１は、最も優先順位の高い設定値における上記の差が所定の値以上になったら、レジスタアクセス部２３及びＲＡＭアクセス部２２に、最も優先順位の高い設定値及びその複製値の読み出しを指示する。
【００３８】
ＲＡＭアクセス部２２は、優先順位判定部２１で読み出しを指示された複製値のアドレスをＥＣＣ付ＲＡＭ１５に供給し、ＥＣＣ付ＲＡＭ１５から読み出された複製値を、比較部２４に送る。
【００３９】
レジスタアクセス部２３は、優先順位判定部２１で読み出しを指示された設定値のアドレスをレジスタ１４−１〜１４−ｎの何れかに供給し、レジスタ１４−１〜１４−ｎの何れかから読み出された設定値を、比較部２４に送る。
【００４０】
比較部２４は、読み出された複製値と設定値とを比較し、一致しているか否かを判定する。複製値と設定値とが一致している場合、比較部２４は、比較時のカウンタ値で、ＥＣＣ付ＲＡＭ１５に格納されている履歴情報を更新する。複製値と設定値とが一致していない場合、比較部２４は、割り込みなどでその旨をＣＰＵ１１に通知する。また、比較部２４は、不一致が生じた設定値が格納されているアドレスをＣＰＵ１１に通知する。なお、複製値と設定値とが一致したときも、比較部２４は、その比較結果をＣＰＵ１１に通知するようにしてもよい。
【００４１】
次に、マイクロコントローラ１０による誤り検出方法の一例の流れを説明する。
図５は、マイクロコントローラの動作開始時の処理の一例を示すフローチャートである。
【００４２】
ステップＳ１０の処理では、ＣＰＵ１１の制御のもと、レジスタ１４−１〜１４−ｎに書き込まれている初期値が、ＥＣＣ付ＲＡＭ１５に転送され、書き込まれる。ステップＳ１１の処理では、カウンタ２０は、クロック生成部１７から供給されるクロックのカウントを開始する。
【００４３】
ステップＳ１２の処理では、優先順位判定部２１は、ＣＰＵ１１からレジスタ１４−１〜１４−ｎの何れかへの設定値の書き込みが発生したか否かを判定する。書き込みが発生していない場合には、書き込みが発生するまで、ステップＳ１２の処理が繰り返される。書き込みが発生した場合には、ステップＳ１３の処理が行われる。
【００４４】
ステップＳ１３の処理では、ＣＰＵ１１によって、ＥＣＣ付ＲＡＭ１５において、設定値が格納されたレジスタと同じアドレスに、設定値の複製値が格納される。また、優先順位判定部２１によって、書き込みが行われたときのカウンタ値が、履歴情報としてＥＣＣ付ＲＡＭ１５に格納される。その後、ステップＳ１２からの処理が繰り返される。
【００４５】
たとえば、マイクロコントローラ１０の電源がオフとなると、上記の処理が終了する。
図６は、ＥＣＣ付ＲＡＭに格納されるデータの一例を示す図である。
ＥＣＣ付ＲＡＭ１５には、ＣＰＵ１１から見たレジスタ１４−１〜１４−ｎのアドレスが割り当てられている。そして、各アドレスに対して、レジスタ１４−１〜１４−ｎの番号（Ｎｏ．１，Ｎｏ．２，…，Ｎｏ．ｎ）、レジスタ１４−１〜１４−ｎに格納される設定値の複製値（設定値の初期値）が格納されている。さらに、複製値の書き込み時に生成されるエラーコードであるＥＣＣ（ＥＣＣ  Ｎｏ．１，ＥＣＣ  Ｎｏ．２，…，ＥＣＣ  Ｎｏ．ｎ）と、レジスタ１４−１〜１４−ｎにおいて、最後に書き込みが行われたときのカウンタ値（Ｃ１〜Ｃｎ）が格納されている。
【００４６】
図７は、設定値と複製値との比較検証時の処理の一例を示すフローチャートである。
ステップＳ２０の処理では、優先順位判定部２１は、レジスタアクセス部２３を介して、レジスタ１４−１〜１４−ｎにアクセスして、周辺回路１３−１〜１３−ｎを有効または無効にするか指示する有効ビットが、有効を示すものであるか否かを判定する。
【００４７】
たとえば、全ての周辺回路１３−１〜１３−ｎの有効ビットが無効を示す場合には、周辺回路１３−１〜１３−ｎの有効ビットのうち、何れかが有効を示す値になるまで、ステップＳ２０の処理が繰り返される。
【００４８】
周辺回路１３−１〜１３−ｎの有効ビットのうち、少なくとも１つが有効を示す値である場合には、ステップＳ２１の処理が行われる。ステップＳ２１の処理では、優先順位判定部２１は、履歴情報（図６に示したようなカウンタ値）を参照する。そして、優先順位判定部２１は、各設定値において、最後に書き込みを行ったとき、または最後に複製値との比較検証を行ったときのカウンタ値と、現在のカウンタ値との差を求め、比較検証を行う設定値の優先順位を判定する。
【００４９】
たとえば、図６に示したような履歴情報（カウンタ値）において、Ｃ１＜Ｃ２＜…＜Ｃｎであるとすると、優先順位は、レジスタ１４−１の設定値、レジスタ１４−２の設定値、…、レジスタ１４−ｎの設定値の順に優先順位が低くなる。優先順位判定部２１は、たとえば、記憶部を有しており、判定した優先順位を保持する。
【００５０】
図８は、優先順位の格納例を示す図である。
優先順位判定部２１の記憶部２１ａは、たとえば、ＦＩＦＯ（First In First Out）で、判定した優先順位を、レジスタ番号Ｎｏ．１〜Ｎｏ．ｎで格納している。図８の例では、レジスタ番号Ｎｏ．１のレジスタ１４−１の設定値が最も優先順位が高く、レジスタ番号Ｎｏ．２のレジスタ１４−２の設定値、…、レジスタ番号Ｎｏ．ｎのレジスタ１４−ｎの設定値の順に優先順位が低くなる。また、優先順位判定部の記憶部２１ａは、最も優先順位の高い設定値の履歴情報（カウンタ値）を保持するようにしてもよい。たとえば、レジスタ１４−１の設定値が最も優先順位が高い場合、図６に示したカウンタ値Ｃ１が、記憶部２１ａに保持される。
【００５１】
優先順位決定後、ステップＳ２２の処理が行われる。ステップＳ２２の処理では、最も優先順位の高い設定値の上記カウンタ値と現在のカウンタ値との差が、所定の値以上のとき、優先順位判定部２１は、レジスタアクセス部２３及びＲＡＭアクセス部２２に、設定値及びその複製値の読み出しを指示する。所定の値とは、たとえば、クロック生成部１７で生成されるクロックの周期と、誤り検出を行う周期（時間）をもとに設定される。カウンタ２０がクロックの立ち上がりエッジに同期してカウントアップする場合、誤り検出を行う周期をＴｄ、クロックの周期をＴｃとすると、たとえば、Ｔｄ／Ｔｃが上記の所定値となる。
【００５２】
次に、ステップＳ２３の処理が行われる。ステップＳ２３の処理では、比較部２４は、読み出された設定値とその複製値のうち、比較不要なビットをマスクする。たとえば、周辺回路１３−１〜１３−ｎによる動作で書き変わるようなビットについては、比較しても誤りを検出できないためマスクされる（比較対象とされない）。
【００５３】
その後、ステップＳ２４の処理が行われる。ステップＳ２４の処理では、比較部２４は、読み出された複製値と設定値（マスクされていない部分）とを比較し、一致しているか否かを判定する。
【００５４】
複製値と設定値とが一致している場合、ステップＳ２５の処理が行われる。ステップＳ２５の処理では、比較部２４は、比較時のカウンタ値で、ＥＣＣ付ＲＡＭ１５に格納されている履歴情報を更新する。
【００５５】
図９は、履歴情報の更新例を示す図である。
最も優先順位が高いレジスタ１４−１の設定値に対して、複製値との比較が行われたときのカウンタ値がＣｘであった場合、ＥＣＣ付ＲＡＭに格納されるデータのうち、履歴情報を示すカウンタ値が、図９に示すように更新される。また、ステップＳ２５の処理後には、ステップＳ２１の処理に戻り、図８に示した優先順位判定部２１の記憶部２１ａに格納されている優先順位が更新される。
【００５６】
図１０は、優先順位の更新例を示す図である。
図８の例では、レジスタ番号Ｎｏ．１のレジスタ１４−１の設定値が最も優先順位が高かったが、比較検証の結果、複製値と一致している（誤りがない）と判定されたため、図１０の例では、最も優先順位が低くなっている。代わりに、図８の例で、２番目に優先順位が高かったレジスタ番号Ｎｏ．２のレジスタ１４−２の設定値が、図１０の例では最も優先順位が高くなっている。また、優先順位の更新に伴い、記憶部２１ａは、最も優先順位が高い、レジスタ１４−２の設定値に関する履歴情報（図６の例ではカウンタ値Ｃ２）を保持するようにしてもよい。
【００５７】
一方、複製値と設定値とが一致していない場合、ステップＳ２６の処理が行われる。ステップＳ２６の処理では、不一致情報が、比較検証部１６内の記憶部（たとえば、前述した記憶部２１ａ）に保存される。不一致情報には、設定値と複製値との不一致が発生したレジスタのアドレス、設定値の値、設定値の更新履歴、比較履歴、現在のカウンタ値、上記履歴を示すカウンタ値と現在のカウンタ値との差分、などが含まれる。
【００５８】
設定値の更新履歴は、たとえば、最後にその設定値の書き込み（更新）が行われたときのカウンタ値であり、比較履歴は、たとえば、前回比較検証を行ったときのカウンタ値である。
【００５９】
その後、ステップＳ２７の処理にて、比較部２４は、割り込みなどで、ＣＰＵ１１に対して、不一致が生じた旨や上記の不一致情報を通知する。これにより、たとえば、ＣＰＵ１１は、複製値と一致しなかった設定値の更新を行うようにしてもよい。たとえば、レジスタ１４−１に格納されている設定値と、その設定値の、ＥＣＣ付ＲＡＭ１５に格納されている複製値とが一致しなかった場合、ＣＰＵ１１は、設定値と複製値とを更新する。
【００６０】
なお、設定値の更新は、比較検証部１６が、ＥＣＣ付ＲＡＭから読み出された複製値を、その複製値に対応する設定値が格納されたレジスタに上書きするようにしてもよい。
ステップＳ２７の後は、ステップＳ２１の処理に戻り、たとえば、図１０に示したように、記憶部２１ａに格納される優先順位が更新される。
【００６１】
たとえば、マイクロコントローラ１０の電源がオフとなると、上記の処理が終了する。
以上のように、本実施の形態のマイクロコントローラ１０及び誤り検出方法によれば、比較検証部１６が、書き込み時期または比較検証した時期が古い、誤りが発生している可能性の高い設定値に対して、優先的に誤り検出が行われる。これにより、ＣＰＵ１１の処理を中断せずに、設定値の誤りを容易に検出できる。
【００６２】
そして、誤りがあった場合に、たとえば、ＣＰＵ１１による設定値の更新処理が行われる。これにより、ＣＰＵ１１の処理を設定値の更新のために定期的に中断しなくても、設定値の信頼性を容易に確保できるようになる。
【００６３】
また、誤りがあった場合、比較検証部１６が、ＥＣＣ付ＲＡＭ１５から読み出した複製値で、対応する設定値を更新するようにしてもよい。これにより、ＣＰＵ１１の処理を、設定値の更新処理のときも中断しなくてよくなる。
【００６４】
また、ある設定値に誤りがあった場合、比較検証部１６が、ＣＰＵ１１に対して、更新履歴や比較履歴を含む不一致情報を通知することで、現在の（誤り検出時の）カウンタ値との比較から、どのカウンタ値の範囲のときに誤りが発生したか推測できる。すなわち、誤り発生時期を推測することができる。
【００６５】
以上、実施の形態に基づき、本発明のマイクロコントローラ及び誤り検出方法の一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
【符号の説明】
【００６６】
１  マイクロコントローラ
２  プロセッサ
３ａ，３ｂ，３ｃ  周辺回路
４，５  記憶部
４ａ，４ｂ，４ｃ  レジスタ
６  比較検証部
６ａ  優先順位判定部
６ｂ  比較部
【図１】
2014232420.tif 000003
【図２】
2014232420.tif 000004
【図３】
2014232420.tif 000005
【図４】
2014232420.tif 000006
【図５】
2014232420.tif 000007
【図６】
2014232420.tif 000008
【図７】
2014232420.tif 000009
【図８】
2014232420.tif 000010
【図９】
2014232420.tif 000011
【図１０】
2014232420.tif 000012