(57)【要約】【課題】  安全関連のアプリケーションにおけるマイクロコントローラシステム用の安全なリセット技術を提供する。【解決手段】  マイクロコントローラシステムは、プロセッシングユニット、第１のレジスタセットを有した第１の周辺機器、及びアシュアランスモジュールを含む。第１の周辺機器は、第１のレジスタセットを第１の期待値であると予想される第１の実際のリセット値にリセットする第１のリセット信号を受信するように構成される。アシュアランスモジュールは、第１のリセット信号に応答して、第１の実際のリセット値に基づく第１のシグネチャ値を計算するように構成される。プロセッシングユニットは、マイクロコントローラシステムが信頼できる安全状態にあるか否かを決定するために、計算された第１のシグネチャ値と所定の第１のシグネチャ値との第１の比較を行うように構成される。第１の比較は、第１のリセット信号に応答して行われ、所定の第１のシグネチャ値は、第１の期待値に基づく。【選択図】    図１
2018160240.tif 000002
【特許請求の範囲】
【請求項１】
プロセッシングユニットと、
バスインタフェースによって前記プロセッシングユニットに接続され、及び第１のレジスタセットを有する第１の周辺機器であって、前記第１の周辺機器が、前記第１のレジスタセットを第１の実際のリセット値にリセットする第１のリセット信号を受信するように構成され、及び前記第１の実際のリセット値が、前記第１のリセット信号に応答した第１の期待値であると予想される、第１の周辺機器と、
前記第１のリセット信号に応答して、第１のシグネチャ値を計算するように構成されたアシュアランスモジュールであって、前記第１のシグネチャ値が、前記第１の実際のリセット値に基づく、アシュアランスモジュールと、
を備えたマイクロコントローラシステムであって、
前記プロセッシングユニットが、前記マイクロコントローラシステムが信頼できる安全状態にあるか否かを決定するために、前記計算された第１のシグネチャ値と、所定の第１のシグネチャ値との第１の比較を行うように構成され、前記第１の比較が、前記第１のリセット信号に応答して行われ、及び前記所定の第１のシグネチャ値が、前記第１の期待値に基づく、マイクロコントローラシステム。
【請求項２】
前記計算された第１のシグネチャ値が、前記所定の第１のシグネチャ値とビットに関して同一である場合に、前記マイクロコントローラシステムが、前記信頼できる安全状態にある、請求項１に記載のマイクロコントローラシステム。
【請求項３】
前記プロセッシングユニットが、前記計算された第１のシグネチャ値が前記所定の第１のシグネチャ値と異なるか否かに基づいて選択的にエラーのフラグを立て、それによって前記マイクロコントローラシステムが潜在的に安全でない状態にあることを示すように構成される、請求項１に記載のマイクロコントローラシステム。
【請求項４】
前記プロセッシングユニットが、前記マイクロコントローラシステムが前記潜在的に安全でない状態にあるという通知をアプリケーションプログラムに提供するように構成されるとともに、前記通知に応答して前記アプリケーションプログラムから受信された命令に基づいて、選択的に前記第１の周辺機器をリセットする、又は前記第１の周辺機器がリセットされることなく前記潜在的に安全でない状態で動作を継続することを許可するようにさらに構成される、請求項３に記載のマイクロコントローラシステム。
【請求項５】
前記バスインタフェースによって前記プロセッシングユニットに接続され、及び第２のレジスタセットを有する第２の周辺機器をさらに含み、前記第２の周辺機器が、前記第１のレジスタセットを設定又はリセットすることなく、前記第２のレジスタセットを第２の実際のリセット値にリセットする第２のリセット信号を受信するように構成され、及び前記第２の実際のリセット値が、第２の期待リセット値であると予想される、請求項１に記載のマイクロコントローラシステム。
【請求項６】
前記第１のリセット信号が、前記第２のレジスタセットを設定又はリセットすることなく、前記第１のレジスタセットをリセットする、請求項５に記載のマイクロコントローラシステム。
【請求項７】
前記アシュアランスモジュールが、前記第２のリセット信号に応答して、第２のシグネチャ値を計算するようにさらに構成され、前記第２のシグネチャ値が、前記第２の実際のリセット値に基づき、及び前記第１の実際のリセット値に依存せず、並びに
前記プロセッシングユニットが、前記計算された第２のシグネチャ値と所定の第２のシグネチャ値との第２の比較を行うように構成され、前記第２の比較が、前記第２のリセット信号に応答して行われ、及び前記マイクロコントローラシステムが前記信頼できる安全状態にあるか否かを決定付ける、請求項５に記載のマイクロコントローラシステム。
【請求項８】
前記第１及び第２の周辺機器がそれぞれ、前記第１のレジスタを前記第１の実際のリセット値にリセットし、及び前記第２のレジスタを前記第２の実際のリセット値にリセットする第３のリセット信号を受信するように構成され、前記アシュアランスモジュールが、前記第３のリセット信号に応答して第３のシグネチャ値を計算するようにさらに構成され、前記第３のシグネチャ値が、前記第２の実際のリセット値に基づき、及び前記第１の実際のリセット値に依存せず、並びに
前記プロセッシングユニットが、前記計算された第３のシグネチャ値と所定の第３のシグネチャ値との第３の比較を行うように構成され、前記第３の比較が、前記第２のリセット信号に応答して行われ、及び前記マイクロコントローラシステムが前記信頼できる安全状態にあるか否かを決定付ける、請求項５に記載のマイクロコントローラシステム。
【請求項９】
前記アシュアランスモジュールが、読み出し専用メモリ（ＲＯＭ）に固定値として保存された実行可能命令のセットを含む、請求項１に記載のマイクロコントローラシステム。
【請求項１０】
前記アシュアランスモジュールが、ワンタイムプログラマブル（ＯＴＰ）メモリに固定値として保存された実行可能命令のセットを含む、請求項１に記載のマイクロコントローラシステム。
【請求項１１】
前記アシュアランスモジュールが、半導体基板に配置された論理回路として実装される、請求項１に記載のマイクロコントローラシステム。
【請求項１２】
マイクロコントローラ及び複数のレジスタを含むシステムにおける安全なリセットの方法であって、
リセット信号を検出し、及び前記リセット信号に基づいて前記複数のレジスタの少なくとも幾つかをリセットするステップであって、前記リセットが、前記複数のレジスタの前記少なくとも幾つかを、それぞれの所定の初期化値に設定することが期待される、ステップと、
前記所定の初期化値に基づいて、シグネチャ値を計算するステップと、
前記計算されたシグネチャ値を所定のシグネチャ値と比較することによって、前記複数のレジスタの前記少なくとも幾つかが、正しく初期化したか否かを決定するステップと、
前記計算されたシグネチャ値が、前記所定のシグネチャ値とビットに関して同一である場合にのみ、前記システムを信頼できる状態で動作させ、及び前記計算されたシグネチャ値が、前記所定のシグネチャ値と異なる場合に、低下した安全状態又は安全でない状態に入るステップと、
を含む、方法。
【請求項１３】
前記低下した安全状態において、前記複数のレジスタの前記少なくとも幾つかの内の誤ったレジスタを識別するステップであって、前記誤ったレジスタは、それの所定の期待初期化値に初期化できなかったものである、ステップと、
前記誤ったレジスタが、必須のレジスタであるか否かを決定するステップと、
前記誤ったレジスタが、必須のレジスタであるか否かに基づいて、選択的に前記誤ったレジスタをリセットする、又は選択的に前記システムを前記低下した安全状態で動作させるステップと、
をさらに含む、請求項１２に記載の方法。
【請求項１４】
前記誤ったレジスタが必須のレジスタである場合、前記システムが、安全でない状態にあると見なされるとともに、前記誤ったレジスタが識別された後、前記システムが前記安全でない状態で動作することを許可せずに、前記誤ったレジスタがリセットされる、請求項１３に記載の方法。
【請求項１５】
前記誤ったレジスタが必須のレジスタではない場合、通知がアプリケーションに送られ、及び前記アプリケーションが、前記低下した安全状態で前記システムを動作させるか、又は前記システムが前記低下した安全状態で動作を継続することを許可せずに前記誤ったレジスタをリセットするかを選択する、請求項１３に記載の方法。
【請求項１６】
プロセッシングユニットと、
バスインタフェースによって前記プロセッシングユニットに結合された複数の周辺機器と、
前記プロセッシングユニット及び前記複数の周辺機器に結合されたリセットモジュールであって、前記リセットモジュールが、前記複数の周辺機器の異なる組み合わせをリセットする複数のリセット信号を提供するように構成され、第１のリセット信号が、前記複数の周辺機器の第１の組み合わせをリセットし、及び第２のリセット信号が、前記複数の周辺機器の第２の組み合わせをリセットする、リセットモジュールと、
前記第１のリセット信号に応答して第１のシグネチャ値を計算し、及び前記第２のリセット信号に応答して第２のシグネチャ値を計算するように構成されたアシュアランスモジュールであって、前記第１のシグネチャ値は、前記複数の周辺機器の前記第１の組み合わせのレジスタの実際のリセット値に基づき、及び前記第２のシグネチャ値は、前記複数の周辺機器の前記第２の組み合わせのレジスタの実際のリセット値に基づく、アシュアランスモジュールと、
を含む、マイクロコントローラシステム。
【請求項１７】
前記プロセッシングユニットが、前記マイクロコントローラシステムが信頼できる安全状態にあるか否かを決定するために、前記計算された第１のシグネチャ値と、所定の第１のシグネチャ値との第１の比較を行うように構成され、前記第１の比較が、前記第１のリセット信号に応答して行われ、及び前記所定の第１のシグネチャ値が、前記複数の周辺機器の前記第１の組み合わせの前記レジスタの期待リセット値に基づく、請求項１６に記載のマイクロコントローラシステム。
【請求項１８】
前記プロセッシングユニットが、前記マイクロコントローラシステムが前記信頼できる安全状態にあるか否かを決定するために、前記計算された第２のシグネチャ値と、所定の第２のシグネチャ値との第２の比較を行うように構成され、前記第２の比較が、前記第２のリセット信号に応答して行われ、及び前記所定の第２のシグネチャ値が、前記複数の周辺機器の前記第２の組み合わせの前記レジスタの期待リセット値に基づく、請求項１７に記載のマイクロコントローラシステム。
【請求項１９】
前記アシュアランスモジュールが、読み出し専用メモリ（ＲＯＭ）又はワンタイムプログラマブル（ＯＴＰ）メモリに固定値として保存された実行可能命令のセットを含む、請求項１６に記載のマイクロコントローラシステム。
【請求項２０】
前記アシュアランスモジュールが、半導体基板に配置された論理回路として実装される、請求項１６に記載のマイクロコントローラシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
安全関連のアプリケーションに関して、アプリケーションの全段階において、それらの意図された機能性をマイクロコントローラが正しく実行することを確実にすることが重要である。この実行は、ハードウェア及びソフトウェア両方のコンポーネントのそれらの仕様に対する正確さと、この機能性のフォールトフリー実行とを担う。一般に、安全関連のアプリケーションは、システムの不具合を回避する、及びアプリケーションの実行中に起こり得るランダムなハードウェアの不具合に対して検出及び対応する特別な手段を用いて構築される。
【０００２】
しかしながら、マイクロコントローラが、最初の起動時、又は既知の状態から（例えば、リセットトリガ後）の再起動時に、マイクロコントローラは、その製造時にマイクロコントローラに組み込まれた起動コードを実行する。マイクロコントローラの起動が、起動中にハードウェアの不具合によって影響を受けると、ハードウェア及びソフトウェアの残りの部分がフォールトフリーであったとしても、もはや意図された機能性を正しく行うことができない場合がある。つまり、マイクロコントローラの起動段階中の不具合は、安全関連のアプリケーションの実行に波及し、よって、潜在的に安全でない状況の原因となり得る。
【０００３】
本開示の局面は、添付の図面と共に読まれた場合の以下の詳細な説明から、最もよく理解される。なお、当業界の一般的な慣例に従って、様々な特徴が、正確な縮尺率で描かれていない。実際、様々な特徴の寸法は、説明を明確にするために、任意に増加又は減少させている場合がある。
【図面の簡単な説明】
【０００４】
【図１】幾つかの実施形態による、安全なリセット動作を利用したマイクロコントローラシステムのブロック図を示す。
【図２】幾つかの実施形態による、安全なリセット動作の方法のフロー図を示す。
【図３】幾つかの実施形態による、安全なリセット動作の方法のフロー図を示す。
【図４】幾つかの実施形態による、安全なリセット動作を利用したマイクロコントローラシステムのブロック図を示す。
【図５】幾つかの実施形態による、安全なリセット動作の方法のフロー図を示すとともに、図４に関して非限定的に記載される。
【発明を実施するための形態】
【０００５】
以下の詳細な説明は、本開示の一部を構成し、且つ例示を目的として、それによって本開示を実際的に実現することができる特別な実施形態例が示される添付の図面を参照する。本開示の保護の範囲を越えることなく、他の実施形態例が用いられてもよく、並びに構造上の及び他の変更が実施されてもよいことが理解される。従って、以下の詳細な説明は、制限的なものと見なされるものではない。正確には、本開示の保護の範囲は、添付の特許請求の範囲によってのみ定義される。
【０００６】
図１は、幾つかの実施形態によるマイクロコントローラシステム１００を示す。マイクロコントローラシステム１００は、プロセッシングユニット１０２、第１の周辺機器１０４、第２の周辺機器１０６、及びアシュアランスモジュール１０８を含む。プロセッシングユニット１０２、第１の周辺機器１０４、第２の周辺機器１０６、及びアシュアランスモジュール１０８は、それぞれバスインタフェース１１０に結合され、一般的な実施態様において、バスインタフェースによって互いに通信することができる。プロセッシングユニット１０２、第１の周辺機器１０４、第２の周辺機器１０６、及びアシュアランスモジュール１０８は、１つ又は複数の集積回路（ＩＣ）として実装されてもよく、それぞれが、例えば、単結晶シリコン基板又はシリコン・オン・インシュレータ基板などの半導体基板上に配置される。幾つかの実施形態では、アシュアランスモジュール１０８は、所望の機能性を実行するためにプロセッシングユニット１０２によって実行される一連のコンピュータ可読命令として実装されてもよい。
【０００７】
第１の周辺機器１０４は、第１のレジスタセット１０４Ｒを有し、第１のレジスタセット１０４Ｒを第１の実際のリセット値にリセットする第１のリセット信号Ｒ１を受信するように構成される。第１の実際のリセット値は、第１のリセット信号に応答した第１の期待リセット値であると予想されるが、何らかのエラーが生じた場合に、第１の期待リセット値とは異なり得る。
【０００８】
第２の周辺機器１０６は、第１のレジスタセット１０４Ｒとは異なる第２のレジスタセット１０６Ｒを有する。第２の周辺機器１０６は、第１のリセット信号Ｒ１とは異なり、且つ第１のレジスタセット１０４Ｒを設定又はリセットすることなく、第２のレジスタセット１０６Ｒを第２の実際のリセット値にリセットする第２のリセット信号Ｒ２を受信するように構成される。第１の実際のリセット値と同様に、第２の実際のリセット値は、第２のリセット信号Ｒ２に応答した第２の期待リセット値であると予想されるが、何らかのエラーが生じた場合に、第２の期待リセット値とは異なり得る。
【０００９】
第１及び第２のリセット信号Ｒ１、Ｒ２（幾つかの文脈では、アプリケーションリセット又はシステムリセットとも呼ばれる場合がある）はそれぞれ、第１の周辺機器１０４又は第２の周辺機器１０６の一方をリセットするが（ただし、第１及び第２の周辺機器の両方ではない）、第３の種類のリセット信号Ｒ３（システムリセット又はパワーオンリセットとも呼ばれる場合がある）は、第１の周辺機器１０４及び第２の周辺機器１０６の両方を同時にリセットすることができる。本出願で使用される「リセット」という用語は、幾つかの文脈では、レジスタのデジタルビットがゼロの論理値に「リセット」される「リセット」動作と呼ばれるものを含み得るが、幾つかの文脈では、レジスタのデジタルビットが１の論理値に「設定」される「設定」動作と呼ばれるものも含み得ることが認識されるだろう。従って、「リセット」という用語は、レジスタをある所定の状態にプログラムすると解釈されるものであり、レジスタを論理ゼロ状態にプログラムすることにのみ限定されない。
【００１０】
受信されたリセット信号がどのような特定の種類であろうと、第１の周辺機器１０４及び／又は第２の周辺機器１０６のリセット中に、システム障害、アルファ粒子の衝突、又は他の予期せぬ事象が生じた場合に、第１のレジスタセット１０４Ｒの第１の実際のリセット値及び／又は第２のレジスタセット１０６Ｒの第２の実際のリセット値は、第１の期待リセット値及び／又は第２の期待リセット値とそれぞれ異なる可能性がある。例えば、第１の期待リセット値が０ｘ００００であるが、予期せぬ事象が、リセット直後の第１の実際のリセット値が０ｘ０１００の状態にあることを生じさせる場合、第１の期待リセット値と第１の実際のリセット値との差は、第１の周辺機器１０４のリセット中に不具合が生じたことを示す可能性があり、これは、潜在的に、マイクロコントローラシステム１００における問題の原因となり得る。
【００１１】
従って、アシュアランスモジュール１０８は、例えば図２〜３のフロー図に関して、より詳細にこれから説明されるように、第１及び第２の周辺機器１０４、１０６が信頼できる状態にリセットされたことを保証する助けとして、それぞれのリセット直後に第１及び第２の周辺機器１０４、１０６のシグネチャ値を計算するように構成される。図２〜３は、一連の行為として記載されるが、これらの行為は、行為の順序が他の実施形態では変更できる点において限定的ではなく、図２〜３の方法も図１の構造に限定されるのではなく、他の構造に適用可能であることが認識されるだろう。他の実施形態では、図示及び／又は記載された幾つかの行為が、全体的に又は部分的に省略されてもよい。同じことが、図５に示されるフローチャートなどの、本明細書に開示される他の方法にも当てはまる。
【００１２】
これより図２を参照して、ブロック２０２では、リセット信号が、例えば図１の第１の周辺機器１０４又は第２の周辺機器１０６などの周辺機器によって受信される。
【００１３】
ブロック２０４では、プロセッシングユニット１０２が、リセット信号を認識し、読み出し専用メモリ（ＲＯＭ）及び／又はフラッシュメモリからファームウェア及び／又はブートコードを実行する。このファームウェア及び／又はブートコードは、周辺機器のレジスタをリセットし、これは、ファームウェア及び／又はブートコードが初期状態にインストールすることを意味する。例えば、図１の例では、第１のリセット信号Ｒ１がアサートされたことを認識すると、プロセッシングユニット１０２は、第１のレジスタセット１０４Ｒをリセットするファームウェア及び／又はブートコードを実行することができる。例えば、第１の周辺機器１０４が、３２ビットバスインタフェースに接続するタイマモジュールである場合、タイマモジュールは、３２ビット制御レジスタ、３２ビット入力データレジスタ、及び３２ビット出力データレジスタを含むことができる。理想的には、周辺機器のレジスタは、それらの期待リセット値に設定又はリセットされるが、予期せぬ事象が、レジスタの実際のリセット値を、それらの期待リセット値とは異ならせる可能性がある。例えば、ある場合には、リセット信号が、タイマモジュールの制御レジスタを所定値（例えば、１６進数で、０ｘ００００＿００１１）に設定すると同時に、入力データレジスタ及び出力データレジスタを所定値（例えば、０ｘ００００＿００００）にリセットすることが期待できる、あるいは、入力データレジスタ及び／又は出力データレジスタを変化させずに、タイマモジュールの制御レジスタを所定値（例えば、０ｘ００００＿００１１）に設定することが期待できる。
【００１４】
ブロック２０６では、リセット信号に応答して、アシュアランスモジュール１０８が、リセットされた周辺機器のレジスタに関してシグネチャを計算する。例えば、前段落に記載した例を継続し、且つ図１を参照して、アサートされた第１のリセット信号Ｒ１に応答して、アシュアランスモジュール１０８は、第１の周辺機器１０４のリセット直後に、計算されたシグネチャ値を取得するために、第１のレジスタセット１０４Ｒに関して、チェックサム、ハッシュ、又は他のアシュアランス値を計算することができる。第１のシグネチャ値は、リセット直後の第１のレジスタセット１０４Ｒに含まれる第１の実際のリセット値に基づく。例えば、第１の周辺機器１０４が、それの制御レジスタが０ｘ０００＿００１１にリセットされると期待されたタイマモジュールである場合、幾つかの実施形態では、アシュアランスモジュール１０８は、タイマモジュールの制御レジスタの実際のリセット値のみに基づいて、チェックサム（例えば、１バイト又は８ビットチェックサム）を計算することができる。他の実施形態では、アシュアランスモジュール１０８は、制御レジスタ、入力データレジスタ、及び出力データレジスタの実際の値に関してチェックサム（例えば、１バイト又は８ビットチェックサム）を計算することができる。従って、計算されたシグネチャは、周辺機器のレジスタから実際のリセット値を読み出すことによって、周辺機器がリセットされた実際の態様を考慮に入れる。第１のシグネチャ値は、単一ビット（例えば、パリティビット）、マルチビットチェックサム、ハッシュ値、巡回冗長検査、又は消費されるメモリを制限するため、及び幾つかの点で処理速度を向上させるためにチェックされるレジスタのフルセットよりも一般的にビットサイズが小さい別のアシュアランス値でもよい。
【００１５】
ブロック２０８では、プロセッシングユニット１０２及び／又はアシュアランスモジュール１０８が、計算されたシグネチャ値が、期待シグネチャ値とビットに関して同一であるか否かを決定する。従って、図１に関して記載された例を継続して、第１のシグネチャ値が計算された後、プロセッシングユニット１０２及び／又はアシュアランスモジュール１０８は、計算された第１のシグネチャ値と、所定の第１のシグネチャ値との第１の比較を行うことによって、マイクロコントローラシステム１００が信頼できる安全状態にあるか否かを決定する。所定の第１のシグネチャ値は、リセットが生じる前に決定されることが可能で、例えば、マイクロコントローラシステム１００で実行中の、及び／又はその他の方法でメモリに保存されたアプリケーションプログラム（例えば、ソフトウェア）によって提供されてもよい。第１の比較は、第１のリセット信号Ｒ１に応答して行われ、所定の第１のシグネチャ値は、第１の期待リセット値に基づき、及び第１のレジスタセット１０４Ｒから読み出された第１の実際のリセット値に依存しない。多くの場合、マイクロコントローラシステム１００は、計算された第１のシグネチャ値が、期待された第１のシグネチャ値とビットに関して同一である場合に、信頼できる安全状態にあると見なされる。
【００１６】
計算されたシグネチャ値が、期待シグネチャ値と等しければ（２０８においてＹＥＳ）、ブロック２１０において、マイクロコントローラシステム１００は、信頼できる安全状態にあると見なされ、２１２において、周辺機器及び／又はマイクロコントローラシステム１００の通常動作が、続いて生じる。
【００１７】
しかしながら、計算されたシグネチャ値が期待シグネチャ値と異なる場合（２０８においてＮＯ）、２１４において、マイクロコントローラシステムは、潜在的に安全でない状態にあると見なされる。従って、プロセッシングユニット１０２及び／又はアシュアランスモジュール１０８は、一般的にマイクロコントローラシステム１００上で実行しているオペレーティングシステムソフトウェアによって、２１６において、アプリケーションソフトウェアに潜在的に安全でない状態を通知する。
【００１８】
２１８において、アプリケーションソフトウェアは、一般的にオペレーティングシステムによって、それが潜在的に安全でない状態で周辺機器及び／又はマイクロコントローラシステム１００の動作を継続しようとするか否かをマイクロコントローラシステム１００に通知することができる。アプリケーションが、潜在的に安全でない状態で継続しようとする場合（２１８においてＹＥＳ）、２２０において、マイクロコントローラシステムは、低下した安全状態にあると見なされ得るが、２１２において、通常の周辺機器動作は、なお続行される。
【００１９】
一方、アプリケーションが、潜在的に安全でない状態で継続しようとしないことを決定した場合（２１８においてＮＯ）、アプリケーションは、周辺機器の別のリセットをトリガする命令を提供することができ、周辺機器が通常動作に入ることを阻止することができる。このようにして、アプリケーションは、安全でない状態が実際にどれほど危険なのかを決定する決定権を持ち、適切な対応策を取ることができる。例えば、マイクロコントローラシステム１００が、自動車システムに実装される場合、アプリケーションは、安全でない状態が、車両の運転を許可するには危険すぎることを決定することができるとともに、例えば車両がエンジンを始動させることを阻止する予防策を講じることができる。
【００２０】
図３は、幾つかの実施形態による、及び図２の実施形態と様々な様式で組み合わせられてもよい安全なリセットの別の方法を示す。１つのリセット信号のみが示された図２と比較して、図３の実施形態は、３つの異なるリセット信号、すなわち、異なる周辺機器及び／又は異なる周辺機器の組み合わせをリセットする、第１のリセット信号Ｒ１（ブロック３０２を参照）、第２のリセット信号Ｒ２（ブロック３１２を参照）、及び第３のリセット信号Ｒ３（ブロック３２２を参照）を利用する。例示及び明瞭さを目的として、図３の方法の実施態様例は、図１のマイクロコントローラシステムに関して以下に説明される。
【００２１】
３０２では、第１のリセット信号が、第２の周辺機器の第２のレジスタセットをリセットすることなく、第１の周辺機器の第１のレジスタセットをリセットする。例えば、前の図１に関して、第１のリセット信号Ｒ１は、第２のレジスタセット１０６Ｒを設定する又はリセットすることなく、第１のレジスタセット１０４Ｒが第１の所定の値にリセットされるように、第１の周辺機器１０４をリセットすることができる。
【００２２】
３０４では、第１の実際のシグネチャ値が、第１のレジスタセット１０４Ｒに関して計算される。幾つかの実施形態では、アシュアランスモジュール１０８が、第１のレジスタセット１０４Ｒの第１の実際のリセット値を読み出した後、第１のレジスタセット１０４Ｒから読み出された実際のリセット値に基づいて第１の実際のシグネチャ値を決定する際に、この第１の実際のシグネチャ値を計算することができる。例えば、第１のレジスタセット１０４Ｒが実際に０ｘ００１０＿００００にリセットされ、且つ第１の実際のシグネチャ値が、第１の実際のリセット値のビットの合計か否かを示す単一パリティビットを提供する単純なチェックサムである場合、シグネチャ値は、この例では、「１」となる。
【００２３】
３０６では、本方法は、第１の計算されたシグネチャ値が第１の期待シグネチャ値と等しいか否かを決定する。第１の期待シグネチャ値は、メモリに保存することができ、及び第１のリセット信号がアサートされるより前に、予め決定することができる。例えば、第１のレジスタセットが０ｘ００００＿００００にリセットされると期待された場合に、対応するパリティビットチェックサムは、第１の期待シグネチャ値に関して「０」となる。
【００２４】
計算されたシグネチャ値が期待シグネチャ値と等しい場合（３０６においてＹＥＳ）、ブロック３０８において、マイクロコントローラシステム１００は、信頼できる安全状態にあると見なされる。図２の３１０を参照のこと。本方法は次に、別のリセット信号が受信されるまで、信頼できる安全状態で動作の継続を進める。第１のリセット信号Ｒ１、第２のリセット信号Ｒ２、又は第３のリセット信号Ｒ３が受信されたかに応じて、本方法は、それぞれ３０２、３１２、又は３２２に進む。
【００２５】
しかしながら、計算されたシグネチャ値が期待シグネチャ値と異なる場合（３０６においてＮＯ）、３１１において、第１の周辺機器１０４は（従ってマイクロコントローラシステム１００も）、潜在的に安全でない状態にあると見なされる。図２の３１０を参照のこと。例えば、前の幾つかの段落における我々の例では、第１の計算されたシグネチャは、「１」であり、及び第１の期待シグネチャは「０」であるので、第１の周辺機器１０４は、潜在的に安全でない状態にあり、これは、どんな理由であれ、第１のレジスタセット１０４Ｒのビットが、期待通りにリセットされた状態にならなかったことを意味する。図２のブロック３１０に示されるように、アプリケーションが潜在的に安全でない状態で進行することを望む場合には、それは、そのようにすることができ、第１の周辺機器１０４の通常動作が実行され、あるいは、アプリケーションが潜在的に安全でない状態で進行しようとしない場合には、アプリケーションは、例えば、第１のリセット信号Ｒ１を再アサートすることによって、第１の周辺機器１０４のリセットをトリガすることができる。どちらにせよ、図３では、ある時点で、別のリセット信号を受信することができる。第１のリセット信号Ｒ１、第２のリセット信号Ｒ２、又は第３のリセット信号Ｒ３が受信されたかに応じて、本方法は、それぞれブロック３０２、ブロック３１２、又はブロック３２２に進むことができる。
【００２６】
３１２では、第２のリセット信号Ｒ２が、第１の周辺機器１０４の第１のレジスタセット１０４Ｒをリセットすることなく、第２の周辺機器１０６の第２のレジスタセット１０６Ｒをリセットする。例えば、前の図１に関して、第２のリセット信号Ｒ２は、第１のレジスタセット１０４Ｒを設定又はリセットすることなく、第２のレジスタセット１０６Ｒが第２の所定の値にリセットされるように、第２の周辺機器１０６をリセットすることができる。
【００２７】
３１４では、アシュアランスモジュールが、第２のレジスタセット１０６Ｒの第２の実際のシグネチャ値を計算する。この第２の実際のシグネチャ値は、第２のレジスタセット１０６Ｒの値を読み出した後、第２のレジスタセット１０６Ｒから読み出された値に基づいて第２の実際のシグネチャ値を決定するアシュアランスモジュールによって計算される。
【００２８】
３１６では、本方法は、第２の計算されたシグネチャ値が第２の期待シグネチャ値と等しいか否かを決定する。第２の期待シグネチャ値は、メモリに保存することができ、及び第２のリセット信号Ｒ２がアサートされるより前に、予め決定することができる。
【００２９】
第２の計算されたシグネチャ値が第２の期待シグネチャ値に等しい場合（３１６においてＹＥＳ）、ブロック３１８において、マイクロコントローラシステム１００は、信頼できる安全状態にあると見なされる。図２の３１０を参照のこと。本方法は次に、別のリセット動作が受信されるまで、信頼できる安全状態で動作の継続を進める。第１のリセット信号Ｒ１、第２のリセット信号Ｒ２、又は第３のリセット信号Ｒ３が受信されるかに応じて、本方法は、それぞれ３０２、３１２、又は３２２に進むことができる。
【００３０】
しかしながら、計算されたシグネチャ値が第２の期待シグネチャ値と異なる場合（３０６においてＮＯ）、３２１において、第２の周辺機器は（従ってマイクロコントローラシステム１００も）、潜在的に安全でない状態にあると見なされる。図２の３１０を参照のこと。アプリケーションが潜在的に安全でない状態で進行することを望む場合には、それは、そのようにすることができ、第２の周辺機器１０６の通常動作が実行され、あるいは、アプリケーションが潜在的に安全でない状態で進行しようとしない場合には、アプリケーションは、例えば、第２のリセット信号Ｒ２を再アサートすることによって、第２の周辺機器１０６のリセットをトリガすることができる。どちらにせよ、ある時点で、別のリセット信号を受信することができる。第１のリセット信号Ｒ１、第２のリセット信号Ｒ２、又は第３のリセット信号Ｒ３が受信されるかに応じて、本方法は、それぞれブロック３０２、ブロック３１２、又はブロック３２２に進むことができる。
【００３１】
３２２では、第３のリセット信号が、第１の周辺機器１０４の第１のレジスタセット１０４Ｒ及び第２の周辺機器１０６の第２のレジスタセット１０６Ｒの両方をリセットする。
【００３２】
３２４では、アシュアランスモジュールが、第１のレジスタセット１０４Ｒ及び第２のレジスタセット１０６Ｒに関して第３の実際のシグネチャ値を計算する。この第３の実際のシグネチャ値は、第１のレジスタセット１０４Ｒ及び第２のレジスタセット１０６Ｒの値を読み出した後、第１及び第２のレジスタセットから読み出された値に基づいて第３の実際のシグネチャ値を決定するアシュアランスモジュールによって計算される。
【００３３】
３２６では、本方法は、第３の計算されたシグネチャ値が第３の期待シグネチャ値と等しいか否かを決定する。第３の期待シグネチャ値は、メモリに保存することができ、及び第３のリセット信号がアサートされるより前に、予め決定することができる。
【００３４】
第３の計算されたシグネチャ値が、第３の期待シグネチャ値と等しい場合（３２６においてＹＥＳ）、ブロック３２８において、マイクロコントローラシステム１００は、信頼できる安全状態にあると見なされる。図２の３１０を参照のこと。本方法は次に、別のリセット動作が受信されるまで、信頼できる安全状態で動作の継続を進める。第１のリセット信号Ｒ１、第２のリセット信号Ｒ２、又は第３のリセット信号Ｒ３が受信されたかに応じて、本方法は、それぞれ３０２、３１２、又は３２２に進むことができる。
【００３５】
しかしながら、計算されたシグネチャ値が、第３の期待シグネチャ値と異なる場合（３２６においてＮＯ）、３３１において、第１の周辺機器１０４及び／又は第２の周辺機器１０６の少なくとも一方は（従ってマイクロコントローラシステム１００も）、潜在的に安全でない状態にあると見なされる。図２の３１０を参照のこと。アプリケーションが潜在的に安全でない状態で進行することを望む場合には、それは、そのようにすることができ、第１の周辺機器１０４及び第２の周辺機器１０６の通常動作が実行され、あるいは、アプリケーションが潜在的に安全でない状態で進行しようとしない場合には、アプリケーションは、例えば、第３のリセット信号Ｒ３を再アサートすることによって、第１の周辺機器１０４及び第２の周辺機器１０６両方のリセットをトリガすることができる。どちらにせよ、ある時点で、別のリセット信号を受信することができる。第１のリセット信号、第２のリセット信号、又は第３のリセット信号が受信されたかに応じて、本方法は、それぞれブロック３０２、ブロック３１２、又はブロック３２２に進むことができる。
【００３６】
図４は、幾つかの実施形態による別のマイクロコントローラシステム４００を示す。マイクロコントローラシステム４００は、リセットモジュール４０２、プロセッシングユニット４０４、及びタイマ４０６と、電源４０８と、シリアルポート４１０と、クロックモジュール４１２と、入力／出力（Ｉ／Ｏ）ポート４１４と、メモリ４１６とを含む幾つかの周辺機器／モジュールを含む。プロセッシングユニット４０４及び周辺機器は、Ｎビットバスインタフェース（Ｎは、一般的に、８、１６、３２、６４、１２８等である）などのバスインタフェース４１９によって互いに動作可能に結合される。従って、様々な実施形態において、周辺機器４０６〜４１６の何れも、図１〜３に関して前述の通り、第１の周辺機器又は第２の周辺機器に対応することができ、そのため、対応する機能性を示すことができる。幾つかの実施形態に従った、より詳細な実施例を以下に記載する。
【００３７】
リセットモジュール４０２は、第１のリセット信号Ｒ１（例えば、パワーオンリセット信号）、第２のリセット信号Ｒ２（例えば、システムリセット）、及び第３のリセット信号Ｒ３（例えば、アプリケーションリセット信号）を含む複数のリセット信号を提供する。リセット信号は、バスインタフェース４１９上で、又は別々のリセットラインによって、様々なモジュールに提供することができ、モジュールの異なる組み合わせをリセットすることができる。例えば、第１のリセット信号Ｒ１は、プロセッシングユニット４０４、タイマ４０６、電源４０８、シリアルポート４１０、クロックモジュール４１２、Ｉ／Ｏポート４１４、及びメモリ４１６を含むマイクロコントローラシステム４００の全てのモジュールをリセットすることができる。第２のリセット信号Ｒ２は、プロセッシングユニット４０４、タイマ４０６、シリアルポート４１０、クロックモジュール４１２、Ｉ／Ｏポート４１４、及びメモリ４１６を含む（但し、電源４０８は含まない）第１のモジュールサブセットをリセットすることができる。第３のリセット信号Ｒ３は、プロセッシングユニット４０４及びタイマ４０６を含む（但し、シリアルポート４１０、電源４０８、クロックモジュール４１２、Ｉ／Ｏポート４１４、又はメモリ４１６は含まない）第２のモジュールサブセットをリセットすることができる。
【００３８】
モジュールが、リセット信号を受信し、それに応じてリセット動作を経た直後に、リセット動作後に期待される状態に実際にあることを検証するために、アシュアランスモジュール４２０が含まれる。図４のマイクロコントローラシステム４００のより詳細な機能性を、図５に関して以下に記載する。
【００３９】
ブロック５０２では、マイクロコントローラシステム４００が、例えば、ユーザイベント（例えば、ユーザがキーを車両のイグニッションに入れる、又はワイヤレスキーチェーンを自動車の帯域に至らせるなど）によってトリガされた後に、起動及び電源オンする。
【００４０】
５０４では、起動に応答して、マイクロコントローラが、全てのモジュールを初期化するために、一般的にフラッシュメモリ４１８及び／又は読み出し専用メモリ（ＲＯＭ）に保存されたブートコードを実行する。このブロック中に、プロセッシングユニット４０４は、構成パラメータ（例えば、４０４Ｃ、４０６Ｃ、４０８Ｃ、…）を対応するモジュール（例えば、それぞれ４０４、４０６、４０８、…）にロードする。例えば、これらの構成パラメータは、電源４０８の初期電力構成の設定、クロックモジュール４１２の初期クロックレートの設定などを行うことができる。ブートコードは、異なるマイクロコントローラシステム及び／又は異なる顧客ごとに異なることが可能で、これは、良好な製品多様化を可能にする。
【００４１】
５０６では、アシュアランスモジュール４２０が、マイクロコントローラシステムが正しく電源オンしたことを保証するために、リセットされた周辺機器の第１の実際のシグネチャ値を計算する。例えば、モジュール４０４、４０６、４０８、４１０、４１２、４１４、及び４１８が、電源オン中にリセットされているので、アシュアランスモジュールは、レジスタ４０４Ｒ、４０６Ｒ、４０８Ｒ、４１０Ｒ、４１２Ｒ、４１４Ｒに関して、及びフラッシュメモリ４１８に関して単一のチェックサムを計算することができ、メモリ中の場所４２２に、Ｒ１の第１の計算されたシグネチャ値を保存することができる。あるいは、Ｒ１の第１の計算されたシグネチャ値は、メモリ４１６の他の部分に保存されてもよく、又はアシュアランスモジュールが、専用ハードウェアモジュールとして実装される場合には、第１の計算されたシグネチャ値は、アシュアランスモジュール内に保存することができる。幾つかの実施形態では、第１の計算されたシグネチャ値４２２は、ストレージの消費を制限するために、１バイト又はワードでもよいが、複数のバイト又はワードでもよい。
【００４２】
５０８では、プロセッシングユニット４０４及び／又はアシュアランスモジュール４２０は、第１の計算されたシグネチャ４２２が第１の期待シグネチャ４２８と同一であるか否かを決定する。第１の期待シグネチャ４２８は、メモリに保存された期待レジスタリセット値４３４に基づくとともに、フラッシュメモリ４１８に保存された構成パラメータにも基づくことができる。例えば、システム上で実行しているアプリケーションは、それのプログラミングコードの一部として、特に、タイマ４０６、電源４０８及び／又はクロックモジュール４１２に関するこれらの期待レジスタリセット値４３４を含むことができ、これは、ユーザ／顧客に、システムがどのように動作するかに関して、ある程度の柔軟性を提供することができる。この場合、第１のシグネチャ値は、これらの期待レジスタリセット値に基づくことができ、それによって、リセット中のエラーの検出が可能となる。
【００４３】
第１の計算されたシグネチャ４２２が、第１の期待シグネチャ４２８と同一である場合（５０８においてＹＥＳ）、システムは、５１０において、信頼できる安全状態に入る。システムは次に、アプリケーションソフトウェアが実行し、リセット信号が受信されるまでマイクロコントローラシステムの進行中の動作が継続する５１２へと進む。
【００４４】
一方、第１の計算されたシグネチャ４２２が、第１の期待シグネチャ４２８と異なる場合（５０８においてＮＯ）、リセットされた少なくとも１つのレジスタが、それの期待リセット値にリセットされておらず、５１４において、システムは、潜在的に安全でない状態にある。システムは次に、ブロック５１６において、どのレジスタが正しく初期化されなかったのかを決定するための分析を行うことができる。例えば、システムは、リセットされるべきであった各レジスタから実際のリセット値を読み取った後、実際のリセット値を、例えばメモリ４１６内のＳＲＡＭに保存することができる、当該レジスタの期待レジスタリセット値（４３４）と比較することができる。
【００４５】
５１８では、どのレジスタグループが正しくリセットされた状態とならなかったかを識別した後、システムは、誤って初期化されたレジスタのグループが、必須のレジスタを含むか否かを決定する。グループ内に必須のレジスタが含まれる場合（５１８においてＹＥＳ）、５２０において、システムは、安全でない状態にあると見なされ、第２のリセット信号（例えば、システムリセット）が、アプリケーションからの入力を求めることなく、再度印加される。このようにして、車両などのシステムの動作が、必須のレジスタが正しく初期化されなかった場合に、阻止される。一方、必須のレジスタが含まれない場合（５１８においてＮＯ）、５２２において、システムは、低下した安全状態にあると見なされる。このような低下した安全状態では、５２４において、アプリケーションに通知が送られ、ブロック５２６において、アプリケーションは、低下した安全モードでシステム動作を継続しようとするか否かに関する選択肢を与えられる。アプリケーションが継続しようとしない場合（５２６においてＮＯ）、システムは、再度安全でない状態にあることとなり、第１のリセット信号が再印加される。アプリケーションが、低下した安全状態で継続しようとする場合（５２６においてＹＥＳ）、システムは次に、アプリケーションソフトウェアが実行し、リセット信号が受信されるまでマイクロコントローラシステムの進行中の動作が継続する５１２へと進む。
【００４６】
５１２における進行中の動作中に、システムは、この例では第１のリセット信号、第２のリセット信号、又は第３のリセット信号によって、いつでも中断されることが可能で、従って、システムは、リセットが受信されるまで（この時、通常動作に戻る際にループに再び入る前に、システムは、リセットに対処するためにループから外れる）、進行形でブロック５１２、５２８、５３０、及び５３８をループしていると考えることができる。他の例では、他の数のリセット信号が存在してもよい。例えば、一部のケースでは、１つのリセットのみが存在してもよいが、他のケースでは、多数の異なる種類のリセットが存在してもよく、各リセットは、潜在的に、周辺機器及び／又はモジュールの異なる組み合わせをリセットすることができる。
【００４７】
５２８では、システムは、第１のリセット信号Ｒ１（例えば、パワーオンリセット）が受信されたかどうかを決定する。そうであれば、システムは、前述の通り、５０２及び／又は５０４に戻り、そうでなければ、システムは、５３０に進む。
【００４８】
５３０において、システムは、第２のリセット信号Ｒ２（例えば、システムリセット）が受信されたかどうかを決定する。そうであれば（５３０においてＹＥＳ）、リセットリクエストハンドラが、ＳＲＡＭに期待リセット値４３４を保存し（５３２）、５３４において、ハードウェアが、第２のリセット信号に対応したリセットシーケンスを実行する。５３６では、第１のモジュールサブセットを初期化するために、ＲＯＭブートコードが実行される。例えば、図４に関して、第２のリセット信号は、プロセッシングユニット４０４、タイマ４０６、シリアルポート４１０、クロックモジュール４１２、Ｉ／Ｏポート４１４、及びメモリ４１６を含む第１のモジュールサブセットをリセットすることができる。従って、第２のリセット信号は、第１のモジュールサブセットに含まれない電源４０８をリセットしない。このブートコード実行に応答して、第１のモジュールサブセットの各モジュール／周辺機器のレジスタが、実際のリセット値にリセットされた状態となる。リセットモジュールが正しくリセットされると、モジュールのレジスタの実際のリセット値は、モジュールのレジスタの期待リセット値と同じになる。しかしながら、予期せぬ事象が生じた場合（例えば、アルファ粒子の衝突、デバイスの故障）、モジュールのレジスタの実際のリセット値は、モジュールの当該レジスタの期待リセット値とは異なり得る。
【００４９】
第１のサブセットのモジュールが正しくリセットされた状態であることを保証するために、ブロック５３８において、アシュアランスモジュール４２０は、第１のモジュールサブセットのレジスタに関する第２のシグネチャ値を計算する。例えば、図４に関して、第２のシグネチャ値は、ＰＵレジスタ４０４Ｒ、タイマレジスタ４０６Ｒ、シリアルポートレジスタ４１０Ｒ、クロックモジュールレジスタ４１２Ｒ、Ｉ／Ｏポートレジスタ４１４Ｒ、及びフラッシュメモリ４１８内の構成ビットに関して計算することができる。従って、第２のシグネチャ値は、電源４０８が第１のモジュールサブセットに含まれていないので、電源レジスタ４０８Ｒに関して計算されない。幾つかの実施形態では、第２のシグネチャ値は、それが異なる長さのレジスタに関して計算されるとしても、第１のシグネチャ値と同じ長さとなり得る。
【００５０】
ブロック５３９では、第１のモジュールサブセットのレジスタ値が検証される。従って、５４０において、第２の計算されたシグネチャが、第２の期待シグネチャと同一でない場合（５４０においてＮＯ）、システムは、前述の通り、５１４に戻る。第２の計算されたシグネチャが第２の期待シグネチャと同一である場合（５４０においてＹＥＳ）、システムは、５１０（信頼できる安全状態）に戻ることができ、又はオプションとして示されるように、期待リセット値がレジスタから読み出されたことを検証するために５３６に進んでもよい。５３６では、システムは、実際のレジスタ値がメモリに保存された期待リセット値と同じであることを確認するために、各レジスタから実際の値を読み出すことができる。再度、実際のリセット値が、期待リセット値と同じであれば、システムは、５１０（信頼できる安全状態）に戻るが、差異が検出されれば、システムは、５１４に戻る。一般的な実施形態において、ごく少数のレジスタのみ（例えば、非常に重要であると見なされるものだけ）が、このように（５３２、５３６）扱われる／チェックされることを注記しておく。例えば、上記の例は、プロセッシングユニット４０４、タイマ４０６、シリアルポート４１０、クロックモジュール４１２、Ｉ／Ｏポート４１４、及びメモリ４１６をリセットするが、より一般的な実施形態では、クロックモジュール４１２の主要制御レジスタなどの非常に重要なレジスタのみが、読み出され、５３２において、リセットリクエストハンドラによって期待値がＳＲＡＭに保存された後、５３６においてチェックされる。これは、より多くのレジスタをリセット（及びチェック）することが、リセット及びブート時間を増加させる傾向にあるからであり、可能な限りレジスタの数を少なく保つことによって、幾つかの点で動作性能を向上させる。
【００５１】
５３８では、システムは、第３のリセット信号Ｒ３（例えば、アプリケーションリセット）が受信されたかどうかを決定する。そうであれば（５３８においてＹＥＳ）、リセットリクエストハンドラは、期待リセット値４３４をＳＲＡＭに保存し（５４０）、５４２において、ハードウェアは、第３のリセット信号に対応するリセットシーケンスを実行する。５４４において、第１のモジュールサブセットとは異なる第２のモジュールサブセットを初期化するために、ＲＯＭブートコードが実行される。例えば、図４に関して、第３のリセット信号は、プロセッシングユニット４０４及びタイマ４０６を含む第２のモジュールサブセットをリセットすることができる。従って、第３のリセット信号は、第２のモジュールサブセットに含まれない電源４０８、シリアルポート４１０、クロックモジュール４１２、Ｉ／Ｏポート４１４、及び／又はメモリ４１６のリセットを行わない。このブートコード実行に応答して、第２のモジュールサブセットの各モジュール／周辺機器のレジスタが、実際のリセット値にリセットされた状態となる。リセットモジュールが正しくリセットされると、モジュールのレジスタの実際のリセット値は、モジュールのレジスタの期待リセット値と同じとなる。しかしながら、予期せぬ事象が生じた場合（例えば、アルファ粒子の衝突、デバイスの故障）、モジュールのレジスタの実際のリセット値は、モジュールの当該レジスタの期待リセット値とは異なり得る。
【００５２】
第２のサブセットのモジュールが正しくリセットされた状態であることを保証するために、ブロック５４６において、アシュアランスモジュール４２０が、第２のモジュールサブセットのレジスタに関する第３のシグネチャ値を計算する。例えば、図４に関して、第３のシグネチャ値は、ＰＵレジスタ４０４Ｒ及びタイマレジスタ４０６Ｒに関して計算することができる。従って、第２のシグネチャ値は、電源レジスタ４０８Ｒ、シリアルポートレジスタ４１０Ｒ、クロックモジュールレジスタ４１２Ｒ、Ｉ／Ｏポートレジスタ４１４Ｒ、及びフラッシュメモリ４１８の構成ビットが、第２のモジュールサブセットに含まれていないので、これらのモジュール／周辺機器に関して計算されない。幾つかの実施形態では、第３のシグネチャ値は、それが異なる長さのレジスタに関して計算されるとしても、第１のシグネチャ値と同じ長さとなり得る。
【００５３】
ブロック５４７では、第２のモジュールサブセットのレジスタ値が検証される。従って、５４８において、第３の計算されたシグネチャが、第３の期待シグネチャと同一でない場合（５４８においてＮＯ）、システムは、前述の通り、５１４に戻る。第３の計算されたシグネチャが第３の期待シグネチャと同一である場合（５４８においてＹＥＳ）、システムは、５１０（信頼できる安全状態）に戻ることができ、又はオプションとして示されるように、期待リセット値がレジスタから読み出されたことを検証するために５５０に進んでもよい。５５０では、システムは、実際のレジスタ値がメモリに保存された期待リセット値と同じであることを確認するために、各レジスタから実際の値を読み出すことができる。再度、実際のリセット値が、期待リセット値と同じであれば、システムは、５１０（信頼できる安全状態）に戻るが、差異が検出されれば、システムは、５１４に戻る。
【００５４】
幾つかの実施形態では、アシュアランスモジュールがシステムリソースを幅広く利用できる初期の安全起動モード中に、リセットが生じる。さらに、アシュアランスモジュール４２０は、アプリケーションソフトウェアの初期化に先立ち得る安全起動モード中に、計算されたシグネチャ値と期待シグネチャ値との比較を行う。従って、場合によっては、初期の安全起動モードが終わった後に、システムは、アプリケーションソフトウェアが実行を開始する際に、通常動作モードに入る。通常動作モード中は、アプリケーションソフトウェアが全てのシステムリソースにアクセスすることを阻止するために、セキュリティ対策が実施される場合がある。アプリケーションソフトウェアに対するこの制限に対処するために、アシュアランスモジュールは、ある値を所定の記憶場所に書き込むことによって、又はそれ自体のレジスタの１つにその値を保存することによって、初期化の際にアプリケーションが、もしあればどのモジュールが誤って初期化したのかを認識するために、所定の記憶場所又はアシュアランスモジュールのレジスタから読み出すことができるように、アプリケーションに通知する（例えば、ブロック５２４と同じである）。このようにして、アプリケーションは、通常動作中に（例えば、初期の安全起動モードが完了した後に）、誤って初期化されたモジュールを認識することができ、ブロック５２２〜５２６において、動作を続けるのか、あるいは別のリセットを生じさせるのかを決めることができる。それに対し、幾つかの実施形態では、ブロック５１８は、誤って初期化されたレジスタが必須のレジスタである場合（５１８においてＹＥＳ）、初期の安全起動モード中であって、アプリケーションソフトウェアの実行が開始される前に、リセットが再度出される（これは、システムの安全な動作を保証する助けとなる）ように、初期の安全起動モード中に実行される。
【００５５】
従って、本開示の幾つかの実施形態は、マイクロコントローラシステムに関する。マイクロコントローラシステムは、プロセッシングユニット、第１の周辺機器、及びアシュアランスモジュールを含む。第１の周辺機器は、バスインタフェースによってプロセッシングユニットに接続され、第１のレジスタセットを有する。第１の周辺機器は、第１のレジスタセットを第１の実際のリセット値にリセットする第１のリセット信号を受信するように構成される。第１の実際のリセット値は、第１のリセット信号に応答した第１の期待値であると予想される。アシュアランスモジュールは、第１のリセット信号に応答して、第１のシグネチャ値を計算するように構成される。第１のシグネチャ値は、第１の実際のリセット値に基づく。プロセッシングユニットは、マイクロコントローラシステムが信頼できる安全状態にあるか否かを決定するために、計算された第１のシグネチャ値と所定の第１のシグネチャ値との第１の比較を行うように構成される。第１の比較は、第１のリセット信号に応答して行われ、所定の第１のシグネチャ値は、第１の期待値に基づく。
【００５６】
他の実施形態は、マイクロコントローラ及び複数のレジスタを含むシステムにおける安全なリセットの方法に関する。この方法では、リセット信号が受信され、複数のレジスタの少なくとも幾つかが、リセット信号に基づいてリセットされ、このリセットは、上記複数のレジスタの上記少なくとも幾つかを、それぞれ所定の初期化値に設定すると期待される。この方法は、所定の初期化値に基づいて、シグネチャ値を計算し、計算されたシグネチャ値を所定のシグネチャ値と比較することによって、上記複数のレジスタの上記少なくとも幾つかが、正しく初期化したか否かを決定する。計算されたシグネチャ値が、所定のシグネチャ値とビットに関して同一である場合にのみ、システムは、信頼できる状態で動作する。計算されたシグネチャ値が、所定のシグネチャ値と異なる場合、システムは、低下した安全状態又は安全でない状態に入る。
【００５７】
さらに他の実施形態が、プロセッシングユニットと、バスインタフェースによってプロセッシングユニットに結合された複数の周辺機器と、プロセッシングユニット及び複数の周辺機器に結合されたリセットモジュールとを含むマイクロコントローラシステムに関する。リセットモジュールは、複数の周辺機器の異なる組み合わせをリセットする複数のリセット信号を提供するように構成される。第１のリセット信号は、複数の周辺機器の第１の組み合わせをリセットし、第２のリセット信号は、複数の周辺機器の第２の組み合わせをリセットする。アシュアランスモジュールは、第１のリセット信号に応答して第１のシグネチャ値を計算し、及び第２のリセット信号に応答して第２のシグネチャ値を計算するように構成される。第１のシグネチャ値は、複数の周辺機器の第１の組み合わせのレジスタの実際のリセット値に基づき、第２のシグネチャ値は、複数の周辺機器の第２の組み合わせのレジスタの実際のリセット値に基づく。
【００５８】
上記は、当業者が本開示の局面をよりよく理解することができるように、幾つかの実施形態の特徴の概要を説明するものである。当業者は、本明細書で紹介された実施形態と同じ目的を実行する、及び／又はそれらと同じ利点を達成するために、他のプロセス及び構造を設計又は変更するための基礎として、本開示を容易に使用できることを認識するだろう。当業者は、そのような同等の構造が、本開示の精神及び範囲から逸脱せず、且つ本開示の精神及び範囲から逸脱することなく、本明細書に様々な変更、置換、及び修正を行うことができることも理解するだろう。
【符号の説明】
【００５９】
１００、４００  マイクロコントローラシステム
１０２、４０４  プロセッシングユニット
１０４  第１の周辺機器
１０４Ｒ  第１のレジスタセット
１０６  第２の周辺機器
１０６Ｒ  第２のレジスタセット
１１０、４１９  バスインタフェース
１０８、４２０  アシュアランスモジュール
４０２  リセットモジュール
４２２  第１の計算されたシグネチャ値
４２８  第１の期待シグネチャ値
４３４  期待レジスタリセット値
【図１】
2018160240.tif 000003
【図２】
2018160240.tif 000004
【図３】
2018160240.tif 000005
【図４】
2018160240.tif 000006
【図５】
2018160240.tif 000007
【外国語明細書】
2018160240000001.pdf
2018160240000002.pdf
2018160240000003.pdf
2018160240000004.pdf