特許第6622337号(P6622337)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インフィネオン テクノロジーズ アーゲーの特許一覧

特許6622337安全関連のアプリケーションにおけるマイクロコントローラシステム用の安全なリセット技術
<>
  • 特許6622337-安全関連のアプリケーションにおけるマイクロコントローラシステム用の安全なリセット技術 図000002
  • 特許6622337-安全関連のアプリケーションにおけるマイクロコントローラシステム用の安全なリセット技術 図000003
  • 特許6622337-安全関連のアプリケーションにおけるマイクロコントローラシステム用の安全なリセット技術 図000004
  • 特許6622337-安全関連のアプリケーションにおけるマイクロコントローラシステム用の安全なリセット技術 図000005
  • 特許6622337-安全関連のアプリケーションにおけるマイクロコントローラシステム用の安全なリセット技術 図000006
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6622337
(24)【登録日】2019年11月29日
(45)【発行日】2019年12月18日
(54)【発明の名称】安全関連のアプリケーションにおけるマイクロコントローラシステム用の安全なリセット技術
(51)【国際特許分類】
   G06F 1/24 20060101AFI20191209BHJP
【FI】
   G06F1/24 A
【請求項の数】15
【外国語出願】
【全頁数】19
(21)【出願番号】特願2018-41458(P2018-41458)
(22)【出願日】2018年3月8日
(65)【公開番号】特開2018-160240(P2018-160240A)
(43)【公開日】2018年10月11日
【審査請求日】2018年3月9日
(31)【優先権主張番号】15/456,870
(32)【優先日】2017年3月13日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】501209070
【氏名又は名称】インフィネオン テクノロジーズ アーゲー
【氏名又は名称原語表記】INFINEON TECHNOLOGIES AG
(74)【代理人】
【識別番号】110002077
【氏名又は名称】園田・小林特許業務法人
(72)【発明者】
【氏名】トレイコフ, ボイコ
(72)【発明者】
【氏名】クリーベルガー, ファイト
(72)【発明者】
【氏名】ザルマン, ラファエル
【審査官】 三橋 竜太郎
(56)【参考文献】
【文献】 米国特許第06625688(US,B1)
【文献】 特開平04−346112(JP,A)
【文献】 米国特許出願公開第2006/0136705(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 1/22−1/24
(57)【特許請求の範囲】
【請求項1】
プロセッシングユニットと、
バスインタフェースによって前記プロセッシングユニットに接続され、及び第1のレジスタセットを有する第1の周辺機器であって、前記第1の周辺機器が、前記第1のレジスタセットを第1の実際のリセット値にリセットする第1のリセット信号を受信するように構成され、及び前記第1の実際のリセット値が、前記第1のリセット信号に応答した第1の期待値であると予想される、第1の周辺機器と、
前記第1のリセット信号に応答して、第1のシグネチャ値を計算するように構成されたアシュアランスモジュールであって、前記第1のシグネチャ値が、前記第1の実際のリセット値に基づく、アシュアランスモジュールと、
を備えたマイクロコントローラシステムであって、
前記プロセッシングユニットが、前記マイクロコントローラシステムが信頼できる安全状態にあるか否かを決定するために、前記計算された第1のシグネチャ値と、所定の第1のシグネチャ値との第1の比較を行うように構成され、前記第1の比較が、前記第1のリセット信号に応答して行われ、及び前記所定の第1のシグネチャ値が、前記第1の期待値に基づき、
前記プロセッシングユニットが、前記計算された第1のシグネチャ値が前記所定の第1のシグネチャ値と異なるか否かに基づいて選択的にエラーのフラグを立て、それによって前記マイクロコントローラシステムが潜在的に安全でない状態にあることを示すように構成され、
前記プロセッシングユニットが、前記マイクロコントローラシステムが前記潜在的に安全でない状態にあるという通知をアプリケーションプログラムに提供するように構成されるとともに、前記通知に応答して前記アプリケーションプログラムから受信された命令に基づいて、選択的に前記第1の周辺機器をリセットする、又は前記第1の周辺機器がリセットされることなく前記潜在的に安全でない状態で動作を継続することを許可するようにさらに構成される、マイクロコントローラシステム。
【請求項2】
前記計算された第1のシグネチャ値が、前記所定の第1のシグネチャ値とビットに関して同一である場合に、前記マイクロコントローラシステムが、前記信頼できる安全状態にある、請求項1に記載のマイクロコントローラシステム。
【請求項3】
プロセッシングユニットと、
バスインタフェースによって前記プロセッシングユニットに接続され、及び第1のレジスタセットを有する第1の周辺機器であって、前記第1の周辺機器が、前記第1のレジスタセットを第1の実際のリセット値にリセットする第1のリセット信号を受信するように構成され、及び前記第1の実際のリセット値が、前記第1のリセット信号に応答した第1の期待値であると予想される、第1の周辺機器と、
前記第1のリセット信号に応答して、第1のシグネチャ値を計算するように構成されたアシュアランスモジュールであって、前記第1のシグネチャ値が、前記第1の実際のリセット値に基づく、アシュアランスモジュールと、
を備えたマイクロコントローラシステムであって、
前記プロセッシングユニットが、前記マイクロコントローラシステムが信頼できる安全状態にあるか否かを決定するために、前記計算された第1のシグネチャ値と、所定の第1のシグネチャ値との第1の比較を行うように構成され、前記第1の比較が、前記第1のリセット信号に応答して行われ、及び前記所定の第1のシグネチャ値が、前記第1の期待値に基づき、
前記バスインタフェースによって前記プロセッシングユニットに接続され、及び第2のレジスタセットを有する第2の周辺機器をさらに含み、前記第2の周辺機器が、前記第1のレジスタセットを設定又はリセットすることなく、前記第2のレジスタセットを第2の実際のリセット値にリセットする第2のリセット信号を受信するように構成され、及び前記第2の実際のリセット値が、第2の期待リセット値であると予想され
前記アシュアランスモジュールが、前記第2のリセット信号に応答して、第2のシグネチャ値を計算するようにさらに構成され、前記第2のシグネチャ値が、前記第2の実際のリセット値に基づき、及び前記第1の実際のリセット値に依存せず、並びに
前記プロセッシングユニットが、前記計算された第2のシグネチャ値と所定の第2のシグネチャ値との第2の比較を行うように構成され、前記第2の比較が、前記第2のリセット信号に応答して行われ、及び前記マイクロコントローラシステムが前記信頼できる安全状態にあるか否かを決定付ける、マイクロコントローラシステム。
【請求項4】
前記第1のリセット信号が、前記第2のレジスタセットを設定又はリセットすることなく、前記第1のレジスタセットをリセットする、請求項に記載のマイクロコントローラシステム。
【請求項5】
プロセッシングユニットと、
バスインタフェースによって前記プロセッシングユニットに接続され、及び第1のレジスタセットを有する第1の周辺機器であって、前記第1の周辺機器が、前記第1のレジスタセットを第1の実際のリセット値にリセットする第1のリセット信号を受信するように構成され、及び前記第1の実際のリセット値が、前記第1のリセット信号に応答した第1の期待値であると予想される、第1の周辺機器と、
前記第1のリセット信号に応答して、第1のシグネチャ値を計算するように構成されたアシュアランスモジュールであって、前記第1のシグネチャ値が、前記第1の実際のリセット値に基づく、アシュアランスモジュールと、
を備えたマイクロコントローラシステムであって、
前記プロセッシングユニットが、前記マイクロコントローラシステムが信頼できる安全状態にあるか否かを決定するために、前記計算された第1のシグネチャ値と、所定の第1のシグネチャ値との第1の比較を行うように構成され、前記第1の比較が、前記第1のリセット信号に応答して行われ、及び前記所定の第1のシグネチャ値が、前記第1の期待値に基づき、
前記バスインタフェースによって前記プロセッシングユニットに接続され、及び第2のレジスタセットを有する第2の周辺機器をさらに含み、前記第2の周辺機器が、前記第1のレジスタセットを設定又はリセットすることなく、前記第2のレジスタセットを第2の実際のリセット値にリセットする第2のリセット信号を受信するように構成され、及び前記第2の実際のリセット値が、第2の期待リセット値であると予想され、
前記第1及び第2の周辺機器がそれぞれ、第1のレジスタを前記第1の実際のリセット値にリセットし第2のレジスタを前記第2の実際のリセット値にリセットする第3のリセット信号を受信するように構成され、前記アシュアランスモジュールが、前記第3のリセット信号に応答して第3のシグネチャ値を計算するようにさらに構成され、前記第3のシグネチャ値が、前記第2の実際のリセット値、及び前記第1の実際のリセット値に基づき、並びに
前記プロセッシングユニットが、前記計算された第3のシグネチャ値と所定の第3のシグネチャ値との第3の比較を行うように構成され、前記第3の比較が、前記第のリセット信号に応答して行われ、及び前記マイクロコントローラシステムが前記信頼できる安全状態にあるか否かを決定付ける、マイクロコントローラシステム。
【請求項6】
前記アシュアランスモジュールが、読み出し専用メモリ(ROM)に固定値として保存された実行可能命令のセットを含む、請求項1、3または5に記載のマイクロコントローラシステム。
【請求項7】
前記アシュアランスモジュールが、ワンタイムプログラマブル(OTP)メモリに固定値として保存された実行可能命令のセットを含む、請求項1、3または5に記載のマイクロコントローラシステム。
【請求項8】
前記アシュアランスモジュールが、半導体基板に配置された論理回路として実装される、請求項1、3または5に記載のマイクロコントローラシステム。
【請求項9】
マイクロコントローラ及び複数のレジスタを含むシステムにおける安全なリセットの方法であって、
リセット信号を検出し、及び前記リセット信号に基づいて前記複数のレジスタの少なくとも幾つかをリセットするステップであって、前記リセットが、前記複数のレジスタの前記少なくとも幾つかを、それぞれの所定の初期化値に設定することが期待される、ステップと、
前記所定の初期化値に基づいて、シグネチャ値を計算するステップと、
前記計算されたシグネチャ値を所定のシグネチャ値と比較することによって、前記複数のレジスタの前記少なくとも幾つかが、正しく初期化したか否かを決定するステップと、
前記計算されたシグネチャ値が、前記所定のシグネチャ値とビットに関して同一である場合にのみ、前記システムを信頼できる状態で動作させ、及び前記計算されたシグネチャ値が、前記所定のシグネチャ値と異なる場合に、低下した安全状態又は安全でない状態に入るステップと、
を含み、
前記低下した安全状態において、前記複数のレジスタの前記少なくとも幾つかの内の誤ったレジスタを識別するステップであって、前記誤ったレジスタは、それの所定の期待初期化値に初期化できなかったものである、ステップと、
前記誤ったレジスタが、必須のレジスタであるか否かを決定するステップと、
前記誤ったレジスタが、必須のレジスタであるか否かに基づいて、選択的に前記誤ったレジスタをリセットする、又は選択的に前記システムを前記低下した安全状態で動作させるステップと、
をさらに含む、方法。
【請求項10】
前記誤ったレジスタが必須のレジスタである場合、前記システムが、安全でない状態にあると見なされるとともに、前記誤ったレジスタが識別された後、前記システムが前記安全でない状態で動作することを許可せずに、前記誤ったレジスタがリセットされる、請求項に記載の方法。
【請求項11】
前記誤ったレジスタが必須のレジスタではない場合、通知がアプリケーションに送られ、及び前記アプリケーションが、前記低下した安全状態で前記システムを動作させるか、又は前記システムが前記低下した安全状態で動作を継続することを許可せずに前記誤ったレジスタをリセットするかを選択する、請求項に記載の方法。
【請求項12】
プロセッシングユニットと、
バスインタフェースによって前記プロセッシングユニットに結合された複数の周辺機器と、
前記プロセッシングユニット及び前記複数の周辺機器に結合されたリセットモジュールであって、前記リセットモジュールが、前記複数の周辺機器の異なる組み合わせをリセットする複数のリセット信号を提供するように構成され、第1のリセット信号が、前記複数の周辺機器の第1の組み合わせをリセットし、及び第2のリセット信号が、前記複数の周辺機器の第2の組み合わせをリセットする、リセットモジュールと、
前記第1のリセット信号に応答して第1のシグネチャ値を計算し、及び前記第2のリセット信号に応答して第2のシグネチャ値を計算するように構成されたアシュアランスモジュールであって、前記第1のシグネチャ値は、前記複数の周辺機器の前記第1の組み合わせのレジスタの実際のリセット値に基づき、及び前記第2のシグネチャ値は、前記複数の周辺機器の前記第2の組み合わせのレジスタの実際のリセット値に基づく、アシュアランスモジュールと、
を含み、前記プロセッシングユニットが、前記マイクロコントローラシステムが信頼できる安全状態にあるか否かを決定するために、前記計算された第1のシグネチャ値と、所定の第1のシグネチャ値との第1の比較を行うように構成され、前記第1の比較が、前記第1のリセット信号に応答して行われ、及び前記所定の第1のシグネチャ値が、前記複数の周辺機器の前記第1の組み合わせの前記レジスタの期待リセット値に基づく、マイクロコントローラシステム。
【請求項13】
前記プロセッシングユニットが、前記マイクロコントローラシステムが前記信頼できる安全状態にあるか否かを決定するために、前記計算された第2のシグネチャ値と、所定の第2のシグネチャ値との第2の比較を行うように構成され、前記第2の比較が、前記第2のリセット信号に応答して行われ、及び前記所定の第2のシグネチャ値が、前記複数の周辺機器の前記第2の組み合わせの前記レジスタの期待リセット値に基づく、請求項12に記載のマイクロコントローラシステム。
【請求項14】
前記アシュアランスモジュールが、読み出し専用メモリ(ROM)又はワンタイムプログラマブル(OTP)メモリに固定値として保存された実行可能命令のセットを含む、請求項12に記載のマイクロコントローラシステム。
【請求項15】
前記アシュアランスモジュールが、半導体基板に配置された論理回路として実装される、請求項12に記載のマイクロコントローラシステム。
【発明の詳細な説明】
【背景技術】
【0001】
安全関連のアプリケーションに関して、アプリケーションの全段階において、それらの意図された機能性をマイクロコントローラが正しく実行することを確実にすることが重要である。この実行は、ハードウェア及びソフトウェア両方のコンポーネントのそれらの仕様に対する正確さと、この機能性のフォールトフリー実行とを担う。一般に、安全関連のアプリケーションは、システムの不具合を回避する、及びアプリケーションの実行中に起こり得るランダムなハードウェアの不具合に対して検出及び対応する特別な手段を用いて構築される。
【0002】
しかしながら、マイクロコントローラが、最初の起動時、又は既知の状態から(例えば、リセットトリガ後)の再起動時に、マイクロコントローラは、その製造時にマイクロコントローラに組み込まれた起動コードを実行する。マイクロコントローラの起動が、起動中にハードウェアの不具合によって影響を受けると、ハードウェア及びソフトウェアの残りの部分がフォールトフリーであったとしても、もはや意図された機能性を正しく行うことができない場合がある。つまり、マイクロコントローラの起動段階中の不具合は、安全関連のアプリケーションの実行に波及し、よって、潜在的に安全でない状況の原因となり得る。
【0003】
本開示の局面は、添付の図面と共に読まれた場合の以下の詳細な説明から、最もよく理解される。なお、当業界の一般的な慣例に従って、様々な特徴が、正確な縮尺率で描かれていない。実際、様々な特徴の寸法は、説明を明確にするために、任意に増加又は減少させている場合がある。
【図面の簡単な説明】
【0004】
図1】幾つかの実施形態による、安全なリセット動作を利用したマイクロコントローラシステムのブロック図を示す。
図2】幾つかの実施形態による、安全なリセット動作の方法のフロー図を示す。
図3】幾つかの実施形態による、安全なリセット動作の方法のフロー図を示す。
図4】幾つかの実施形態による、安全なリセット動作を利用したマイクロコントローラシステムのブロック図を示す。
図5】幾つかの実施形態による、安全なリセット動作の方法のフロー図を示すとともに、図4に関して非限定的に記載される。
【発明を実施するための形態】
【0005】
以下の詳細な説明は、本開示の一部を構成し、且つ例示を目的として、それによって本開示を実際的に実現することができる特別な実施形態例が示される添付の図面を参照する。本開示の保護の範囲を越えることなく、他の実施形態例が用いられてもよく、並びに構造上の及び他の変更が実施されてもよいことが理解される。従って、以下の詳細な説明は、制限的なものと見なされるものではない。正確には、本開示の保護の範囲は、添付の特許請求の範囲によってのみ定義される。
【0006】
図1は、幾つかの実施形態によるマイクロコントローラシステム100を示す。マイクロコントローラシステム100は、プロセッシングユニット102、第1の周辺機器104、第2の周辺機器106、及びアシュアランスモジュール108を含む。プロセッシングユニット102、第1の周辺機器104、第2の周辺機器106、及びアシュアランスモジュール108は、それぞれバスインタフェース110に結合され、一般的な実施態様において、バスインタフェースによって互いに通信することができる。プロセッシングユニット102、第1の周辺機器104、第2の周辺機器106、及びアシュアランスモジュール108は、1つ又は複数の集積回路(IC)として実装されてもよく、それぞれが、例えば、単結晶シリコン基板又はシリコン・オン・インシュレータ基板などの半導体基板上に配置される。幾つかの実施形態では、アシュアランスモジュール108は、所望の機能性を実行するためにプロセッシングユニット102によって実行される一連のコンピュータ可読命令として実装されてもよい。
【0007】
第1の周辺機器104は、第1のレジスタセット104Rを有し、第1のレジスタセット104Rを第1の実際のリセット値にリセットする第1のリセット信号R1を受信するように構成される。第1の実際のリセット値は、第1のリセット信号に応答した第1の期待リセット値であると予想されるが、何らかのエラーが生じた場合に、第1の期待リセット値とは異なり得る。
【0008】
第2の周辺機器106は、第1のレジスタセット104Rとは異なる第2のレジスタセット106Rを有する。第2の周辺機器106は、第1のリセット信号R1とは異なり、且つ第1のレジスタセット104Rを設定又はリセットすることなく、第2のレジスタセット106Rを第2の実際のリセット値にリセットする第2のリセット信号R2を受信するように構成される。第1の実際のリセット値と同様に、第2の実際のリセット値は、第2のリセット信号R2に応答した第2の期待リセット値であると予想されるが、何らかのエラーが生じた場合に、第2の期待リセット値とは異なり得る。
【0009】
第1及び第2のリセット信号R1、R2(幾つかの文脈では、アプリケーションリセット又はシステムリセットとも呼ばれる場合がある)はそれぞれ、第1の周辺機器104又は第2の周辺機器106の一方をリセットするが(ただし、第1及び第2の周辺機器の両方ではない)、第3の種類のリセット信号R3(システムリセット又はパワーオンリセットとも呼ばれる場合がある)は、第1の周辺機器104及び第2の周辺機器106の両方を同時にリセットすることができる。本出願で使用される「リセット」という用語は、幾つかの文脈では、レジスタのデジタルビットがゼロの論理値に「リセット」される「リセット」動作と呼ばれるものを含み得るが、幾つかの文脈では、レジスタのデジタルビットが1の論理値に「設定」される「設定」動作と呼ばれるものも含み得ることが認識されるだろう。従って、「リセット」という用語は、レジスタをある所定の状態にプログラムすると解釈されるものであり、レジスタを論理ゼロ状態にプログラムすることにのみ限定されない。
【0010】
受信されたリセット信号がどのような特定の種類であろうと、第1の周辺機器104及び/又は第2の周辺機器106のリセット中に、システム障害、アルファ粒子の衝突、又は他の予期せぬ事象が生じた場合に、第1のレジスタセット104Rの第1の実際のリセット値及び/又は第2のレジスタセット106Rの第2の実際のリセット値は、第1の期待リセット値及び/又は第2の期待リセット値とそれぞれ異なる可能性がある。例えば、第1の期待リセット値が0x0000であるが、予期せぬ事象が、リセット直後の第1の実際のリセット値が0x0100の状態にあることを生じさせる場合、第1の期待リセット値と第1の実際のリセット値との差は、第1の周辺機器104のリセット中に不具合が生じたことを示す可能性があり、これは、潜在的に、マイクロコントローラシステム100における問題の原因となり得る。
【0011】
従って、アシュアランスモジュール108は、例えば図2〜3のフロー図に関して、より詳細にこれから説明されるように、第1及び第2の周辺機器104、106が信頼できる状態にリセットされたことを保証する助けとして、それぞれのリセット直後に第1及び第2の周辺機器104、106のシグネチャ値を計算するように構成される。図2〜3は、一連の行為として記載されるが、これらの行為は、行為の順序が他の実施形態では変更できる点において限定的ではなく、図2〜3の方法も図1の構造に限定されるのではなく、他の構造に適用可能であることが認識されるだろう。他の実施形態では、図示及び/又は記載された幾つかの行為が、全体的に又は部分的に省略されてもよい。同じことが、図5に示されるフローチャートなどの、本明細書に開示される他の方法にも当てはまる。
【0012】
これより図2を参照して、ブロック202では、リセット信号が、例えば図1の第1の周辺機器104又は第2の周辺機器106などの周辺機器によって受信される。
【0013】
ブロック204では、プロセッシングユニット102が、リセット信号を認識し、読み出し専用メモリ(ROM)及び/又はフラッシュメモリからファームウェア及び/又はブートコードを実行する。このファームウェア及び/又はブートコードは、周辺機器のレジスタをリセットし、これは、ファームウェア及び/又はブートコードが初期状態にインストールすることを意味する。例えば、図1の例では、第1のリセット信号R1がアサートされたことを認識すると、プロセッシングユニット102は、第1のレジスタセット104Rをリセットするファームウェア及び/又はブートコードを実行することができる。例えば、第1の周辺機器104が、32ビットバスインタフェースに接続するタイマモジュールである場合、タイマモジュールは、32ビット制御レジスタ、32ビット入力データレジスタ、及び32ビット出力データレジスタを含むことができる。理想的には、周辺機器のレジスタは、それらの期待リセット値に設定又はリセットされるが、予期せぬ事象が、レジスタの実際のリセット値を、それらの期待リセット値とは異ならせる可能性がある。例えば、ある場合には、リセット信号が、タイマモジュールの制御レジスタを所定値(例えば、16進数で、0x0000_0011)に設定すると同時に、入力データレジスタ及び出力データレジスタを所定値(例えば、0x0000_0000)にリセットすることが期待できる、あるいは、入力データレジスタ及び/又は出力データレジスタを変化させずに、タイマモジュールの制御レジスタを所定値(例えば、0x0000_0011)に設定することが期待できる。
【0014】
ブロック206では、リセット信号に応答して、アシュアランスモジュール108が、リセットされた周辺機器のレジスタに関してシグネチャを計算する。例えば、前段落に記載した例を継続し、且つ図1を参照して、アサートされた第1のリセット信号R1に応答して、アシュアランスモジュール108は、第1の周辺機器104のリセット直後に、計算されたシグネチャ値を取得するために、第1のレジスタセット104Rに関して、チェックサム、ハッシュ、又は他のアシュアランス値を計算することができる。第1のシグネチャ値は、リセット直後の第1のレジスタセット104Rに含まれる第1の実際のリセット値に基づく。例えば、第1の周辺機器104が、それの制御レジスタが0x000_0011にリセットされると期待されたタイマモジュールである場合、幾つかの実施形態では、アシュアランスモジュール108は、タイマモジュールの制御レジスタの実際のリセット値のみに基づいて、チェックサム(例えば、1バイト又は8ビットチェックサム)を計算することができる。他の実施形態では、アシュアランスモジュール108は、制御レジスタ、入力データレジスタ、及び出力データレジスタの実際の値に関してチェックサム(例えば、1バイト又は8ビットチェックサム)を計算することができる。従って、計算されたシグネチャは、周辺機器のレジスタから実際のリセット値を読み出すことによって、周辺機器がリセットされた実際の態様を考慮に入れる。第1のシグネチャ値は、単一ビット(例えば、パリティビット)、マルチビットチェックサム、ハッシュ値、巡回冗長検査、又は消費されるメモリを制限するため、及び幾つかの点で処理速度を向上させるためにチェックされるレジスタのフルセットよりも一般的にビットサイズが小さい別のアシュアランス値でもよい。
【0015】
ブロック208では、プロセッシングユニット102及び/又はアシュアランスモジュール108が、計算されたシグネチャ値が、期待シグネチャ値とビットに関して同一であるか否かを決定する。従って、図1に関して記載された例を継続して、第1のシグネチャ値が計算された後、プロセッシングユニット102及び/又はアシュアランスモジュール108は、計算された第1のシグネチャ値と、所定の第1のシグネチャ値との第1の比較を行うことによって、マイクロコントローラシステム100が信頼できる安全状態にあるか否かを決定する。所定の第1のシグネチャ値は、リセットが生じる前に決定されることが可能で、例えば、マイクロコントローラシステム100で実行中の、及び/又はその他の方法でメモリに保存されたアプリケーションプログラム(例えば、ソフトウェア)によって提供されてもよい。第1の比較は、第1のリセット信号R1に応答して行われ、所定の第1のシグネチャ値は、第1の期待リセット値に基づき、及び第1のレジスタセット104Rから読み出された第1の実際のリセット値に依存しない。多くの場合、マイクロコントローラシステム100は、計算された第1のシグネチャ値が、期待された第1のシグネチャ値とビットに関して同一である場合に、信頼できる安全状態にあると見なされる。
【0016】
計算されたシグネチャ値が、期待シグネチャ値と等しければ(208においてYES)、ブロック210において、マイクロコントローラシステム100は、信頼できる安全状態にあると見なされ、212において、周辺機器及び/又はマイクロコントローラシステム100の通常動作が、続いて生じる。
【0017】
しかしながら、計算されたシグネチャ値が期待シグネチャ値と異なる場合(208においてNO)、214において、マイクロコントローラシステムは、潜在的に安全でない状態にあると見なされる。従って、プロセッシングユニット102及び/又はアシュアランスモジュール108は、一般的にマイクロコントローラシステム100上で実行しているオペレーティングシステムソフトウェアによって、216において、アプリケーションソフトウェアに潜在的に安全でない状態を通知する。
【0018】
218において、アプリケーションソフトウェアは、一般的にオペレーティングシステムによって、それが潜在的に安全でない状態で周辺機器及び/又はマイクロコントローラシステム100の動作を継続しようとするか否かをマイクロコントローラシステム100に通知することができる。アプリケーションが、潜在的に安全でない状態で継続しようとする場合(218においてYES)、220において、マイクロコントローラシステムは、低下した安全状態にあると見なされ得るが、212において、通常の周辺機器動作は、なお続行される。
【0019】
一方、アプリケーションが、潜在的に安全でない状態で継続しようとしないことを決定した場合(218においてNO)、アプリケーションは、周辺機器の別のリセットをトリガする命令を提供することができ、周辺機器が通常動作に入ることを阻止することができる。このようにして、アプリケーションは、安全でない状態が実際にどれほど危険なのかを決定する決定権を持ち、適切な対応策を取ることができる。例えば、マイクロコントローラシステム100が、自動車システムに実装される場合、アプリケーションは、安全でない状態が、車両の運転を許可するには危険すぎることを決定することができるとともに、例えば車両がエンジンを始動させることを阻止する予防策を講じることができる。
【0020】
図3は、幾つかの実施形態による、及び図2の実施形態と様々な様式で組み合わせられてもよい安全なリセットの別の方法を示す。1つのリセット信号のみが示された図2と比較して、図3の実施形態は、3つの異なるリセット信号、すなわち、異なる周辺機器及び/又は異なる周辺機器の組み合わせをリセットする、第1のリセット信号R1(ブロック302を参照)、第2のリセット信号R2(ブロック312を参照)、及び第3のリセット信号R3(ブロック322を参照)を利用する。例示及び明瞭さを目的として、図3の方法の実施態様例は、図1のマイクロコントローラシステムに関して以下に説明される。
【0021】
302では、第1のリセット信号が、第2の周辺機器の第2のレジスタセットをリセットすることなく、第1の周辺機器の第1のレジスタセットをリセットする。例えば、前の図1に関して、第1のリセット信号R1は、第2のレジスタセット106Rを設定する又はリセットすることなく、第1のレジスタセット104Rが第1の所定の値にリセットされるように、第1の周辺機器104をリセットすることができる。
【0022】
304では、第1の実際のシグネチャ値が、第1のレジスタセット104Rに関して計算される。幾つかの実施形態では、アシュアランスモジュール108が、第1のレジスタセット104Rの第1の実際のリセット値を読み出した後、第1のレジスタセット104Rから読み出された実際のリセット値に基づいて第1の実際のシグネチャ値を決定する際に、この第1の実際のシグネチャ値を計算することができる。例えば、第1のレジスタセット104Rが実際に0x0010_0000にリセットされ、且つ第1の実際のシグネチャ値が、第1の実際のリセット値のビットの合計か否かを示す単一パリティビットを提供する単純なチェックサムである場合、シグネチャ値は、この例では、「1」となる。
【0023】
306では、本方法は、第1の計算されたシグネチャ値が第1の期待シグネチャ値と等しいか否かを決定する。第1の期待シグネチャ値は、メモリに保存することができ、及び第1のリセット信号がアサートされるより前に、予め決定することができる。例えば、第1のレジスタセットが0x0000_0000にリセットされると期待された場合に、対応するパリティビットチェックサムは、第1の期待シグネチャ値に関して「0」となる。
【0024】
計算されたシグネチャ値が期待シグネチャ値と等しい場合(306においてYES)、ブロック308において、マイクロコントローラシステム100は、信頼できる安全状態にあると見なされる。図2の310を参照のこと。本方法は次に、別のリセット信号が受信されるまで、信頼できる安全状態で動作の継続を進める。第1のリセット信号R1、第2のリセット信号R2、又は第3のリセット信号R3が受信されたかに応じて、本方法は、それぞれ302、312、又は322に進む。
【0025】
しかしながら、計算されたシグネチャ値が期待シグネチャ値と異なる場合(306においてNO)、311において、第1の周辺機器104は(従ってマイクロコントローラシステム100も)、潜在的に安全でない状態にあると見なされる。図2の310を参照のこと。例えば、前の幾つかの段落における我々の例では、第1の計算されたシグネチャは、「1」であり、及び第1の期待シグネチャは「0」であるので、第1の周辺機器104は、潜在的に安全でない状態にあり、これは、どんな理由であれ、第1のレジスタセット104Rのビットが、期待通りにリセットされた状態にならなかったことを意味する。図2のブロック310に示されるように、アプリケーションが潜在的に安全でない状態で進行することを望む場合には、それは、そのようにすることができ、第1の周辺機器104の通常動作が実行され、あるいは、アプリケーションが潜在的に安全でない状態で進行しようとしない場合には、アプリケーションは、例えば、第1のリセット信号R1を再アサートすることによって、第1の周辺機器104のリセットをトリガすることができる。どちらにせよ、図3では、ある時点で、別のリセット信号を受信することができる。第1のリセット信号R1、第2のリセット信号R2、又は第3のリセット信号R3が受信されたかに応じて、本方法は、それぞれブロック302、ブロック312、又はブロック322に進むことができる。
【0026】
312では、第2のリセット信号R2が、第1の周辺機器104の第1のレジスタセット104Rをリセットすることなく、第2の周辺機器106の第2のレジスタセット106Rをリセットする。例えば、前の図1に関して、第2のリセット信号R2は、第1のレジスタセット104Rを設定又はリセットすることなく、第2のレジスタセット106Rが第2の所定の値にリセットされるように、第2の周辺機器106をリセットすることができる。
【0027】
314では、アシュアランスモジュールが、第2のレジスタセット106Rの第2の実際のシグネチャ値を計算する。この第2の実際のシグネチャ値は、第2のレジスタセット106Rの値を読み出した後、第2のレジスタセット106Rから読み出された値に基づいて第2の実際のシグネチャ値を決定するアシュアランスモジュールによって計算される。
【0028】
316では、本方法は、第2の計算されたシグネチャ値が第2の期待シグネチャ値と等しいか否かを決定する。第2の期待シグネチャ値は、メモリに保存することができ、及び第2のリセット信号R2がアサートされるより前に、予め決定することができる。
【0029】
第2の計算されたシグネチャ値が第2の期待シグネチャ値に等しい場合(316においてYES)、ブロック318において、マイクロコントローラシステム100は、信頼できる安全状態にあると見なされる。図2の310を参照のこと。本方法は次に、別のリセット動作が受信されるまで、信頼できる安全状態で動作の継続を進める。第1のリセット信号R1、第2のリセット信号R2、又は第3のリセット信号R3が受信されるかに応じて、本方法は、それぞれ302、312、又は322に進むことができる。
【0030】
しかしながら、計算されたシグネチャ値が第2の期待シグネチャ値と異なる場合(306においてNO)、321において、第2の周辺機器は(従ってマイクロコントローラシステム100も)、潜在的に安全でない状態にあると見なされる。図2の310を参照のこと。アプリケーションが潜在的に安全でない状態で進行することを望む場合には、それは、そのようにすることができ、第2の周辺機器106の通常動作が実行され、あるいは、アプリケーションが潜在的に安全でない状態で進行しようとしない場合には、アプリケーションは、例えば、第2のリセット信号R2を再アサートすることによって、第2の周辺機器106のリセットをトリガすることができる。どちらにせよ、ある時点で、別のリセット信号を受信することができる。第1のリセット信号R1、第2のリセット信号R2、又は第3のリセット信号R3が受信されるかに応じて、本方法は、それぞれブロック302、ブロック312、又はブロック322に進むことができる。
【0031】
322では、第3のリセット信号が、第1の周辺機器104の第1のレジスタセット104R及び第2の周辺機器106の第2のレジスタセット106Rの両方をリセットする。
【0032】
324では、アシュアランスモジュールが、第1のレジスタセット104R及び第2のレジスタセット106Rに関して第3の実際のシグネチャ値を計算する。この第3の実際のシグネチャ値は、第1のレジスタセット104R及び第2のレジスタセット106Rの値を読み出した後、第1及び第2のレジスタセットから読み出された値に基づいて第3の実際のシグネチャ値を決定するアシュアランスモジュールによって計算される。
【0033】
326では、本方法は、第3の計算されたシグネチャ値が第3の期待シグネチャ値と等しいか否かを決定する。第3の期待シグネチャ値は、メモリに保存することができ、及び第3のリセット信号がアサートされるより前に、予め決定することができる。
【0034】
第3の計算されたシグネチャ値が、第3の期待シグネチャ値と等しい場合(326においてYES)、ブロック328において、マイクロコントローラシステム100は、信頼できる安全状態にあると見なされる。図2の310を参照のこと。本方法は次に、別のリセット動作が受信されるまで、信頼できる安全状態で動作の継続を進める。第1のリセット信号R1、第2のリセット信号R2、又は第3のリセット信号R3が受信されたかに応じて、本方法は、それぞれ302、312、又は322に進むことができる。
【0035】
しかしながら、計算されたシグネチャ値が、第3の期待シグネチャ値と異なる場合(326においてNO)、331において、第1の周辺機器104及び/又は第2の周辺機器106の少なくとも一方は(従ってマイクロコントローラシステム100も)、潜在的に安全でない状態にあると見なされる。図2の310を参照のこと。アプリケーションが潜在的に安全でない状態で進行することを望む場合には、それは、そのようにすることができ、第1の周辺機器104及び第2の周辺機器106の通常動作が実行され、あるいは、アプリケーションが潜在的に安全でない状態で進行しようとしない場合には、アプリケーションは、例えば、第3のリセット信号R3を再アサートすることによって、第1の周辺機器104及び第2の周辺機器106両方のリセットをトリガすることができる。どちらにせよ、ある時点で、別のリセット信号を受信することができる。第1のリセット信号、第2のリセット信号、又は第3のリセット信号が受信されたかに応じて、本方法は、それぞれブロック302、ブロック312、又はブロック322に進むことができる。
【0036】
図4は、幾つかの実施形態による別のマイクロコントローラシステム400を示す。マイクロコントローラシステム400は、リセットモジュール402、プロセッシングユニット404、及びタイマ406と、電源408と、シリアルポート410と、クロックモジュール412と、入力/出力(I/O)ポート414と、メモリ416とを含む幾つかの周辺機器/モジュールを含む。プロセッシングユニット404及び周辺機器は、Nビットバスインタフェース(Nは、一般的に、8、16、32、64、128等である)などのバスインタフェース419によって互いに動作可能に結合される。従って、様々な実施形態において、周辺機器406〜416の何れも、図1〜3に関して前述の通り、第1の周辺機器又は第2の周辺機器に対応することができ、そのため、対応する機能性を示すことができる。幾つかの実施形態に従った、より詳細な実施例を以下に記載する。
【0037】
リセットモジュール402は、第1のリセット信号R1(例えば、パワーオンリセット信号)、第2のリセット信号R2(例えば、システムリセット)、及び第3のリセット信号R3(例えば、アプリケーションリセット信号)を含む複数のリセット信号を提供する。リセット信号は、バスインタフェース419上で、又は別々のリセットラインによって、様々なモジュールに提供することができ、モジュールの異なる組み合わせをリセットすることができる。例えば、第1のリセット信号R1は、プロセッシングユニット404、タイマ406、電源408、シリアルポート410、クロックモジュール412、I/Oポート414、及びメモリ416を含むマイクロコントローラシステム400の全てのモジュールをリセットすることができる。第2のリセット信号R2は、プロセッシングユニット404、タイマ406、シリアルポート410、クロックモジュール412、I/Oポート414、及びメモリ416を含む(但し、電源408は含まない)第1のモジュールサブセットをリセットすることができる。第3のリセット信号R3は、プロセッシングユニット404及びタイマ406を含む(但し、シリアルポート410、電源408、クロックモジュール412、I/Oポート414、又はメモリ416は含まない)第2のモジュールサブセットをリセットすることができる。
【0038】
モジュールが、リセット信号を受信し、それに応じてリセット動作を経た直後に、リセット動作後に期待される状態に実際にあることを検証するために、アシュアランスモジュール420が含まれる。図4のマイクロコントローラシステム400のより詳細な機能性を、図5に関して以下に記載する。
【0039】
ブロック502では、マイクロコントローラシステム400が、例えば、ユーザイベント(例えば、ユーザがキーを車両のイグニッションに入れる、又はワイヤレスキーチェーンを自動車の帯域に至らせるなど)によってトリガされた後に、起動及び電源オンする。
【0040】
504では、起動に応答して、マイクロコントローラが、全てのモジュールを初期化するために、一般的にフラッシュメモリ418及び/又は読み出し専用メモリ(ROM)に保存されたブートコードを実行する。このブロック中に、プロセッシングユニット404は、構成パラメータ(例えば、404C、406C、408C、…)を対応するモジュール(例えば、それぞれ404、406、408、…)にロードする。例えば、これらの構成パラメータは、電源408の初期電力構成の設定、クロックモジュール412の初期クロックレートの設定などを行うことができる。ブートコードは、異なるマイクロコントローラシステム及び/又は異なる顧客ごとに異なることが可能で、これは、良好な製品多様化を可能にする。
【0041】
506では、アシュアランスモジュール420が、マイクロコントローラシステムが正しく電源オンしたことを保証するために、リセットされた周辺機器の第1の実際のシグネチャ値を計算する。例えば、モジュール404、406、408、410、412、414、及び418が、電源オン中にリセットされているので、アシュアランスモジュールは、レジスタ404R、406R、408R、410R、412R、414Rに関して、及びフラッシュメモリ418に関して単一のチェックサムを計算することができ、メモリ中の場所422に、R1の第1の計算されたシグネチャ値を保存することができる。あるいは、R1の第1の計算されたシグネチャ値は、メモリ416の他の部分に保存されてもよく、又はアシュアランスモジュールが、専用ハードウェアモジュールとして実装される場合には、第1の計算されたシグネチャ値は、アシュアランスモジュール内に保存することができる。幾つかの実施形態では、第1の計算されたシグネチャ値422は、ストレージの消費を制限するために、1バイト又はワードでもよいが、複数のバイト又はワードでもよい。
【0042】
508では、プロセッシングユニット404及び/又はアシュアランスモジュール420は、第1の計算されたシグネチャ422が第1の期待シグネチャ428と同一であるか否かを決定する。第1の期待シグネチャ428は、メモリに保存された期待レジスタリセット値434に基づくとともに、フラッシュメモリ418に保存された構成パラメータにも基づくことができる。例えば、システム上で実行しているアプリケーションは、それのプログラミングコードの一部として、特に、タイマ406、電源408及び/又はクロックモジュール412に関するこれらの期待レジスタリセット値434を含むことができ、これは、ユーザ/顧客に、システムがどのように動作するかに関して、ある程度の柔軟性を提供することができる。この場合、第1のシグネチャ値は、これらの期待レジスタリセット値に基づくことができ、それによって、リセット中のエラーの検出が可能となる。
【0043】
第1の計算されたシグネチャ422が、第1の期待シグネチャ428と同一である場合(508においてYES)、システムは、510において、信頼できる安全状態に入る。システムは次に、アプリケーションソフトウェアが実行し、リセット信号が受信されるまでマイクロコントローラシステムの進行中の動作が継続する512へと進む。
【0044】
一方、第1の計算されたシグネチャ422が、第1の期待シグネチャ428と異なる場合(508においてNO)、リセットされた少なくとも1つのレジスタが、それの期待リセット値にリセットされておらず、514において、システムは、潜在的に安全でない状態にある。システムは次に、ブロック516において、どのレジスタが正しく初期化されなかったのかを決定するための分析を行うことができる。例えば、システムは、リセットされるべきであった各レジスタから実際のリセット値を読み取った後、実際のリセット値を、例えばメモリ416内のSRAMに保存することができる、当該レジスタの期待レジスタリセット値(434)と比較することができる。
【0045】
518では、どのレジスタグループが正しくリセットされた状態とならなかったかを識別した後、システムは、誤って初期化されたレジスタのグループが、必須のレジスタを含むか否かを決定する。グループ内に必須のレジスタが含まれる場合(518においてYES)、520において、システムは、安全でない状態にあると見なされ、第2のリセット信号(例えば、システムリセット)が、アプリケーションからの入力を求めることなく、再度印加される。このようにして、車両などのシステムの動作が、必須のレジスタが正しく初期化されなかった場合に、阻止される。一方、必須のレジスタが含まれない場合(518においてNO)、522において、システムは、低下した安全状態にあると見なされる。このような低下した安全状態では、524において、アプリケーションに通知が送られ、ブロック526において、アプリケーションは、低下した安全モードでシステム動作を継続しようとするか否かに関する選択肢を与えられる。アプリケーションが継続しようとしない場合(526においてNO)、システムは、再度安全でない状態にあることとなり、第1のリセット信号が再印加される。アプリケーションが、低下した安全状態で継続しようとする場合(526においてYES)、システムは次に、アプリケーションソフトウェアが実行し、リセット信号が受信されるまでマイクロコントローラシステムの進行中の動作が継続する512へと進む。
【0046】
512における進行中の動作中に、システムは、この例では第1のリセット信号、第2のリセット信号、又は第3のリセット信号によって、いつでも中断されることが可能で、従って、システムは、リセットが受信されるまで(この時、通常動作に戻る際にループに再び入る前に、システムは、リセットに対処するためにループから外れる)、進行形でブロック512、528、530、及び538をループしていると考えることができる。他の例では、他の数のリセット信号が存在してもよい。例えば、一部のケースでは、1つのリセットのみが存在してもよいが、他のケースでは、多数の異なる種類のリセットが存在してもよく、各リセットは、潜在的に、周辺機器及び/又はモジュールの異なる組み合わせをリセットすることができる。
【0047】
528では、システムは、第1のリセット信号R1(例えば、パワーオンリセット)が受信されたかどうかを決定する。そうであれば、システムは、前述の通り、502及び/又は504に戻り、そうでなければ、システムは、530に進む。
【0048】
530において、システムは、第2のリセット信号R2(例えば、システムリセット)が受信されたかどうかを決定する。そうであれば(530においてYES)、リセットリクエストハンドラが、SRAMに期待リセット値434を保存し(532)、534において、ハードウェアが、第2のリセット信号に対応したリセットシーケンスを実行する。536では、第1のモジュールサブセットを初期化するために、ROMブートコードが実行される。例えば、図4に関して、第2のリセット信号は、プロセッシングユニット404、タイマ406、シリアルポート410、クロックモジュール412、I/Oポート414、及びメモリ416を含む第1のモジュールサブセットをリセットすることができる。従って、第2のリセット信号は、第1のモジュールサブセットに含まれない電源408をリセットしない。このブートコード実行に応答して、第1のモジュールサブセットの各モジュール/周辺機器のレジスタが、実際のリセット値にリセットされた状態となる。リセットモジュールが正しくリセットされると、モジュールのレジスタの実際のリセット値は、モジュールのレジスタの期待リセット値と同じになる。しかしながら、予期せぬ事象が生じた場合(例えば、アルファ粒子の衝突、デバイスの故障)、モジュールのレジスタの実際のリセット値は、モジュールの当該レジスタの期待リセット値とは異なり得る。
【0049】
第1のサブセットのモジュールが正しくリセットされた状態であることを保証するために、ブロック538において、アシュアランスモジュール420は、第1のモジュールサブセットのレジスタに関する第2のシグネチャ値を計算する。例えば、図4に関して、第2のシグネチャ値は、PUレジスタ404R、タイマレジスタ406R、シリアルポートレジスタ410R、クロックモジュールレジスタ412R、I/Oポートレジスタ414R、及びフラッシュメモリ418内の構成ビットに関して計算することができる。従って、第2のシグネチャ値は、電源408が第1のモジュールサブセットに含まれていないので、電源レジスタ408Rに関して計算されない。幾つかの実施形態では、第2のシグネチャ値は、それが異なる長さのレジスタに関して計算されるとしても、第1のシグネチャ値と同じ長さとなり得る。
【0050】
ブロック539では、第1のモジュールサブセットのレジスタ値が検証される。従って、540において、第2の計算されたシグネチャが、第2の期待シグネチャと同一でない場合(540においてNO)、システムは、前述の通り、514に戻る。第2の計算されたシグネチャが第2の期待シグネチャと同一である場合(540においてYES)、システムは、510(信頼できる安全状態)に戻ることができ、又はオプションとして示されるように、期待リセット値がレジスタから読み出されたことを検証するために536に進んでもよい。536では、システムは、実際のレジスタ値がメモリに保存された期待リセット値と同じであることを確認するために、各レジスタから実際の値を読み出すことができる。再度、実際のリセット値が、期待リセット値と同じであれば、システムは、510(信頼できる安全状態)に戻るが、差異が検出されれば、システムは、514に戻る。一般的な実施形態において、ごく少数のレジスタのみ(例えば、非常に重要であると見なされるものだけ)が、このように(532、536)扱われる/チェックされることを注記しておく。例えば、上記の例は、プロセッシングユニット404、タイマ406、シリアルポート410、クロックモジュール412、I/Oポート414、及びメモリ416をリセットするが、より一般的な実施形態では、クロックモジュール412の主要制御レジスタなどの非常に重要なレジスタのみが、読み出され、532において、リセットリクエストハンドラによって期待値がSRAMに保存された後、536においてチェックされる。これは、より多くのレジスタをリセット(及びチェック)することが、リセット及びブート時間を増加させる傾向にあるからであり、可能な限りレジスタの数を少なく保つことによって、幾つかの点で動作性能を向上させる。
【0051】
538では、システムは、第3のリセット信号R3(例えば、アプリケーションリセット)が受信されたかどうかを決定する。そうであれば(538においてYES)、リセットリクエストハンドラは、期待リセット値434をSRAMに保存し(540)、542において、ハードウェアは、第3のリセット信号に対応するリセットシーケンスを実行する。544において、第1のモジュールサブセットとは異なる第2のモジュールサブセットを初期化するために、ROMブートコードが実行される。例えば、図4に関して、第3のリセット信号は、プロセッシングユニット404及びタイマ406を含む第2のモジュールサブセットをリセットすることができる。従って、第3のリセット信号は、第2のモジュールサブセットに含まれない電源408、シリアルポート410、クロックモジュール412、I/Oポート414、及び/又はメモリ416のリセットを行わない。このブートコード実行に応答して、第2のモジュールサブセットの各モジュール/周辺機器のレジスタが、実際のリセット値にリセットされた状態となる。リセットモジュールが正しくリセットされると、モジュールのレジスタの実際のリセット値は、モジュールのレジスタの期待リセット値と同じとなる。しかしながら、予期せぬ事象が生じた場合(例えば、アルファ粒子の衝突、デバイスの故障)、モジュールのレジスタの実際のリセット値は、モジュールの当該レジスタの期待リセット値とは異なり得る。
【0052】
第2のサブセットのモジュールが正しくリセットされた状態であることを保証するために、ブロック546において、アシュアランスモジュール420が、第2のモジュールサブセットのレジスタに関する第3のシグネチャ値を計算する。例えば、図4に関して、第3のシグネチャ値は、PUレジスタ404R及びタイマレジスタ406Rに関して計算することができる。従って、第2のシグネチャ値は、電源レジスタ408R、シリアルポートレジスタ410R、クロックモジュールレジスタ412R、I/Oポートレジスタ414R、及びフラッシュメモリ418の構成ビットが、第2のモジュールサブセットに含まれていないので、これらのモジュール/周辺機器に関して計算されない。幾つかの実施形態では、第3のシグネチャ値は、それが異なる長さのレジスタに関して計算されるとしても、第1のシグネチャ値と同じ長さとなり得る。
【0053】
ブロック547では、第2のモジュールサブセットのレジスタ値が検証される。従って、548において、第3の計算されたシグネチャが、第3の期待シグネチャと同一でない場合(548においてNO)、システムは、前述の通り、514に戻る。第3の計算されたシグネチャが第3の期待シグネチャと同一である場合(548においてYES)、システムは、510(信頼できる安全状態)に戻ることができ、又はオプションとして示されるように、期待リセット値がレジスタから読み出されたことを検証するために550に進んでもよい。550では、システムは、実際のレジスタ値がメモリに保存された期待リセット値と同じであることを確認するために、各レジスタから実際の値を読み出すことができる。再度、実際のリセット値が、期待リセット値と同じであれば、システムは、510(信頼できる安全状態)に戻るが、差異が検出されれば、システムは、514に戻る。
【0054】
幾つかの実施形態では、アシュアランスモジュールがシステムリソースを幅広く利用できる初期の安全起動モード中に、リセットが生じる。さらに、アシュアランスモジュール420は、アプリケーションソフトウェアの初期化に先立ち得る安全起動モード中に、計算されたシグネチャ値と期待シグネチャ値との比較を行う。従って、場合によっては、初期の安全起動モードが終わった後に、システムは、アプリケーションソフトウェアが実行を開始する際に、通常動作モードに入る。通常動作モード中は、アプリケーションソフトウェアが全てのシステムリソースにアクセスすることを阻止するために、セキュリティ対策が実施される場合がある。アプリケーションソフトウェアに対するこの制限に対処するために、アシュアランスモジュールは、ある値を所定の記憶場所に書き込むことによって、又はそれ自体のレジスタの1つにその値を保存することによって、初期化の際にアプリケーションが、もしあればどのモジュールが誤って初期化したのかを認識するために、所定の記憶場所又はアシュアランスモジュールのレジスタから読み出すことができるように、アプリケーションに通知する(例えば、ブロック524と同じである)。このようにして、アプリケーションは、通常動作中に(例えば、初期の安全起動モードが完了した後に)、誤って初期化されたモジュールを認識することができ、ブロック522〜526において、動作を続けるのか、あるいは別のリセットを生じさせるのかを決めることができる。それに対し、幾つかの実施形態では、ブロック518は、誤って初期化されたレジスタが必須のレジスタである場合(518においてYES)、初期の安全起動モード中であって、アプリケーションソフトウェアの実行が開始される前に、リセットが再度出される(これは、システムの安全な動作を保証する助けとなる)ように、初期の安全起動モード中に実行される。
【0055】
従って、本開示の幾つかの実施形態は、マイクロコントローラシステムに関する。マイクロコントローラシステムは、プロセッシングユニット、第1の周辺機器、及びアシュアランスモジュールを含む。第1の周辺機器は、バスインタフェースによってプロセッシングユニットに接続され、第1のレジスタセットを有する。第1の周辺機器は、第1のレジスタセットを第1の実際のリセット値にリセットする第1のリセット信号を受信するように構成される。第1の実際のリセット値は、第1のリセット信号に応答した第1の期待値であると予想される。アシュアランスモジュールは、第1のリセット信号に応答して、第1のシグネチャ値を計算するように構成される。第1のシグネチャ値は、第1の実際のリセット値に基づく。プロセッシングユニットは、マイクロコントローラシステムが信頼できる安全状態にあるか否かを決定するために、計算された第1のシグネチャ値と所定の第1のシグネチャ値との第1の比較を行うように構成される。第1の比較は、第1のリセット信号に応答して行われ、所定の第1のシグネチャ値は、第1の期待値に基づく。
【0056】
他の実施形態は、マイクロコントローラ及び複数のレジスタを含むシステムにおける安全なリセットの方法に関する。この方法では、リセット信号が受信され、複数のレジスタの少なくとも幾つかが、リセット信号に基づいてリセットされ、このリセットは、上記複数のレジスタの上記少なくとも幾つかを、それぞれ所定の初期化値に設定すると期待される。この方法は、所定の初期化値に基づいて、シグネチャ値を計算し、計算されたシグネチャ値を所定のシグネチャ値と比較することによって、上記複数のレジスタの上記少なくとも幾つかが、正しく初期化したか否かを決定する。計算されたシグネチャ値が、所定のシグネチャ値とビットに関して同一である場合にのみ、システムは、信頼できる状態で動作する。計算されたシグネチャ値が、所定のシグネチャ値と異なる場合、システムは、低下した安全状態又は安全でない状態に入る。
【0057】
さらに他の実施形態が、プロセッシングユニットと、バスインタフェースによってプロセッシングユニットに結合された複数の周辺機器と、プロセッシングユニット及び複数の周辺機器に結合されたリセットモジュールとを含むマイクロコントローラシステムに関する。リセットモジュールは、複数の周辺機器の異なる組み合わせをリセットする複数のリセット信号を提供するように構成される。第1のリセット信号は、複数の周辺機器の第1の組み合わせをリセットし、第2のリセット信号は、複数の周辺機器の第2の組み合わせをリセットする。アシュアランスモジュールは、第1のリセット信号に応答して第1のシグネチャ値を計算し、及び第2のリセット信号に応答して第2のシグネチャ値を計算するように構成される。第1のシグネチャ値は、複数の周辺機器の第1の組み合わせのレジスタの実際のリセット値に基づき、第2のシグネチャ値は、複数の周辺機器の第2の組み合わせのレジスタの実際のリセット値に基づく。
【0058】
上記は、当業者が本開示の局面をよりよく理解することができるように、幾つかの実施形態の特徴の概要を説明するものである。当業者は、本明細書で紹介された実施形態と同じ目的を実行する、及び/又はそれらと同じ利点を達成するために、他のプロセス及び構造を設計又は変更するための基礎として、本開示を容易に使用できることを認識するだろう。当業者は、そのような同等の構造が、本開示の精神及び範囲から逸脱せず、且つ本開示の精神及び範囲から逸脱することなく、本明細書に様々な変更、置換、及び修正を行うことができることも理解するだろう。
【符号の説明】
【0059】
100、400 マイクロコントローラシステム
102、404 プロセッシングユニット
104 第1の周辺機器
104R 第1のレジスタセット
106 第2の周辺機器
106R 第2のレジスタセット
110、419 バスインタフェース
108、420 アシュアランスモジュール
402 リセットモジュール
422 第1の計算されたシグネチャ値
428 第1の期待シグネチャ値
434 期待レジスタリセット値
図1
図2
図3
図4
図5