(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-01-06
(45)【発行日】2025-01-15
(54)【発明の名称】情報処理装置及び情報処理プログラム
(51)【国際特許分類】
G06F 9/445 20180101AFI20250107BHJP
G06F 21/57 20130101ALI20250107BHJP
【FI】
G06F9/445
G06F21/57 350
(21)【出願番号】P 2021042381
(22)【出願日】2021-03-16
【審査請求日】2024-02-26
(73)【特許権者】
【識別番号】000005496
【氏名又は名称】富士フイルムビジネスイノベーション株式会社
(74)【代理人】
【識別番号】110001519
【氏名又は名称】弁理士法人太陽国際特許事務所
(72)【発明者】
【氏名】永瀬 翔
【審査官】西間木 祐紀
(56)【参考文献】
【文献】特開2019-128775(JP,A)
【文献】特開2019-212114(JP,A)
【文献】特開2000-137607(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/445
G06F 21/57
(57)【特許請求の範囲】
【請求項1】
プロセッサを備え、前記プロセッサは、
第1プログラム、第2プログラム、及び第3プログラムを含む3以上のバイナリで構成され、かつ第1プログラムにダウンロードプログラムが搭載されて前記第1プログラムから順番に起動されるファームウエアを取得し、
前記第1プログラムから順に起動して続くプログラムを検証し、前記ダウンロードプログラムを搭載しないプログラムが続くプログラムを検証してエラーが発生した場合にエラーフラグを不揮発性領域に記録し、
再起動時に前記不揮発性領域に前記エラーフラグが記録されている場合に前記ダウンロードプログラムを実行することで前記エラーをリカバリする処理を行う情報処理装置。
【請求項2】
前記第1プログラムと最後に起動されるプログラムにダウンロードプログラムが搭載された請求項1に記載の情報処理装置。
【請求項3】
前記第1プログラムに搭載される前記ダウンロードプログラムは、前記最後に起動されるプログラムに搭載される前記ダウンロードプログラムよりも簡易なプログラムである請求項2に記載の情報処理装置。
【請求項4】
前記ファームウエアは、前記第1プログラム、前記第2プログラム、及び前記第3プログラムの3つのバイナリで構成され、
前記第1プログラムがダウンロードプログラムを搭載した起動プログラムであり、前記第2プログラムがオペレーティングシステムの中核となる中核プログラムであり、前記第3プログラムがオペレーティングシステム上で動作するアプリケーションプログラムである請求項1~3の何れか1項に記載の情報処理装置。
【請求項5】
前記プロセッサは、再起動後に前記ダウンロードプログラムによるダウンロードが実行された場合、又は再起動後に前記エラーフラグに対応するプログラムを検証してエラーが未発生となった場合に、前記不揮発性領域に記録された前記エラーフラグを削除する請求項1~4の何れか1項に記載の情報処理装置。
【請求項6】
前記プロセッサは、前記エラーが発生した場合、エラーの発生と、再起動でリカバリ可能であることを表示部に表示する処理を更に行う請求項1~5の何れか1項に記載の情報処理装置。
【請求項7】
コンピュータに、
第1プログラム、第2プログラム、及び第3プログラムを含む3以上のバイナリで構成され、かつ第1プログラムにダウンロードプログラムが搭載されて前記第1プログラムから順番に起動されるファームウエアを取得し、
前記第1プログラムから順に起動して続くプログラムを検証し、前記ダウンロードプログラムを搭載しないプログラムが続くプログラムを検証してエラーが発生した場合にエラーフラグを不揮発性領域に記録し、
再起動時に前記不揮発性領域に前記エラーフラグが記録されている場合に前記ダウンロードプログラムを実行することで前記エラーをリカバリする処理を実行させるための情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置及び情報処理プログラムに関する。
【背景技術】
【0002】
特許文献1には、制御プログラムで利用可能な各種の通信手段を制御プログラムのダウンロード時にも利用可能にしながら、プログラム容量の増加を飛躍的に低減させたダウンロード装置及びダウンロード方法が提案されている。具体的には、簡単な処理で制御可能な通信手段で通信を行う通信ドライバのみを利用してダウンロードを行うダウンロードプログラムを有する起動プログラムと、メインプログラム等とともに、少なくとも複雑な処理を必要とする通信手段で通信を行う通信プログラム及びその通信プログラムを利用したダウンロードが可能な自己書き換えプログラムを有している制御プログラムと、をROMに記憶する。そして、制御プログラムが正当であれば自己書き換えプログラムによって高機能の通信手段を利用したダウンロードが可能とされ、このとき、OS等を重複して保持しないので、容量を削減可能とされている。
【0003】
特許文献2には、改ざんの検証対象プログラムを分割した部分プログラム毎にプログラムの改ざんの検知処理を実施する電子制御装置において、起動時間の制約を満たしつつ、検証用認証子を記憶するために消費される記憶領域を抑制する電子制御装置が提案されている。具体的には、プログラムを分割した複数の分割プログラム、及び検証用認証子を記憶する記憶部と、暗号演算により複数の分割プログラムそれぞれの部分認証子を生成する暗号演算部と、複数の前記部分認証子を用いた論理演算を行って演算認証子を生成し、検証用認証子と演算認証子とが一致するか否かによってプログラムの改ざんの有無を検証する検証部と、を有する電子制御装置が提案されている。
【0004】
特許文献3には、プログラムを適正に且つ高速に起動できる情報処理装置が提案されている。具体的には、セキュアブートを実行可能である情報処理装置であって、プログラムが格納される第1 の不揮発性メモリ領域とプログラムが未検証であることを示す第1の値又は検証済であることを示す第2の値を有する第1のフラグが格納される第2の不揮発性メモリ領域とを含む不揮発性メモリと、第1の不揮発性メモリ領域に対する書換えが禁止であることを示す第3の値又は許可であることを示す第4の値を有する第2のフラグを格納する記憶装置を含み、書換え許可要求を受け且つ第1のフラグが第2の値を有する場合、第1のフラグの値を第1の値に変更し、第1のフラグの変更に応じて第2のフラグを第4の値に変更する許可部と、情報処理装置の起動時に第1のフラグが第1の値を有する場合、プログラムの検証が必要であると判定し、情報処理装置の起動時に第1のフラグが第2の値を有する場合、プログラムの検証が不要であると判定する判定部と、検証要求を受けた場合、又は、プログラムの検証が必要である場合、第2のフラグを第3の値に変更するように許可部を制御し、第2のフラグの変更に応じてプログラムに対する検証を行い、プログラムの検証が不要である場合、プログラムに対する検証をスキップする検証部と、を備えた情報処理装置が提案されている。
【先行技術文献】
【特許文献】
【0005】
【文献】特開2003-263323号公報
【文献】特開2019-020872号公報
【文献】特開2017-156945号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
3以上のバイナリで構成されるファームウエアでは、全てのバイナリにダウンロードプログラムを搭載すると冗長となる。一方、ダウンロードプログラムを搭載しないバイナリが存在すると、ダウンロードプログラムを搭載しないバイナリが次のプログラムを検証して結果がエラーの場合にリカバリできない場合がある。
【0007】
そこで、3以上のバイナリで構成されるファームウエアの一部のバイナリにダウンロードプログラムを搭載せずに、エラーが発生してもリカバリ可能な情報処理装置及び情報処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【0008】
上記目的を達成するために、第1態様に係る情報処理装置は、プロセッサを備え、前記プロセッサは、第1プログラム、第2プログラム、及び第3プログラムを含む3以上のバイナリで構成され、かつ第1プログラムにダウンロードプログラムが搭載されて前記第1プログラムから順番に起動されるファームウエアを取得し、前記第1プログラムから順に起動して続くプログラムを検証し、前記ダウンロードプログラムを搭載しないプログラムが続くプログラムを検証してエラーが発生した場合にエラーフラグを不揮発性領域に記録し、再起動時に前記不揮発性領域に前記エラーフラグが記録されている場合に前記ダウンロードプログラムを実行することで前記エラーをリカバリする処理を行う。
【0009】
また、第2態様に係る情報処理装置は、第1態様に係る情報処理装置において、前記第1プログラムと最後に起動されるプログラムにダウンロードプログラムが搭載されている。
【0010】
また、第3態様に係る情報処理装置は、第2態様に係る情報処理装置において、前記第1プログラムに搭載される前記ダウンロードプログラムは、前記最後に起動されるプログラムに搭載される前記ダウンロードプログラムよりも簡易なプログラムである。
【0011】
また、第4態様に係る情報処理装置は、第1態様~第3態様の何れか1の態様に係る情報処理装置において、前記ファームウエアは、前記第1プログラム、前記第2プログラム、及び前記第3プログラムの3つのバイナリで構成され、前記第1プログラムがダウンロードプログラムを搭載した起動プログラムであり、前記第2プログラムがオペレーティングシステムの中核となる中核プログラムであり、前記第3プログラムがオペレーティングシステム上で動作するアプリケーションプログラムである。
【0012】
また、第5態様に係る情報処理装置は、第1態様~第4態様の何れか1の態様に係る情報処理装置において、前記プロセッサは、再起動後に前記ダウンロードプログラムによるダウンロードが実行された場合、又は再起動後に前記エラーフラグに対応するプログラムを検証してエラーが未発生となった場合に、前記不揮発性領域に記録された前記エラーフラグを削除する。
【0013】
また、第6態様に係る情報処理装置は、第1態様~第6態様の何れか1の態様に係る情報処理装置において、前記プロセッサは、前記エラーが発生した場合、エラーの発生と、再起動でリカバリ可能であることを表示部に表示する処理を更に行う。
【0014】
また、第7態様に係る情報処理プログラムは、コンピュータに、第1プログラム、第2プログラム、及び第3プログラムを含む3以上のバイナリで構成され、かつ第1プログラムにダウンロードプログラムが搭載されて前記第1プログラムから順番に起動されるファームウエアを取得し、前記第1プログラムから順に起動して続くプログラムを検証し、前記ダウンロードプログラムを搭載しないプログラムが続くプログラムを検証してエラーが発生した場合にエラーフラグを不揮発性領域に記録し、再起動時に前記不揮発性領域に前記エラーフラグが記録されている場合に前記ダウンロードプログラムを実行することで前記エラーをリカバリする処理を実行させる。
【発明の効果】
【0015】
第1態様によれば、3以上のバイナリで構成されるファームウエアの一部のバイナリにダウンロードプログラムを搭載せずに、エラーが発生してもリカバリ可能な情報処理装置を提供できる。
【0016】
第2態様によれば、3つのバイナリで構成されるファームウエアの2番目に起動されるプログラムにダウンロードプログラムを搭載しなくても、エラーが発生してもリカバリが可能となる。
【0017】
第3態様によれば、第1プログラム及び第2プログラムの双方に搭載するダウンロードプログラムを共に簡易なプログラムを採用しない場合に比べて、ファームウエアサイズを抑制することが可能となる。
【0018】
第4態様によれば、中核プログラムによりアプリケーションプログラムを検証してエラーが発生しても、再起動することで、起動プログラムのダウンロードプログラムを実行することでアプリケーションプログラムをダウンロードしてリカバリが可能となる。
【0019】
第5態様によれば、再起動時にエラーフラグが削除されて、リカバリが不可能になってしまうことを防止できる。
【0020】
第6態様によれば、エラーが発生した場合に、リカバリの仕方を確認することが可能となる。
【0021】
第7態様によれば、3以上のバイナリで構成されるファームウエアの一部のバイナリにダウンロードプログラムを搭載せずに、エラーが発生してもリカバリ可能な情報処理プログラムを提供できる。
【図面の簡単な説明】
【0022】
【
図1】本実施形態に係る情報処理装置の概略構成を示す図である。
【
図2】本実施形態に係る情報処理装置のROMに格納されるファームウエアの構成例を示すブロック図である。
【
図3】本実施形態に係る情報処理装置で行われる処理の流れの一例を示すフローチャートである。
【
図4】従来のファームウエアの構成例を示すブロック図である。
【
図5】中核プログラムにダウンロードプログラムを搭載しないことでリカバリ不可となる場合の処理の流れを示すフローチャートである。
【
図6】起動プログラム、(N-1)のプログラム、及びアプリケーションプログラムでファームウエアを構成した場合の処理の流れの一例を示すフローチャートである。
【発明を実施するための形態】
【0023】
以下、図面を参照して本発明の実施の形態の一例を詳細に説明する。本実施形態では、画像形成装置に含まれる情報処理装置を一例として説明する。
図1は、本実施形態に係る情報処理装置の概略構成を示す図である。情報処理装置10を含む画像形成装置は、例えば、ファクシミリ機能、画像読取機能、画像形成機能、複写機能、画像情報等を格納する格納機能、及び画像情報等を送信する送信機能等の複数機能を備える画像形成装置が適用される。
【0024】
情報処理装置10は、プロセッサの一例としてのCPU(Central Processing Unit)10A、ROM(Read Only Memory)10B、RAM(Random Access Memory)10C、ストレージ10D、操作部10E、表示部10F、及び通信部10Gを備えている。CPU10Aは、情報処理装置10の全体の動作を司る。ROM10Bは、各種制御プログラムや各種パラメータ等が予め記憶される。RAM10Cは、CPU10Aによる各種プログラムの実行時のワークエリア等として用いられる。ストレージ10Dは、各種のデータやプログラム等が記憶される。操作部10Eは各種の情報を入力するために用いられる。表示部10Fは、各種の情報を表示するために用いられる。通信部10Gは、外部装置12に接続可能とされ、外部装置12と各種データの送受信を行う。以上の情報処理装置10の各部はシステムバス10Hにより電気的に相互に接続されている。
【0025】
以上の構成により、本実施の形態に係る情報処理装置10は、CPU10Aにより、ROM10B、RAM10C、及びストレージ10Dに対するアクセス、操作部10Eを介した各種データの取得、表示部10Fに対する各種情報の表示を各々実行する。また、情報処理装置10は、CPU10Aにより、通信部10Gを介した各種データの送受信の制御を実行する。
【0026】
また、本実施形態に係る情報処理装置10には、この他にも画像形成各種の構成を含む。例えば、画像処理や画像形成を行うための構成を含む。なお、本実施形態では、画像形成装置に含む情報処理装置10として説明するが、これに限るものではなく、他の各種装置に含む情報処理装置10としてもよい。例えば、画像読取装置に含む情報処理装置10としてもよい。この場合には、
図1の構成の他に、画像読み取りや画像処理などの構成を含む。
【0027】
ところで、本実施形態に係る情報処理装置10には、ファームウエアがROM10B又はストレージ10Dに格納され、ファームウエアの更新が可能とされている。本実施形態に係る情報処理装置10では、ROM10B又はストレージ10Dは、EEPROM(Electrically Erasable Programmable Read-Only Memory)、フラッシュメモリ等の書き換え可能な不揮発性メモリが適用される。以下では、ROM10Bにファームウエアが格納されているものとして説明する。
【0028】
本実施形態に係る情報処理装置10のROM10Bには、CPU10Aによって実行されるプログラムや、実行時に利用するデータなどが格納され、特にここでは、更新可能なファームウエアが格納されている。本実施形態では、ファームウエアは、boot、kernel、及びapplicationの3つのバイナリで構成されている。以下では、bootは起動プログラム、kernelは中核プログラム、applicationはアプリケーションプログラムと称す。なお、ファームウエアの各プログラムは、同じROM10B内に格納してもよいし、それぞれ異なるROMやその他のストレージ10D等に格納してもよい。少なくとも中核プログラム及びアプリケーションプログラムは、書き換え可能な領域、又はフラッシュメモリ等の記憶部に格納されている。また、以下では、中核プログラム及びアプリケーションプログラムの2つのプログラムをまとめて制御プログラムと称する場合がある。
【0029】
RAM10Cは、CPU10Aが動作する際にワークエリアとして利用する他に、ファームウエアをダウンロードする際に、新たな制御プログラムを含む受信データを、このRAM10Cに一旦格納するように構成してもよい。
【0030】
CPU10Aは、ROM10B内のファームウエア等のプログラムに従って動作し、情報処理装置10全体の制御及び各種の機能を提供する。また、外部装置12から新たな制御プログラムを含む送信データをダウンロードし、制御プログラムを書き換える処理も行う。
【0031】
ここで、本実施形態に係る情報処理装置10のファームウエアの構成例について簡単に説明する。
図2は、本実施形態に係る情報処理装置10のROM10Bに格納されるファームウエア14の構成例を示すブロック図である。
【0032】
図2に示すように、ファームウエア14は、第1プログラムの一例としての起動プログラム20、第2プログラムの一例としての中核プログラム30、及び第3プログラムの一例としてのアプリケーションプログラム40の3つのバイナリを含む。
【0033】
起動プログラム20は、ブートプログラム22、モード判定プログラム24、通信用ドライバ26、及び軽量ダウンロードプログラム28等を含む。ブートプログラム22は、電源投入時やリセット時などの起動時に動作するプログラムである。モード判定プログラム24は、ブートプログラムによって起動された後に、モードを判定するプログラムである。例えば、本実施形態では、通常モード、ダウンロード、及び軽量ダウンロードモードの何れかを判定する。なお、モードの選択は、例えば、電源投入時に操作部10Eの予め定めたキーを押しながら起動する等のように予め定めた特殊な操作によって行われる。また、軽量ダウンロードモードは、例えば、開発者向けのモードで、ダウンロードモードはユーザ向けのモードである。通信用ドライバ26は、例えば、最低限の通信ドライバとされ、通信部10Gを介して簡易な処理で通信を行う。ここでは簡易な処理はオペレーティングシステム32及びプロトコルスタック34を必要としないものとし、起動プログラム20はオペレーティングシステム32及びプロトコルスタック34を含まないものとするが、必要に応じて最低限の構成を有してもよい。軽量ダウンロードプログラム28は、後述のアプリケーションプログラム40のダウンロードプログラム44よりも簡易な軽量プログラムとされ、通信用ドライバ26を介してダウンロード及び書き換えを行うプログラムである。
【0034】
中核プログラム30は、オペレーティングシステム32、プロトコルスタック34、及び複数の通信用ドライバ36を含み、オペレーティングシステム32の中核となる部分である。オペレーティングシステム32は、情報処理装置10を含む画像形成装置の操作、運用、及び運転等のオペレーションを司る。プロトコルスタック34は、プロトコルの階層を定義する。通信用ドライバ36は複数含み、それぞれ通信部10Gを介して起動プログラム20の通信用ドライバ26よりも複雑な処理で高機能の通信を行う。
【0035】
アプリケーションプログラム40は、通常プログラム42及びダウンロードプログラム44を含む。通常プログラム42は、画像形成装置の各機能で使用する各種プログラムであり、ダウンロードプログラム44は、ダウンロード及び書き換えを行うプログラムである。
【0036】
続いて、上述のように構成された本実施形態に係る情報処理装置10で行われる処理について説明する。
図3は、本実施形態に係る情報処理装置10で行われる処理の流れの一例を示すフローチャートである。なお、
図3の処理は、例えば、図示しない電源ボタン等によって電源がオンされた場合に開始する。
【0037】
ステップ100では、CPU10Aが、起動プログラム20を起動してステップ102へ移行する。
【0038】
ステップ102では、CPU10Aが、軽量ダウンロードモードが選択されたか否かを判定する。該判定は、操作部10Eの予め定めたキーを押しながら起動する等の予め定めた特殊操作によって軽量ダウンロードモードが選択されたか否かを判定する。該判定が肯定された場合にはステップ104へ移行し、否定された場合にはステップ106へ移行する。
【0039】
ステップ104では、CPU10Aが、軽量ダウンロードプログラム28を実行する。当該ステップ104において、再起動後に軽量ダウンロードプログラム28によるダウンロードが実行された際に、検証NGフラグがオンで不揮発性領域に記録されている場合には、CPU10Aが検証NGフラグをオフすることによりフラグを削除してもよい。
【0040】
ステップ106では、CPU10Aが、中核プログラム30を検証してステップ108へ移行する。例えば、チェックサム等を用いて中核プログラム30の改ざんが行われていないかを検証する。
【0041】
ステップ108では、CPU10Aが、検証OK又は検証NGフラグオフであるか否かを判定する。該判定は、ステップ106の検証結果がOKであるか否か、又は後述する検証NGフラグがオフであるか否かを判定する。該判定が否定された場合にはステップ110へ移行し、肯定された場合にはステップ200へ移行する。
【0042】
ステップ110では、CPU10Aが、ダウンロードモードであるか否かを判定する。該判定は、予め定めた特殊操作によってダウンロードモードが選択されたか否かを判定する。該判定が肯定された場合にはステップ104へ移行し、軽量ダウンロードプログラムを実行することにより、検証NGのプログラムがリカバリされる。
【0043】
また、ステップ110の判定が否定された場合には、ステップ112へ移行して、エラー画面が表示部10Fに表示される。ここで、再起動が指示された場合、或いは、予め定めた時間が経過した場合に情報処理装置10を再起動してステップ100に戻って上述の処理を繰り返す。
【0044】
一方、ステップ200では、CPU10Aが、中核プログラム30を起動してステップ202へ移行する。
【0045】
ステップ202では、CPU10Aが、アプリケーションプログラム40を検証してステップ204へ移行する。例えば、チェックサム等を用いてアプリケーションプログラム40の改ざんが行われていないかを検証する。
【0046】
ステップ204では、CPU10Aが、検証OKであるか否かを判定する。該判定は、ステップ202の検証結果がOKであるか否かを判定する。該判定が否定された場合にはステップ206へ移行し、肯定された場合にはステップ300へ移行する。当該ステップ204において検証結果がOKと判定された場合、検証NGフラグがオンで不揮発性領域に記録されている場合は、CPU10Aが検証NGフラグをオフすることによりフラグを削除してもよい。なお、検証NGフラグの削除は、2つの条件の何れかの場合に行う。すなわち、再起動後に軽量ダウンロードプログラム28によるダウンロードが実行された場合、又は再起動後に検証NGフラグに対応するプログラムを検証してエラーが未発生となった場合に削除する。
【0047】
ステップ206では、CPU10Aが、アプリケーションプログラムに改ざんの可能性があることを表すエラーフラグとしての検証NGフラグをオンにして、EEPROMやフラッシュメモリ等の不揮発性領域に記録してステップ208へ移行する。
【0048】
ステップ208では、CPU10Aが、エラー画面を表示部10Fに表示する。例えば、エラーの発生と、再起動でリカバリ可能であることを表示部10Fに表示する。ここで、再起動が指示された場合、或いは、予め定めた時間が経過した場合に情報処理装置10を再起動してステップ100に戻って上述の処理を繰り返す。
【0049】
一方、ステップ300では、CPU10Aが、アプリケーションプログラム40を起動してステップ302へ移行する。
【0050】
ステップ302では、CPU10Aが、モード判定が行われる。例えば、予め定めた特殊操作によって通常モードが選択された場合にはステップ304へ移行し、予め定めた特殊操作によってダウンロードモードが選択された場合にはステップ306へ移行する。
【0051】
ステップ304では、CPU10Aが、通常プログラム42を実行する。一方、ステップ306では、CPU10Aが、ダウンロードプログラム44を実行する。ダウンロードプログラム44が実行されることにより、問題が発生していてもリカバリされる。
【0052】
ここで、比較例として、従来のファームウエアについて簡単に説明する。
図4は、従来のファームウエアの構成例を示すブロック図である。なお、本実施形態におけるファームウエア14の構成要素に対応する構成要素については同一符号を付して詳細な説明は省略する。
【0053】
従来のファームウエア50は、特開2003-263323号公報に記載のように、起動プログラム20と制御プログラム60の2つのバイナリで構成されている。
【0054】
起動プログラム20は、生産時に書き込まれた後は変更不可とされ、ブートプログラム22、モード判定プログラム24、通信用ドライバ26、及び軽量ダウンロードプログラム28を含む。
【0055】
一方、制御プログラム60は、本実施形態におけるファームウエア14の中核プログラム30とアプリケーションプログラム40を合わせた構成とされている。すなわち、オペレーティングシステム32、プロトコルスタック34、通信用ドライバ36、通常プログラム42、及びダウンロードプログラム44を含む。
【0056】
起動プログラム20は、チェックサム等を用いて制御プログラム60が改ざんされていないかを検証し、改ざんされていないと判定された場合に制御プログラム60を起動し、改ざんされていると判定された場合に起動を中断する。
【0057】
従来のファームウエア50においても、通常モード、ダウンロードモード、及び軽量ダウンロードモードを有する。軽量ダウンロードの場合は、起動プログラム20は制御プログラム60を起動せずに、起動プログラム20内の軽量ダウンロードプログラム28を実行する。通常モード及びダウンロードモードの場合は、起動プログラム20は、制御プログラム60を検証後に、モードをパラメータとして与えて起動する。起動プログラム20は、リカバリ機能を有し、例えば、ダウンロードモードで起動されたが制御プログラム60の検証に失敗した場合に、代わりに軽量ダウンロードモードに移行してリカバリを行う。
【0058】
従来のファームウエア50のように2つのバイナリの構成から本実施形態におけるファームウエア14のように3つのバイナリの構成に変更する場合、従来のファームウエア50のようにファームウエア50を構成する全てのプログラムにダウンロードプログラムを搭載すると、冗長となってしまう。
【0059】
一方、一部のプログラムにダウンロードプログラムを搭載しない場合は、搭載しないプログラムを起動して続くプログラムを検証してエラーが発生した場合にリカバリができない。例えば、本実施形態のように、中核プログラム30にダウンロードプログラムを搭載しない場合には、
図5に示すフローチャートのように、中核プログラムの実行中にリカバリ不可となってしまう。
【0060】
ここで、3つのバイナリでファームウエア14を構成して中核プログラム30にダウンロードプログラムを搭載しない場合の処理の流れについて説明する。
図5は、中核プログラム30にダウンロードプログラムを搭載しないことでリカバリ不可となる場合の処理の流れを示すフローチャートである。なお、
図3と共通の処理は同一符号を付して説明する。
【0061】
ステップ100では、CPU10Aが、起動プログラム20を起動してステップ106へ移行する。
【0062】
ステップ106では、CPU10Aが、中核プログラム30を検証してステップ107へ移行する。例えば、チェックサム等を用いて中核プログラム30の改ざんが行われていないかを検証する。
【0063】
ステップ107では、CPU10Aが、検証OKであるか否かを判定する。該判定は、ステップ106の検証結果がOKであるか否かを判定する。該判定が否定された場合にはステップ104へ移行して軽量ダウンロードプログラム28を実行し、肯定された場合にはステップ200へ移行する。
【0064】
ステップ200では、CPU10Aが、中核プログラム30を起動してステップ202へ移行する。
【0065】
ステップ202では、CPU10Aが、アプリケーションプログラム40を検証してステップ204へ移行する。例えば、チェックサム等を用いてアプリケーションプログラム40の改ざんが行われていないかを検証する。
【0066】
ステップ204では、CPU10Aが、検証OKであるか否かを判定する。該判定は、ステップ202の検証結果がOKであるか否かを判定する。ここで、判定が肯定された場合にはステップ300へ移行して、以降は上記実施形態と同様に処理が行われるため、ステップ300以降の説明は省略する。しかしながら、ステップ204の判定が否定された場合には、ダウンロードプログラムを実行できないためリカバリ不可となってしまう。
【0067】
これに対して、本実施形態では、上述したように、ダウンロードプログラムを搭載しない中核プログラム30において、次に実行するアプリケーションプログラム40を検証してNGであった場合に、検証NGフラグをオンして不揮発領域に格納する。これにより、再起動時に、検証NGフラグを確認して検証NGフラグがオンの場合、起動プログラム20に搭載した軽量ダウンロードプログラム28によって問題の発生したプログラムをダウンロードしてリカバリされる。
【0068】
また、起動プログラム20の実行時に全てのプログラムを検証することも考えられるが、起動プログラムは処理の軽さが起動の速さに影響するため、起動時に全てのプログラムを検証する方法は好ましくない。従って、実行が必要となったプログラムだけを検証する方が最低限の処理時間で済むため好ましい。例えば、起動プログラム20が中核プログラム30及びアプリケーションプログラム40まで検証した後に、中核プログラム30の処理の途中で、破損等によるメモリ不足で処理を継続できない場合、アプリケーションプログラムの検証が無駄になり、エラー画面が表示されるまでの時間が長くなってしまうため好ましくない。
【0069】
なお、本実施形態では、ファームウエア14を3つのバイナリで構成する例を説明したが、3つのバイナリに限るものではなく、4以上のバイナリで構成してもよい。
図6は、起動プログラム20、(N-1)のプログラム、及びアプリケーションプログラム40でファームウエアを構成した場合の処理の流れの一例を示すフローチャートである。なお、
図3と共通の処理は同一符号を付して示す。
図6の例では、起動プログラム20に軽量ダウンロードプログラムを搭載し、アプリケーションプログラム40にダウンロードプログラムを搭載して、(N-1)のプログラムにはダウンロードプログラムを搭載しない例を示す。
図6では、起動プログラム20及びアプリケーションプログラム40は、
図3と同様の処理を行い、(N-1)のプログラムは
図3の中核プログラム30の処理と同様に処理を行う。すなわち、次のプログラムを検証して検証NGであった場合には検証NGフラグをオンして不揮発領域に記録してエラー画面を表示する。これにより、再起動時に問題のあるプログラムが起動プログラム20の軽量ダウンロードプログラムの実行によりリカバリされる。
【0070】
なお、
図6の例では、(N-1)のプログラムの全てに軽量ダウンロードプログラム28やダウンロードプログラム44を搭載しない例を示すが、これに限るものではない。例えば、(N-1)のプログラムのうち一部のプログラムに軽量ダウンロードプログラム28又はダウンロードプログラム44を搭載してもよい。
【0071】
また、上記の実施形態では、起動プログラム20に軽量ダウンロードプログラム28を搭載する例を説明したが、軽量ダウンロードプログラムではない、アプリケーションプログラム40と同様のダウンロードプログラム44を起動プログラム20に搭載してもよい。
【0072】
また、上記の実施形態において、CPUをプロセッサの一例として説明したが、プロセッサとは広義的なプロセッサを指し、汎用的なプロセッサ(例えばCPU等)や、専用のプロセッサ(例えばGPU: Graphics Processing Unit、ASIC: Application Specific Integrated Circuit、FPGA: Field Programmable Gate Array、プログラマブル論理デバイス等)を含むものである。
【0073】
また、上記の実施形態におけるプロセッサの動作は、1つのプロセッサによって成すのみでなく、物理的に離れた位置に存在する複数のプロセッサが協働して成すものであってもよい。また、プロセッサの各動作の順序は上記各実施形態において記載した順序のみに限定されるものではなく、適宜変更してもよい。
【0074】
また、上記の実施形態におけるファームウエア14は、記憶媒体に記憶して流通させるようにしてもよい。
【0075】
また、本発明は、上記に限定されるものでなく、上記以外にも、その主旨を逸脱しない範囲内において種々変形して実施可能であることは勿論である。
【符号の説明】
【0076】
10 情報処理装置
10A CPU
10B ROM
10D ストレージ
14 ファームウエア
20 起動プログラム
28 軽量ダウンロードプログラム
30 中核プログラム
40 アプリケーションプログラム
44 ダウンロードプログラム