JP2022142263A - 情報処理装置及び情報処理プログラム - Google Patents

情報処理装置及び情報処理プログラム Download PDF

Info

Publication number
JP2022142263A
JP2022142263A JP2021042381A JP2021042381A JP2022142263A JP 2022142263 A JP2022142263 A JP 2022142263A JP 2021042381 A JP2021042381 A JP 2021042381A JP 2021042381 A JP2021042381 A JP 2021042381A JP 2022142263 A JP2022142263 A JP 2022142263A
Authority
JP
Japan
Prior art keywords
program
download
information processing
processing apparatus
error
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.)
Pending
Application number
JP2021042381A
Other languages
English (en)
Inventor
翔 永瀬
Sho Nagase
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.)
Fujifilm Business Innovation Corp
Original Assignee
Fujifilm Business Innovation Corp
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 Fujifilm Business Innovation Corp filed Critical Fujifilm Business Innovation Corp
Priority to JP2021042381A priority Critical patent/JP2022142263A/ja
Priority to US17/386,573 priority patent/US11966746B2/en
Priority to CN202111025336.XA priority patent/CN115145650A/zh
Publication of JP2022142263A publication Critical patent/JP2022142263A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0787Storage of error reports, e.g. persistent data storage, storage using memory protection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/1417Boot up procedures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/32Monitoring with visual or acoustical indication of the functioning of the machine
    • G06F11/324Display of status information
    • G06F11/327Alarm or error message display
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/1433Saving, restoring, recovering or retrying at system level during software upgrading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Stored Programmes (AREA)

Abstract

Figure 2022142263000001
【課題】3以上のバイナリで構成されるファームウエアの一部のバイナリにダウンロードプログラムを搭載せずに、エラーが発生してもリカバリ可能な情報処理装置及び情報処理プログラムを提供することを目的とする。
【解決手段】軽量ダウンロードプログラムを搭載した起動プログラム、中核プログラム、及びダウンロードプログラムを搭載したアプリケーションプログラムの3つのバイナリでファームウエアを構成し、起動プログラム、中核プログラム、アプリケーションプログラムの順に起動してそれぞれ続くプログラムを検証し、ダウンロードプログラムを搭載しない中核プログラムがアプリケーションプログラムを検証してエラーが発生した場合に検証NGフラグをオンして不揮発性領域に記録し、再起動時に検証NGフラグオンが記録されている場合に軽量ダウンロードプログラムを実行することでエラーをリカバリする。
【選択図】図3

Description

