(58)【調査した分野】(Int.Cl.,DB名)
前記更新前パラメータ設定値保持ステップで保持される前記パラメータ設定値はバイナリ形式であることを特徴とする請求項1又は請求項2記載のファームウェア更新方法。
【発明を実施するための形態】
【0012】
以下、本発明の実施形態について図面を参照して説明する。なお、本発明は以下の記述に限定されるものではなく、本発明の要旨を逸脱しない範囲において適宜変更可能である。
【0013】
[第1の実施形態]
第1の実施形態の説明においては、本発明に係るファームウェアプログラムが適用された画像形成装置を一例とし、当該ファームウェアの更新方法について説明する。
【0014】
図1は、画像形成装置100の機能構成を説明する機能ブロック図である。画像形成装置100は、CPU(Central Processing Unit)101と、受信部102と、画像処理部103と、印刷部104と、第1の不揮発性メモリとしてのEEPROM(Electrically Erasable Programmable Read-Only Memory)105と、メモリとしてのRAM107と、FlashA109と、第2の不揮発性メモリとしてのFlashB112と、媒体給紙部115と、電源供給部116とを備え、受信部102を介して受信したデータに基づく画像を用紙等の媒体上に印刷することが可能な装置である。
【0015】
CPU101は、受信部102、画像処理部103、印刷部104、EEPROM105、RAM107、FlashA109、FlashB112、媒体給紙部115、及び電源供給部116とシステムバス114を介して接続されており、画像形成装置100全体を統括的に制御する。
【0016】
受信部102は、例えば、USB(universal Serial Bus)やネットワークで接続された図示せぬ外部の通信装置、PC(Personal Computer)から送信されたデータを受信するデータ受信部である。
【0017】
画像処理部103は、受信部102を介して受信したデータ又は画像形成装置100に蓄積されたデータを印刷部104において印刷可能な印刷データに変換して生成する印刷データ生成部である。
【0018】
印刷部104は、例えば、電子写真方式の印刷エンジンを備え、画像処理部103において生成された印刷データを媒体としての用紙に印刷して出力する出力部である。
【0019】
EEPROM105は、電気信号により複数回の書き換えが可能な不揮発性メモリであり、画像形成装置100への給電が停止しても情報を保持する。EEPROM105は、画像形成装置100の動作設定を定義するである設定パラメータ106を保持する。
【0020】
RAM107は揮発性のメモリであり、受信部102を介して受信したデータや、画像処理部103が生成した印刷データを一時的に保持する。また、RAM107は、設定パラメータ106を後述するファームウェア更新後のパラメータ仕様に基づきEEPROM105に再配置するための設定パラーメータ106と同形式のパラメータデータである仮想EEPROM108を保持する。
【0021】
FlashA109は、電気信号により複数回の書き換えが可能な不揮発性メモリであり、画像形成装置100への給電が停止しても情報を保持する。FlashA109は、画像形成装置100の動作を制御するファームウェア110を保持する。ファームウェア110は、画像形成装置100の動作を制御するプログラムであり、当該ファームウェア110を動作させるためのパラメータ仕様である、ファームウェア更新後のパラメータ仕様111を有する。なお、ファームウェア110は、RAM107上にコピーされてCPU101により実行される。
【0022】
FlashB112は、FlashA109と同様な不揮発性メモリであり、印刷データやログデータ等を保持する。また、FlashB112は、FlashA109上のファームウェア110が書き換えられた後、EEPROM105の設定パラメータ106にファームウェア更新前の設定パラメータを書き戻す際に使用されるファームウェア更新前のパラメータ仕様113を保持する。パラメータ仕様113は、ファームウェア更新後、ファームウェア更新前の設定パラメータがEEPROM105の設定パラメータ106に書き戻された後に、FlashA109のパラメータ仕様111として更新される。
【0023】
媒体給紙部115は、例えば、A4サイズやレターサイズの用紙がセットされるカセットを有し、印刷部104に対して用紙を給紙する媒体給紙部である。
【0024】
電源供給部116は、画像形成装置100に所定の電力を供給する電源部である。
【0025】
次に、本実施形態に係るパラメータ仕様について説明する。本実施形態に係るパラメータ仕様とは、パラメータを一意に識別するためのパラメータ識別子としてのIDと、後述する配置等のパラメータ属性とが関連付けられたパラメータ仕様のことを表す。
図2は、ファームウェア更新前のパラメータ仕様113を説明する概略図である。本実施形態に係るパラメータ仕様113は、パラメータID121と、パラメータ名122と、パラメータの属性である型123と、初期値124と、サイズ125と、配置(オフセット)126(以下、配置126と称する)とを有する。
【0026】
ID121は、パラメータを一意に識別するためのIDである。ID121はパラメータに対して一意に割り当てられ、異なるファームウェアの版数で別のパラメータに割り当てられることはない。パラメータ名122は、パラメータの名称である。型123は、パラメータの属性の一つであり、文字列型(STRING)、数値型(INT)、列挙型(ENUM)といったパラメータの型である。初期値124は、パラメータの初期値である。サイズ125は、パラメータのデータ長である。配置126は、EEPROM105上の設定パラメータ106の先頭アドレスからのビットオフセットである。なお、パラメータの属性は本実施形態で挙げたもの以外にも多数存在するが、ここでは説明を容易とするために代表的な属性だけを取り上げた。
【0027】
より具体的に説明すると、ID121が"1"のパラメータ名122"ModelName"は、画像形成装置のモデル名を表し、そのパラメータの型123は文字列型である。パラメータの初期値124は"model"であり、そのサイズ125たるデータ長は"6"バイト、設定パラメータ106の先頭に配置されるパラメータである。次に、ID121が"2"のパラメータ名122"AdminPassword"は装置管理者のパスワードを表し、そのパラメータの型123は文字列型である。パラメータの初期値124は"12334"であり、そのデータ長は"4"バイト、設定パラメータ106の先頭から100バイト目に配置されるパラメータである。ここで、IDが連続しているからといって、設定パラメータで連続した領域に配置されるとは限らない。ここで挙げた、パラメータ"ModelName"とパラメータ"AdminPassword"とはIDが"1"と"2"とで連続しているが、設定パラメータ上はその間に別のIDが配置されることもある。なお、パラメータ"AdminPassword"は暗号化されて、設定パラメータ106に格納されるが、その暗号化方式は周知の技術を用いることができるため、ここでの説明は省略する。
【0028】
そして、ID121が"3"のパラメータ名122"ModeSize"は、A4サイズ、レターサイズといった印刷に供される用紙のサイズを表し、そのパラメータの型123は列挙型である。パラメータの初期値124は"12"であり、そのデータ長は"2"バイト、配置126は"0×1FE"である。ID121が"500"のパラメータ名122"PowerSaveMode"は、印刷終了後に所定の時間が経過し、電源供給部116が低消費電力であるパワーセーブ状態に移行するでまでの時間を表し、そのパラメータの型123は、例えば、1分、5分、10分、30分、60分、120分といった列挙型である。パラメータの初期値124は"3"であり、そのデータ長は"1"バイト、設定パラメータ106の最後に配置されるパラメータである。
【0029】
次に、RAM107が保持する仮想EEPROM108について説明する。仮想EEPROM108は、ファームウェアの更新前後において、RAM107に保持される内容が異なる。
図3は、ファームウェア更新前のEEPROM105上の設定パラメータ106がRAM107にコピーされた仮想EEPROM108Aの概略図であり、
図4は、ファームウェア更新後のパラメータ仕様で初期化された仮想EEPROM108Bの概略図であり、
図5は、仮想EEPROM108Bをファームウェア更新前の設定パラメータに書き換えた仮想EEPROM108Cの概略図である。
【0030】
ここで、RAM107において仮想EEPROM108が作成され、どのように更新されていくのかを
図6を用いて説明する。
【0031】
更新前パラメータ定義情報450は、FlashB112で保持されたパラメータ仕様113がRAM106に展開されたデータである。更新前パラメータ設定値451は、仮想EEPROM108Aのを更新前パラメータ定義情報450に従ってメモリ上に展開したデータである。更新後パラメータ定義情報452は、更新後のファームウェア110のパラメータ仕様111をRAM107上に展開したデータである。すなわち、EEPROM105上のをRAM107上にコピーした状態が仮想EEPROM108A、更新後のファームウェア110のパラメータ定義情報452で仮想EEPROM108Aを初期化した状態が仮想EEPROM108B、仮想EEPROM108Bに更新前のパラメータを再配置した状態が仮想EEPROM108Cである。
【0032】
そして、
図3に示すように、仮想EEPROM108Aには、パラメータ仕様113の配置126に従い、各パラメータが配置されている。具体的には、設定パラメータが保持されている先頭アドレスからオフセット0×0にID121が"1"のパラメータ名122"ModelName"がデータ長"6"バイトで割り当てられている。同様に、オフセット0×100にID121が"2"のパラメータ名"Adminpassword"がデータ長"4"バイトで割り当てられている。オフセット0×1FEにID121が"3"のパラメータ名"MediaSize"がデータ長"2"で、オフセット0×71EにID121が"500"のパラメータ名122"PowerSaveMode"がデータ長"1"バイトで割り当てられている。
【0033】
図7は、仮想EEPROM108Aをファームウェア更新後のパラメータ仕様111で初期化するため、一時的にRAM107に待避させた状態を説明する図である。
【0034】
図7(a)に示すID−設定パラメータ関連テーブルは、各パラメータを待避させる前に、パラメータID160の数だけ用意される固定長のテーブルである。ID−設定パラメータ関連テーブルは、パラメータID160とパラメータ属性とを関連付けるテーブルであるが、実際は、パラメータID160とパラメータ属性が格納されたメモリへのアドレス161のポインタとを関連付ける。これは、パラメータ属性のサイズがパラメータ毎に異なり、パラメータID160とパラメータ属性とを直接関連付けると、ID−設定パラメータ関連テーブルのRAM107上におけるサイズが非常に大きくなってしまうからである。
図7(a)に示されるように、パラメータ属性の代わりにそのパラメータ属性が格納されているメモリのアドレス161であれば、パラメータ毎に固定の4バイトのデータ長であるため、ID−設定関連テーブルのサイズも小さくすることができる。
【0035】
図7(b)は、各パラメータの格納メモリを表す概略図である。各パラメータの待避は、パラメータ毎にパラメータ仕様113のサイズ125で定義されたサイズ分だけメモリが確保され、確保されたメモリへ仮想EEPROM108Aから取り出されたデータがバイナリ形式のまま格納される。
図7(b)に示す例においては、ID121が"1"のパラメータ名122"ModelName"においてはアドレス0×500000からデータ長"6"バイトのデータ長がメモリ171に確保され、格納されている様子が示されている。同様に、ID121が"2"のパラメータ名122"AdminPassword"においてはアドレス0×500010からデータ長"4"バイトのデータ長がメモリ171に確保され、ID121が"3"のパラメータ名122"MediaSize"においてはアドレス0×500020からデータ長"2"バイトのデータ長がメモリ171が確保され、ID121が"500"のパラメータ名122"PowerSaveMode"においてはアドレス0×501F40からデータ長"1"バイトのデータ長がメモリ171に確保され、それぞれ格納されている。なお、ID121が"2"のパラメータ名122"AdminPassword"はデータ長"4"バイトの数値文字列で形成されるが、このパラメータは暗号化された状態で格納される。なお、本実施形態に係るファームウェア更新前のパラメータ仕様113では登録されているパラメータ数は500であるものとする。ID121が"500"のパラメータ名122"PowerSaveMode"は、パラメータ仕様113の最後に登録されているパラメータであり、オフセットの値も一番大きな値である。
【0036】
図8は、ファームウェア更新後のパラメータ仕様111を説明する概略図である。
図8に示すファームウェア更新後のパラメータ仕様111では、ID121が"2"のパラメータ名122"AdminPassword"のデータ長が"4"バイトから"6"バイトにサイズが変更になっている。これに伴い、
図4で示した仮想EEPROM108Bも、"AdminPassword"よりも後ろに配置されている全てのパラメータのオフセットが2バイトだけ後ろに配置されている。更に、ファームウェア更新で新たに追加されたパラメータ"WirelessLAN"も最後に追加されている。
図4で示した仮想EEPROM108Bの各パラメータは全て、ファームウェア更新後のパラメータ仕様111の初期値124の値である。EEPROM108Bに示すように、一旦、各パラメータを初期化する理由は、ファームウェア更新前後でパラメータ仕様に差異があった場合に、ファームウェア更新前の値を書き戻すと、その値は利用者の期待通りの振る舞いをするとは限らないためである。
【0037】
一旦、初期化して(仮想EEPROM108B)、その後、仕様に変更がないパラメータだけを
図7に示した一時保持されたファームウェア更新前の設定パラメータから仮想EEPROM108に書き戻せば、前述したように、ファームウェア更新前後で仕様が変更になったパラメータは更新後のファームウェアの初期値に初期化される。
【0038】
図5のEEPROM108Cの概略図に示したように、仕様に変更があった、ID121が"2"のパラメータ名122"AdminPassword"だけは、ファームウェア設定前のパラメータが書き戻されず、ファームウェア更新後のパラメータ仕様113に示された初期値に置き換わっている。
【0039】
次に、更新後のファームウェアを動作させるための設定パラメータにファームウェア更新前の設定パラメータを反映させるための処理について
図9のフローチャートを用いて説明する。
【0040】
なお、ファームウェアの更新は、RAM107上に展開されたファームウェアをCPU101が実行することによって行われる。そして、画像形成装置100の再起動後に同様にRAM107上に展開された更新後のファームウェアをCPU101が実行することによってステップS400以降の処理が行われる。
【0041】
ステップS400において、ファームウェアが更新されると、CPU101はRAM107上にEEPROM105のメモリイメージ(仮想EEPROM108A)を作成する(ステップS500)。以降の設定パラメータ処理においては、EEPROM105に最終的な設定パラメータが書き込まれるまで、この仮想EEPROM108に対して処理が行われる。これは、一般的なEEPROMには書き込み回数に制限があるためであり、書き込み回数の増加によってEEPROMの寿命を必要以上に縮めないための配慮である。
【0042】
RAM107上に仮想EEPROM108Aを作成した後、CPU101はFlashB112が保持するファームウェア更新前のパラメータ仕様113に基づいて、仮想EEPROM108Aからファームウェア更新前の設定パラメータを読み出す(ステップS502)。そして、CPU101は、読み出した設定パラメータをRAM107に保持させる。
【0043】
次に、CPU101は、仮想EEPROM108Aをファームウェア更新後のパラメータ仕様111に従って初期化し仮想EEPROM108Bを作成する(ステップS502)。そして、CPU101は、以下の手順に従って、仮想EEPROM108Bに対して、ファームウェア更新前の設定パラメータをID121が"1"のパラメータ名122"ModelName"からID121が"500"のパラメータ名122"PowerSaveMode"まで順番に1つずつ再配置して仮想EEPROM108Cを作成する。
【0044】
ステップS503において、CPU101はファームウェア更新後のパラメータ仕様に同じIDのパラメータが存在するか否かを確認する。ここで、同じIDのパラメータが存在する場合(ステップS503 有)、CPU101はファームウェア更新前後の属性の差異を確認する(ステップS504)。
【0045】
すなわち、CPU101は、パラメータの型(ステップS505)、初期値(ステップS506)、サイズ(ステップ507)を確認する。全ての仕様に差異が見つからなかった場合(ステップS505 無、ステップS506 無、ステップS507 無)、CPU101は、仮想EEPROM108Bの値をファームウェア更新前の値に書き戻す(ステップS508)。これに対して、同じIDのパラメータが存在しない場合(ステップS503 無)、又はパラメータの型、初期値、サイズの何れの値に差異があった場合(ステップS505、ステップS506、ステップS507の何れかが有)、CPU101はEEPROM108Bの値をファームウェア更新前の値に書き戻さない。
【0046】
ファームウェア更新前後において、パラメータの仕様に差異があった場合にファームウェア更新前の値を書き戻すと、その値は利用者の期待した通りの振る舞いをするとは限らないため、仕様に変更があった場合、CPU101は新しい初期値を設定する。
【0047】
ID121が"500"のパラメータ名122"PowerSaveMode"の再配置が完了した後、CPU101は仮想EEPROM108CをEEPROM105にコピーする(ステップS509)。
【0048】
最後に、CPU101は、FlashB112に保持されているパラーメタ仕様113をファームウェア更新後のパラメータ仕様111に差替えて処理を終了する(ステップS510)。
【0049】
以上のように、第1の実施形態によれば、ファームウェアの更新前の設定パラメータをパラメータ仕様に基づきバイナリ形式のままで更新することを可能とし、暗号化されてテキスト形式では取り扱うことができないようなデータでも取り扱うことができる。
【0050】
[第2の実施形態]
図10は、本実施形態に係るファームウェア更新前のパラメータ仕様を説明する図である。本実施形態に係るパラメータ仕様113'は、第1の実施形態において説明したパラメータ仕様113に対して版数401が新たに追加されたものである。版数401は、各パラメータに付属する属性であり、配置126を除く、型123、初期値124、サイズ125の他の属性の何れかに変更があった場合に、ファームウェア更新の単位で前の版数に対して1だけインクリメントされる数である。版数の初期値は"1"であり、これは新規で登録されたパラメータの版数は"1"となるという意味である。
図10に示したように、本実施形態に係るファームウェア更新前のパラメータ仕様113'において、例として挙げたパラメータの版数は全て"1"とした。
【0051】
第1の実施形態においては、パラメータ仕様の属性の1つ1つをチェックしなければ、そのパラメータ仕様に変更があるか否かを確認できなかったのに対し、本実施形態においては、版数401の変更の有無のみをチェックするだけでそのパラメータ仕様に変更があるか否かを確認することができる。なお、本実施形態の説明において、第1の実施形態において説明した構成及び動作について同一な箇所については同一の符号を付してその説明を省略する。
【0052】
図11は、本実施形態に係るファームウェア更新後のパラメータ仕様111'を説明する概略図である。
図11に示すファームウェア更新後のパラメータ仕様111'では、ID121が"2"のパラメータ名122"AdminPassword"の仕様が第1の実施形態と同様にファームウェアの更新前後で変更がなされている。そのため、ID121が"2"のパラメータ名122"AdminPassword"の版数は"2"となっている。
【0053】
次に、更新後のファームウェアを動作させるための設定パラメータにファームウェア更新前の設定パラメータを反映させるための処理について
図12のフローチャートを用いて説明する。
【0054】
図12のフローチャートに示す処理は、
図9のフローチャートにおいて説明したステップS504、ステップS505、ステップS506、及びステップS507に係るパラメータ仕様に差異があるか否かの一連の判断処理が、ステップS700に示される版数に差異があるか否かの判断処理に置き換わったものであり、その他の処理は
図9で説明した処理と同一である。したがって、ここでは、ステップS700に示される版数に差異があるか否かの判断処理についてのみ説明する。
【0055】
図10及び
図11に示したように、ID121が"2"のパラメータ名"AdminPassword"の版数は、ファームウェア更新前後で異なる。そのため、CPU101は、版数に差異があると判断し(ステップS700 有)、仮想EEPROM108Bから値を変更しない。一方、ID121が"1"のパラメータ名122"ModelName"、ID121が"3"のパラメータ名"MediaSize"、及びID121が"500"のパラメータ名"PoweerSaveMode"についてはファームウェア更新前後において版数の値は"1"のままである。したがって、CPU101は、版数に差異がないと判断し(ステップS700 無)、ステップS508において、仮想EEPROM108Bに対して更新処理を実行する。なお、ID121が"501"のパラメータ名122"WirelessLAN"は、ファームウェア更新後に新たに追加されたパラメータであるため更新は行われず、ステップS502において仮想EEPROM108Bに書き出された値がそのまま、ステップS509においてEERPOM105にコピーされる。
【0056】
以上のように、第2の実施形態によれば、第1の実施形態の効果に加え、パラメータ仕様差分の有無を示す版数という属性が追加されたため、各パラメータに対するファームウェアの更新前の設定値に戻すか否かの判断処理に係る処理速度を向上させることできる。これは、パラメータの数、各パラメータの属性の数が増えれば増えるほど大きな効果となる。
【0057】
本実施形態の説明においては、暗号化されてテキスト形式では取り扱うことができないようなデータとして管理者パスワード(AdminPassword)を例として挙げたが、画像形成装置外部で暗号化され、画像形成装置では復号化できないようなデータに対しても有効である。
【0058】
また、本実施形態の説明においては、画像形成装置の印刷機能を例にとって説明したが、本発明はこれに限定されず、ファームウェアを更新する機能を備えた全ての装置に適用可能である。