JP2023068538A - 情報処理装置及びその制御方法、並びにプログラム - Google Patents

情報処理装置及びその制御方法、並びにプログラム Download PDF

Info

Publication number
JP2023068538A
JP2023068538A JP2021179730A JP2021179730A JP2023068538A JP 2023068538 A JP2023068538 A JP 2023068538A JP 2021179730 A JP2021179730 A JP 2021179730A JP 2021179730 A JP2021179730 A JP 2021179730A JP 2023068538 A JP2023068538 A JP 2023068538A
Authority
JP
Japan
Prior art keywords
update
firmware
program
information processing
version
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
JP2021179730A
Other languages
English (en)
Inventor
優一 八木
Yuichi Yagi
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.)
Canon Inc
Original Assignee
Canon Inc
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 Canon Inc filed Critical Canon Inc
Priority to JP2021179730A priority Critical patent/JP2023068538A/ja
Priority to US17/971,919 priority patent/US20230132494A1/en
Publication of JP2023068538A publication Critical patent/JP2023068538A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/654Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories

Landscapes

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

Abstract

Figure 2023068538000001
【課題】情報処理装置において、ファームウェア更新処理の異常終了に伴うファームウェアのエラー状態を復旧した後に、復旧後のファームウェアのバージョンを適切なバージョンにすることを可能にする。
【解決手段】CPU110は、第1の更新用ファームウェアデータをサーバ装置300から取得してRAM130に保持し、そのバージョン情報をフラッシュメモリ120に保存する。CPU110は、RAM130に保持された第1の更新用ファームウェアデータを用いて、フラッシュメモリ120のファームウェアを更新する更新処理を行う。CPU110は、当該更新処理の異常終了に伴うファームウェアのエラー状態を、第2の更新用ファームウェアデータに基づいて復旧し、フラッシュメモリ120に保存されたバージョン情報に基づいて、当該バージョン情報に対応する更新用ファームウェアデータをサーバ装置300から取得するか否かを決定する。
【選択図】図1

Description