本発明は、情報処理装置及び情報処理プログラムに関する。
特許文献1には、制御プログラムで利用可能な各種の通信手段を制御プログラムのダウンロード時にも利用可能にしながら、プログラム容量の増加を飛躍的に低減させたダウンロード装置及びダウンロード方法が提案されている。具体的には、簡単な処理で制御可能な通信手段で通信を行う通信ドライバのみを利用してダウンロードを行うダウンロードプログラムを有する起動プログラムと、メインプログラム等とともに、少なくとも複雑な処理を必要とする通信手段で通信を行う通信プログラム及びその通信プログラムを利用したダウンロードが可能な自己書き換えプログラムを有している制御プログラムと、をROMに記憶する。そして、制御プログラムが正当であれば自己書き換えプログラムによって高機能の通信手段を利用したダウンロードが可能とされ、このとき、OS等を重複して保持しないので、容量を削減可能とされている。
特許文献2には、改ざんの検証対象プログラムを分割した部分プログラム毎にプログラムの改ざんの検知処理を実施する電子制御装置において、起動時間の制約を満たしつつ、検証用認証子を記憶するために消費される記憶領域を抑制する電子制御装置が提案されている。具体的には、プログラムを分割した複数の分割プログラム、及び検証用認証子を記憶する記憶部と、暗号演算により複数の分割プログラムそれぞれの部分認証子を生成する暗号演算部と、複数の前記部分認証子を用いた論理演算を行って演算認証子を生成し、検証用認証子と演算認証子とが一致するか否かによってプログラムの改ざんの有無を検証する検証部と、を有する電子制御装置が提案されている。
特許文献3には、プログラムを適正に且つ高速に起動できる情報処理装置が提案されている。具体的には、セキュアブートを実行可能である情報処理装置であって、プログラムが格納される第1 の不揮発性メモリ領域とプログラムが未検証であることを示す第1の値又は検証済であることを示す第2の値を有する第1のフラグが格納される第2の不揮発性メモリ領域とを含む不揮発性メモリと、第1の不揮発性メモリ領域に対する書換えが禁止であることを示す第3の値又は許可であることを示す第4の値を有する第2のフラグを格納する記憶装置を含み、書換え許可要求を受け且つ第1のフラグが第2の値を有する場合、第1のフラグの値を第1の値に変更し、第1のフラグの変更に応じて第2のフラグを第4の値に変更する許可部と、情報処理装置の起動時に第1のフラグが第1の値を有する場合、プログラムの検証が必要であると判定し、情報処理装置の起動時に第1のフラグが第2の値を有する場合、プログラムの検証が不要であると判定する判定部と、検証要求を受けた場合、又は、プログラムの検証が必要である場合、第2のフラグを第3の値に変更するように許可部を制御し、第2のフラグの変更に応じてプログラムに対する検証を行い、プログラムの検証が不要である場合、プログラムに対する検証をスキップする検証部と、を備えた情報処理装置が提案されている。
特開2003-263323号公報 特開2019-020872号公報 特開2017-156945号公報
3以上のバイナリで構成されるファームウエアでは、全てのバイナリにダウンロードプログラムを搭載すると冗長となる。一方、ダウンロードプログラムを搭載しないバイナリが存在すると、ダウンロードプログラムを搭載しないバイナリが次のプログラムを検証して結果がエラーの場合にリカバリできない場合がある。
そこで、3以上のバイナリで構成されるファームウエアの一部のバイナリにダウンロードプログラムを搭載せずに、エラーが発生してもリカバリ可能な情報処理装置及び情報処理プログラムを提供することを目的とする。
上記目的を達成するために、第1態様に係る情報処理装置は、プロセッサを備え、前記プロセッサは、第1プログラム、第2プログラム、及び第3プログラムを含む3以上のバイナリで構成され、かつ第1プログラムにダウンロードプログラムが搭載されて前記第1プログラムから順番に起動されるファームウエアを取得し、前記第1プログラムから順に起動して続くプログラムを検証し、前記ダウンロードプログラムを搭載しないプログラムが続くプログラムを検証してエラーが発生した場合にエラーフラグを不揮発性領域に記録し、再起動時に前記不揮発性領域に前記エラーフラグが記録されている場合に前記ダウンロードプログラムを実行することで前記エラーをリカバリする処理を行う。
また、第2態様に係る情報処理装置は、第1態様に係る情報処理装置において、前記第1プログラムと最後に起動されるプログラムにダウンロードプログラムが搭載されている。
また、第3態様に係る情報処理装置は、第2態様に係る情報処理装置において、前記第1プログラムに搭載される前記ダウンロードプログラムは、前記最後に起動されるプログラムに搭載される前記ダウンロードプログラムよりも簡易なプログラムである。
また、第4態様に係る情報処理装置は、第1態様~第3態様の何れか1の態様に係る情報処理装置において、前記ファームウエアは、前記第1プログラム、前記第2プログラム、及び前記第3プログラムの3つのバイナリで構成され、前記第1プログラムがダウンロードプログラムを搭載した起動プログラムであり、前記第2プログラムがオペレーティングシステムの中核となる中核プログラムであり、前記第3プログラムがオペレーティングシステム上で動作するアプリケーションプログラムである。
また、第5態様に係る情報処理装置は、第1態様~第4態様の何れか1の態様に係る情報処理装置において、前記プロセッサは、再起動後に前記ダウンロードプログラムによるダウンロードが実行された場合、又は再起動後に前記エラーフラグに対応するプログラムを検証してエラーが未発生となった場合に、前記不揮発性領域に記録された前記エラーフラグを削除する。
また、第6態様に係る情報処理装置は、第1態様~第6態様の何れか1の態様に係る情報処理装置において、前記プロセッサは、前記エラーが発生した場合、エラーの発生と、再起動でリカバリ可能であることを表示部に表示する処理を更に行う。
また、第7態様に係る情報処理プログラムは、コンピュータに、第1プログラム、第2プログラム、及び第3プログラムを含む3以上のバイナリで構成され、かつ第1プログラムにダウンロードプログラムが搭載されて前記第1プログラムから順番に起動されるファームウエアを取得し、前記第1プログラムから順に起動して続くプログラムを検証し、前記ダウンロードプログラムを搭載しないプログラムが続くプログラムを検証してエラーが発生した場合にエラーフラグを不揮発性領域に記録し、再起動時に前記不揮発性領域に前記エラーフラグが記録されている場合に前記ダウンロードプログラムを実行することで前記エラーをリカバリする処理を実行させる。
第1態様によれば、3以上のバイナリで構成されるファームウエアの一部のバイナリにダウンロードプログラムを搭載せずに、エラーが発生してもリカバリ可能な情報処理装置を提供できる。
第2態様によれば、3つのバイナリで構成されるファームウエアの2番目に起動されるプログラムにダウンロードプログラムを搭載しなくても、エラーが発生してもリカバリが可能となる。
第3態様によれば、第1プログラム及び第2プログラムの双方に搭載するダウンロードプログラムを共に簡易なプログラムを採用しない場合に比べて、ファームウエアサイズを抑制することが可能となる。
第4態様によれば、中核プログラムによりアプリケーションプログラムを検証してエラーが発生しても、再起動することで、起動プログラムのダウンロードプログラムを実行することでアプリケーションプログラムをダウンロードしてリカバリが可能となる。
第5態様によれば、再起動時にエラーフラグが削除されて、リカバリが不可能になってしまうことを防止できる。
第6態様によれば、エラーが発生した場合に、リカバリの仕方を確認することが可能となる。
第7態様によれば、3以上のバイナリで構成されるファームウエアの一部のバイナリにダウンロードプログラムを搭載せずに、エラーが発生してもリカバリ可能な情報処理プログラムを提供できる。
本実施形態に係る情報処理装置の概略構成を示す図である。 本実施形態に係る情報処理装置のROMに格納されるファームウエアの構成例を示すブロック図である。 本実施形態に係る情報処理装置で行われる処理の流れの一例を示すフローチャートである。 従来のファームウエアの構成例を示すブロック図である。 中核プログラムにダウンロードプログラムを搭載しないことでリカバリ不可となる場合の処理の流れを示すフローチャートである。 起動プログラム、(N-1)のプログラム、及びアプリケーションプログラムでファームウエアを構成した場合の処理の流れの一例を示すフローチャートである。
以下、図面を参照して本発明の実施の形態の一例を詳細に説明する。本実施形態では、画像形成装置に含まれる情報処理装置を一例として説明する。図1は、本実施形態に係る情報処理装置の概略構成を示す図である。情報処理装置10を含む画像形成装置は、例えば、ファクシミリ機能、画像読取機能、画像形成機能、複写機能、画像情報等を格納する格納機能、及び画像情報等を送信する送信機能等の複数機能を備える画像形成装置が適用される。
情報処理装置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により電気的に相互に接続されている。
以上の構成により、本実施の形態に係る情報処理装置10は、CPU10Aにより、ROM10B、RAM10C、及びストレージ10Dに対するアクセス、操作部10Eを介した各種データの取得、表示部10Fに対する各種情報の表示を各々実行する。また、情報処理装置10は、CPU10Aにより、通信部10Gを介した各種データの送受信の制御を実行する。
また、本実施形態に係る情報処理装置10には、この他にも画像形成各種の構成を含む。例えば、画像処理や画像形成を行うための構成を含む。なお、本実施形態では、画像形成装置に含む情報処理装置10として説明するが、これに限るものではなく、他の各種装置に含む情報処理装置10としてもよい。例えば、画像読取装置に含む情報処理装置10としてもよい。この場合には、図1の構成の他に、画像読み取りや画像処理などの構成を含む。
ところで、本実施形態に係る情報処理装置10には、ファームウエアがROM10B又はストレージ10Dに格納され、ファームウエアの更新が可能とされている。本実施形態に係る情報処理装置10では、ROM10B又はストレージ10Dは、EEPROM(Electrically Erasable Programmable Read-Only Memory)、フラッシュメモリ等の書き換え可能な不揮発性メモリが適用される。以下では、ROM10Bにファームウエアが格納されているものとして説明する。
本実施形態に係る情報処理装置10のROM10Bには、CPU10Aによって実行されるプログラムや、実行時に利用するデータなどが格納され、特にここでは、更新可能なファームウエアが格納されている。本実施形態では、ファームウエアは、boot、kernel、及びapplicationの3つのバイナリで構成されている。以下では、bootは起動プログラム、kernelは中核プログラム、applicationはアプリケーションプログラムと称す。なお、ファームウエアの各プログラムは、同じROM10B内に格納してもよいし、それぞれ異なるROMやその他のストレージ10D等に格納してもよい。少なくとも中核プログラム及びアプリケーションプログラムは、書き換え可能な領域、又はフラッシュメモリ等の記憶部に格納されている。また、以下では、中核プログラム及びアプリケーションプログラムの2つのプログラムをまとめて制御プログラムと称する場合がある。
RAM10Cは、CPU10Aが動作する際にワークエリアとして利用する他に、ファームウエアをダウンロードする際に、新たな制御プログラムを含む受信データを、このRAM10Cに一旦格納するように構成してもよい。
CPU10Aは、ROM10B内のファームウエア等のプログラムに従って動作し、情報処理装置10全体の制御及び各種の機能を提供する。また、外部装置12から新たな制御プログラムを含む送信データをダウンロードし、制御プログラムを書き換える処理も行う。
ここで、本実施形態に係る情報処理装置10のファームウエアの構成例について簡単に説明する。図2は、本実施形態に係る情報処理装置10のROM10Bに格納されるファームウエア14の構成例を示すブロック図である。
図2に示すように、ファームウエア14は、第1プログラムの一例としての起動プログラム20、第2プログラムの一例としての中核プログラム30、及び第3プログラムの一例としてのアプリケーションプログラム40の3つのバイナリを含む。
起動プログラム20は、ブートプログラム22、モード判定プログラム24、通信用ドライバ26、及び軽量ダウンロードプログラム28等を含む。ブートプログラム22は、電源投入時やリセット時などの起動時に動作するプログラムである。モード判定プログラム24は、ブートプログラムによって起動された後に、モードを判定するプログラムである。例えば、本実施形態では、通常モード、ダウンロード、及び軽量ダウンロードモードの何れかを判定する。なお、モードの選択は、例えば、電源投入時に操作部10Eの予め定めたキーを押しながら起動する等のように予め定めた特殊な操作によって行われる。また、軽量ダウンロードモードは、例えば、開発者向けのモードで、ダウンロードモードはユーザ向けのモードである。通信用ドライバ26は、例えば、最低限の通信ドライバとされ、通信部10Gを介して簡易な処理で通信を行う。ここでは簡易な処理はオペレーティングシステム32及びプロトコルスタック34を必要としないものとし、起動プログラム20はオペレーティングシステム32及びプロトコルスタック34を含まないものとするが、必要に応じて最低限の構成を有してもよい。軽量ダウンロードプログラム28は、後述のアプリケーションプログラム40のダウンロードプログラム44よりも簡易な軽量プログラムとされ、通信用ドライバ26を介してダウンロード及び書き換えを行うプログラムである。
中核プログラム30は、オペレーティングシステム32、プロトコルスタック34、及び複数の通信用ドライバ36を含み、オペレーティングシステム32の中核となる部分である。オペレーティングシステム32は、情報処理装置10を含む画像形成装置の操作、運用、及び運転等のオペレーションを司る。プロトコルスタック34は、プロトコルの階層を定義する。通信用ドライバ36は複数含み、それぞれ通信部10Gを介して起動プログラム20の通信用ドライバ26よりも複雑な処理で高機能の通信を行う。
アプリケーションプログラム40は、通常プログラム42及びダウンロードプログラム44を含む。通常プログラム42は、画像形成装置の各機能で使用する各種プログラムであり、ダウンロードプログラム44は、ダウンロード及び書き換えを行うプログラムである。
続いて、上述のように構成された本実施形態に係る情報処理装置10で行われる処理について説明する。図3は、本実施形態に係る情報処理装置10で行われる処理の流れの一例を示すフローチャートである。なお、図3の処理は、例えば、図示しない電源ボタン等によって電源がオンされた場合に開始する。
ステップ100では、CPU10Aが、起動プログラム20を起動してステップ102へ移行する。
ステップ102では、CPU10Aが、軽量ダウンロードモードが選択されたか否かを判定する。該判定は、操作部10Eの予め定めたキーを押しながら起動する等の予め定めた特殊操作によって軽量ダウンロードモードが選択されたか否かを判定する。該判定が肯定された場合にはステップ104へ移行し、否定された場合にはステップ106へ移行する。
ステップ104では、CPU10Aが、軽量ダウンロードプログラム28を実行する。当該ステップ104において、再起動後に軽量ダウンロードプログラム28によるダウンロードが実行された際に、検証NGフラグがオンで不揮発性領域に記録されている場合には、CPU10Aが検証NGフラグをオフすることによりフラグを削除してもよい。
ステップ106では、CPU10Aが、中核プログラム30を検証してステップ108へ移行する。例えば、チェックサム等を用いて中核プログラム30の改ざんが行われていないかを検証する。
ステップ108では、CPU10Aが、検証OK又は検証NGフラグオフであるか否かを判定する。該判定は、ステップ106の検証結果がOKであるか否か、又は後述する検証NGフラグがオフであるか否かを判定する。該判定が否定された場合にはステップ110へ移行し、肯定された場合にはステップ200へ移行する。
ステップ110では、CPU10Aが、ダウンロードモードであるか否かを判定する。該判定は、予め定めた特殊操作によってダウンロードモードが選択されたか否かを判定する。該判定が肯定された場合にはステップ104へ移行し、軽量ダウンロードプログラムを実行することにより、検証NGのプログラムがリカバリされる。
また、ステップ110の判定が否定された場合には、ステップ112へ移行して、エラー画面が表示部10Fに表示される。ここで、再起動が指示された場合、或いは、予め定めた時間が経過した場合に情報処理装置10を再起動してステップ100に戻って上述の処理を繰り返す。
一方、ステップ200では、CPU10Aが、中核プログラム30を起動してステップ202へ移行する。
ステップ202では、CPU10Aが、アプリケーションプログラム40を検証してステップ204へ移行する。例えば、チェックサム等を用いてアプリケーションプログラム40の改ざんが行われていないかを検証する。
ステップ204では、CPU10Aが、検証OKであるか否かを判定する。該判定は、ステップ202の検証結果がOKであるか否かを判定する。該判定が否定された場合にはステップ206へ移行し、肯定された場合にはステップ300へ移行する。当該ステップ204において検証結果がOKと判定された場合、検証NGフラグがオンで不揮発性領域に記録されている場合は、CPU10Aが検証NGフラグをオフすることによりフラグを削除してもよい。なお、検証NGフラグの削除は、2つの条件の何れかの場合に行う。すなわち、再起動後に軽量ダウンロードプログラム28によるダウンロードが実行された場合、又は再起動後に検証NGフラグに対応するプログラムを検証してエラーが未発生となった場合に削除する。
ステップ206では、CPU10Aが、アプリケーションプログラムに改ざんの可能性があることを表すエラーフラグとしての検証NGフラグをオンにして、EEPROMやフラッシュメモリ等の不揮発性領域に記録してステップ208へ移行する。
ステップ208では、CPU10Aが、エラー画面を表示部10Fに表示する。例えば、エラーの発生と、再起動でリカバリ可能であることを表示部10Fに表示する。ここで、再起動が指示された場合、或いは、予め定めた時間が経過した場合に情報処理装置10を再起動してステップ100に戻って上述の処理を繰り返す。
一方、ステップ300では、CPU10Aが、アプリケーションプログラム40を起動してステップ302へ移行する。
ステップ302では、CPU10Aが、モード判定が行われる。例えば、予め定めた特殊操作によって通常モードが選択された場合にはステップ304へ移行し、予め定めた特殊操作によってダウンロードモードが選択された場合にはステップ306へ移行する。
ステップ304では、CPU10Aが、通常プログラム42を実行する。一方、ステップ306では、CPU10Aが、ダウンロードプログラム44を実行する。ダウンロードプログラム44が実行されることにより、問題が発生していてもリカバリされる。
ここで、比較例として、従来のファームウエアについて簡単に説明する。図4は、従来のファームウエアの構成例を示すブロック図である。なお、本実施形態におけるファームウエア14の構成要素に対応する構成要素については同一符号を付して詳細な説明は省略する。
従来のファームウエア50は、特開2003-263323号公報に記載のように、起動プログラム20と制御プログラム60の2つのバイナリで構成されている。
起動プログラム20は、生産時に書き込まれた後は変更不可とされ、ブートプログラム22、モード判定プログラム24、通信用ドライバ26、及び軽量ダウンロードプログラム28を含む。
一方、制御プログラム60は、本実施形態におけるファームウエア14の中核プログラム30とアプリケーションプログラム40を合わせた構成とされている。すなわち、オペレーティングシステム32、プロトコルスタック34、通信用ドライバ36、通常プログラム42、及びダウンロードプログラム44を含む。
起動プログラム20は、チェックサム等を用いて制御プログラム60が改ざんされていないかを検証し、改ざんされていないと判定された場合に制御プログラム60を起動し、改ざんされていると判定された場合に起動を中断する。
従来のファームウエア50においても、通常モード、ダウンロードモード、及び軽量ダウンロードモードを有する。軽量ダウンロードの場合は、起動プログラム20は制御プログラム60を起動せずに、起動プログラム20内の軽量ダウンロードプログラム28を実行する。通常モード及びダウンロードモードの場合は、起動プログラム20は、制御プログラム60を検証後に、モードをパラメータとして与えて起動する。起動プログラム20は、リカバリ機能を有し、例えば、ダウンロードモードで起動されたが制御プログラム60の検証に失敗した場合に、代わりに軽量ダウンロードモードに移行してリカバリを行う。
従来のファームウエア50のように2つのバイナリの構成から本実施形態におけるファームウエア14のように3つのバイナリの構成に変更する場合、従来のファームウエア50のようにファームウエア50を構成する全てのプログラムにダウンロードプログラムを搭載すると、冗長となってしまう。
一方、一部のプログラムにダウンロードプログラムを搭載しない場合は、搭載しないプログラムを起動して続くプログラムを検証してエラーが発生した場合にリカバリができない。例えば、本実施形態のように、中核プログラム30にダウンロードプログラムを搭載しない場合には、図5に示すフローチャートのように、中核プログラムの実行中にリカバリ不可となってしまう。
ここで、3つのバイナリでファームウエア14を構成して中核プログラム30にダウンロードプログラムを搭載しない場合の処理の流れについて説明する。図5は、中核プログラム30にダウンロードプログラムを搭載しないことでリカバリ不可となる場合の処理の流れを示すフローチャートである。なお、図3と共通の処理は同一符号を付して説明する。
ステップ100では、CPU10Aが、起動プログラム20を起動してステップ106へ移行する。
ステップ106では、CPU10Aが、中核プログラム30を検証してステップ107へ移行する。例えば、チェックサム等を用いて中核プログラム30の改ざんが行われていないかを検証する。
ステップ107では、CPU10Aが、検証OKであるか否かを判定する。該判定は、ステップ106の検証結果がOKであるか否かを判定する。該判定が否定された場合にはステップ104へ移行して軽量ダウンロードプログラム28を実行し、肯定された場合にはステップ200へ移行する。
ステップ200では、CPU10Aが、中核プログラム30を起動してステップ202へ移行する。
ステップ202では、CPU10Aが、アプリケーションプログラム40を検証してステップ204へ移行する。例えば、チェックサム等を用いてアプリケーションプログラム40の改ざんが行われていないかを検証する。
ステップ204では、CPU10Aが、検証OKであるか否かを判定する。該判定は、ステップ202の検証結果がOKであるか否かを判定する。ここで、判定が肯定された場合にはステップ300へ移行して、以降は上記実施形態と同様に処理が行われるため、ステップ300以降の説明は省略する。しかしながら、ステップ204の判定が否定された場合には、ダウンロードプログラムを実行できないためリカバリ不可となってしまう。
これに対して、本実施形態では、上述したように、ダウンロードプログラムを搭載しない中核プログラム30において、次に実行するアプリケーションプログラム40を検証してNGであった場合に、検証NGフラグをオンして不揮発領域に格納する。これにより、再起動時に、検証NGフラグを確認して検証NGフラグがオンの場合、起動プログラム20に搭載した軽量ダウンロードプログラム28によって問題の発生したプログラムをダウンロードしてリカバリされる。
また、起動プログラム20の実行時に全てのプログラムを検証することも考えられるが、起動プログラムは処理の軽さが起動の速さに影響するため、起動時に全てのプログラムを検証する方法は好ましくない。従って、実行が必要となったプログラムだけを検証する方が最低限の処理時間で済むため好ましい。例えば、起動プログラム20が中核プログラム30及びアプリケーションプログラム40まで検証した後に、中核プログラム30の処理の途中で、破損等によるメモリ不足で処理を継続できない場合、アプリケーションプログラムの検証が無駄になり、エラー画面が表示されるまでの時間が長くなってしまうため好ましくない。
なお、本実施形態では、ファームウエア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の軽量ダウンロードプログラムの実行によりリカバリされる。
なお、図6の例では、(N-1)のプログラムの全てに軽量ダウンロードプログラム28やダウンロードプログラム44を搭載しない例を示すが、これに限るものではない。例えば、(N-1)のプログラムのうち一部のプログラムに軽量ダウンロードプログラム28又はダウンロードプログラム44を搭載してもよい。
また、上記の実施形態では、起動プログラム20に軽量ダウンロードプログラム28を搭載する例を説明したが、軽量ダウンロードプログラムではない、アプリケーションプログラム40と同様のダウンロードプログラム44を起動プログラム20に搭載してもよい。
また、上記の実施形態において、CPUをプロセッサの一例として説明したが、プロセッサとは広義的なプロセッサを指し、汎用的なプロセッサ(例えばCPU等)や、専用のプロセッサ(例えばGPU: Graphics Processing Unit、ASIC: Application Specific Integrated Circuit、FPGA: Field Programmable Gate Array、プログラマブル論理デバイス等)を含むものである。
また、上記の実施形態におけるプロセッサの動作は、1つのプロセッサによって成すのみでなく、物理的に離れた位置に存在する複数のプロセッサが協働して成すものであってもよい。また、プロセッサの各動作の順序は上記各実施形態において記載した順序のみに限定されるものではなく、適宜変更してもよい。
また、上記の実施形態におけるファームウエア14は、記憶媒体に記憶して流通させるようにしてもよい。
また、本発明は、上記に限定されるものでなく、上記以外にも、その主旨を逸脱しない範囲内において種々変形して実施可能であることは勿論である。
10 情報処理装置
10A CPU
10B ROM
10D ストレージ
14 ファームウエア
20 起動プログラム
28 軽量ダウンロードプログラム
30 中核プログラム
40 アプリケーションプログラム
44 ダウンロードプログラム

