[go: up one dir, main page]

JP2018160240A - 安全関連のアプリケーションにおけるマイクロコントローラシステム用の安全なリセット技術 - Google Patents

安全関連のアプリケーションにおけるマイクロコントローラシステム用の安全なリセット技術 Download PDF

Info

Publication number
JP2018160240A
JP2018160240A JP2018041458A JP2018041458A JP2018160240A JP 2018160240 A JP2018160240 A JP 2018160240A JP 2018041458 A JP2018041458 A JP 2018041458A JP 2018041458 A JP2018041458 A JP 2018041458A JP 2018160240 A JP2018160240 A JP 2018160240A
Authority
JP
Japan
Prior art keywords
reset
value
register
signature value
reset signal
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2018041458A
Other languages
English (en)
Other versions
JP6622337B2 (ja
Inventor
ボイコ トレイコフ,
Traykov Boyko
ボイコ トレイコフ,
ファイト クリーベルガー,
Kleeberger Veit
ファイト クリーベルガー,
ラファエル ザルマン,
Zalman Rafael
ラファエル ザルマン,
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Infineon Technologies AG
Original Assignee
Infineon Technologies AG
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Infineon Technologies AG filed Critical Infineon Technologies AG
Publication of JP2018160240A publication Critical patent/JP2018160240A/ja
Application granted granted Critical
Publication of JP6622337B2 publication Critical patent/JP6622337B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0796Safety measures, i.e. ensuring safe condition in the event of error, e.g. for controlling element
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1438Restarting or rejuvenating
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2205Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
    • G06F11/2221Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test input/output devices or peripheral units
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2284Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing by power-on test, e.g. power-on self test [POST]
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1441Resetting or repowering
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/83Indexing scheme relating to error detection, to error correction, and to monitoring the solution involving signatures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】 安全関連のアプリケーションにおけるマイクロコントローラシステム用の安全なリセット技術を提供する。【解決手段】 マイクロコントローラシステムは、プロセッシングユニット、第1のレジスタセットを有した第1の周辺機器、及びアシュアランスモジュールを含む。第1の周辺機器は、第1のレジスタセットを第1の期待値であると予想される第1の実際のリセット値にリセットする第1のリセット信号を受信するように構成される。アシュアランスモジュールは、第1のリセット信号に応答して、第1の実際のリセット値に基づく第1のシグネチャ値を計算するように構成される。プロセッシングユニットは、マイクロコントローラシステムが信頼できる安全状態にあるか否かを決定するために、計算された第1のシグネチャ値と所定の第1のシグネチャ値との第1の比較を行うように構成される。第1の比較は、第1のリセット信号に応答して行われ、所定の第1のシグネチャ値は、第1の期待値に基づく。【選択図】 図1

Description

安全関連のアプリケーションに関して、アプリケーションの全段階において、それらの意図された機能性をマイクロコントローラが正しく実行することを確実にすることが重要である。この実行は、ハードウェア及びソフトウェア両方のコンポーネントのそれらの仕様に対する正確さと、この機能性のフォールトフリー実行とを担う。一般に、安全関連のアプリケーションは、システムの不具合を回避する、及びアプリケーションの実行中に起こり得るランダムなハードウェアの不具合に対して検出及び対応する特別な手段を用いて構築される。
しかしながら、マイクロコントローラが、最初の起動時、又は既知の状態から(例えば、リセットトリガ後)の再起動時に、マイクロコントローラは、その製造時にマイクロコントローラに組み込まれた起動コードを実行する。マイクロコントローラの起動が、起動中にハードウェアの不具合によって影響を受けると、ハードウェア及びソフトウェアの残りの部分がフォールトフリーであったとしても、もはや意図された機能性を正しく行うことができない場合がある。つまり、マイクロコントローラの起動段階中の不具合は、安全関連のアプリケーションの実行に波及し、よって、潜在的に安全でない状況の原因となり得る。
本開示の局面は、添付の図面と共に読まれた場合の以下の詳細な説明から、最もよく理解される。なお、当業界の一般的な慣例に従って、様々な特徴が、正確な縮尺率で描かれていない。実際、様々な特徴の寸法は、説明を明確にするために、任意に増加又は減少させている場合がある。
幾つかの実施形態による、安全なリセット動作を利用したマイクロコントローラシステムのブロック図を示す。 幾つかの実施形態による、安全なリセット動作の方法のフロー図を示す。 幾つかの実施形態による、安全なリセット動作の方法のフロー図を示す。 幾つかの実施形態による、安全なリセット動作を利用したマイクロコントローラシステムのブロック図を示す。 幾つかの実施形態による、安全なリセット動作の方法のフロー図を示すとともに、図4に関して非限定的に記載される。
以下の詳細な説明は、本開示の一部を構成し、且つ例示を目的として、それによって本開示を実際的に実現することができる特別な実施形態例が示される添付の図面を参照する。本開示の保護の範囲を越えることなく、他の実施形態例が用いられてもよく、並びに構造上の及び他の変更が実施されてもよいことが理解される。従って、以下の詳細な説明は、制限的なものと見なされるものではない。正確には、本開示の保護の範囲は、添付の特許請求の範囲によってのみ定義される。
図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によって実行される一連のコンピュータ可読命令として実装されてもよい。
第1の周辺機器104は、第1のレジスタセット104Rを有し、第1のレジスタセット104Rを第1の実際のリセット値にリセットする第1のリセット信号R1を受信するように構成される。第1の実際のリセット値は、第1のリセット信号に応答した第1の期待リセット値であると予想されるが、何らかのエラーが生じた場合に、第1の期待リセット値とは異なり得る。
第2の周辺機器106は、第1のレジスタセット104Rとは異なる第2のレジスタセット106Rを有する。第2の周辺機器106は、第1のリセット信号R1とは異なり、且つ第1のレジスタセット104Rを設定又はリセットすることなく、第2のレジスタセット106Rを第2の実際のリセット値にリセットする第2のリセット信号R2を受信するように構成される。第1の実際のリセット値と同様に、第2の実際のリセット値は、第2のリセット信号R2に応答した第2の期待リセット値であると予想されるが、何らかのエラーが生じた場合に、第2の期待リセット値とは異なり得る。
第1及び第2のリセット信号R1、R2(幾つかの文脈では、アプリケーションリセット又はシステムリセットとも呼ばれる場合がある)はそれぞれ、第1の周辺機器104又は第2の周辺機器106の一方をリセットするが(ただし、第1及び第2の周辺機器の両方ではない)、第3の種類のリセット信号R3(システムリセット又はパワーオンリセットとも呼ばれる場合がある)は、第1の周辺機器104及び第2の周辺機器106の両方を同時にリセットすることができる。本出願で使用される「リセット」という用語は、幾つかの文脈では、レジスタのデジタルビットがゼロの論理値に「リセット」される「リセット」動作と呼ばれるものを含み得るが、幾つかの文脈では、レジスタのデジタルビットが1の論理値に「設定」される「設定」動作と呼ばれるものも含み得ることが認識されるだろう。従って、「リセット」という用語は、レジスタをある所定の状態にプログラムすると解釈されるものであり、レジスタを論理ゼロ状態にプログラムすることにのみ限定されない。
受信されたリセット信号がどのような特定の種類であろうと、第1の周辺機器104及び/又は第2の周辺機器106のリセット中に、システム障害、アルファ粒子の衝突、又は他の予期せぬ事象が生じた場合に、第1のレジスタセット104Rの第1の実際のリセット値及び/又は第2のレジスタセット106Rの第2の実際のリセット値は、第1の期待リセット値及び/又は第2の期待リセット値とそれぞれ異なる可能性がある。例えば、第1の期待リセット値が0x0000であるが、予期せぬ事象が、リセット直後の第1の実際のリセット値が0x0100の状態にあることを生じさせる場合、第1の期待リセット値と第1の実際のリセット値との差は、第1の周辺機器104のリセット中に不具合が生じたことを示す可能性があり、これは、潜在的に、マイクロコントローラシステム100における問題の原因となり得る。
従って、アシュアランスモジュール108は、例えば図2〜3のフロー図に関して、より詳細にこれから説明されるように、第1及び第2の周辺機器104、106が信頼できる状態にリセットされたことを保証する助けとして、それぞれのリセット直後に第1及び第2の周辺機器104、106のシグネチャ値を計算するように構成される。図2〜3は、一連の行為として記載されるが、これらの行為は、行為の順序が他の実施形態では変更できる点において限定的ではなく、図2〜3の方法も図1の構造に限定されるのではなく、他の構造に適用可能であることが認識されるだろう。他の実施形態では、図示及び/又は記載された幾つかの行為が、全体的に又は部分的に省略されてもよい。同じことが、図5に示されるフローチャートなどの、本明細書に開示される他の方法にも当てはまる。
これより図2を参照して、ブロック202では、リセット信号が、例えば図1の第1の周辺機器104又は第2の周辺機器106などの周辺機器によって受信される。
ブロック204では、プロセッシングユニット102が、リセット信号を認識し、読み出し専用メモリ(ROM)及び/又はフラッシュメモリからファームウェア及び/又はブートコードを実行する。このファームウェア及び/又はブートコードは、周辺機器のレジスタをリセットし、これは、ファームウェア及び/又はブートコードが初期状態にインストールすることを意味する。例えば、図1の例では、第1のリセット信号R1がアサートされたことを認識すると、プロセッシングユニット102は、第1のレジスタセット104Rをリセットするファームウェア及び/又はブートコードを実行することができる。例えば、第1の周辺機器104が、32ビットバスインタフェースに接続するタイマモジュールである場合、タイマモジュールは、32ビット制御レジスタ、32ビット入力データレジスタ、及び32ビット出力データレジスタを含むことができる。理想的には、周辺機器のレジスタは、それらの期待リセット値に設定又はリセットされるが、予期せぬ事象が、レジスタの実際のリセット値を、それらの期待リセット値とは異ならせる可能性がある。例えば、ある場合には、リセット信号が、タイマモジュールの制御レジスタを所定値(例えば、16進数で、0x0000_0011)に設定すると同時に、入力データレジスタ及び出力データレジスタを所定値(例えば、0x0000_0000)にリセットすることが期待できる、あるいは、入力データレジスタ及び/又は出力データレジスタを変化させずに、タイマモジュールの制御レジスタを所定値(例えば、0x0000_0011)に設定することが期待できる。
ブロック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のシグネチャ値は、単一ビット(例えば、パリティビット)、マルチビットチェックサム、ハッシュ値、巡回冗長検査、又は消費されるメモリを制限するため、及び幾つかの点で処理速度を向上させるためにチェックされるレジスタのフルセットよりも一般的にビットサイズが小さい別のアシュアランス値でもよい。
ブロック208では、プロセッシングユニット102及び/又はアシュアランスモジュール108が、計算されたシグネチャ値が、期待シグネチャ値とビットに関して同一であるか否かを決定する。従って、図1に関して記載された例を継続して、第1のシグネチャ値が計算された後、プロセッシングユニット102及び/又はアシュアランスモジュール108は、計算された第1のシグネチャ値と、所定の第1のシグネチャ値との第1の比較を行うことによって、マイクロコントローラシステム100が信頼できる安全状態にあるか否かを決定する。所定の第1のシグネチャ値は、リセットが生じる前に決定されることが可能で、例えば、マイクロコントローラシステム100で実行中の、及び/又はその他の方法でメモリに保存されたアプリケーションプログラム(例えば、ソフトウェア)によって提供されてもよい。第1の比較は、第1のリセット信号R1に応答して行われ、所定の第1のシグネチャ値は、第1の期待リセット値に基づき、及び第1のレジスタセット104Rから読み出された第1の実際のリセット値に依存しない。多くの場合、マイクロコントローラシステム100は、計算された第1のシグネチャ値が、期待された第1のシグネチャ値とビットに関して同一である場合に、信頼できる安全状態にあると見なされる。
計算されたシグネチャ値が、期待シグネチャ値と等しければ(208においてYES)、ブロック210において、マイクロコントローラシステム100は、信頼できる安全状態にあると見なされ、212において、周辺機器及び/又はマイクロコントローラシステム100の通常動作が、続いて生じる。
しかしながら、計算されたシグネチャ値が期待シグネチャ値と異なる場合(208においてNO)、214において、マイクロコントローラシステムは、潜在的に安全でない状態にあると見なされる。従って、プロセッシングユニット102及び/又はアシュアランスモジュール108は、一般的にマイクロコントローラシステム100上で実行しているオペレーティングシステムソフトウェアによって、216において、アプリケーションソフトウェアに潜在的に安全でない状態を通知する。
218において、アプリケーションソフトウェアは、一般的にオペレーティングシステムによって、それが潜在的に安全でない状態で周辺機器及び/又はマイクロコントローラシステム100の動作を継続しようとするか否かをマイクロコントローラシステム100に通知することができる。アプリケーションが、潜在的に安全でない状態で継続しようとする場合(218においてYES)、220において、マイクロコントローラシステムは、低下した安全状態にあると見なされ得るが、212において、通常の周辺機器動作は、なお続行される。
一方、アプリケーションが、潜在的に安全でない状態で継続しようとしないことを決定した場合(218においてNO)、アプリケーションは、周辺機器の別のリセットをトリガする命令を提供することができ、周辺機器が通常動作に入ることを阻止することができる。このようにして、アプリケーションは、安全でない状態が実際にどれほど危険なのかを決定する決定権を持ち、適切な対応策を取ることができる。例えば、マイクロコントローラシステム100が、自動車システムに実装される場合、アプリケーションは、安全でない状態が、車両の運転を許可するには危険すぎることを決定することができるとともに、例えば車両がエンジンを始動させることを阻止する予防策を講じることができる。
図3は、幾つかの実施形態による、及び図2の実施形態と様々な様式で組み合わせられてもよい安全なリセットの別の方法を示す。1つのリセット信号のみが示された図2と比較して、図3の実施形態は、3つの異なるリセット信号、すなわち、異なる周辺機器及び/又は異なる周辺機器の組み合わせをリセットする、第1のリセット信号R1(ブロック302を参照)、第2のリセット信号R2(ブロック312を参照)、及び第3のリセット信号R3(ブロック322を参照)を利用する。例示及び明瞭さを目的として、図3の方法の実施態様例は、図1のマイクロコントローラシステムに関して以下に説明される。
302では、第1のリセット信号が、第2の周辺機器の第2のレジスタセットをリセットすることなく、第1の周辺機器の第1のレジスタセットをリセットする。例えば、前の図1に関して、第1のリセット信号R1は、第2のレジスタセット106Rを設定する又はリセットすることなく、第1のレジスタセット104Rが第1の所定の値にリセットされるように、第1の周辺機器104をリセットすることができる。
304では、第1の実際のシグネチャ値が、第1のレジスタセット104Rに関して計算される。幾つかの実施形態では、アシュアランスモジュール108が、第1のレジスタセット104Rの第1の実際のリセット値を読み出した後、第1のレジスタセット104Rから読み出された実際のリセット値に基づいて第1の実際のシグネチャ値を決定する際に、この第1の実際のシグネチャ値を計算することができる。例えば、第1のレジスタセット104Rが実際に0x0010_0000にリセットされ、且つ第1の実際のシグネチャ値が、第1の実際のリセット値のビットの合計か否かを示す単一パリティビットを提供する単純なチェックサムである場合、シグネチャ値は、この例では、「1」となる。
306では、本方法は、第1の計算されたシグネチャ値が第1の期待シグネチャ値と等しいか否かを決定する。第1の期待シグネチャ値は、メモリに保存することができ、及び第1のリセット信号がアサートされるより前に、予め決定することができる。例えば、第1のレジスタセットが0x0000_0000にリセットされると期待された場合に、対応するパリティビットチェックサムは、第1の期待シグネチャ値に関して「0」となる。
計算されたシグネチャ値が期待シグネチャ値と等しい場合(306においてYES)、ブロック308において、マイクロコントローラシステム100は、信頼できる安全状態にあると見なされる。図2の310を参照のこと。本方法は次に、別のリセット信号が受信されるまで、信頼できる安全状態で動作の継続を進める。第1のリセット信号R1、第2のリセット信号R2、又は第3のリセット信号R3が受信されたかに応じて、本方法は、それぞれ302、312、又は322に進む。
しかしながら、計算されたシグネチャ値が期待シグネチャ値と異なる場合(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に進むことができる。
312では、第2のリセット信号R2が、第1の周辺機器104の第1のレジスタセット104Rをリセットすることなく、第2の周辺機器106の第2のレジスタセット106Rをリセットする。例えば、前の図1に関して、第2のリセット信号R2は、第1のレジスタセット104Rを設定又はリセットすることなく、第2のレジスタセット106Rが第2の所定の値にリセットされるように、第2の周辺機器106をリセットすることができる。
314では、アシュアランスモジュールが、第2のレジスタセット106Rの第2の実際のシグネチャ値を計算する。この第2の実際のシグネチャ値は、第2のレジスタセット106Rの値を読み出した後、第2のレジスタセット106Rから読み出された値に基づいて第2の実際のシグネチャ値を決定するアシュアランスモジュールによって計算される。
316では、本方法は、第2の計算されたシグネチャ値が第2の期待シグネチャ値と等しいか否かを決定する。第2の期待シグネチャ値は、メモリに保存することができ、及び第2のリセット信号R2がアサートされるより前に、予め決定することができる。
第2の計算されたシグネチャ値が第2の期待シグネチャ値に等しい場合(316においてYES)、ブロック318において、マイクロコントローラシステム100は、信頼できる安全状態にあると見なされる。図2の310を参照のこと。本方法は次に、別のリセット動作が受信されるまで、信頼できる安全状態で動作の継続を進める。第1のリセット信号R1、第2のリセット信号R2、又は第3のリセット信号R3が受信されるかに応じて、本方法は、それぞれ302、312、又は322に進むことができる。
しかしながら、計算されたシグネチャ値が第2の期待シグネチャ値と異なる場合(306においてNO)、321において、第2の周辺機器は(従ってマイクロコントローラシステム100も)、潜在的に安全でない状態にあると見なされる。図2の310を参照のこと。アプリケーションが潜在的に安全でない状態で進行することを望む場合には、それは、そのようにすることができ、第2の周辺機器106の通常動作が実行され、あるいは、アプリケーションが潜在的に安全でない状態で進行しようとしない場合には、アプリケーションは、例えば、第2のリセット信号R2を再アサートすることによって、第2の周辺機器106のリセットをトリガすることができる。どちらにせよ、ある時点で、別のリセット信号を受信することができる。第1のリセット信号R1、第2のリセット信号R2、又は第3のリセット信号R3が受信されるかに応じて、本方法は、それぞれブロック302、ブロック312、又はブロック322に進むことができる。
322では、第3のリセット信号が、第1の周辺機器104の第1のレジスタセット104R及び第2の周辺機器106の第2のレジスタセット106Rの両方をリセットする。
324では、アシュアランスモジュールが、第1のレジスタセット104R及び第2のレジスタセット106Rに関して第3の実際のシグネチャ値を計算する。この第3の実際のシグネチャ値は、第1のレジスタセット104R及び第2のレジスタセット106Rの値を読み出した後、第1及び第2のレジスタセットから読み出された値に基づいて第3の実際のシグネチャ値を決定するアシュアランスモジュールによって計算される。
326では、本方法は、第3の計算されたシグネチャ値が第3の期待シグネチャ値と等しいか否かを決定する。第3の期待シグネチャ値は、メモリに保存することができ、及び第3のリセット信号がアサートされるより前に、予め決定することができる。
第3の計算されたシグネチャ値が、第3の期待シグネチャ値と等しい場合(326においてYES)、ブロック328において、マイクロコントローラシステム100は、信頼できる安全状態にあると見なされる。図2の310を参照のこと。本方法は次に、別のリセット動作が受信されるまで、信頼できる安全状態で動作の継続を進める。第1のリセット信号R1、第2のリセット信号R2、又は第3のリセット信号R3が受信されたかに応じて、本方法は、それぞれ302、312、又は322に進むことができる。
しかしながら、計算されたシグネチャ値が、第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に進むことができる。
図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の周辺機器に対応することができ、そのため、対応する機能性を示すことができる。幾つかの実施形態に従った、より詳細な実施例を以下に記載する。
リセットモジュール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のモジュールサブセットをリセットすることができる。
モジュールが、リセット信号を受信し、それに応じてリセット動作を経た直後に、リセット動作後に期待される状態に実際にあることを検証するために、アシュアランスモジュール420が含まれる。図4のマイクロコントローラシステム400のより詳細な機能性を、図5に関して以下に記載する。
ブロック502では、マイクロコントローラシステム400が、例えば、ユーザイベント(例えば、ユーザがキーを車両のイグニッションに入れる、又はワイヤレスキーチェーンを自動車の帯域に至らせるなど)によってトリガされた後に、起動及び電源オンする。
504では、起動に応答して、マイクロコントローラが、全てのモジュールを初期化するために、一般的にフラッシュメモリ418及び/又は読み出し専用メモリ(ROM)に保存されたブートコードを実行する。このブロック中に、プロセッシングユニット404は、構成パラメータ(例えば、404C、406C、408C、…)を対応するモジュール(例えば、それぞれ404、406、408、…)にロードする。例えば、これらの構成パラメータは、電源408の初期電力構成の設定、クロックモジュール412の初期クロックレートの設定などを行うことができる。ブートコードは、異なるマイクロコントローラシステム及び/又は異なる顧客ごとに異なることが可能で、これは、良好な製品多様化を可能にする。
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バイト又はワードでもよいが、複数のバイト又はワードでもよい。
508では、プロセッシングユニット404及び/又はアシュアランスモジュール420は、第1の計算されたシグネチャ422が第1の期待シグネチャ428と同一であるか否かを決定する。第1の期待シグネチャ428は、メモリに保存された期待レジスタリセット値434に基づくとともに、フラッシュメモリ418に保存された構成パラメータにも基づくことができる。例えば、システム上で実行しているアプリケーションは、それのプログラミングコードの一部として、特に、タイマ406、電源408及び/又はクロックモジュール412に関するこれらの期待レジスタリセット値434を含むことができ、これは、ユーザ/顧客に、システムがどのように動作するかに関して、ある程度の柔軟性を提供することができる。この場合、第1のシグネチャ値は、これらの期待レジスタリセット値に基づくことができ、それによって、リセット中のエラーの検出が可能となる。
第1の計算されたシグネチャ422が、第1の期待シグネチャ428と同一である場合(508においてYES)、システムは、510において、信頼できる安全状態に入る。システムは次に、アプリケーションソフトウェアが実行し、リセット信号が受信されるまでマイクロコントローラシステムの進行中の動作が継続する512へと進む。
一方、第1の計算されたシグネチャ422が、第1の期待シグネチャ428と異なる場合(508においてNO)、リセットされた少なくとも1つのレジスタが、それの期待リセット値にリセットされておらず、514において、システムは、潜在的に安全でない状態にある。システムは次に、ブロック516において、どのレジスタが正しく初期化されなかったのかを決定するための分析を行うことができる。例えば、システムは、リセットされるべきであった各レジスタから実際のリセット値を読み取った後、実際のリセット値を、例えばメモリ416内のSRAMに保存することができる、当該レジスタの期待レジスタリセット値(434)と比較することができる。
518では、どのレジスタグループが正しくリセットされた状態とならなかったかを識別した後、システムは、誤って初期化されたレジスタのグループが、必須のレジスタを含むか否かを決定する。グループ内に必須のレジスタが含まれる場合(518においてYES)、520において、システムは、安全でない状態にあると見なされ、第2のリセット信号(例えば、システムリセット)が、アプリケーションからの入力を求めることなく、再度印加される。このようにして、車両などのシステムの動作が、必須のレジスタが正しく初期化されなかった場合に、阻止される。一方、必須のレジスタが含まれない場合(518においてNO)、522において、システムは、低下した安全状態にあると見なされる。このような低下した安全状態では、524において、アプリケーションに通知が送られ、ブロック526において、アプリケーションは、低下した安全モードでシステム動作を継続しようとするか否かに関する選択肢を与えられる。アプリケーションが継続しようとしない場合(526においてNO)、システムは、再度安全でない状態にあることとなり、第1のリセット信号が再印加される。アプリケーションが、低下した安全状態で継続しようとする場合(526においてYES)、システムは次に、アプリケーションソフトウェアが実行し、リセット信号が受信されるまでマイクロコントローラシステムの進行中の動作が継続する512へと進む。
512における進行中の動作中に、システムは、この例では第1のリセット信号、第2のリセット信号、又は第3のリセット信号によって、いつでも中断されることが可能で、従って、システムは、リセットが受信されるまで(この時、通常動作に戻る際にループに再び入る前に、システムは、リセットに対処するためにループから外れる)、進行形でブロック512、528、530、及び538をループしていると考えることができる。他の例では、他の数のリセット信号が存在してもよい。例えば、一部のケースでは、1つのリセットのみが存在してもよいが、他のケースでは、多数の異なる種類のリセットが存在してもよく、各リセットは、潜在的に、周辺機器及び/又はモジュールの異なる組み合わせをリセットすることができる。
528では、システムは、第1のリセット信号R1(例えば、パワーオンリセット)が受信されたかどうかを決定する。そうであれば、システムは、前述の通り、502及び/又は504に戻り、そうでなければ、システムは、530に進む。
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のモジュールサブセットの各モジュール/周辺機器のレジスタが、実際のリセット値にリセットされた状態となる。リセットモジュールが正しくリセットされると、モジュールのレジスタの実際のリセット値は、モジュールのレジスタの期待リセット値と同じになる。しかしながら、予期せぬ事象が生じた場合(例えば、アルファ粒子の衝突、デバイスの故障)、モジュールのレジスタの実際のリセット値は、モジュールの当該レジスタの期待リセット値とは異なり得る。
第1のサブセットのモジュールが正しくリセットされた状態であることを保証するために、ブロック538において、アシュアランスモジュール420は、第1のモジュールサブセットのレジスタに関する第2のシグネチャ値を計算する。例えば、図4に関して、第2のシグネチャ値は、PUレジスタ404R、タイマレジスタ406R、シリアルポートレジスタ410R、クロックモジュールレジスタ412R、I/Oポートレジスタ414R、及びフラッシュメモリ418内の構成ビットに関して計算することができる。従って、第2のシグネチャ値は、電源408が第1のモジュールサブセットに含まれていないので、電源レジスタ408Rに関して計算されない。幾つかの実施形態では、第2のシグネチャ値は、それが異なる長さのレジスタに関して計算されるとしても、第1のシグネチャ値と同じ長さとなり得る。
ブロック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においてチェックされる。これは、より多くのレジスタをリセット(及びチェック)することが、リセット及びブート時間を増加させる傾向にあるからであり、可能な限りレジスタの数を少なく保つことによって、幾つかの点で動作性能を向上させる。
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のモジュールサブセットの各モジュール/周辺機器のレジスタが、実際のリセット値にリセットされた状態となる。リセットモジュールが正しくリセットされると、モジュールのレジスタの実際のリセット値は、モジュールのレジスタの期待リセット値と同じとなる。しかしながら、予期せぬ事象が生じた場合(例えば、アルファ粒子の衝突、デバイスの故障)、モジュールのレジスタの実際のリセット値は、モジュールの当該レジスタの期待リセット値とは異なり得る。
第2のサブセットのモジュールが正しくリセットされた状態であることを保証するために、ブロック546において、アシュアランスモジュール420が、第2のモジュールサブセットのレジスタに関する第3のシグネチャ値を計算する。例えば、図4に関して、第3のシグネチャ値は、PUレジスタ404R及びタイマレジスタ406Rに関して計算することができる。従って、第2のシグネチャ値は、電源レジスタ408R、シリアルポートレジスタ410R、クロックモジュールレジスタ412R、I/Oポートレジスタ414R、及びフラッシュメモリ418の構成ビットが、第2のモジュールサブセットに含まれていないので、これらのモジュール/周辺機器に関して計算されない。幾つかの実施形態では、第3のシグネチャ値は、それが異なる長さのレジスタに関して計算されるとしても、第1のシグネチャ値と同じ長さとなり得る。
ブロック547では、第2のモジュールサブセットのレジスタ値が検証される。従って、548において、第3の計算されたシグネチャが、第3の期待シグネチャと同一でない場合(548においてNO)、システムは、前述の通り、514に戻る。第3の計算されたシグネチャが第3の期待シグネチャと同一である場合(548においてYES)、システムは、510(信頼できる安全状態)に戻ることができ、又はオプションとして示されるように、期待リセット値がレジスタから読み出されたことを検証するために550に進んでもよい。550では、システムは、実際のレジスタ値がメモリに保存された期待リセット値と同じであることを確認するために、各レジスタから実際の値を読み出すことができる。再度、実際のリセット値が、期待リセット値と同じであれば、システムは、510(信頼できる安全状態)に戻るが、差異が検出されれば、システムは、514に戻る。
幾つかの実施形態では、アシュアランスモジュールがシステムリソースを幅広く利用できる初期の安全起動モード中に、リセットが生じる。さらに、アシュアランスモジュール420は、アプリケーションソフトウェアの初期化に先立ち得る安全起動モード中に、計算されたシグネチャ値と期待シグネチャ値との比較を行う。従って、場合によっては、初期の安全起動モードが終わった後に、システムは、アプリケーションソフトウェアが実行を開始する際に、通常動作モードに入る。通常動作モード中は、アプリケーションソフトウェアが全てのシステムリソースにアクセスすることを阻止するために、セキュリティ対策が実施される場合がある。アプリケーションソフトウェアに対するこの制限に対処するために、アシュアランスモジュールは、ある値を所定の記憶場所に書き込むことによって、又はそれ自体のレジスタの1つにその値を保存することによって、初期化の際にアプリケーションが、もしあればどのモジュールが誤って初期化したのかを認識するために、所定の記憶場所又はアシュアランスモジュールのレジスタから読み出すことができるように、アプリケーションに通知する(例えば、ブロック524と同じである)。このようにして、アプリケーションは、通常動作中に(例えば、初期の安全起動モードが完了した後に)、誤って初期化されたモジュールを認識することができ、ブロック522〜526において、動作を続けるのか、あるいは別のリセットを生じさせるのかを決めることができる。それに対し、幾つかの実施形態では、ブロック518は、誤って初期化されたレジスタが必須のレジスタである場合(518においてYES)、初期の安全起動モード中であって、アプリケーションソフトウェアの実行が開始される前に、リセットが再度出される(これは、システムの安全な動作を保証する助けとなる)ように、初期の安全起動モード中に実行される。
従って、本開示の幾つかの実施形態は、マイクロコントローラシステムに関する。マイクロコントローラシステムは、プロセッシングユニット、第1の周辺機器、及びアシュアランスモジュールを含む。第1の周辺機器は、バスインタフェースによってプロセッシングユニットに接続され、第1のレジスタセットを有する。第1の周辺機器は、第1のレジスタセットを第1の実際のリセット値にリセットする第1のリセット信号を受信するように構成される。第1の実際のリセット値は、第1のリセット信号に応答した第1の期待値であると予想される。アシュアランスモジュールは、第1のリセット信号に応答して、第1のシグネチャ値を計算するように構成される。第1のシグネチャ値は、第1の実際のリセット値に基づく。プロセッシングユニットは、マイクロコントローラシステムが信頼できる安全状態にあるか否かを決定するために、計算された第1のシグネチャ値と所定の第1のシグネチャ値との第1の比較を行うように構成される。第1の比較は、第1のリセット信号に応答して行われ、所定の第1のシグネチャ値は、第1の期待値に基づく。
他の実施形態は、マイクロコントローラ及び複数のレジスタを含むシステムにおける安全なリセットの方法に関する。この方法では、リセット信号が受信され、複数のレジスタの少なくとも幾つかが、リセット信号に基づいてリセットされ、このリセットは、上記複数のレジスタの上記少なくとも幾つかを、それぞれ所定の初期化値に設定すると期待される。この方法は、所定の初期化値に基づいて、シグネチャ値を計算し、計算されたシグネチャ値を所定のシグネチャ値と比較することによって、上記複数のレジスタの上記少なくとも幾つかが、正しく初期化したか否かを決定する。計算されたシグネチャ値が、所定のシグネチャ値とビットに関して同一である場合にのみ、システムは、信頼できる状態で動作する。計算されたシグネチャ値が、所定のシグネチャ値と異なる場合、システムは、低下した安全状態又は安全でない状態に入る。
さらに他の実施形態が、プロセッシングユニットと、バスインタフェースによってプロセッシングユニットに結合された複数の周辺機器と、プロセッシングユニット及び複数の周辺機器に結合されたリセットモジュールとを含むマイクロコントローラシステムに関する。リセットモジュールは、複数の周辺機器の異なる組み合わせをリセットする複数のリセット信号を提供するように構成される。第1のリセット信号は、複数の周辺機器の第1の組み合わせをリセットし、第2のリセット信号は、複数の周辺機器の第2の組み合わせをリセットする。アシュアランスモジュールは、第1のリセット信号に応答して第1のシグネチャ値を計算し、及び第2のリセット信号に応答して第2のシグネチャ値を計算するように構成される。第1のシグネチャ値は、複数の周辺機器の第1の組み合わせのレジスタの実際のリセット値に基づき、第2のシグネチャ値は、複数の周辺機器の第2の組み合わせのレジスタの実際のリセット値に基づく。
上記は、当業者が本開示の局面をよりよく理解することができるように、幾つかの実施形態の特徴の概要を説明するものである。当業者は、本明細書で紹介された実施形態と同じ目的を実行する、及び/又はそれらと同じ利点を達成するために、他のプロセス及び構造を設計又は変更するための基礎として、本開示を容易に使用できることを認識するだろう。当業者は、そのような同等の構造が、本開示の精神及び範囲から逸脱せず、且つ本開示の精神及び範囲から逸脱することなく、本明細書に様々な変更、置換、及び修正を行うことができることも理解するだろう。
100、400 マイクロコントローラシステム
102、404 プロセッシングユニット
104 第1の周辺機器
104R 第1のレジスタセット
106 第2の周辺機器
106R 第2のレジスタセット
110、419 バスインタフェース
108、420 アシュアランスモジュール
402 リセットモジュール
422 第1の計算されたシグネチャ値
428 第1の期待シグネチャ値
434 期待レジスタリセット値

Claims (20)

  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に記載のマイクロコントローラシステム。
  4. 前記プロセッシングユニットが、前記マイクロコントローラシステムが前記潜在的に安全でない状態にあるという通知をアプリケーションプログラムに提供するように構成されるとともに、前記通知に応答して前記アプリケーションプログラムから受信された命令に基づいて、選択的に前記第1の周辺機器をリセットする、又は前記第1の周辺機器がリセットされることなく前記潜在的に安全でない状態で動作を継続することを許可するようにさらに構成される、請求項3に記載のマイクロコントローラシステム。
  5. 前記バスインタフェースによって前記プロセッシングユニットに接続され、及び第2のレジスタセットを有する第2の周辺機器をさらに含み、前記第2の周辺機器が、前記第1のレジスタセットを設定又はリセットすることなく、前記第2のレジスタセットを第2の実際のリセット値にリセットする第2のリセット信号を受信するように構成され、及び前記第2の実際のリセット値が、第2の期待リセット値であると予想される、請求項1に記載のマイクロコントローラシステム。
  6. 前記第1のリセット信号が、前記第2のレジスタセットを設定又はリセットすることなく、前記第1のレジスタセットをリセットする、請求項5に記載のマイクロコントローラシステム。
  7. 前記アシュアランスモジュールが、前記第2のリセット信号に応答して、第2のシグネチャ値を計算するようにさらに構成され、前記第2のシグネチャ値が、前記第2の実際のリセット値に基づき、及び前記第1の実際のリセット値に依存せず、並びに
    前記プロセッシングユニットが、前記計算された第2のシグネチャ値と所定の第2のシグネチャ値との第2の比較を行うように構成され、前記第2の比較が、前記第2のリセット信号に応答して行われ、及び前記マイクロコントローラシステムが前記信頼できる安全状態にあるか否かを決定付ける、請求項5に記載のマイクロコントローラシステム。
  8. 前記第1及び第2の周辺機器がそれぞれ、前記第1のレジスタを前記第1の実際のリセット値にリセットし、及び前記第2のレジスタを前記第2の実際のリセット値にリセットする第3のリセット信号を受信するように構成され、前記アシュアランスモジュールが、前記第3のリセット信号に応答して第3のシグネチャ値を計算するようにさらに構成され、前記第3のシグネチャ値が、前記第2の実際のリセット値に基づき、及び前記第1の実際のリセット値に依存せず、並びに
    前記プロセッシングユニットが、前記計算された第3のシグネチャ値と所定の第3のシグネチャ値との第3の比較を行うように構成され、前記第3の比較が、前記第2のリセット信号に応答して行われ、及び前記マイクロコントローラシステムが前記信頼できる安全状態にあるか否かを決定付ける、請求項5に記載のマイクロコントローラシステム。
  9. 前記アシュアランスモジュールが、読み出し専用メモリ(ROM)に固定値として保存された実行可能命令のセットを含む、請求項1に記載のマイクロコントローラシステム。
  10. 前記アシュアランスモジュールが、ワンタイムプログラマブル(OTP)メモリに固定値として保存された実行可能命令のセットを含む、請求項1に記載のマイクロコントローラシステム。
  11. 前記アシュアランスモジュールが、半導体基板に配置された論理回路として実装される、請求項1に記載のマイクロコントローラシステム。
  12. マイクロコントローラ及び複数のレジスタを含むシステムにおける安全なリセットの方法であって、
    リセット信号を検出し、及び前記リセット信号に基づいて前記複数のレジスタの少なくとも幾つかをリセットするステップであって、前記リセットが、前記複数のレジスタの前記少なくとも幾つかを、それぞれの所定の初期化値に設定することが期待される、ステップと、
    前記所定の初期化値に基づいて、シグネチャ値を計算するステップと、
    前記計算されたシグネチャ値を所定のシグネチャ値と比較することによって、前記複数のレジスタの前記少なくとも幾つかが、正しく初期化したか否かを決定するステップと、
    前記計算されたシグネチャ値が、前記所定のシグネチャ値とビットに関して同一である場合にのみ、前記システムを信頼できる状態で動作させ、及び前記計算されたシグネチャ値が、前記所定のシグネチャ値と異なる場合に、低下した安全状態又は安全でない状態に入るステップと、
    を含む、方法。
  13. 前記低下した安全状態において、前記複数のレジスタの前記少なくとも幾つかの内の誤ったレジスタを識別するステップであって、前記誤ったレジスタは、それの所定の期待初期化値に初期化できなかったものである、ステップと、
    前記誤ったレジスタが、必須のレジスタであるか否かを決定するステップと、
    前記誤ったレジスタが、必須のレジスタであるか否かに基づいて、選択的に前記誤ったレジスタをリセットする、又は選択的に前記システムを前記低下した安全状態で動作させるステップと、
    をさらに含む、請求項12に記載の方法。
  14. 前記誤ったレジスタが必須のレジスタである場合、前記システムが、安全でない状態にあると見なされるとともに、前記誤ったレジスタが識別された後、前記システムが前記安全でない状態で動作することを許可せずに、前記誤ったレジスタがリセットされる、請求項13に記載の方法。
  15. 前記誤ったレジスタが必須のレジスタではない場合、通知がアプリケーションに送られ、及び前記アプリケーションが、前記低下した安全状態で前記システムを動作させるか、又は前記システムが前記低下した安全状態で動作を継続することを許可せずに前記誤ったレジスタをリセットするかを選択する、請求項13に記載の方法。
  16. プロセッシングユニットと、
    バスインタフェースによって前記プロセッシングユニットに結合された複数の周辺機器と、
    前記プロセッシングユニット及び前記複数の周辺機器に結合されたリセットモジュールであって、前記リセットモジュールが、前記複数の周辺機器の異なる組み合わせをリセットする複数のリセット信号を提供するように構成され、第1のリセット信号が、前記複数の周辺機器の第1の組み合わせをリセットし、及び第2のリセット信号が、前記複数の周辺機器の第2の組み合わせをリセットする、リセットモジュールと、
    前記第1のリセット信号に応答して第1のシグネチャ値を計算し、及び前記第2のリセット信号に応答して第2のシグネチャ値を計算するように構成されたアシュアランスモジュールであって、前記第1のシグネチャ値は、前記複数の周辺機器の前記第1の組み合わせのレジスタの実際のリセット値に基づき、及び前記第2のシグネチャ値は、前記複数の周辺機器の前記第2の組み合わせのレジスタの実際のリセット値に基づく、アシュアランスモジュールと、
    を含む、マイクロコントローラシステム。
  17. 前記プロセッシングユニットが、前記マイクロコントローラシステムが信頼できる安全状態にあるか否かを決定するために、前記計算された第1のシグネチャ値と、所定の第1のシグネチャ値との第1の比較を行うように構成され、前記第1の比較が、前記第1のリセット信号に応答して行われ、及び前記所定の第1のシグネチャ値が、前記複数の周辺機器の前記第1の組み合わせの前記レジスタの期待リセット値に基づく、請求項16に記載のマイクロコントローラシステム。
  18. 前記プロセッシングユニットが、前記マイクロコントローラシステムが前記信頼できる安全状態にあるか否かを決定するために、前記計算された第2のシグネチャ値と、所定の第2のシグネチャ値との第2の比較を行うように構成され、前記第2の比較が、前記第2のリセット信号に応答して行われ、及び前記所定の第2のシグネチャ値が、前記複数の周辺機器の前記第2の組み合わせの前記レジスタの期待リセット値に基づく、請求項17に記載のマイクロコントローラシステム。
  19. 前記アシュアランスモジュールが、読み出し専用メモリ(ROM)又はワンタイムプログラマブル(OTP)メモリに固定値として保存された実行可能命令のセットを含む、請求項16に記載のマイクロコントローラシステム。
  20. 前記アシュアランスモジュールが、半導体基板に配置された論理回路として実装される、請求項16に記載のマイクロコントローラシステム。
JP2018041458A 2017-03-13 2018-03-08 安全関連のアプリケーションにおけるマイクロコントローラシステム用の安全なリセット技術 Active JP6622337B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/456,870 2017-03-13
US15/456,870 US10372545B2 (en) 2017-03-13 2017-03-13 Safe reset techniques for microcontroller systems in safety related applications

Publications (2)

Publication Number Publication Date
JP2018160240A true JP2018160240A (ja) 2018-10-11
JP6622337B2 JP6622337B2 (ja) 2019-12-18

Family

ID=63258995

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018041458A Active JP6622337B2 (ja) 2017-03-13 2018-03-08 安全関連のアプリケーションにおけるマイクロコントローラシステム用の安全なリセット技術

Country Status (3)

Country Link
US (1) US10372545B2 (ja)
JP (1) JP6622337B2 (ja)
DE (1) DE102018105090A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IT201700050166A1 (it) * 2017-05-09 2018-11-09 St Microelectronics Srl Sistema di elaborazione, relativo circuito integrato, dispositivo e procedimento
US11080432B2 (en) * 2018-07-30 2021-08-03 Texas Instruments Incorporated Hardware countermeasures in a fault tolerant security architecture
TWI761986B (zh) * 2020-10-13 2022-04-21 緯創資通股份有限公司 伺服器的電源控制系統及其相關電源控制方法
US11169892B1 (en) * 2021-02-05 2021-11-09 Xilinx, Inc. Detecting and reporting random reset faults for functional safety and other high reliability applications
US12493700B2 (en) * 2023-07-18 2025-12-09 Texas Instruments Incorporated Integrated circuit with accelerated boot to priority function

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04346112A (ja) * 1991-05-23 1992-12-02 Kokusai Electric Co Ltd リセット信号識別方法及び装置
US6625688B1 (en) * 1999-05-10 2003-09-23 Delphi Technologies, Inc. Method and circuit for analysis of the operation of a microcontroller using signature analysis of memory
US20060136705A1 (en) * 2004-12-21 2006-06-22 Motorola, Inc. Multiple stage software verification

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9100174B2 (en) * 2012-08-31 2015-08-04 Freescale Semiconductor, Inc. Secure provisioning in an untrusted environment
US10198332B2 (en) * 2016-10-07 2019-02-05 Infineon Technologies Ag System on chip integrity verification method and system
US10318736B2 (en) * 2016-10-31 2019-06-11 Hewlett Packard Enterprise Development Lp Validating operating firmware of a periperhal device

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04346112A (ja) * 1991-05-23 1992-12-02 Kokusai Electric Co Ltd リセット信号識別方法及び装置
US6625688B1 (en) * 1999-05-10 2003-09-23 Delphi Technologies, Inc. Method and circuit for analysis of the operation of a microcontroller using signature analysis of memory
US20060136705A1 (en) * 2004-12-21 2006-06-22 Motorola, Inc. Multiple stage software verification

Also Published As

Publication number Publication date
US20180260280A1 (en) 2018-09-13
DE102018105090A1 (de) 2018-09-13
US10372545B2 (en) 2019-08-06
JP6622337B2 (ja) 2019-12-18

Similar Documents

Publication Publication Date Title
JP6622337B2 (ja) 安全関連のアプリケーションにおけるマイクロコントローラシステム用の安全なリセット技術
JP5767751B2 (ja) Biosを検証する方法、コンピューティングプラットフォーム、およびプログラム
TWI768544B (zh) 電腦系統及其安全管理方法以及電腦軟體產品
US8125243B1 (en) Integrity checking of configurable data of programmable device
US20090077423A1 (en) Memory device and system with bootloading operation
US20170262386A1 (en) Scalable memory protection mechanism
CN104123167A (zh) 具有配置字自检功能的mcu上电启动方法及其自检方法
JP7087142B2 (ja) マルチスレショルド供給電圧検出を用いたライフサイクル状態メモリの完全性検証
US10846421B2 (en) Method for protecting unauthorized data access from a memory
CN103218237B (zh) 使用基于rom的初始化单元和可编程微控制器的gpu的初始化
CN107657153B (zh) 一种芯片内flash区的代码保护方法及装置
US9400708B2 (en) Integrated circuit and method of detecting a data integrity error
US8719646B2 (en) Non-volatile memory (NVM) reset sequence with built-in read check
WO2017143513A1 (zh) 一种启动Boot的方法、CPU及单板
EP2864886B1 (en) Control of microprocessors
US20200387612A1 (en) Secure boot system, method and apparatus
US12229253B2 (en) Devices and methods to secure a system on a chip
CN112395587A (zh) 计算机系统及强制自行认证方法
CN108073489B (zh) 确保计算器的操作的方法
CN112817619B (zh) 电脑系统及其安全管理方法以及电脑软件产品
US20240273210A1 (en) Boot controller and computing device including the same
US20250110750A1 (en) Boot ram for safety critical domain
CN117193863B (zh) 主机引导程序的启动方法、装置、系统和处理器
US20250123769A1 (en) Semiconductor device
CN112055846A (zh) 执行指令

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180309

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190226

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190326

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20190626

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190821

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20191023

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191121

R150 Certificate of patent or registration of utility model

Ref document number: 6622337

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250