本発明は、情報処理装置及びその制御方法、並びにプログラムに関するものである。
従来、情報処理装置等の様々な装置は、ファームウェア等のメインプログラムに基づいて動作している。昨今では、サーバから最新のファームウェアデータをダウンロードし、ダウンロードしたデータを用いてファームウェアを更新する装置が普及している(例えば、特許文献1)。
また、昨今では、安価な製品を望む市場の要望に応え、装置に対して様々な生産コストの削減が検討されている。生産コストの削減の一例として、フラッシュメモリの容量削減がある。フラッシュメモリの容量が削減された装置では、ファームウェアの更新時に、サーバからダウンロードしたデータをバックアップするための一時記憶領域を、フラッシュメモリの記憶領域内に確保できない。この場合、揮発メモリをこのような一時記憶領域として用いて、現在使用されているファームウェアに対して順次データの上書きを行うことで、ファームウェアの更新処理が行われうる。
上述のようにフラッシュメモリに一時記憶領域を確保できず、揮発メモリを一時記憶領域として用いてファームウェアの更新処理を行う装置において、例えば、更新処理の実行中に装置の電源に瞬断が生じると、更新処理の異常終了が生じる。その結果、ファームウェアがエラー状態となってしまう。こうしたファームウェアのエラー状態を解消する方法として、復旧ツールをインストールしたPC等の外部装置を接続して、装置の復旧作業を行う方法がありうる。
特開2006-127393号公報
しかしながら、配布されている復旧ツールでエラー状態を復旧した場合に、復旧後のファームウェアのバージョンは、ユーザが更新しようとしていたバージョン(ユーザ意図していた更新後バージョン)とは限らない。このような場合、エラー状態の復旧後のファームウェアのバージョンを、ユーザが意図していた更新後バージョンにできることが望ましい。
そこで、本発明は、情報処理装置において、ファームウェア更新処理の異常終了に伴うファームウェアのエラー状態を復旧した後に、復旧後のファームウェアのバージョンを適切なバージョンにすることを可能にする技術を提供することを目的とする。
本発明の一態様に係る情報処理装置は、ファームウェアが格納された不揮発性記憶媒体と、データを一時的に保持可能な揮発性記憶媒体と、第1の更新用ファームウェアデータをサーバ装置から取得し、前記第1の更新用ファームウェアデータを前記揮発性記憶媒体に保持し、前記第1の更新用ファームウェアデータのバージョン情報を前記不揮発性記憶媒体に保存する取得手段と、前記揮発性記憶媒体に保持された前記第1の更新用ファームウェアデータを用いて、前記不揮発性記憶媒体のファームウェアを更新する更新処理を行う更新手段と、前記更新処理の異常終了に伴う前記ファームウェアのエラー状態を、第2の更新用ファームウェアデータに基づいて復旧する復旧手段と、前記復旧の後に、前記保存されたバージョン情報に基づいて、当該保存されたバージョン情報に対応する更新用ファームウェアデータを前記サーバ装置から取得するか否かを決定する決定手段と、を有することを特徴とする。
本発明によれば、情報処理装置において、ファームウェア更新処理の異常終了に伴うファームウェアのエラー状態を復旧した後に、復旧後のファームウェアのバージョンを適切なバージョンにすることが可能になる。
情報処理システムの構成例を示すブロック図 ブートプログラムによるブート処理の手順の例を示すフローチャート 更新用ファームウェアデータの構成例を示す図 第1のファームウェアの更新処理の手順の例を示すフローチャート 第2のファームウェアの更新処理の手順の例を示すフローチャート メインプログラムによる起動処理の一部として行われる処理の手順の例を示すフローチャート 情報処理装置のファームウェアを更新する処理のシーケンスの例を示す図 情報処理装置におけるフラッシュメモリ及びRAMの記憶領域の状態の例を示す図
以下、添付図面を参照して実施形態を詳しく説明する。なお、以下の実施形態は特許請求の範囲に係る発明を限定するものではない。実施形態には複数の特徴が記載されているが、これらの複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。更に、添付図面においては、同一又は同様の構成に同一の参照番号を付し、重複した説明は省略する。
図1は、本発明の実施形態に係る情報処理装置の構成例を示すブロック図である。情報処理装置100は、CPU110、フラッシュメモリ120、RAM130、通信部160、及び操作部170を備える。情報処理装置100内の各デバイスは、システムバス180を介して互いに接続されている。
フラッシュメモリ120は、不揮発性記憶媒体であり、各種プログラム及び各種データを格納する。図1の例では、フラッシュメモリ120には、ブートプログラム121、メインプログラム122(ファームウェア)、更新プログラム123、設定データ124、及びアプリケーションプログラム129が格納されている。なお、本実施形態では上述のプログラム及びデータが1つのフラッシュメモリ120に保存される例を示しているが、上述のプログラム及びデータの保存に複数のフラッシュメモリ(不揮発性記憶媒体)が使用されてもよい。
ブートプログラム121は、情報処理装置100の電源がオン状態にされた後に最初に起動されるプログラムである。メインプログラム122は、情報処理装置100の主機能を制御するためのプログラム(ファームウェア)である。更新プログラム123は、情報処理装置100のファームウェアの更新を制御するためのプログラムである。本実施形態では、更新プログラム123は、後述する第1のファームウェア更新処理の異常終了に伴うファームウェアのエラー状態の復旧を行う復旧プログラムとして使用されうる。設定データ124は、CPU110による各種プログラムの実行のために使用される。アプリケーションプログラム129は、メインプログラム122により呼び出し可能であり、情報処理装置100の各機能を制御する(例えば、入力デバイス及び出力デバイスを制御する)ためのプログラムである。
RAM130は、フラッシュメモリ120とは別に設けられたメモリ(記憶媒体)であり、データを一時的に保持可能な揮発性記憶媒体である。このため、情報処理装置100の電源が切られると、RAM130に保持されたデータは失われる。CPU110は、フラッシュメモリ120に格納されたプログラムをRAM130に読み出して実行することで、情報処理装置100内の各デバイスを制御する。また、CPU110は、プログラムの実行に必要となるデータを一時的に保持するためにRAM130を使用する。
通信部160は、外部装置との通信を行う通信I/F(インタフェース)である。通信部160は、インターネット400等の通信ネットワークを介して外部装置(例:サーバ装置300)との通信を行う。また、通信部160は、情報処理装置100に外部装置(例:外部端末200)が接続された場合に、当該外部装置との通信を行う。本実施形態では、外部端末200は、情報処理装置100に直接接続されるものとして説明されるが、有線又は無線LAN等の通信ネットワークを介して情報処理装置100に接続されてもよい。
操作部170は、ユーザからの操作を受け付け、受け付けた操作内容をCPU110に伝える。また、操作部170は、表示部(ディスプレイ)を有しており、CPU110からの指示に従って当該表示部に画面の表示を行う。
本実施形態では、図1に示すように、設定データ124は、ブートプログラム121によって起動されるべきプログラム(即ち、情報処理装置100の起動時に起動されるべきプログラム)の種別である起動プログラム種別125の設定を含む。情報処理装置100の起動時に、CPU110によって実行されるブートプログラム121は、設定データ124に含まれる起動プログラム種別125の設定に従って、起動対象のプログラム(起動プログラム)を選択する。本実施形態では、起動プログラムとして、メインプログラム122(ファームウェア)又は更新プログラム123(復旧プログラム)が選択される。CPU110は、ブートプログラム121によって選択されたプログラムをRAM130に展開して実行する。その際、CPU110は、プログラムの実行に必要となるデータを一時的に保持するためにRAM130を使用する。
本実施形態では、設定データ124は更に、サーバ装置300から取得された更新用ファームウェアデータを用いた更新処理の完了後の、情報処理装置100のファームウェアのバージョンを示す更新後バージョン情報126の設定を含む。更新後バージョン情報126には、サーバ装置300から取得された更新用ファームウェアデータのバージョン情報が保存される。なお、更新後バージョンは、ユーザが更新しようとしていたバージョン(元々の更新対象のバージョン)に相当する。
後述するように、更新後バージョン情報126は、情報処理装置100の起動時に、更新用ファームウェアデータの取得が必要か否かをメインプログラム122によって判定するために用いられる。本実施形態では、更新後バージョン情報126は、第1のファームウェア更新処理の異常終了に伴うファームウェアのエラー状態の復旧の後に、更新後バージョン情報126に対応する更新用ファームウェアデータをサーバ装置300から取得するか否かを決定するために用いられる。
本実施形態の情報処理装置100は、インターネット400を介してサーバ装置300と通信可能であり、サーバ装置300から更新用ファームウェアデータ310を取得できる。サーバ装置300は、情報処理装置100のメーカ又は管理者等が、情報処理装置100の更新用ファームウェアデータ310を管理するためのサーバである。更新用ファームウェアデータ310は、インターネット400に公開されている。更新用ファームウェアデータ310を用いたファームウェア更新処理(第1のファームウェア更新処理)により、フラッシュメモリ120に格納されているメインプログラム122(ファームウェア)の更新が行われる。また、必要な場合には、更新用ファームウェアデータ310を用いて、フラッシュメモリ120に格納されているアプリケーションプログラム129の更新も行われる。
なお、フラッシュメモリ120に格納されているメインプログラム122及びアプリケーションプログラム129のそれぞれは、そのバージョンを示すバージョン情報を含む。また、メインプログラム122は、サーバ装置300に接続して更新用ファームウェアデータ310を取得し、取得したデータを用いてファームウェアを更新する第1のファームウェア更新処理を行うための第1の更新モジュールを含む。
本実施形態の情報処理装置100は更に、更新プログラム123によるファームウェア更新処理(第2のファームウェア更新処理)を行うことも可能である。更新プログラム123は、情報処理装置100と外部端末200とが接続された場合に、外部端末200において実行されている更新アプリケーション210からの指示に従って、情報処理装置100のファームウェアの更新処理を行う。更新プログラム123は、外部端末200から取得された更新用ファームウェアデータを用いてファームウェアを更新する第2のファームウェア更新処理を行うための第2の更新モジュールを含む。本実施形態では、第2のファームウェア更新処理は、第1のファームウェア更新処理の異常終了に伴うファームウェア(メインプログラム122)のエラー状態の復旧のために行われる。
外部端末200において実行される更新アプリケーション210は、情報処理装置100と通信するための制御プログラムを含む。更新アプリケーション210は、外部端末200が保持している更新用ファームウェアデータを情報処理装置100に提供し、当該データを用いたファームウェア更新処理を更新プログラム123に実行させる機能を有する。更新アプリケーション210は、サーバ装置300から更新用ファームウェアデータ310を取得し、取得したデータを情報処理装置100に提供することも可能である。
なお、情報処理装置100は、画像形成装置(例:印刷装置、プリンタ、複写機、複合機(MFP)、又はファクシミリ装置)又は画像処理装置として構成されてもよい。
<第1のファームウェア更新処理>
次に、情報処理装置100における第1のファームウェア更新処理について、より詳しく説明する。本実施形態において、メインプログラム122の動作中に、操作部170を介してユーザから、情報処理装置100のファームウェアの更新を行うよう指示されると、CPU110は、第1のファームウェア更新処理を行う。例えば、CPU110は、メインプログラム122に含まれる第1の更新モジュールにより操作部170に表示される操作画面を介して、このようなファームウェア更新指示をユーザから受け付ける。
CPU110は、ユーザからファームウェア更新指示を受けると、通信部160を介してサーバ装置300に接続し、更新用ファームウェアデータ310の有無を確認する。サーバ装置300が保持する更新用ファームウェアデータ310が見つかった場合、CPU110は、第1のファームウェア更新処理を行う。当該更新処理により、フラッシュメモリ120に格納されているプログラムが、更新用ファームウェアデータ310に含まれるプログラムによって書き換えられる。
ここで、図3は、更新用ファームウェアデータ310の構成例を示している。更新用ファームウェアデータ310は、更新用のメインプログラム311及び更新用のアプリケーションプログラム312を含む。メインプログラム311及びアプリケーションプログラム312のそれぞれは、そのバージョンを示すバージョン情報を含む。
第1のファームウェア更新処理において、CPU110は、通信部160を介してサーバ装置300に接続し、サーバ装置300から更新用ファームウェアデータ310を取得し、取得したデータをRAM130に一時的に保存する。更新用ファームウェアデータ310の取得後、CPU110は、設定データ124に含まれる起動プログラム種別125を「更新プログラム」(復旧プログラム)に設定する。その後、CPU110は、メインプログラム122の更新が必要な場合には、フラッシュメモリ120に格納されたメインプログラム122を、更新用ファームウェアデータ310に含まれるメインプログラム311で書き換える。また、アプリケーションプログラム129の更新が必要な場合には、フラッシュメモリ120に格納されたアプリケーションプログラム129の領域を、更新用ファームウェアデータ310に含まれるアプリケーションプログラム312で書き換える。
CPU110は、上述のようにプログラムの書き換え(更新)が完了すると、設定データ124に含まれる起動プログラム種別125を「メインプログラム」(ファームウェア)に設定し、情報処理装置100を再起動する。起動プログラム種別125が「メインプログラム」に設定されていることにより、再起動時に、ブートプログラム121によってメインプログラム122が起動プログラムとして選択される。これにより、CPU110は、更新済みのメインプログラム122をフラッシュメモリ120からRAM130に展開して起動することになる。
このような第1のファームウェア更新処理において、例えば、ファームウェア(メインプログラム122)の書き換え中に情報処理装置100の電源の瞬断が生じると、ファームウェアの書き換えが不完全な状態で中断しうる。即ち、ファームウェア更新処理の異常終了が生じうる。このような場合、情報処理装置100の次回起動時には、設定データ124に含まれる起動プログラム種別125は「更新プログラム」に設定された状態である。これにより、ブートプログラム121によって更新プログラム123が起動プログラムとして選択され、CPU110は、更新プログラム123をRAM130に展開して起動することになる。その後、CPU110は、更新プログラム123により、後述する第2のファームウェア更新処理を実行する。
<第2のファームウェア更新処理>
次に、情報処理装置100における、第2のファームウェア更新処理について、より詳しく説明する。CPU110は、上述のように更新プログラム123を起動すると、外部端末200において実行されている更新アプリケーション210からのファームウェア更新指示を待つ。外部端末200からファームウェア更新指示を受けると、CPU110は、更新プログラム123に含まれる第2の更新モジュールにより第2のファームウェア更新処理を実行する。
具体的には、CPU110は、外部端末200から通信部160を介して更新用ファームウェアデータ310を受信し、受信したデータをRAM130に一時的に保存する。その後、CPU110は、フラッシュメモリ120に格納されたメインプログラム122を、更新用ファームウェアデータ310に含まれるメインプログラム311で書き換える。
最後に、CPU110は、設定データ124に含まれる起動プログラム種別125を「メインプログラム」に設定し、情報処理装置100を再起動する。起動プログラム種別125が「メインプログラム」に設定されていることにより、再起動時に、ブートプログラム121によってメインプログラム122が起動プログラムとして選択される。これにより、CPU110は、更新済みのメインプログラム122をフラッシュメモリ120からRAM130に展開して起動することになる。
<ブートプログラムによる処理手順>
図2は、ブートプログラム121によるプログラムの起動処理(ブート処理)の手順の例を示すフローチャートである。図2の各ステップの処理は、CPU110がブートプログラム121をフラッシュメモリ120から読み出して実行することによって、情報処理装置100において実現される。
S201で、CPU110は、情報処理装置100の各デバイスの初期化を行い、S202へ処理を進める。S202で、CPU110は、フラッシュメモリ120に格納された設定データ124に基づいて、起動対象のプログラムの種別を判定する。より具体的には、CPU110は、設定データ124に含まれる起動プログラム種別125の設定を確認することで、起動対象のプログラムの種別を判定する。CPU110は、起動対象のプログラムがメインプログラム122(ファームウェア)に設定されている場合、S203へ処理を進め、起動対象のプログラムが更新プログラム123(復旧プログラム)に設定されている場合、S204へ処理を進める。
S203で、CPU110は、メインプログラム122をフラッシュメモリ120からRAM130に展開して起動し、処理を終了する。一方S204で、CPU110は、更新プログラム123をフラッシュメモリ120からRAM130に展開して起動し、処理を終了する。
<第1のファームウェア更新処理の手順>
図4は、メインプログラム122の第1の更新モジュールによる第1のファームウェア更新処理の手順の例を示すフローチャートである。CPU110(メインプログラム122)は、操作部170を介してファームウェア更新指示を受けると、又は、ファームウェアの更新が必要であると自ら判断すると、第1の更新モジュールにより、以下の手順で第1のファームウェア更新処理を行う。
以下の処理において、CPU110は、更新用ファームウェアデータ310(第1の更新用ファームウェアデータ)をサーバ装置300から取得し、当該データをRAM130(揮発性記憶媒体)に保持する。CPU110は更に、更新用ファームウェアデータ310のバージョン情報を、更新後バージョン情報126としてフラッシュメモリ120(不揮発性記憶媒体)に保存する。CPU110は、RAM130に保持された更新用ファームウェアデータ310を用いて、フラッシュメモリ120のファームウェアを更新する更新処理を行う。
具体的には、CPU110は、まずS401で、通信部160を介してサーバ装置300と接続し、S402で、サーバ装置300から更新用ファームウェアデータ310を取得し、取得したデータをRAM130に一時的に保存する。その後S403で、CPU110は、情報処理装置100の再起動後に更新プログラム123が起動されるように、設定データ124に含まれる起動プログラム種別125を「更新プログラム」に設定し、S404へ処理を進める。
S404で、CPU110は、メインプログラム122を更新する必要があるか否かを判定する。具体的には、CPU110は、フラッシュメモリ120に格納されているメインプログラム122のバージョンと、更新用ファームウェアデータ310に含まれるメインプログラム311のバージョンとを比較する。CPU110は、比較の結果、更新用ファームウェアデータ310に含まれるメインプログラム311の方が新しいバージョンである場合、メインプログラム122を更新する必要がある判定し、S405へ処理を進める。一方、CPU110は、それ以外の場合、メインプログラム122を更新する必要がないと判定し、S407へ処理を進める。
S405で、CPU110は、更新用ファームウェアデータ310のメインプログラム311のバージョンを、更新後バージョン情報126に設定する。このように、CPU110は、取得した更新用ファームウェアデータ310を用いたファームウェア更新処理の開始前に、当該更新用ファームウェアデータのバージョン情報を、更新後バージョン情報126としてフラッシュメモリ120に保存する。更にS406で、CPU110は、RAM130に一時的に保存した更新用ファームウェアデータ310からメインプログラム311を抽出し、フラッシュメモリ120の記憶領域における、メインプログラム122の格納領域に書き込む。これにより、フラッシュメモリ120に格納されているメインプログラム122(ファームウェア)が更新される。更新が完了すると、CPU110はS407へ処理を進める。
S407で、CPU110は、アプリケーションプログラム129を更新する必要があるか否かを判定する。具体的には、CPU110は、フラッシュメモリ120に格納されているアプリケーションプログラム129のバージョンと、更新用ファームウェアデータ310に含まれるアプリケーションプログラム312のバージョンとを比較する。CPU110は、比較の結果、更新用ファームウェアデータ310に含まれるアプリケーションプログラム312の方が新しいバージョンである場合、アプリケーションプログラム129を更新する必要がある判定し、S408へ処理を進める。一方、CPU110は、それ以外の場合、アプリケーションプログラム129を更新する必要がないと判定し、S410へ処理を進める。
S408で、CPU110は、更新用ファームウェアデータ310のアプリケーションプログラム312のバージョンを、更新後バージョン情報126に設定する。更にS409で、CPU110は、RAM130に一時的に保存した更新用ファームウェアデータ310からアプリケーションプログラム312を抽出し、フラッシュメモリ120の記憶領域における、アプリケーションプログラム129の格納領域に書き込む。これにより、フラッシュメモリ120に格納されているアプリケーションプログラム129が更新される。更新が完了すると、CPU110はS410へ処理を進める。
S410で、CPU110は、S405及びS408において設定(記録)した更新後バージョン情報126をクリアする。次にS411で、CPU110は、設定データ124に含まれる起動プログラム種別125を「メインプログラム」に設定する。その後、S412で、CPU110は、情報処理装置100を再起動し、処理を終了する。情報処理装置100の再起動時、起動プログラム種別125に設定されたプログラム(メインプログラム122)がブートプログラム121により選択されて起動される。
<第2のファームウェア更新処理の手順>
図5は、更新プログラム123の第2の更新モジュールによるファームウェアの更新処理の手順の例を示すフローチャートである。上述のように、起動プログラム種別125が「更新プログラム」に設定されている状態で情報処理装置100が電源オフ状態から起動すると、ブートプログラム121によって更新プログラム123が起動される。CPU110(更新プログラム123)は、第2の更新モジュールにより、以下の手順で第2のファームウェア更新処理を行う。本実施形態では、以下の処理は、上述の第1のファームウェア更新処理の異常終了に伴うファームウェア(メインプログラム122)のエラー状態を、第2の更新用ファームウェアデータに基づいて復旧する処理として実行される。
CPU110は、まずS501で、通信部160を介して外部端末200からファームウェア更新指示を受信すると、S502で、外部端末200から更新用ファームウェアデータ310を取得する。CPU110は、外部端末200から取得した更新用ファームウェアデータ310をRAM130に一時的に保存し、S503へ処理を進める。
S503で、CPU110は、CPU110は、メインプログラム122を更新する必要があるか否かを判定する。具体的には、CPU110は、フラッシュメモリ120に格納されているメインプログラム122のバージョンと、更新用ファームウェアデータ310に含まれるメインプログラム311のバージョンとを比較する。CPU110は、比較の結果、更新用ファームウェアデータ310に含まれるメインプログラム311の方が新しいバージョンである場合、メインプログラム122を更新する必要がある判定し、S504へ処理を進める。一方、CPU110は、それ以外の場合、メインプログラム122を更新する必要がないと判定し、S505へ処理を進める。
S504で、CPU110は、RAM130に一時的に保存した更新用ファームウェアデータ310からメインプログラム311を抽出し、フラッシュメモリ120の記憶領域における、メインプログラム122の格納領域に書き込む。これにより、フラッシュメモリ120に格納されているメインプログラム122(ファームウェア)が更新される。更新が完了すると、CPU110はS505へ処理を進める。
S505で、CPU110は、アプリケーションプログラム129を更新する必要があるか否かを判定する。具体的には、CPU110は、フラッシュメモリ120に格納されているアプリケーションプログラム129のバージョンと、更新用ファームウェアデータ310に含まれるアプリケーションプログラム312のバージョンとを比較する。CPU110は、比較の結果、更新用ファームウェアデータ310に含まれるアプリケーションプログラム312の方が新しいバージョンである場合、アプリケーションプログラム129を更新する必要がある判定し、S506へ処理を進める。一方、CPU110は、それ以外の場合、アプリケーションプログラム129を更新する必要がないと判定し、S507へ処理を進める。
S506で、CPU110は、RAM130に一時的に保存した更新用ファームウェアデータ310からアプリケーションプログラム312を抽出し、フラッシュメモリ120の記憶領域における、アプリケーションプログラム129の格納領域に書き込む。これにより、フラッシュメモリ120に格納されているアプリケーションプログラム129が更新される。更新が完了すると、CPU110はS507へ処理を進める。
S507で、CPU110は、設定データ124に含まれる起動プログラム種別125を「メインプログラム」に設定する。その後、S508で、CPU110は、情報処理装置100を再起動し、処理を終了する。情報処理装置100の再起動時、起動プログラム種別125に設定されたプログラム(メインプログラム122)がブートプログラム121により選択されて起動される。
<メインプログラムによる起動処理>
図6は、ブートプログラム121によってメインプログラム122が起動された場合に、メインプログラム122による起動処理の一部として行われる処理の手順の例を示すフローチャートである。図6の手順は、フラッシュメモリ120に格納されているプログラムのバージョンが、更新後バージョン情報126が示す更新後バージョンと一致しない場合に、バージョンが一致しないプログラムについて第1のファームウェア更新処理を行うものである。
まずS601で、CPU110は、設定データ124を参照して、更新後バージョン情報126が設定されているか否かを判定する。CPU110は、更新後バージョン情報126が設定されていない場合には処理を終了し、設定されている場合にはS602へ処理を進める。更新後バージョン情報126は、S405及びS408において設定(設定データ124に記録)されるものである。
S602で、CPU110は、フラッシュメモリ120に格納されているメインプログラム122のバージョンと、更新後バージョン情報126が示す更新後バージョンとが一致するか否かを判定する。CPU110は、バージョンが一致している場合にはS603へ処理を進め、一致していない場合にはS605へ処理を進める。
S603で、CPU110は、フラッシュメモリ120に格納されているアプリケーションプログラム129のバージョンと、更新後バージョン情報126が示す更新後バージョンとが一致するか否かを判定する。CPU110は、バージョンが一致している場合にはS604へ処理を進め、一致していない場合にはS605へ処理を進める。
ここで、上述のバージョンの不一致は、以下のような場合で生じる。例えば、第1のファームウェア更新処理(図4)において、フラッシュメモリ120のメインプログラム122(ファームウェア)の書き換え中に電源の瞬断が生じ、メインプログラム122の書き換えが不完全な状態で中断した場合を想定する。即ち、第1のファームウェア更新処理の異常終了が生じ、当該異常終了に伴ってファームウェアがエラー状態となる場合を想定する。この場合、上述のように、第1のファームウェア更新処理の異常終了に伴うファームウェアのエラー状態を復旧する処理として、第2のファームウェア更新処理(図5)が実行される。その際、外部端末200から提供された更新用ファームウェアデータ310に含まれるメインプログラム311のバージョンが、中断した第1のファームウェア更新処理で使用していた更新用ファームウェアデータ310に含まれるメインプログラム311のバージョンより古ければ、上述のバージョンの不一致が生じる。
また、アプリケーションプログラム129のバージョンの不一致についても、以下のように同様に生じる。第1のファームウェア更新処理(図4)において、フラッシュメモリ120のアプリケーションプログラム129の書き換え中に電源の瞬断が生じ、アプリケーションプログラム129の書き換えが不完全な状態で中断した場合を想定する。この場合、上述のように、第2のファームウェア更新処理(図5)が実行される。その際、外部端末200から提供された更新用ファームウェアデータ310に含まれるアプリケーションプログラム312のバージョンが、中断した第1のファームウェア更新処理で使用していた更新用ファームウェアデータ310に含まれるアプリケーションプログラム312のバージョンより古ければ、上述のバージョンの不一致が生じる。
そこでS605で、CPU110は、サーバ装置300から更新用ファームウェアデータ310を取得して使用する第1のファームウェア更新処理(図4)を実行し、処理を終了する。この第1のファームウェア更新処理では、上述のようなバージョンの不一致が生じたプログラム(メインプログラム122及びアプリケーションプログラム129の少なくともいずれか)についての更新処理が行われる。
一方S604で、CPU110は、更新後バージョン情報126をクリアし、図6の手順による処理を終了する。
本実施形態では、CPU110は、S605において、更新後バージョン情報126に対応する更新用ファームウェアデータをサーバ装置300から取得して、ファームウェアの更新処理を行う。これにより、更新処理後のファームウェア(メインプログラム122)のバージョンを、ユーザが更新しようとしたファームウェアのバージョン(元々の更新対象のバージョン)にすることが可能になる。なお、元々の更新対象のバージョンが最新バージョンである場合、サーバ装置300から取得される更新用ファームウェアデータは、最新バージョンのファームウェアを含む。
このように、CPU110は、(第2のファームウェア更新処理による)ファームウェアのエラー状態の復旧の後に、更新後バージョン情報126に基づいて、当該バージョン情報に対応する更新用ファームウェアデータをサーバ装置300から取得するか否かを決定する(S602)。具体的には、CPU110は、フラッシュメモリ120のメインプログラム122のバージョンと、フラッシュメモリ120に保存された更新後バージョン情報126が示すバージョンとが一致しなければ、更新用ファームウェアデータを取得すると決定する。一方、CPU110は、フラッシュメモリ120のメインプログラム122のバージョンと、フラッシュメモリ120に保存された更新後バージョン情報126が示すバージョンとが一致すれば、更新用ファームウェアデータを取得しないと決定する。更に、CPU110は、フラッシュメモリ120に保存された更新後バージョン情報126をクリアする。
CPU110は、当該決定に従って、更新後バージョン情報126に対応する更新用ファームウェアデータをサーバ装置300から取得し、取得された更新用ファームウェアデータを用いてファームウェアの更新処理を行う(S605)。
<ファームウェア更新処理の例>
図7A及び図7Bは、本実施形態に係る情報処理装置100のファームウェアを更新する処理のシーケンスの例を示す。本シーケンスでは、情報処理装置100が、サーバ装置300又は外部端末200から更新用ファームウェアデータ310を取得して、ファームウェア(メインプログラム122)を更新する例を示している。なお、メインプログラム122の更新に伴って、アプリケーションプログラム129の更新も行っている。図7A及び図7Bに示すSt801~St807は、図8A及び図8Bに示す、フラッシュメモリ120及びRAM130の記憶領域の状態に対応している。
St801の状態において、情報処理装置100の起動時に、ブートプログラム121によって、Ver.1(バージョン1)のメインプログラム122及びVer.1のアプリケーションプログラム129がRAM130に展開される。CPU110は、RAM130に展開された各プログラムを実行する。
図7Aに示すように、その後、情報処理装置100は、ファームウェア更新指示をユーザから受けると、メインプログラム122により第1のファームウェア更新処理(図4)を実行する。情報処理装置100は、サーバ装置300へファームウェア取得要求を送信し、サーバ装置300から更新用ファームウェアデータ310を取得する。その後、情報処理装置100は、取得した更新用ファームウェアデータ310に含まれるメインプログラム122のバージョン(更新後バージョン)を、更新後バージョン情報126に設定する。これにより、St802の状態のように、更新後バージョン情報126に、メインプログラム122の更新後バージョンとして「Ver.3」が設定される。なお、「Ver.0」は、更新後バージョン情報126が設定されていない(クリアされている)ことを示す。
次に、情報処理装置100は、メインプログラム311の書き込みを開始する。これにより、St803の状態のように、フラッシュメモリ120に格納されているメインプログラム122が消去され、書き換え中の状態になる。本例では、図7Aに示すように、メインプログラム122の書き換え中に、情報処理装置100の電源断が発生した場合を想定する。この場合に、ユーザが情報処理装置100の電源をオン状態にすると、第1のファームウェア更新処理において起動プログラム種別125が「更新プログラム」に設定(S403)されていることで、ブートプログラム121によって更新プログラム123が起動されることになる。これにより、St804の状態のように、更新プログラム123がRAM130に展開され、CPU110は、RAM130上の更新プログラム123を実行する。
情報処理装置100は、更新プログラム123の実行により、第2のファームウェア更新処理(図5)を実行する。本例では、ユーザが外部端末200を情報処理装置100に通信可能に接続し、情報処理装置100を操作して、外部端末200から情報処理装置100(更新プログラム123)に対して、ファームウェア更新指示を行う。ユーザは、外部端末200に更新アプリケーション210がインストールされていない場合、更新アプリケーション210の取得を指示する。外部端末200は、インターネット400上の所定のダウンロードサイト(ウェブサイト)から、インターネット400を介して更新アプリケーション210を取得し、取得した更新アプリケーション210を実行する。ユーザは、外部端末200を操作して、更新アプリケーション210により、情報処理装置100に対してファームウェア更新指示を行う。なお、更新アプリケーション210とともに更新用ファームウェアデータ310がダウンロードサイトから取得され、外部端末200において保持されうる。
情報処理装置100は、外部端末200(更新アプリケーション210)からファームウェア更新指示を受信すると、第2のファームウェア更新処理(図5)によるファームウェアの更新を行う。本例では、St805の状態のように、外部端末200(更新アプリケーション210)から取得されるが、「Ver.2」のプログラムを含む場合を想定する。
図7Aに示すように、情報処理装置100(更新プログラム123)は、取得した更新用ファームウェアデータ310を用いて、ファームウェアの更新処理を行う。具体的には、情報処理装置100は、更新用ファームウェアデータ310に含まれるメインプログラム311の書き込み(メインプログラム122の更新)を行う。メインプログラム311の書き込みが完了すると、更新用ファームウェアデータ310に含まれるメインプログラム311の書き込み(アプリケーションプログラム129の更新)を行う。アプリケーションプログラム129の更新まで完了すると、情報処理装置100は、外部端末200(更新アプリケーション210)に対して更新完了通知を送信し、再起動を行う。
この再起動時には、第2のファームウェア更新処理において起動プログラム種別125が「更新プログラム」に設定(S507)されていることで、ブートプログラム121によってメインプログラム122が起動されることになる。情報処理装置100は、メインプログラム122による起動処理の一部として、図6の手順による処理を実行する。
図7Bに示すように、更新後バージョン情報126が示すメインプログラム122の更新後バージョンが、起動中のメインプログラム122のバージョンと一致した場合(S602で「Yes」)、メインプログラム122の起動が完了する。これは、外部端末200(更新アプリケーション210)から情報処理装置100へ提供されたえ更新用ファームウェアデータ310に含まれるメインプログラム311のバージョンが「Ver.3」であった場合に相当する。
本例では、St806の状態のように、RAM130には、「Ver.2」のメインプログラム122が展開されるため、このバージョンは更新後バージョン情報126が示す更新後バージョンと一致しない。このように、更新後バージョン情報126が示すメインプログラム122の更新後バージョンが、起動中のメインプログラム122のバージョンと一致しない場合(S602で「No」)、情報処理装置100は、第1のファームウェア更新処理(S605、図4)を実行する。
第1のファームウェア更新処理により、メインプログラム122(及びアプリケーションプログラム129)のフラッシュメモリ120への書き込みが行われる。その結果、St807の状態のように、メインプログラム122は「Ver.3」に更新され、更新後バージョン情報126が「Ver.0」にクリアされる。その結果、情報処理装置100が再起動すると、メインプログラム122による起動処理において、更新後バージョン情報126が設定されていないとの判定がなされ(S601で「No」)、メインプログラム122の起動が完了することになる。
このように、情報処理装置100は、St806の状態で起動すると、第1のファームウェア更新処理を行う。このため、当該更新処理が完了するまでの間、ユーザが意図していた更新後バージョンである「Ver.3」とは異なるバージョン(Ver.2)のメインプログラム122が、ユーザによって使用されるのを回避できる。また、第1のファームウェア更新処理の異常終了に伴うファームウェアのエラー状態を復旧した後に、ファームウェア(メインプログラム122)を、ユーザが意図していた更新後バージョン(Ver.3)にすることができる。
以上説明したように、本実施形態の情報処理装置100において、CPU110は、第1の更新用ファームウェアデータをサーバ装置300から取得し、当該データをRAM130に保持する。また、CPU110は、第1の更新用ファームウェアデータのバージョン情報をフラッシュメモリ120に保存する。CPU110は、RAM130に保持された第1の更新用ファームウェアデータを用いて、フラッシュメモリ120のファームウェアを更新する更新処理を行う。当該更新処理の異常終了が生じると、CPU110は、更新処理の異常終了に伴うファームウェアのエラー状態を、第2の更新用ファームウェアデータに基づいて復旧する。更に、CPU110は、復旧の後に、フラッシュメモリ120に保存されたバージョン情報に基づいて、当該保存されたバージョン情報に対応する更新用ファームウェアデータをサーバ装置300から取得するか否かを決定する。
このように、本実施形態では、ファームウェアのエラー状態の復旧の後に、フラッシュメモリ120に保存されたバージョン情報に基づいて、当該保存されたバージョン情報に対応する更新用ファームウェアデータをサーバ装置300から取得するか否かを決定する。これにより、当該決定に従って、ユーザが意図していた更新後バージョンに対応する更新用ファームウェアデータをサーバ装置300から取得して、ファームウェアの更新を改めて行うことができる。したがって、ファームウェア更新処理の異常終了に伴うファームウェアのエラー状態を復旧した後に、復旧後のファームウェアのバージョンを適切なバージョンにすることが可能になる。
また、本実施形態では、CPU110は、第1のファームウェア更新処理において、ファームウェアの更新の開始前に、情報処理装置100の起動時に起動されるべきプログラムの種別を「更新プログラム」(復旧プログラム)に設定する。CPU110は更に、ファームウェアの更新の完了後に、情報処理装置100の起動時に起動されるべきプログラムの種別を「ファームウェア」に設定する。これにより、ファームウェア更新処理の異常終了が生じた後の情報処理装置100の起動時に、更新プログラム123(復旧プログラム)によるファームウェアの復旧を自動的に行うことが可能になる。
[その他の実施形態]
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
発明は上記実施形態に制限されるものではなく、発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、発明の範囲を公にするために請求項を添付する。
100:情報処理装置、110:CPU、120:フラッシュメモリ、130:RAM、200:外部端末、300:サーバ装置