Claims (7)

  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プログラムから順に起動して続くプログラムを検証し、前記ダウンロードプログラムを搭載しないプログラムが続くプログラムを検証してエラーが発生した場合にエラーフラグを不揮発性領域に記録し、
    再起動時に前記不揮発性領域に前記エラーフラグが記録されている場合に前記ダウンロードプログラムを実行することで前記エラーをリカバリする処理を実行させるための情報処理プログラム。
JP2021042381A 2021-03-16 2021-03-16 情報処理装置及び情報処理プログラム Pending JP2022142263A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2021042381A JP2022142263A (ja) 2021-03-16 2021-03-16 情報処理装置及び情報処理プログラム
US17/386,573 US11966746B2 (en) 2021-03-16 2021-07-28 Information processing apparatus and non-transitory computer readable medium storing information processing program for recovering error
CN202111025336.XA CN115145650A (zh) 2021-03-16 2021-09-02 信息处理装置、存储介质及信息处理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2021042381A JP2022142263A (ja) 2021-03-16 2021-03-16 情報処理装置及び情報処理プログラム

Publications (1)

Publication Number Publication Date
JP2022142263A true JP2022142263A (ja) 2022-09-30

Family

ID=83284782

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021042381A Pending JP2022142263A (ja) 2021-03-16 2021-03-16 情報処理装置及び情報処理プログラム

