(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-04-02
(45)【発行日】2024-04-10
(54)【発明の名称】情報処理装置及び方法
(51)【国際特許分類】
G06F 21/51 20130101AFI20240403BHJP
【FI】
G06F21/51
(21)【出願番号】P 2020026472
(22)【出願日】2020-02-19
【審査請求日】2023-02-17
(73)【特許権者】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】110003281
【氏名又は名称】弁理士法人大塚国際特許事務所
(72)【発明者】
【氏名】小塚 保広
【審査官】金沢 史明
(56)【参考文献】
【文献】特開2019-175331(JP,A)
【文献】特開2014-099097(JP,A)
【文献】特開2003-099310(JP,A)
【文献】特開2019-128792(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/50-21/57
(57)【特許請求の範囲】
【請求項1】
情報処理装置であって、
少なくとも1つのデバイスと、
前記少なくとも1つのデバイスを制御する第1のプロセッサ
、前記少なくとも1つのデバイスへの電力の供給を制御する電力制御部
、及び第1演算部を含むコントローラと、
前記第1のプロセッサにより実行されるべきプログラムの正当性を検証して、前記プログラムが正当であると判定された場合に前記第1のプロセッサによる前記プログラムの実行を可能にする第2のプロセッサと、
を備え、
前記第2のプロセッサは、前記情報処理装置の電源がオンされたことに応じて前記プログラムの検証を開始し、
前記
第1演算部は、前記第2のプロセッサにより前記プログラムが正当であると判定されたことを示す第1制御信号
と前記電力制御部のリセット状態を解除するための第2制御信号との論理積を示す第3制御信号を、前記第1のプロセッサへ出力し、
前記第1のプロセッサは、前記第3制御信号を受け付けたことに応じて、前記プログラムの実行を開始し、
前記電力制御部は、前記プログラムが正当であるという前記判定の前に、前記少なくとも1つのデバイスへの電力の供給を開始する、
ことを特徴とする情報処理装置。
【請求項2】
前記電力制御部は、前記情報処理装置の前記電源がオンされたことに応じて、前記少なくとも1つのデバイスへの前記電力の供給を開始する、ことを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記コントローラは、
前記第2制御信号を受け付ける第1端子
を含む、ことを特徴とする請求項1又は2に記載の情報処理装置。
【請求項4】
前記少なくとも1つのデバイスへ供給される前記電力のレベルが閾値を上回るか否かを示す第4制御信号を出力する電力監視手段、
をさらに備え、
前記第1制御信号は、前記プログラムが正当であると判定されたかを示す第5制御信号及び前記第4制御信号の論理積を示す信号であり、前記プログラムが正当であると判定されたことを前記第5制御信号が示し、且つ前記少なくとも1つのデバイスへ供給される前記電力のレベルが前記閾値を上回ることを前記第4制御信号が示す場合に、前記第1のプロセッサの前記リセット状態の解除を指示する値を示す、
ことを特徴とする請求項
1に記載の情報処理装置。
【請求項5】
前記プログラムを記憶する記憶手段、
をさらに備え、
前記記憶手段は、前記情報処理装置の前記電源がオンされたことに応じて、電力の供給を受ける、
ことを特徴とする請求項1乃至4のいずれか1項に記載の情報処理装置。
【請求項6】
前記第2のプロセッサは、前記プログラムが正当ではないと判定された場合に、前記プログラムの復旧用バージョンで前記記憶手段の前記プログラムを上書きすることにより、前記プログラムを復旧する、ことを特徴とする請求項5に記載の情報処理装置。
【請求項7】
前記少なくとも1つのデバイスは、プリンタデバイス、スキャナデバイス、操作デバイス、表示デバイス、デバイスコントローラ、画像処理ユニット、及び通信インタフェースのうちの少なくとも1つを含む、ことを特徴とする請求項1乃至6のいずれか1項に記載の情報処理装置。
【請求項8】
少なくとも1つのデバイスと、前記少なくとも1つのデバイスを制御する第1のプロセッサ
、前記少なくとも1つのデバイスへの電力の供給を制御する電力制御部
、及び第1演算部を含むコントローラと、前記第1のプロセッサにより実行されるべきプログラムの正当性を検証する第2のプロセッサと、を備える情報処理装置において行われる方法であって、
前記第2のプロセッサにより、前記情報処理装置の電源がオンされたことに応じて前記プログラムの検証を開始することと、
前記プログラムが正当であると判定された場合に、前記第2のプロセッサにより、前記プログラムが正当であると判定されたことを示す第1制御信号を出力することと、
前記第1演算部により、前記第1制御信号
と前記電力制御部のリセット状態を解除するための第2制御信号との論理積を示す第3制御信号を、前記第1のプロセッサへ出力することと、
前記第1のプロセッサにより、
前記第3制御信号を受け付けたことに応じて、前記プログラムの実行を開始することと、
前記電力制御部により、前記プログラムが正当であるという前記判定の前に、前記少なくとも1つのデバイスへの電力の供給を開始することと、
を含むことを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、情報処理装置及び方法に関する。
【背景技術】
【0002】
装置に組み込まれるソフトウェア又はファームウェアといったプログラムが改竄されるリスクへの対策として、装置の起動に先立ってプログラムの正当性を検証する手法(セキュアブートともいう)が知られている。プログラムの正当性を検証することは、改竄のみならずプログラムの劣化から装置を保護する観点でも有益である。
【0003】
概して、装置の様々な機能を制御するCPUは、当該CPUを起動させるためのプログラムの正当性を完全には検証できない。そこで、プログラムの正当性を検証するための補助的なプロセッサを、主たるCPUとは別に設ける構成が採用され得る。この場合、まず補助的なプロセッサがCPUにより実行されるべきプログラムの正当性を検証し、正当であると判定されたプログラムをCPUが実行する。
【0004】
特許文献1は、補助的なプロセッサを用いたセキュアブートの手法を取り入れた複合機を開示している。特許文献1によれば、複合機を構成するデバイス群を制御する主たるCPUとは別のマイコンが、CPUにより実行されるべきプログラムの正当性を検証する。CPUは、正当であると判定されたプログラムを実行して、電源制御部からスキャナ及びプリンタといったデバイスへの電力の供給及びデバイスのセットアップを開始する。このセットアップが終了した後、複合機はユーザにより使用可能な状態となる。
【先行技術文献】
【特許文献】
【0005】
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、特許文献1により開示された手法では、プログラムの正当性の検証が成功裏に完了してCPUがプログラムを実行するまで、デバイスへの電力の供給もセットアップも始まらない。そのため、ユーザは、複合機の電源をオンしてから実際に複合機を使えるようになるまで、長い時間待機することになる。待機時間は、例えば、プログラムの検証が一旦失敗し、システムが自動的にプログラムを復旧するような場合には、より一層長くなる。
【0007】
そこで、本開示は、不正な動作のリスクに対する安全性を維持しつつ、装置の起動に要する時間を短縮することを目的とする。
【課題を解決するための手段】
【0008】
ある観点によれば、情報処理装置であって、少なくとも1つのデバイスと、前記少なくとも1つのデバイスを制御する第1のプロセッサ、前記少なくとも1つのデバイスへの電力の供給を制御する電力制御部、及び第1演算部を含むコントローラと、前記第1のプロセッサにより実行されるべきプログラムの正当性を検証して、前記プログラムが正当であると判定された場合に前記第1のプロセッサによる前記プログラムの実行を可能にする第2のプロセッサと、を備え、前記第2のプロセッサは、前記情報処理装置の電源がオンされたことに応じて前記プログラムの検証を開始し、前記第1演算部は、前記第2のプロセッサにより前記プログラムが正当であると判定されたことを示す第1制御信号と前記電力制御部のリセット状態を解除するための第2制御信号との論理積を示す第3制御信号を、前記第1のプロセッサへ出力し、前記第1のプロセッサは、前記第3制御信号を受け付けたことに応じて、前記プログラムの実行を開始し、前記電力制御部は、前記プログラムが正当であるという前記判定の前に、前記少なくとも1つのデバイスへの電力の供給を開始する、ことを特徴とする情報処理装置が提供される。対応する方法もまた提供される。
【発明の効果】
【0009】
本開示によれば、不正な動作のリスクに対する安全性を維持しつつ、情報処理装置の起動に要する時間を短縮することができる。
【図面の簡単な説明】
【0010】
【
図1】一実施形態に係る情報処理装置の構成の一例を示すブロック図。
【
図2】
図1に示したフラッシュメモリのメモリマップの一例について説明するための説明図。
【
図3】初回のプログラムの検証に成功するシナリオにおける情報処理装置の各部の動作タイミングを示すタイミングチャート。
【
図4】初回のプログラムの検証に失敗してプログラムが復旧されるシナリオにおける情報処理装置の各部の動作タイミングを示すタイミングチャート。
【
図5】一実施形態において情報処理装置の起動時に行われる処理の流れの一例を示すシーケンス図。
【
図6】一変形例に係る情報処理装置の構成の一例を示すブロック図。
【
図7】一変形例において情報処理装置の起動時に行われる処理の流れの一例を示すシーケンス図。
【発明を実施するための形態】
【0011】
以下、添付図面を参照して実施形態を詳しく説明する。なお、以下の実施形態は特許請求の範囲に係る発明を限定するものではない。実施形態には複数の特徴が記載されているが、これらの複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一若しくは同様の構成に同一の参照番号を付し、重複した説明は省略する。
【0012】
<<1.装置の構成>>
本節では、本開示に係る技術が情報処理装置に適用される例を説明する。本明細書において、情報処理装置との用語は、プロセッサ又は処理回路がコンピュータプログラムを実行することにより動作する様々な装置を広く含むものとする。情報処理装置は、例えば、コンピュータ、電子装置、サーバ装置、端末装置、記憶装置、表示装置、通信装置、画像処理装置、又は音声処理装置であってもよい。
【0013】
図1は、一実施形態に係る情報処理装置100の構成の一例を示すブロック図である。
図1を参照すると、情報処理装置100は、第1電源部101、SoC102、サブCPU103、フラッシュメモリ104、セレクタ105、ROM106、第1電力監視部107及びAND回路134を備える。本実施形態において、SoC(System on Chip)102は、メインCPU111、PMU112、第1入力端子131、第2入力端子132及びAND回路133を含む。即ち、少なくともメインCPU111及びPMU112は、共通のチップに設けられる。情報処理装置100は、さらに、第2電源部121、N個(Nは1以上の整数)のデバイス122-1~122-N及び第2電力監視部123を備える。なお、以下の説明において、デバイス122-1~122-Nを互いに区別する必要の無い場合には、これらをデバイス122と総称する。
【0014】
第1電源部101は、商用電源10へ接続される。第1電源部101は、例えば、ユーザが電源スイッチ(図示せず)を操作したことに応じて情報処理装置100の主電源がオンされると、SoC102、サブCPU103、フラッシュメモリ104及びセレクタ105へ電力P1を供給する。
【0015】
メインCPU(Central Processing Unit)111は、情報処理装置100の各デバイス122を制御する処理手段である。メインCPU111は、セレクタ105を介してフラッシュメモリ104へ接続される。また、メインCPU111は、信号バス115を介して各デバイス122と接続される。メインCPU111は、例えばフラッシュメモリ104に予め記憶されているブートプログラムを実行することにより、情報処理装置100の基本的なシステムを起動する。
【0016】
PMU(Power Management Unit)112は、各デバイス122への電力の供給を制御する電力制御手段である。PMU112は、例えば、情報処理装置100の主電源がオンされたことに応じて、第2電源部121に、各デバイス122への電力P2の供給を開始するように指示する。この指示は、制御信号C3を用いて行われ得る。
【0017】
サブCPU103は、メインCPU111により実行されるべきプログラムの正当性を検証する検証手段である。サブCPU103は、ROM106に予め記憶されているファームウェアを実行することにより動作する。サブCPU103は、その動作において、フラッシュメモリ104に記憶されているメインCPU111のブートプログラムが正当であるかを、メインCPU111による実行に先立って判定する。サブCPU103は、ブートプログラムが正当であると判定された場合、メインCPU111によるブートプログラムの実行を可能にする。ブートプログラムが正当ではないと判定された場合、サブCPU103は、ブートプログラムの復旧用バージョンでフラッシュメモリ104の当該ブートプログラムを上書きすることにより、ブートプログラムを復旧してもよい。サブCPU103は、復旧後にブートプログラムの正当性を再度検証し、検証に成功した場合に、メインCPU111による復旧後のブートプログラムの実行を可能にし得る。
【0018】
フラッシュメモリ104は、メインCPU111により実行されるプログラムであって、サブCPU103による検証の対象とされるプログラムを記憶する記憶手段である。ここではメインCPU111のブートプログラムがサブCPU103による検証の対象とされる例を主に説明するが、本実施形態はかかる例には限定されない。例えば、BIOS(Basic Input / Output System)プログラム又はOS(Operating System)プログラムといった他の種類のプログラムもサブCPU103による検証の対象とされてよい。フラッシュメモリ104は、サブCPU103と同様に、情報処理装置100の電源がオンされたことに応じて、電力の供給を受ける。それにより、情報処理装置100の起動の当初において、サブCPU103がフラッシュメモリ104からプログラムを読出して正当性の検証を行うことが可能となる。
【0019】
セレクタ105は、フラッシュメモリ104へのアクセス元のCPUをサブCPU103とメインCPU111との間で選択的に切替える切替手段である。セレクタ105は、情報処理装置100の起動の当初において、フラッシュメモリ104への信号経路をサブCPU103に接続する。サブCPU103は、メインCPU111のブートプログラムを、セレクタ105を介してフラッシュメモリ104から読出し、読出したプログラムの正当性を検証する。その検証が成功すると、サブCPU103は、検証の成功を示す制御信号C1をセレクタ105へ出力する。セレクタ105は、サブCPU103からの制御信号C1の受信に応じて、フラッシュメモリ104への信号経路をメインCPU111に接続する。その結果、メインCPU111がフラッシュメモリ104からブートプログラム(及びその他の必要なプログラム)を読出すことが可能となる。なお、各CPUからフラッシュメモリ104への信号経路は、例えばSPI(Serial Peripheral Interface)バスとして実現されてもよい。
【0020】
ROM(Read Only Memory)106は、不揮発性の書換不能なメモリである。ROM106は、サブCPU103によってのみアクセス可能であってよい。ROM106は、例えば、サブCPU103の動作のためのファームウェアと、検証の対象のプログラムの署名を復号するための公開鍵とを記憶する。
【0021】
第1電力監視部107は、第1電源部101からSoC102及びサブCPU103などへ供給される電力P1のレベルを監視し、電力P1の電力レベルに依存するリセット信号R1をサブCPU103及びSoC102へ出力する。例えば、電力P1の電力レベルが予め定義される閾値を下回る場合、リセット信号R1はアサートされる(例えば、信号値がゼロ又はLowに維持される)。リセット信号R1がアサートされている間、サブCPU103及びSoC102は、リセット状態に維持され、動作を抑制される。電力P1の電力レベルが閾値を上回ると、第1電力監視部107は、リセット信号R1をディアサートする(例えば、信号値を1又はHighに切替える)。サブCPU103のリセット状態は、リセット信号R1のディアサートに応じて解除される。サブCPU103は、リセット状態を解除されると動作を開始し、ROM106から上述したファームウェアを読出して実行する。これは、サブCPU103が、情報処理装置100の主電源がオンされたことに応じて、メインCPU111により実行されるべきプログラムの検証を開始することを意味する。
【0022】
SoC102のチップ全体としてのリセット状態もまた、リセット信号R1のディアサートに応じて解除される。SoC102の第1入力端子131へ入力されたリセット信号R1は、PMU112のリセット端子へそのまま入力される。したがって、PMU112のリセット状態もリセット信号R1のディアサートに応じて解除される。これは、PMU112が、サブCPU103と同様に、情報処理装置100の主電源がオンされたことに応じて動作を開始することを意味する。
【0023】
一方、メインCPU111の動作は、リセット信号R3により抑制される。AND回路133は、リセット信号R1及びリセット信号R2を受け付け、これらの信号値の論理積を示すリセット信号R3をメインCPU111のリセット端子へ出力する。したがって、メインCPU111のリセット状態は、リセット信号R1がディアサートされ(SoC102全体及びPMU112のリセット状態が解除され)且つリセット信号R2がディアサートされて初めて解除される。AND回路134は、サブCPU103からの制御信号C1及び第2電力監視部123からの制御信号C2を受け付け、これらの信号値の論理積を示すリセット信号R2をSoC102の第2入力端子132へ出力する。リセット信号R2は、第2入力端子132により受け付けられた後、AND回路133の2つの入力端子の一方へ出力される。したがって、リセット信号R2は、制御信号C1がディアサートされ且つ制御信号C2がディアサートされた場合にディアサートされる。制御信号C1は、メインCPU111のプログラムが正当であるという判定に応じてサブCPU103によりディアサートされる。制御信号C2は、後に説明するように、第2電源部121から各デバイス122へ供給される電力P2のレベルが閾値を上回る場合に、第2電力監視部123によりディアサートされる。
【0024】
リセット信号R1及びR2の双方がディアサートされ、それに応じてリセット信号R3がディアサートされると、メインCPU111は、フラッシュメモリ104からブートプログラムを読出して実行する。それにより、情報処理装置100の基本的なシステムが起動される。メインCPU111は、さらに、フラッシュメモリ104又はいずれかのデバイス122に記憶されているさらなるプログラムを実行することにより、各デバイス122をセットアップする。このセットアップが終了すると、情報処理装置100がユーザにより使用可能な状態となり、情報処理装置100は通常の待機状態に入る。情報処理装置100の通常の待機状態において、メインCPU111は、例えば、ユーザ入力に従って、ユーザにより指示された動作をデバイス122を用いて遂行する。
【0025】
第2電源部121は、商用電源10へ接続される。第2電源部121は、上述したように、PMU112から電力供給開始の指示を受け付けると、デバイス122-1~122-Nへの電力P2の供給を開始する。デバイス122-1~122-Nは、例えばプリンタデバイス、スキャナデバイス、操作デバイス、表示デバイス、デバイスコントローラ、画像処理ユニット、及び通信インタフェースのうちの少なくとも1つを含み得る。第2電力監視部123は、デバイス122-1~122-Nへ供給される電力P2のレベルを監視し、電力P2の電力レベルに依存する制御信号C2を上述したAND回路134へ出力する。例えば、電力P2の電力レベルが予め定義される閾値を下回る場合、制御信号C2はアサートされる(例えば、信号値がゼロ又はLowに維持される)。電力P2の電力レベルが閾値を上回ると、第2電力監視部123は、制御信号C2をディアサートする(例えば、信号値を1又はHighに切替える)。
【0026】
なお、上で説明した信号の各々の性質は、信号の名称によっては限定されない。例えば、リセット信号及び制御信号という名称は互換可能である。後に説明する
図3及び
図4では、制御信号C1をCheckResult信号、制御信号C2を第2電源監視信号、制御信号C3をPMU出力信号として示している。また、リセット信号R1を第1電源監視信号、リセット信号R2をPowerGood信号、リセット信号R3をCPUEnabled信号と示している。
【0027】
図2は、
図1に示したフラッシュメモリ104のメモリマップの一例について説明するための説明図である。
図2に示したように、フラッシュメモリ104は、メインCPUプログラム(例えば、ブートプログラム)201、署名202、及びメインCPUプログラムの復旧用バージョン203を予め記憶する。メインCPUプログラム201は、典型的には、フラッシュメモリ104の先頭の記憶領域に記憶される。署名202は、メインCPUプログラム201の正当性検証用の署名である。署名202は、(正当な)メインCPUプログラム201のハッシュ値を公開鍵暗号方式の秘密鍵で暗号化することにより予め導出され、フラッシュメモリ104に記憶され得る。署名202は、例えばRSA署名、DSA署名又はECDSA署名といった、いかなる種類のデジタル署名方式に基づいていてもよい。メインCPUプログラムの復旧用バージョン203は、フラッシュメモリ104内のサブCPU103にとって既知の記憶領域(
図2の例では、アドレスxxHから始まる領域)に記憶される。
【0028】
サブCPU103は、メインCPUプログラム201の正当性を検証する際、メインCPUプログラム201のプログラムデータからハッシュ値を導出する。また、サブCPU103は、署名202をROM106に記憶されている公開鍵で復号することにより、正当なプログラムデータのハッシュ値を生成する。そして、サブCPU103は、これら2つのハッシュ値が一致する場合に、フラッシュメモリ104から読出したメインCPUプログラム201は正当であると判定する。一方、サブCPU103は、これら2つのハッシュ値が一致しない場合、メインCPUプログラム201は正当ではない(例えば、改竄されており又は劣化している)と判定する。サブCPU103は、署名202の検証の結果、メインCPUプログラム201が正当ではないと判定した場合、フラッシュメモリ104の先頭の記憶領域に、復旧用バージョン203を書込む。それにより、正当性を失った(例えば、改竄された)メインCPUプログラム201が復旧用バージョン203で上書きされ、必要なプログラムが復旧し得る。なお、復旧用バージョン203は、サブCPU103からアクセス可能である限り、フラッシュメモリ104とは異なる記憶媒体に記憶されていてもよい。その記憶媒体は、情報処理装置100の内部にあっても外部にあってもよい。
【0029】
<<2.タイミングチャート>>
図3及び
図4は、上で説明した情報処理装置100の各部の動作タイミングを示すタイミングチャートである。各タイミングチャートにおいて、横軸は時間を表す。
図3の第1のシナリオでは、サブCPU103によるメインCPUプログラム201の検証は、初回の検証の際に成功する。一方、
図4の第2のシナリオでは、サブCPU103によるメインCPUプログラム201の検証は一旦失敗し、その後プログラムの復旧が行われる。
【0030】
<2-1.第1のシナリオ>
図3の第1のシナリオでは、まず、時刻T
1において、例えばユーザが電源スイッチを操作したことに応じて、第1電源部101からの電力P1のレベルが定常電圧まで上昇する。第1電力監視部107は、電力P1のレベルが閾値を上回ると、リセット信号R1をディアサートする(信号値をLowからHighへ切り替える)。サブCPU103は、リセット信号R1のディアサートに応じて、ROM106から読出されるファームウェアを実行することにより起動(ブート)する。PMU112もまた、リセット信号R1のディアサートに応じて、サブCPU103の起動と並行して起動する。サブCPU103及びPMU112の起動は、例えば時刻T
2に終了する。サブCPU103は、起動後に、フラッシュメモリ104からのメインCPUプログラム201の読出し及び検証を開始する。
【0031】
PMU112は、起動後に第2電源部121への制御信号C3をディアサートすることにより、第2電源部121に電力P2の供給開始を指示する。第2電源部121からの電力P2のレベルは、制御信号C3のディアサートに応じて定常電圧まで上昇する。第2電力監視部123は、電力P2のレベルが閾値を上回った時刻T3において、制御信号C2をディアサートする。しかし、時刻T3では、サブCPU103によるメインCPUプログラム201の検証が終了していないため、制御信号C2のディアサートは直ちには何も引き起こさない。
【0032】
時刻T4で、サブCPU103によるメインCPUプログラム201の検証が成功裏に終了する。すると、サブCPU103は、AND回路134へ出力される制御信号C1をディアサートする。制御信号C1のディアサートに応じて、制御信号C1と制御信号C2との論理積を示すリセット信号R2もまたディアサートされる。リセット信号R2のディアサートに応じて、リセット信号R2とリセット信号R1との論理積を示すリセット信号R3もまたディアサートされる。メインCPU111は、リセット信号R3のディアサートに応じてリセット状態を解除され、フラッシュメモリ104から(正当性を検証済みの)メインCPUプログラム201を読み出して実行し、それにより起動(ブート)する。
【0033】
<2-2.第2のシナリオ>
図4の第2のシナリオにおいて、時刻T
3までの各部の動作及び信号値の変化は、
図3と同様である。時刻T
4で、サブCPU103によるメインCPUプログラム201の検証は終了し、サブCPU103は、メインCPUプログラム201が正当ではないと判定する。したがって、時刻T
4で、サブCPU103は、制御信号C1をアサートしたまま維持する。サブCPU103は、時刻T
4から時刻T
5までの間に、フラッシュメモリ104の先頭の記憶領域のメインCPUプログラム201を復旧用バージョン203で上書きすることにより復旧する。サブCPU103は、復旧が終了すると、メインCPUプログラム201の検証を再び行う。
【0034】
時刻T6で、復旧後のメインCPUプログラム201の検証が成功裏に終了する。すると、サブCPU103は、AND回路134へ出力される制御信号C1をディアサートする。制御信号C1のディアサートに応じて、制御信号C1と制御信号C2との論理積を示すリセット信号R2もまたディアサートされる。リセット信号R2のディアサートに応じて、リセット信号R2とリセット信号R1との論理積を示すリセット信号R3もまたディアサートされる。メインCPU111は、リセット信号R3のディアサートに応じてリセット状態を解除され、フラッシュメモリ104からメインCPUプログラム201を読み出して実行し、それにより起動(ブート)する。
【0035】
第1のシナリオ及び第2のシナリオの双方において、PMU112は、メインCPUプログラム201が正当であるという判定がなされる前に、情報処理装置100のデバイス122への電力P2の供給を既に開始している。したがって、プログラムの検証完了を条件としてデバイスへの電力の供給が開始されるケースと比較すると、電源オンから情報処理装置100が使用可能となるまでの時間が、本実施形態においてより短くなっていることが分かる。
【0036】
また、本実施形態では、メインCPU111は、メインCPUプログラム201が正当であると判定されたことを制御信号C1が示すことに少なくとも基づいて、ブートプログラムを含み得るメインCPUプログラム201の実行を開始する。言い換えると、電源オンに応じてSoC102へ電力が供給されたとしても、SoC102上のメインCPU111は、サブCPU103により正当であると判定される前のプログラムを実行しない。このように、本実施形態では、プログラムの改竄又は劣化を原因とする情報処理装置100の不正な動作のリスクに対する安全性も保たれる。
【0037】
<<3.処理の流れ>>
図5は、上述した実施形態において情報処理装置100の起動時に行われる処理の流れの一例を示すシーケンス図である。
図5に示した処理には、第1電源部101、第1電力監視部107、サブCPU103、メインCPU111、PMU112、第2電源部121及び第2電源監視部123が関与する。なお、以下の説明では、処理ステップをS(ステップ)と略記する。
【0038】
まず、S501で、第1電源部101は、電源スイッチをオンするユーザ操作を受け付ける。第1電源部101は、このユーザ操作を検知したことに応じて、S502で、サブCPU103、メインCPU111及びPMU112への電力P1の供給を開始する。
【0039】
次いで、第1電力監視部107は、電力P1の電力レベルが閾値を上回ったことに応じて、S503で、リセット信号R1をディアサートすることにより、サブCPU103及びPMU112のリセット状態を解除する。サブCPU103は、リセット状態の解除に応じて、S504で起動する。それと並行して、PMU112もまたS505で起動する。
【0040】
次いで、S506で、サブCPU103は、フラッシュメモリ104に記憶されているメインCPUプログラム201の正当性を検証する。次いで、S507で、サブCPU103は、検証に成功したか否か、即ちメインCPUプログラム201が正当であるか否かを判定する。検証に失敗した場合、サブCPU103は、S508で、メインCPUプログラム201を復旧用バージョン203を用いて復旧する。その後、サブCPU103の処理はS506へ戻る。一方、サブCPU103は、S507でメインCPUプログラム201が正当であると判定した場合、S509で、制御信号C1をディアサートする。
【0041】
PMU112は、S505で起動した後、S510で、第2電源部121に、各デバイス122への電力P2の供給を開始するように指示する。第2電源部121は、PMU112からの上記指示に応じて、S511で、デバイス122への電力P2の供給を開始する。各デバイス122は、電力P2の供給が開始されると、固有のセットアップシーケンスを実行して、メインCPU111による制御を待ち受ける状態へ移行し得る。次いで、第2電力監視部123は、電力P2の電力レベルが閾値を上回ったことに応じて、S512で、制御信号C2をディアサートする。この制御信号C2のディアサートは、S509でのサブCPU103による制御信号C1のディアサートよりも早く行われ得る(但し、どちらが早くディアサートされるかは問題ではない)。
【0042】
S513で、メインCPU111は、制御信号C1及びC2並びにリセット信号R1がディアサートされたことに応じて、メインCPUプログラム201を実行することにより起動する。次いで、S514で、メインCPU111は、その他の必要なプログラムを実行することにより、情報処理装置100のデバイス122の制御を開始する。
【0043】
ここまでに説明した実施形態では、プログラムが正当であると判定されたことに加えて、デバイス122へ供給される電力P2のレベルが閾値を上回ったことを条件として、リセット信号R2がディアサートされる。こうした条件によれば、メインCPU111は、デバイス122が電力P2を用いて動作できる状態になってから起動して、デバイス122の制御を直ちに開始することができる。但し、メインCPU111は、必ずしも電力P2のレベルの上昇を待つことなく起動してもよい。次節では、そうした変形例について説明する。
【0044】
<<4.変形例>>
図6は、一変形例に係る情報処理装置600の構成の一例を示すブロック図である。
図1に示した情報処理装置100の構成と比較すると、情報処理装置600は、AND回路134を含まない。メインCPU111のリセット状態を解除するためのリセット信号R2は、サブCPU103によりプログラムが正当であると判定されたか否かを示す制御信号C1と実質的に同一の信号である。第2電力監視部123により出力される制御信号C2は、例えば、デバイス122のうちの1つ以上をリセット状態に維持し又はそれらのリセット状態を解除するためのリセット信号として使用されてもよい。デバイス122のリセット状態の制御が不要である場合には、第2電力監視部123は、情報処理装置600の構成から省略されてもよい。本変形例では、このように情報処理装置600の構成がより簡略化されるため、装置の小型化及び製造コストの削減が可能である。
【0045】
本変形例においても、PMU112のリセット状態は、リセット信号R1のディアサートに応じて解除される。即ち、PMU112は、サブCPU103と同様に、情報処理装置100の主電源がオンされたことに応じて動作を開始し、第2電源部121に、各デバイス122への電力P2の供給を開始するように指示する。メインCPU111の動作は、リセット信号R3により抑制される。AND回路133は、リセット信号R1及びリセット信号R2を受け付け、これらの信号値の論理積を示すリセット信号R3をメインCPU111のリセット端子へ出力する。したがって、メインCPU111のリセット状態は、リセット信号R1がディアサートされ且つ制御信号C1(リセット信号R2)がディアサートされて初めて解除される。
【0046】
図7は、本変形例において情報処理装置600の起動時に行われる処理の流れの一例を示すシーケンス図である。
図7に示した処理には、第1電源部101、第1電力監視部107、サブCPU103、メインCPU111、PMU112、第2電源部121及び第2電源監視部123が関与する。
【0047】
図7のS701~S708は、
図5のS501~S508と同様の処理ステップであるため、ここでは重複する説明を行わない。サブCPU103は、S707でメインCPUプログラム201が正当であると判定した場合、S709で、制御信号C1をディアサートする。この制御信号C1は、SoC102の第2入力端子132へ出力される。第2入力端子132は、サブCPU103から受け付けた制御信号C1を、リセット信号R2としてAND回路133へ出力する、
【0048】
PMU112は、S705で起動した後、S710で、第2電源部121に、各デバイス122への電力P2の供給を開始するように指示する。第2電源部121は、PMU112からの上記指示に応じて、S711で、デバイス122への電力P2の供給を開始する。
【0049】
S713で、メインCPU111は、リセット信号R1及びリセット信号R2がディアサートされたことに応じて、メインCPUプログラム201を実行することにより起動する。次いで、S714で、メインCPU111は、その他の必要なプログラムを実行することにより、情報処理装置600のデバイス122の制御を開始する。
【0050】
<<5.まとめ>>
ここまで、
図1~
図7を用いて、本開示の実施形態について詳細に説明した。上述した実施形態では、サブCPUにより、情報処理装置の電源がオンされたことに応じてプログラムの検証が開始され、上記プログラムが正当であると判定された場合に、サブCPUにより第1制御信号が出力される。上記情報処理装置のメインCPUは、上記第1制御信号に少なくとも基づいて、上記プログラムの実行を開始する。一方、上記情報処理装置のPMUは、上記プログラムが正当であるという上記判定の前に、上記情報処理装置の少なくとも1つのデバイスへの電力の供給を開始する。かかる構成によれば、メインCPUは、サブCPUにより正当であると判定されたプログラムに基づいて動作するため、不正なプログラムの制御下で上記情報処理装置のデバイスが動作するというリスクに対する安全性が保たれる。また、各デバイスへの電力供給の開始に伴うシーケンスは、プログラムの正当性の検証の完了を待つことなく開始されるため、上記情報処理装置の起動に要する時間を短縮することができる。したがって、ユーザは、電源オンの後、より早期に上記情報処理装置を使用することができる。例えば、上記少なくとも1つのデバイスへの電力の供給は、上記情報処理装置の電源がオンされたことに応じて開始されてもよい。この場合、各デバイスを、サブCPUによるプログラムの検証の状況に関わらず、迅速にメインCPUの制御を待ち受ける状態にすることができる。
【0051】
また、上述した実施形態では、メインCPU及びPMUは、共通のチップに設けられる。この場合にも、プログラムの検証が成功してメインCPUの起動が可能となる前にPMUによる電力制御を開始して、上記情報処理装置の起動に要する時間を短縮することができる。例えば、PMUは、上記チップの第1端子により受け付けられる第1リセット信号によってリセット状態を解除され得る。一方、メインCPUは、上記第1リセット信号と、上記チップの第2端子により受け付けられる第2リセット信号との論理積を示す第3リセット信号によってリセット状態を解除され得る。このような論理積のための演算回路を上記チップに取り入れることで、メインCPU及びPMUの起動のタイミングを相違させ、安全性を維持しながらPMUをメインCPUよりも早く起動させることができる。
【0052】
また、上述した実施形態では、サブCPUは、上記プログラムが正当ではないと判定された場合に、上記プログラムの復旧用バージョンでメモリ内の上記プログラムを上書きすることにより、上記プログラムを復旧し得る。かかる構成によれば、上記プログラムが改竄又は劣化といった原因で正当ではなくなった場合にも、保守作業を要することなく自動的に上記情報処理装置を正常に動作可能な状態に戻すことができる。そして、その復旧後に上記情報処理装置の起動に要する時間を短縮することができる。
【0053】
<<6.その他の実施形態>>
上記実施形態は、1つ以上の機能を実現するプログラムをネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読み出して実行する処理の形式でも実現可能である。また、1つ以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
【0054】
発明は上記実施形態に制限されるものではなく、発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、発明の範囲を公にするために請求項を添付する。
【符号の説明】
【0055】
100:情報処理装置、102:SoC、103:サブCPU(検証手段)、104:フラッシュメモリ(記憶手段)、107:第1電力監視部、111:メインCPU(処理手段)、112:PMU(電力制御手段)、122:デバイス、123:第2電力監視部、131:第1入力端子、132:第2入力端子、133:AND回路(第1演算手段)、134:AND回路(第2演算手段)、201:メインCPUプログラム、203:復旧用バージョン、R1:第1リセット信号、R2:第2リセット信号、R3:第3リセット信号、C1:第1制御信号、C2:第2制御信号