Claims (11)

  1. ファームウェアが格納された不揮発性記憶媒体と、
    データを一時的に保持可能な揮発性記憶媒体と、
    第1の更新用ファームウェアデータをサーバ装置から取得し、前記第1の更新用ファームウェアデータを前記揮発性記憶媒体に保持し、前記第1の更新用ファームウェアデータのバージョン情報を前記不揮発性記憶媒体に保存する取得手段と、
    前記揮発性記憶媒体に保持された前記第1の更新用ファームウェアデータを用いて、前記不揮発性記憶媒体のファームウェアを更新する更新処理を行う更新手段と、
    前記更新処理の異常終了に伴う前記ファームウェアのエラー状態を、第2の更新用ファームウェアデータに基づいて復旧する復旧手段と、
    前記復旧の後に、前記保存されたバージョン情報に基づいて、当該保存されたバージョン情報に対応する更新用ファームウェアデータを前記サーバ装置から取得するか否かを決定する決定手段と、
    を有することを特徴とする情報処理装置。
  2. 前記決定手段による決定に従って、前記取得手段は、前記保存されたバージョン情報に対応する更新用ファームウェアデータを前記サーバ装置から取得し、前記更新手段は、前記取得された更新用ファームウェアデータを用いて前記更新処理を行う
    ことを特徴とする請求項1に記載の情報処理装置。
  3. 前記決定手段は、前記復旧の後に、前記不揮発性記憶媒体の前記ファームウェアのバージョンと、前記保存されたバージョン情報が示すバージョンとが一致しなければ、前記保存されたバージョン情報に対応する更新用ファームウェアデータを前記サーバ装置から取得すると決定する
    ことを特徴とする請求項1又は2に記載の情報処理装置。
  4. 前記決定手段は、前記復旧の後に、前記不揮発性記憶媒体のファームウェアのバージョンと、前記保存されたバージョン情報が示すバージョンとが一致すれば、前記保存されたバージョン情報に対応する更新用ファームウェアデータを前記サーバ装置から取得しないと決定し、前記保存されたバージョン情報をクリアする
    ことを特徴とする請求項1乃至3のいずれか1項に記載の情報処理装置。
  5. 前記取得手段は、前記第1の更新用ファームウェアデータを用いた前記更新処理の開始前に、前記バージョン情報を前記不揮発性記憶媒体に保存する
    ことを特徴とする請求項1乃至3のいずれか1項に記載の情報処理装置。
  6. 前記復旧手段は、前記情報処理装置に接続された外部装置から前記第2の更新用ファームウェアデータを取得し、前記第2の更新用ファームウェアデータを用いて、前記不揮発性記憶媒体の前記ファームウェアを更新することで、前記エラー状態を復旧する
    ことを特徴とする請求項1乃至5のいずれか1項に記載の情報処理装置。
  7. 前記更新手段は、
    前記ファームウェアの更新の開始前に、前記情報処理装置の起動時に起動されるべきプログラムの種別を、前記復旧を行う復旧プログラムに設定し、
    前記ファームウェアの更新の完了後に、前記情報処理装置の起動時に起動されるべきプログラムの種別を、前記ファームウェアに設定する
    ことを特徴とする請求項1乃至6のいずれか1項に記載の情報処理装置。
  8. 前記復旧手段は、前記エラー状態の復旧の後に、前記情報処理装置の起動時に起動すべきプログラムの種別を前記ファームウェアに設定する
    ことを特徴とする請求項7に記載の情報処理装置。
  9. 前記サーバ装置から取得される前記第1の更新用ファームウェアデータは、最新バージョンのファームウェアを含む
    ことを特徴とする請求項1乃至8のいずれか1項に記載の情報処理装置。
  10. ファームウェアが格納された不揮発性記憶媒体と、データを一時的に保持可能な揮発性記憶媒体と、を備える情報処理装置の制御方法であって、
    第1の更新用ファームウェアデータをサーバ装置から取得し、前記第1の更新用ファームウェアデータを前記揮発性記憶媒体に保持し、前記第1の更新用ファームウェアデータのバージョン情報を前記不揮発性記憶媒体に保存する工程と、
    前記揮発性記憶媒体に保持された前記第1の更新用ファームウェアデータを用いて、前記不揮発性記憶媒体のファームウェアを更新する更新処理を行う工程と、
    前記更新処理の異常終了に伴う前記ファームウェアのエラー状態を、第2の更新用ファームウェアデータに基づいて復旧する工程と、
    前記復旧の後に、前記保存されたバージョン情報に基づいて、当該保存されたバージョン情報に対応する更新用ファームウェアデータを前記サーバ装置から取得するか否かを決定する工程と、
    を有することを特徴とする情報処理
    装置の制御方法。
  11. 請求項1乃至9のいずれか1項に記載の情報処理装置としてコンピュータを機能させるためのプログラム。