Country Status (3)

Country Link
US (1) US11966746B2 (ja)
JP (1) JP2022142263A (ja)
CN (1) CN115145650A (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022142263A (ja) * 2021-03-16 2022-09-30 富士フイルムビジネスイノベーション株式会社 情報処理装置及び情報処理プログラム
CN116319269B (zh) * 2023-05-19 2023-09-15 南方电网数字电网研究院有限公司 具备通讯故障自检及快速隔离的新能源边缘侧通信模块

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1337917A4 (en) * 2000-11-17 2009-04-08 Hewlett Packard Development Co SYSTEM AND METHOD FOR UPDATING AND DISTRIBUTING INFORMATION
JP4013040B2 (ja) 2002-03-07 2007-11-28 富士ゼロックス株式会社 ダウンロード装置及びダウンロード方法
EP2053533A4 (en) * 2006-11-09 2011-03-23 Panasonic Corp FAKE DETECTION SYSTEM, FAKE DETECTION METHOD, FAKE IDENTIFICATION PROGRAM, RECORDING MEDIUM, INTEGRATED CIRCUIT, DEVICE FOR GENERATING AUTHENTICATION INFORMATION AND FAKE DETECTION DEVICE
JP6373888B2 (ja) 2016-03-01 2018-08-15 株式会社東芝 情報処理装置及び制御方法
JP6949416B2 (ja) 2017-07-13 2021-10-13 株式会社デンソー 電子制御装置、プログラム改ざん検知方法
US11269986B2 (en) * 2018-10-26 2022-03-08 STMicroelectronics (Grand Ouest) SAS Method for authenticating a program and corresponding integrated circuit
US11392700B1 (en) * 2019-06-28 2022-07-19 Fireeye Security Holdings Us Llc System and method for supporting cross-platform data verification
JP2022142263A (ja) * 2021-03-16 2022-09-30 富士フイルムビジネスイノベーション株式会社 情報処理装置及び情報処理プログラム

Also Published As

Publication number Publication date
US20220300292A1 (en) 2022-09-22
US11966746B2 (en) 2024-04-23
CN115145650A (zh) 2022-10-04

Similar Documents

Publication Publication Date Title
JP5575338B2 (ja) 情報処理装置、情報処理方法、およびコンピュータプログラム
CN109634645B (zh) 固件升级方法及终端
TWI384367B (zh) 韌體更新系統及方法
US9205809B2 (en) Vehicle unit and method for operating the vehicle unit
JP4279902B2 (ja) ディジタルテレビジョン放送受信装置およびディジタルテレビジョン放送受信用プログラムの取得方法
JP2022142263A (ja) 情報処理装置及び情報処理プログラム
JP2001331327A (ja) 電子機器
JP2004046453A (ja) シングルチップマイクロコンピュータおよびそのブート領域切り替え方法
JP6021597B2 (ja) 情報処理装置、情報処理方法、およびコンピュータプログラム
JP5084853B2 (ja) ファームウエア更新装置、通信装置、電子機器、ファームウエア更新システム、ファームウエア更新方法及びプログラム
KR101850275B1 (ko) 빠른 부팅을 위한 부트 이미지를 생성하는 방법 및 이를 수행하는 화상형성장치, 부트 이미지를 이용하여 빠른 부팅을 수행하는 방법 및 이를 수행하는 화상형성장치
JP7374780B2 (ja) 情報処理装置および情報処理装置の制御方法
KR101845467B1 (ko) 빠른 부팅을 위한 부트 이미지의 에러를 복구하는 방법 및 이를 수행하는 화상형성장치
JP4735765B2 (ja) Linuxプログラム起動システム
JP2020086516A (ja) 情報処理装置、情報処理装置の制御方法、及び、プログラム
JP7491765B2 (ja) ファームウェア更新システムおよびファームウェア更新方法
US11919461B2 (en) Vehicle device
JP7341376B2 (ja) 情報処理装置、情報処理方法、及び、情報処理プログラム
CN116185461B (zh) 固件升级方法及系统
CN112631626B (zh) 基于双系统的系统升级方法、装置及存储介质
JP6072521B2 (ja) コンピュータ起動システムおよびコンピュータ起動プログラムとコンピュータならびにコンピュータ起動方法
JP2003122575A (ja) 情報処理装置
JP2003330724A (ja) 情報処理装置、情報処理方法、及びプログラム
JP2005228225A (ja) メモリカードアダプタ
CN113064608A (zh) 一种ota升级方法、装置、设备和介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20240226