JP2021179730A 2021-11-02 2021-11-02 情報処理装置及びその制御方法、並びにプログラム Pending JP2023068538A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2021179730A JP2023068538A (ja) 2021-11-02 2021-11-02 情報処理装置及びその制御方法、並びにプログラム
US17/971,919 US20230132494A1 (en) 2021-11-02 2022-10-24 Information processing apparatus, method of controlling the same, and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2021179730A JP2023068538A (ja) 2021-11-02 2021-11-02 情報処理装置及びその制御方法、並びにプログラム

Publications (1)

Publication Number Publication Date
JP2023068538A true JP2023068538A (ja) 2023-05-17

Family

ID=86144934

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021179730A Pending JP2023068538A (ja) 2021-11-02 2021-11-02 情報処理装置及びその制御方法、並びにプログラム

Country Status (2)

Country Link
US (1) US20230132494A1 (ja)
JP (1) JP2023068538A (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022067523A (ja) * 2020-10-20 2022-05-06 キヤノン株式会社 情報処理装置、制御方法およびプログラム

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7082549B2 (en) * 2000-11-17 2006-07-25 Bitfone Corporation Method for fault tolerant updating of an electronic device
US6832373B2 (en) * 2000-11-17 2004-12-14 Bitfone Corporation System and method for updating and distributing information
US6836657B2 (en) * 2002-11-12 2004-12-28 Innopath Software, Inc. Upgrading of electronic files including automatic recovery from failures and errors occurring during the upgrade
EP2329368B1 (en) * 2008-08-04 2019-10-02 Red Bend Ltd. Updating content without using a mini operating system
US9894066B2 (en) * 2014-07-30 2018-02-13 Master Lock Company Llc Wireless firmware updates

Also Published As

Publication number Publication date
US20230132494A1 (en) 2023-05-04

Similar Documents

Publication Publication Date Title
JP6073854B2 (ja) 電子機器及びファームウェア復旧プログラム
EP1899814B1 (en) Firmware update for consumer electronic device
US10394549B2 (en) Information processing apparatus, updating method, and recording medium
JP5431111B2 (ja) 情報処理装置及びシステム設定方法
US8112617B2 (en) Information processing device, and method of starting information processing device
JP5921358B2 (ja) 情報処理装置、プログラム更新方法及びプログラム
JP6270616B2 (ja) 情報処理装置及びその制御方法、並びにプログラム
JP2007310783A (ja) 画像形成装置におけるファームウェアのアップデート方法、プログラム、記録媒体
JP7206106B2 (ja) 情報処理装置及びプログラム
JP5943681B2 (ja) 情報処理装置、情報処理装置のファームウエア更新方法及びプログラム
JP2023068538A (ja) 情報処理装置及びその制御方法、並びにプログラム
JP6482211B2 (ja) 情報処理装置、その制御方法、及びプログラム
JP2000245681A (ja) 電子内視鏡装置用ファームウェアのバージョンアップ方法及び電子内視鏡装置
US10447886B2 (en) Image processing apparatus for updating a non-volatile memory and method controlling image processing apparatus
JP5895609B2 (ja) 情報処理装置、画像形成装置およびプログラム
JP6776220B2 (ja) 情報処理装置及びその制御方法、並びにプログラム
JP7073454B2 (ja) 情報処理装置及びその制御方法、並びにプログラム
JP2013109450A (ja) 画像形成装置
JP2005190308A (ja) 画像形成装置及びそのファームウェアの更新方法
JP2009159383A (ja) 通信端末装置
US20230132214A1 (en) Information processing apparatus and method of the same
JP2005078336A (ja) 画像形成装置と画像形成装置のプログラム書換方法
JP2005242930A (ja) 情報処理装置、プログラム更新方法、プログラム更新プログラム、およびプログラム更新プログラムを記録したコンピュータ読み取り可能な記録媒体
JP2014238647A (ja) 情報処理装置及びそのプログラム更新方法、並びにプログラム
JP2023064046A (ja) 情報処理装置、及びその起動方法