(57)【要約】      （修正有）【課題】ファームウェアの更新前のパラメータをバイナリ形式のままで更新することを可能とし、暗号化されてテキスト形式では取り扱うことができないようなデータでも取り扱うことができるようにする。【解決手段】ファームウェア更新前のパラメータ識別子と配置情報とを含むパラメータ定義情報を第２の不揮発性メモリ１１２から読み出すステップと、メモリ１０７上に更新前のパラメータ設定値と同じ形式のメモリイメージを作成するステップと、メモリイメージから読み出したパラメータ設定値をパラメータ識別子と関連付けてメモリ１０７に保持させるステップと、更新後のパラメータ配置情報に従って更新前のパラメータ設定値をメモリイメージに再配置するステップと、再配置後のメモリイメージを第１の不揮発メモリ１０５にコピーするステップと、更新後のパラメータ定義情報を第２の不揮発性メモリ１１２上に書き出すステップとを有する。【選択図】図１
2014191601.tif 000002
【特許請求の範囲】
【請求項１】
第１の不揮発性メモリに記憶されたパラメータ設定値を参照して装置を動作させるファームウェアを更新する方法であって、
前記ファームウェアを更新するファームウェア更新ステップと、
前記ファームウェアの更新前に、更新前の前記ファームェアのパラメータ識別子と配置情報とを含むパラメータ定義情報を第２の不揮発性メモリから読み出す更新前パラメータ定義読み出しステップと、
メモリ上にファームウェア更新前の前記第１の不揮発性メモリに記憶されたパラメータ設定値と同じ形式のメモリイメージを作成する更新前メモリイメージ作成ステップと、
前記メモリイメージから前記ファームウェア更新前のパラメータ設定値を読み出しパラメータ識別子と関連付けて前記メモリに保持させる更新前パラメータ設定値保持ステップと、
前記ファームウェア更新後のパラメータ配置情報に従って前記メモリに保持させたファームウェア更新前のパラメータ設定値を前記メモリイメージに再配置するパラメータ設定値再配置ステップと、
パラメータ設定値が再配置された前記メモリイメージを前記第１の不揮発メモリにコピーする第１の不揮発性メモリ書き込みステップと、
前記ファームウェア更新後に、更新後の前記ファームウェアのパラメータ定義情報を前記第２の不揮発性メモリ上に書き出す第２の不揮発性メモリ書き出しステップとを有することを特徴とするファームウエア更新方法。
【請求項２】
前記パラメータ定義情報は版数を有し、前記第２の不揮発メモリの更新前の前記パラメータ定義情報の版数と前記更新後のファームウェアが有する更新後の前記パラメータ定義情報の版数とを比較し、一致する場合は、前記第１の不揮発性メモリのパラメータ設定値の更新を行わないパラメータ定義版数判断ステップをさらに備えることを特徴とする請求項１記載のファームウェア更新方法。
【請求項３】
前記更新前パラメータ設定値保持ステップで保持される前記パラメータ設定値はバイナリ形式であることを特徴とする請求項１又は請求項２記載のファームウェア更新方法。
【請求項４】
前記パラメータ定義情報はパラメータごとに版数を属性としてもち、前記パラメータ設定値再配置ステップは、前記パラメータの版数が異なるパラメータについては、更新前のを前記メモリイメージに再配置しないことを特徴とする請求項３記載のファームウェア更新方法。
【請求項５】
前記パラメータ定義情報はパラメータごとの初期値を有し、前記パラメータ設定値再配置ステップの実行以前に、前記ファームウェア更新後のパラメータ定義情報に従って、前記パラメータごとの初期値を、前記更新前メモリイメージに書き込むメモリイメージ初期化ステップをさらに有することを特徴とする請求項１記載のファームウェア更新方法。
【請求項６】
第１の不揮発性メモリに記憶されたパラメータ設定値を参照して装置を動作させるファームウェアを更新するファームウェアプログラムであって、
前記ファームウェアを更新するファームウェア更新プログラムと、
前記ファームウェアの更新前に、更新前の前記ファームェアのパラメータ識別子と配置情報とを含むパラメータ定義情報を第２の不揮発性メモリから読み出す更新前パラメータ定義読み出しプログラムと、
メモリ上にファームウェア更新前の前記第１の不揮発性メモリに記憶されたパラメータ設定値と同じ形式のメモリイメージを作成する更新前メモリイメージ作成プログラムと、
前記メモリイメージから前記ファームウェア更新前のパラメータ設定値を読み出しパラメータ識別子と関連付けて前記メモリに保持させる更新前パラメータ設定値保持プログラムと、
前記ファームウェア更新後のパラメータ配置情報に従って前記メモリに保持させたファームウェア更新前のパラメータ設定値を前記メモリイメージに再配置するパラメータ設定値再配置プログラムと、
パラメータ設定値が再配置された前記メモリイメージを前記第１の不揮発メモリにコピーする第１の不揮発性メモリ書き込みプログラムと、
前記ファームウェア更新後に、更新後の前記ファームウェアのパラメータ定義情報を前記第２の不揮発性メモリ上に書き出す第２の不揮発性メモリ書き出しプログラムとを有することを特徴とするファームウエアプログラム。
【請求項７】
前記パラメータ定義情報は版数を有し、前記第２の不揮発メモリの更新前の前記パラメータ定義情報の版数と前記更新後のファームウェアが有する更新後の前記パラメータ定義情報の版数とを比較し、一致する場合は、前記第１の不揮発性メモリのパラメータ設定値の更新を行わないパラメータ定義版数判断プログラムをさらに備えることを特徴とする請求項６記載のファームウェアプログラム。
【請求項８】
前記更新前パラメータ設定値保持ステップで保持される前記パラメータ設定値はバイナリ形式であることを特徴とする請求項６又は請求項７記載のファームウェアプログラム。
【請求項９】
前記パラメータ定義情報はパラメータごとに版数を属性としてもち、前記パラメータ設定値再配置プログラムは、前記パラメータの版数が異なるパラメータについては、更新前のを前記メモリイメージに再配置しないことを特徴とする請求項８記載のファームウェアプログラム。
【請求項１０】
前記パラメータ定義情報はパラメータごとの初期値を有し、前記パラメータ設定値再配置プログラムの実行以前に、前記ファームウェア更新後のパラメータ定義情報に従って、前記パラメータごとの初期値を、前記更新前メモリイメージに書き込むメモリイメージ初期化プログラムをさらに有することを特徴とする請求項６記載のファームウェアプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ファームウェア更新方法及び更新機能を備えたファームウェアプログラムに関するものである。
【背景技術】
【０００２】
プリンタといった画像形成装置が実行する動作は、予め装置内に組み込まれた制御プログラム（以下、ファームウェアと称する）によって制御される。ファームウェアは、メモリに記憶されたパラメータを読み出すことにより、例えば、印刷設定等の個別に設定された設定内容を再現することができる。
【０００３】
このようなファームウェアを更新する場合において、ファームウェアの更新前後でパラメータの配置情報が異なるため、ファームウェア更新前後のパラメータをリセットしなければならないといった問題を解決するため、ファームウェア更新前のパラメータを一旦、ＲＡＭ（Random Access Memory）上に書き出して、ファームウェア更新後の配置情報に従い、書き出したパラメータを再配置する方法が知られている。
【０００４】
例えば、特許文献１には、バイナリ形式でメモリ上に保持されているパラメータをテキスト形式に変換して書き出すことにより、ファームウェアの仕様によって適切な読み出し方が異なるバイナリ形式で読み出すよりも容易にパラメータを引き継ぐことができるファームウェアの更新方法が提案されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−２５４５１３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来技術においては、バイナリ形式のパラメータをテキスト形式に変換することにより、制御コードが含まれる暗号化された情報、例えば、パスワード等の秘匿情報を元のバイナリデータに正しく戻せない場合があるといった問題があった。
【０００７】
本発明はこのような実情に鑑みてなされたものであり、本発明の課題は、ファームウェアの更新前のパラメータをパラメータ仕様に基づきバイナリ形式のままで更新することを可能とし、暗号化されてテキスト形式では取り扱うことができないようなデータでも取り扱うことができるファームウェア更新方法及びファームウエアプログラムを提供することである。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、本発明に係るファームウェア更新方法は、第１の不揮発性メモリに記憶されたパラメータ設定値を参照して装置を動作させるファームウェアを更新する方法であって、前記ファームウェアを更新するファームウェア更新ステップと、前記ファームウェアの更新前に、更新前の前記ファームェアのパラメータ識別子と配置情報とを含むパラメータ定義情報を第２の不揮発性メモリから読み出す更新前パラメータ定義読み出しステップと、メモリ上にファームウェア更新前の前記第１の不揮発性メモリに記憶されたパラメータ設定値と同じ形式のメモリイメージを作成する更新前メモリイメージ作成ステップと、前記メモリイメージから前記ファームウェア更新前のパラメータ設定値を読み出しパラメータ識別子と関連付けて前記メモリに保持させる更新前パラメータ設定値保持ステップと、前記ファームウェア更新後のパラメータ配置情報に従って前記メモリに保持させたファームウェア更新前のパラメータ設定値を前記メモリイメージに再配置するパラメータ設定値再配置ステップと、パラメータ設定値が再配置された前記メモリイメージを前記第１の不揮発メモリにコピーする第１の不揮発性メモリ書き込みステップと、前記ファームウェア更新後に、更新後の前記ファームウェアのパラメータ定義情報を前記第２の不揮発性メモリ上に書き出す第２の不揮発性メモリ書き出しステップとを有することを特徴としている。
【０００９】
また、本発明に係るファームウェアプログラムは、第１の不揮発性メモリに記憶されたパラメータ設定値を参照して装置を動作させるファームウェアを更新するファームウェアプログラムであって、前記ファームウェアを更新するファームウェア更新プログラムと、前記ファームウェアの更新前に、更新前の前記ファームェアのパラメータ識別子と配置情報とを含むパラメータ定義情報を第２の不揮発性メモリから読み出す更新前パラメータ定義読み出しプログラムと、メモリ上にファームウェア更新前の前記第１の不揮発性メモリに記憶されたパラメータ設定値と同じ形式のメモリイメージを作成する更新前メモリイメージ作成プログラムと、前記メモリイメージから前記ファームウェア更新前のパラメータ設定値を読み出しパラメータ識別子と関連付けて前記メモリに保持させる更新前パラメータ設定値保持プログラムと、前記ファームウェア更新後のパラメータ配置情報に従って前記メモリに保持させたファームウェア更新前のパラメータ設定値を前記メモリイメージに再配置するパラメータ設定値再配置プログラムと、パラメータ設定値が再配置された前記メモリイメージを前記第１の不揮発メモリにコピーする第１の不揮発性メモリ書き込みプログラムと、前記ファームウェア更新後に、更新後の前記ファームウェアのパラメータ定義情報を前記第２の不揮発性メモリ上に書き出す第２の不揮発性メモリ書き出しプログラムとを有することを特徴としている。
としている。
【発明の効果】
【００１０】
本発明によれば、ファームウェアの更新前のをパラメータ仕様に基づきバイナリ形式のままで更新することを可能とし、暗号化されてテキスト形式では取り扱うことができないようなデータでも取り扱うことができるファームウェア更新方法及びファームウエアプログラムを提供することができる。
【図面の簡単な説明】
【００１１】
【図１】画像形成装置の機能構成を説明する機能ブロック図である。
【図２】ファームウェア更新前のパラメータ仕様を説明する概略図である。
【図３】ファームウェア更新前のＥＥＰＲＯＭの設定パラメータがＲＡＭにコピーされた仮想ＥＥＰＲＯＭの概略図である。
【図４】ファームウェア更新後のパラメータ仕様で初期化された仮想ＥＥＰＲＯＭの概略図である。
【図５】仮想ＥＥＰＲＯＭをファームウェア更新前の設定パラメータに書き換えた仮想ＥＥＰＲＯＭの概略図である。
【図６】仮想ＥＥＰＲＯＭの作成、更新方法を説明する図である。
【図７】仮想ＥＥＰＲＯＭをファームウェア更新後のパラメータ仕様で初期化するため、一時的にＲＡＭに待避させた状態を説明する図である。
【図８】ファームウェア更新後のパラメータ仕様を説明する概略図である。
【図９】更新後のファームウェアを動作させるための設定パラメータにファームウェア更新前の設定パラメータを反映させるための処理を説明するフローチャートである。
【図１０】ファームウェア更新前のパラメータ仕様を説明する概略図である。
【図１１】ファームウェア更新後のパラメータ仕様を説明する概略図である。
【図１２】更新後のファームウェアを動作させるための設定パラメータにファームウェア更新前の設定パラメータを反映させるための処理を説明するフローチャートである。
【発明を実施するための形態】
【００１２】
以下、本発明の実施形態について図面を参照して説明する。なお、本発明は以下の記述に限定されるものではなく、本発明の要旨を逸脱しない範囲において適宜変更可能である。
【００１３】
［第１の実施形態］
第１の実施形態の説明においては、本発明に係るファームウェアプログラムが適用された画像形成装置を一例とし、当該ファームウェアの更新方法について説明する。
【００１４】
図１は、画像形成装置１００の機能構成を説明する機能ブロック図である。画像形成装置１００は、ＣＰＵ（Central Processing Unit）１０１と、受信部１０２と、画像処理部１０３と、印刷部１０４と、第１の不揮発性メモリとしてのＥＥＰＲＯＭ（Electrically Erasable Programmable Read-Only Memory）１０５と、メモリとしてのＲＡＭ１０７と、ＦｌａｓｈＡ１０９と、第２の不揮発性メモリとしてのＦｌａｓｈＢ１１２と、媒体給紙部１１５と、電源供給部１１６とを備え、受信部１０２を介して受信したデータに基づく画像を用紙等の媒体上に印刷することが可能な装置である。
【００１５】
ＣＰＵ１０１は、受信部１０２、画像処理部１０３、印刷部１０４、ＥＥＰＲＯＭ１０５、ＲＡＭ１０７、ＦｌａｓｈＡ１０９、ＦｌａｓｈＢ１１２、媒体給紙部１１５、及び電源供給部１１６とシステムバス１１４を介して接続されており、画像形成装置１００全体を統括的に制御する。
【００１６】
受信部１０２は、例えば、ＵＳＢ（universal Serial Bus）やネットワークで接続された図示せぬ外部の通信装置、ＰＣ（Personal Computer）から送信されたデータを受信するデータ受信部である。
【００１７】
画像処理部１０３は、受信部１０２を介して受信したデータ又は画像形成装置１００に蓄積されたデータを印刷部１０４において印刷可能な印刷データに変換して生成する印刷データ生成部である。
【００１８】
印刷部１０４は、例えば、電子写真方式の印刷エンジンを備え、画像処理部１０３において生成された印刷データを媒体としての用紙に印刷して出力する出力部である。
【００１９】
ＥＥＰＲＯＭ１０５は、電気信号により複数回の書き換えが可能な不揮発性メモリであり、画像形成装置１００への給電が停止しても情報を保持する。ＥＥＰＲＯＭ１０５は、画像形成装置１００の動作設定を定義するである設定パラメータ１０６を保持する。
【００２０】
ＲＡＭ１０７は揮発性のメモリであり、受信部１０２を介して受信したデータや、画像処理部１０３が生成した印刷データを一時的に保持する。また、ＲＡＭ１０７は、設定パラメータ１０６を後述するファームウェア更新後のパラメータ仕様に基づきＥＥＰＲＯＭ１０５に再配置するための設定パラーメータ１０６と同形式のパラメータデータである仮想ＥＥＰＲＯＭ１０８を保持する。
【００２１】
ＦｌａｓｈＡ１０９は、電気信号により複数回の書き換えが可能な不揮発性メモリであり、画像形成装置１００への給電が停止しても情報を保持する。ＦｌａｓｈＡ１０９は、画像形成装置１００の動作を制御するファームウェア１１０を保持する。ファームウェア１１０は、画像形成装置１００の動作を制御するプログラムであり、当該ファームウェア１１０を動作させるためのパラメータ仕様である、ファームウェア更新後のパラメータ仕様１１１を有する。なお、ファームウェア１１０は、ＲＡＭ１０７上にコピーされてＣＰＵ１０１により実行される。
【００２２】
ＦｌａｓｈＢ１１２は、ＦｌａｓｈＡ１０９と同様な不揮発性メモリであり、印刷データやログデータ等を保持する。また、ＦｌａｓｈＢ１１２は、ＦｌａｓｈＡ１０９上のファームウェア１１０が書き換えられた後、ＥＥＰＲＯＭ１０５の設定パラメータ１０６にファームウェア更新前の設定パラメータを書き戻す際に使用されるファームウェア更新前のパラメータ仕様１１３を保持する。パラメータ仕様１１３は、ファームウェア更新後、ファームウェア更新前の設定パラメータがＥＥＰＲＯＭ１０５の設定パラメータ１０６に書き戻された後に、ＦｌａｓｈＡ１０９のパラメータ仕様１１１として更新される。
【００２３】
媒体給紙部１１５は、例えば、Ａ４サイズやレターサイズの用紙がセットされるカセットを有し、印刷部１０４に対して用紙を給紙する媒体給紙部である。
【００２４】
電源供給部１１６は、画像形成装置１００に所定の電力を供給する電源部である。
【００２５】
次に、本実施形態に係るパラメータ仕様について説明する。本実施形態に係るパラメータ仕様とは、パラメータを一意に識別するためのパラメータ識別子としてのＩＤと、後述する配置等のパラメータ属性とが関連付けられたパラメータ仕様のことを表す。図２は、ファームウェア更新前のパラメータ仕様１１３を説明する概略図である。本実施形態に係るパラメータ仕様１１３は、パラメータＩＤ１２１と、パラメータ名１２２と、パラメータの属性である型１２３と、初期値１２４と、サイズ１２５と、配置（オフセット）１２６（以下、配置１２６と称する）とを有する。
【００２６】
ＩＤ１２１は、パラメータを一意に識別するためのＩＤである。ＩＤ１２１はパラメータに対して一意に割り当てられ、異なるファームウェアの版数で別のパラメータに割り当てられることはない。パラメータ名１２２は、パラメータの名称である。型１２３は、パラメータの属性の一つであり、文字列型（ＳＴＲＩＮＧ）、数値型（ＩＮＴ）、列挙型（ＥＮＵＭ）といったパラメータの型である。初期値１２４は、パラメータの初期値である。サイズ１２５は、パラメータのデータ長である。配置１２６は、ＥＥＰＲＯＭ１０５上の設定パラメータ１０６の先頭アドレスからのビットオフセットである。なお、パラメータの属性は本実施形態で挙げたもの以外にも多数存在するが、ここでは説明を容易とするために代表的な属性だけを取り上げた。
【００２７】
より具体的に説明すると、ＩＤ１２１が"１"のパラメータ名１２２"ＭｏｄｅｌＮａｍｅ"は、画像形成装置のモデル名を表し、そのパラメータの型１２３は文字列型である。パラメータの初期値１２４は"ｍｏｄｅｌ"であり、そのサイズ１２５たるデータ長は"６"バイト、設定パラメータ１０６の先頭に配置されるパラメータである。次に、ＩＤ１２１が"２"のパラメータ名１２２"ＡｄｍｉｎＰａｓｓｗｏｒｄ"は装置管理者のパスワードを表し、そのパラメータの型１２３は文字列型である。パラメータの初期値１２４は"１２３３４"であり、そのデータ長は"４"バイト、設定パラメータ１０６の先頭から１００バイト目に配置されるパラメータである。ここで、ＩＤが連続しているからといって、設定パラメータで連続した領域に配置されるとは限らない。ここで挙げた、パラメータ"ＭｏｄｅｌＮａｍｅ"とパラメータ"ＡｄｍｉｎＰａｓｓｗｏｒｄ"とはＩＤが"１"と"２"とで連続しているが、設定パラメータ上はその間に別のＩＤが配置されることもある。なお、パラメータ"ＡｄｍｉｎＰａｓｓｗｏｒｄ"は暗号化されて、設定パラメータ１０６に格納されるが、その暗号化方式は周知の技術を用いることができるため、ここでの説明は省略する。
【００２８】
そして、ＩＤ１２１が"３"のパラメータ名１２２"ＭｏｄｅＳｉｚｅ"は、Ａ４サイズ、レターサイズといった印刷に供される用紙のサイズを表し、そのパラメータの型１２３は列挙型である。パラメータの初期値１２４は"１２"であり、そのデータ長は"２"バイト、配置１２６は"０×１ＦＥ"である。ＩＤ１２１が"５００"のパラメータ名１２２"ＰｏｗｅｒＳａｖｅＭｏｄｅ"は、印刷終了後に所定の時間が経過し、電源供給部１１６が低消費電力であるパワーセーブ状態に移行するでまでの時間を表し、そのパラメータの型１２３は、例えば、１分、５分、１０分、３０分、６０分、１２０分といった列挙型である。パラメータの初期値１２４は"３"であり、そのデータ長は"１"バイト、設定パラメータ１０６の最後に配置されるパラメータである。
【００２９】
次に、ＲＡＭ１０７が保持する仮想ＥＥＰＲＯＭ１０８について説明する。仮想ＥＥＰＲＯＭ１０８は、ファームウェアの更新前後において、ＲＡＭ１０７に保持される内容が異なる。図３は、ファームウェア更新前のＥＥＰＲＯＭ１０５上の設定パラメータ１０６がＲＡＭ１０７にコピーされた仮想ＥＥＰＲＯＭ１０８Ａの概略図であり、図４は、ファームウェア更新後のパラメータ仕様で初期化された仮想ＥＥＰＲＯＭ１０８Ｂの概略図であり、図５は、仮想ＥＥＰＲＯＭ１０８Ｂをファームウェア更新前の設定パラメータに書き換えた仮想ＥＥＰＲＯＭ１０８Ｃの概略図である。
【００３０】
ここで、ＲＡＭ１０７において仮想ＥＥＰＲＯＭ１０８が作成され、どのように更新されていくのかを図６を用いて説明する。
【００３１】
更新前パラメータ定義情報４５０は、ＦｌａｓｈＢ１１２で保持されたパラメータ仕様１１３がＲＡＭ１０６に展開されたデータである。更新前パラメータ設定値４５１は、仮想ＥＥＰＲＯＭ１０８Ａのを更新前パラメータ定義情報４５０に従ってメモリ上に展開したデータである。更新後パラメータ定義情報４５２は、更新後のファームウェア１１０のパラメータ仕様１１１をＲＡＭ１０７上に展開したデータである。すなわち、ＥＥＰＲＯＭ１０５上のをＲＡＭ１０７上にコピーした状態が仮想ＥＥＰＲＯＭ１０８Ａ、更新後のファームウェア１１０のパラメータ定義情報４５２で仮想ＥＥＰＲＯＭ１０８Ａを初期化した状態が仮想ＥＥＰＲＯＭ１０８Ｂ、仮想ＥＥＰＲＯＭ１０８Ｂに更新前のパラメータを再配置した状態が仮想ＥＥＰＲＯＭ１０８Ｃである。
【００３２】
そして、図３に示すように、仮想ＥＥＰＲＯＭ１０８Ａには、パラメータ仕様１１３の配置１２６に従い、各パラメータが配置されている。具体的には、設定パラメータが保持されている先頭アドレスからオフセット０×０にＩＤ１２１が"１"のパラメータ名１２２"ＭｏｄｅｌＮａｍｅ"がデータ長"６"バイトで割り当てられている。同様に、オフセット０×１００にＩＤ１２１が"２"のパラメータ名"Ａｄｍｉｎｐａｓｓｗｏｒｄ"がデータ長"４"バイトで割り当てられている。オフセット０×１ＦＥにＩＤ１２１が"３"のパラメータ名"ＭｅｄｉａＳｉｚｅ"がデータ長"２"で、オフセット０×７１ＥにＩＤ１２１が"５００"のパラメータ名１２２"ＰｏｗｅｒＳａｖｅＭｏｄｅ"がデータ長"１"バイトで割り当てられている。
【００３３】
図７は、仮想ＥＥＰＲＯＭ１０８Ａをファームウェア更新後のパラメータ仕様１１１で初期化するため、一時的にＲＡＭ１０７に待避させた状態を説明する図である。
【００３４】
図７（ａ）に示すＩＤ−設定パラメータ関連テーブルは、各パラメータを待避させる前に、パラメータＩＤ１６０の数だけ用意される固定長のテーブルである。ＩＤ−設定パラメータ関連テーブルは、パラメータＩＤ１６０とパラメータ属性とを関連付けるテーブルであるが、実際は、パラメータＩＤ１６０とパラメータ属性が格納されたメモリへのアドレス１６１のポインタとを関連付ける。これは、パラメータ属性のサイズがパラメータ毎に異なり、パラメータＩＤ１６０とパラメータ属性とを直接関連付けると、ＩＤ−設定パラメータ関連テーブルのＲＡＭ１０７上におけるサイズが非常に大きくなってしまうからである。図７（ａ）に示されるように、パラメータ属性の代わりにそのパラメータ属性が格納されているメモリのアドレス１６１であれば、パラメータ毎に固定の４バイトのデータ長であるため、ＩＤ−設定関連テーブルのサイズも小さくすることができる。
【００３５】
図７（ｂ）は、各パラメータの格納メモリを表す概略図である。各パラメータの待避は、パラメータ毎にパラメータ仕様１１３のサイズ１２５で定義されたサイズ分だけメモリが確保され、確保されたメモリへ仮想ＥＥＰＲＯＭ１０８Ａから取り出されたデータがバイナリ形式のまま格納される。図７（ｂ）に示す例においては、ＩＤ１２１が"１"のパラメータ名１２２"ＭｏｄｅｌＮａｍｅ"においてはアドレス０×５０００００からデータ長"６"バイトのデータ長がメモリ１７１に確保され、格納されている様子が示されている。同様に、ＩＤ１２１が"２"のパラメータ名１２２"ＡｄｍｉｎＰａｓｓｗｏｒｄ"においてはアドレス０×５０００１０からデータ長"４"バイトのデータ長がメモリ１７１に確保され、ＩＤ１２１が"３"のパラメータ名１２２"ＭｅｄｉａＳｉｚｅ"においてはアドレス０×５０００２０からデータ長"２"バイトのデータ長がメモリ１７１が確保され、ＩＤ１２１が"５００"のパラメータ名１２２"ＰｏｗｅｒＳａｖｅＭｏｄｅ"においてはアドレス０×５０１Ｆ４０からデータ長"１"バイトのデータ長がメモリ１７１に確保され、それぞれ格納されている。なお、ＩＤ１２１が"２"のパラメータ名１２２"ＡｄｍｉｎＰａｓｓｗｏｒｄ"はデータ長"４"バイトの数値文字列で形成されるが、このパラメータは暗号化された状態で格納される。なお、本実施形態に係るファームウェア更新前のパラメータ仕様１１３では登録されているパラメータ数は５００であるものとする。ＩＤ１２１が"５００"のパラメータ名１２２"ＰｏｗｅｒＳａｖｅＭｏｄｅ"は、パラメータ仕様１１３の最後に登録されているパラメータであり、オフセットの値も一番大きな値である。
【００３６】
図８は、ファームウェア更新後のパラメータ仕様１１１を説明する概略図である。図８に示すファームウェア更新後のパラメータ仕様１１１では、ＩＤ１２１が"２"のパラメータ名１２２"ＡｄｍｉｎＰａｓｓｗｏｒｄ"のデータ長が"４"バイトから"６"バイトにサイズが変更になっている。これに伴い、図４で示した仮想ＥＥＰＲＯＭ１０８Ｂも、"ＡｄｍｉｎＰａｓｓｗｏｒｄ"よりも後ろに配置されている全てのパラメータのオフセットが２バイトだけ後ろに配置されている。更に、ファームウェア更新で新たに追加されたパラメータ"ＷｉｒｅｌｅｓｓＬＡＮ"も最後に追加されている。図４で示した仮想ＥＥＰＲＯＭ１０８Ｂの各パラメータは全て、ファームウェア更新後のパラメータ仕様１１１の初期値１２４の値である。ＥＥＰＲＯＭ１０８Ｂに示すように、一旦、各パラメータを初期化する理由は、ファームウェア更新前後でパラメータ仕様に差異があった場合に、ファームウェア更新前の値を書き戻すと、その値は利用者の期待通りの振る舞いをするとは限らないためである。
【００３７】
一旦、初期化して（仮想ＥＥＰＲＯＭ１０８Ｂ）、その後、仕様に変更がないパラメータだけを図７に示した一時保持されたファームウェア更新前の設定パラメータから仮想ＥＥＰＲＯＭ１０８に書き戻せば、前述したように、ファームウェア更新前後で仕様が変更になったパラメータは更新後のファームウェアの初期値に初期化される。
【００３８】
図５のＥＥＰＲＯＭ１０８Ｃの概略図に示したように、仕様に変更があった、ＩＤ１２１が"２"のパラメータ名１２２"ＡｄｍｉｎＰａｓｓｗｏｒｄ"だけは、ファームウェア設定前のパラメータが書き戻されず、ファームウェア更新後のパラメータ仕様１１３に示された初期値に置き換わっている。
【００３９】
次に、更新後のファームウェアを動作させるための設定パラメータにファームウェア更新前の設定パラメータを反映させるための処理について図９のフローチャートを用いて説明する。
【００４０】
なお、ファームウェアの更新は、ＲＡＭ１０７上に展開されたファームウェアをＣＰＵ１０１が実行することによって行われる。そして、画像形成装置１００の再起動後に同様にＲＡＭ１０７上に展開された更新後のファームウェアをＣＰＵ１０１が実行することによってステップＳ４００以降の処理が行われる。
【００４１】
ステップＳ４００において、ファームウェアが更新されると、ＣＰＵ１０１はＲＡＭ１０７上にＥＥＰＲＯＭ１０５のメモリイメージ（仮想ＥＥＰＲＯＭ１０８Ａ）を作成する（ステップＳ５００）。以降の設定パラメータ処理においては、ＥＥＰＲＯＭ１０５に最終的な設定パラメータが書き込まれるまで、この仮想ＥＥＰＲＯＭ１０８に対して処理が行われる。これは、一般的なＥＥＰＲＯＭには書き込み回数に制限があるためであり、書き込み回数の増加によってＥＥＰＲＯＭの寿命を必要以上に縮めないための配慮である。
【００４２】
ＲＡＭ１０７上に仮想ＥＥＰＲＯＭ１０８Ａを作成した後、ＣＰＵ１０１はＦｌａｓｈＢ１１２が保持するファームウェア更新前のパラメータ仕様１１３に基づいて、仮想ＥＥＰＲＯＭ１０８Ａからファームウェア更新前の設定パラメータを読み出す（ステップＳ５０２）。そして、ＣＰＵ１０１は、読み出した設定パラメータをＲＡＭ１０７に保持させる。
【００４３】
次に、ＣＰＵ１０１は、仮想ＥＥＰＲＯＭ１０８Ａをファームウェア更新後のパラメータ仕様１１１に従って初期化し仮想ＥＥＰＲＯＭ１０８Ｂを作成する（ステップＳ５０２）。そして、ＣＰＵ１０１は、以下の手順に従って、仮想ＥＥＰＲＯＭ１０８Ｂに対して、ファームウェア更新前の設定パラメータをＩＤ１２１が"１"のパラメータ名１２２"ＭｏｄｅｌＮａｍｅ"からＩＤ１２１が"５００"のパラメータ名１２２"ＰｏｗｅｒＳａｖｅＭｏｄｅ"まで順番に１つずつ再配置して仮想ＥＥＰＲＯＭ１０８Ｃを作成する。
【００４４】
ステップＳ５０３において、ＣＰＵ１０１はファームウェア更新後のパラメータ仕様に同じＩＤのパラメータが存在するか否かを確認する。ここで、同じＩＤのパラメータが存在する場合（ステップＳ５０３  有）、ＣＰＵ１０１はファームウェア更新前後の属性の差異を確認する（ステップＳ５０４）。
【００４５】
すなわち、ＣＰＵ１０１は、パラメータの型（ステップＳ５０５）、初期値（ステップＳ５０６）、サイズ（ステップ５０７）を確認する。全ての仕様に差異が見つからなかった場合（ステップＳ５０５  無、ステップＳ５０６  無、ステップＳ５０７  無）、ＣＰＵ１０１は、仮想ＥＥＰＲＯＭ１０８Ｂの値をファームウェア更新前の値に書き戻す（ステップＳ５０８）。これに対して、同じＩＤのパラメータが存在しない場合（ステップＳ５０３  無）、又はパラメータの型、初期値、サイズの何れの値に差異があった場合（ステップＳ５０５、ステップＳ５０６、ステップＳ５０７の何れかが有）、ＣＰＵ１０１はＥＥＰＲＯＭ１０８Ｂの値をファームウェア更新前の値に書き戻さない。
【００４６】
ファームウェア更新前後において、パラメータの仕様に差異があった場合にファームウェア更新前の値を書き戻すと、その値は利用者の期待した通りの振る舞いをするとは限らないため、仕様に変更があった場合、ＣＰＵ１０１は新しい初期値を設定する。
【００４７】
ＩＤ１２１が"５００"のパラメータ名１２２"ＰｏｗｅｒＳａｖｅＭｏｄｅ"の再配置が完了した後、ＣＰＵ１０１は仮想ＥＥＰＲＯＭ１０８ＣをＥＥＰＲＯＭ１０５にコピーする（ステップＳ５０９）。
【００４８】
最後に、ＣＰＵ１０１は、ＦｌａｓｈＢ１１２に保持されているパラーメタ仕様１１３をファームウェア更新後のパラメータ仕様１１１に差替えて処理を終了する（ステップＳ５１０）。
【００４９】
以上のように、第１の実施形態によれば、ファームウェアの更新前の設定パラメータをパラメータ仕様に基づきバイナリ形式のままで更新することを可能とし、暗号化されてテキスト形式では取り扱うことができないようなデータでも取り扱うことができる。
【００５０】
［第２の実施形態］
図１０は、本実施形態に係るファームウェア更新前のパラメータ仕様を説明する図である。本実施形態に係るパラメータ仕様１１３'は、第１の実施形態において説明したパラメータ仕様１１３に対して版数４０１が新たに追加されたものである。版数４０１は、各パラメータに付属する属性であり、配置１２６を除く、型１２３、初期値１２４、サイズ１２５の他の属性の何れかに変更があった場合に、ファームウェア更新の単位で前の版数に対して１だけインクリメントされる数である。版数の初期値は"１"であり、これは新規で登録されたパラメータの版数は"１"となるという意味である。図１０に示したように、本実施形態に係るファームウェア更新前のパラメータ仕様１１３'において、例として挙げたパラメータの版数は全て"１"とした。
【００５１】
第１の実施形態においては、パラメータ仕様の属性の１つ１つをチェックしなければ、そのパラメータ仕様に変更があるか否かを確認できなかったのに対し、本実施形態においては、版数４０１の変更の有無のみをチェックするだけでそのパラメータ仕様に変更があるか否かを確認することができる。なお、本実施形態の説明において、第１の実施形態において説明した構成及び動作について同一な箇所については同一の符号を付してその説明を省略する。
【００５２】
図１１は、本実施形態に係るファームウェア更新後のパラメータ仕様１１１'を説明する概略図である。図１１に示すファームウェア更新後のパラメータ仕様１１１'では、ＩＤ１２１が"２"のパラメータ名１２２"ＡｄｍｉｎＰａｓｓｗｏｒｄ"の仕様が第１の実施形態と同様にファームウェアの更新前後で変更がなされている。そのため、ＩＤ１２１が"２"のパラメータ名１２２"ＡｄｍｉｎＰａｓｓｗｏｒｄ"の版数は"２"となっている。
【００５３】
次に、更新後のファームウェアを動作させるための設定パラメータにファームウェア更新前の設定パラメータを反映させるための処理について図１２のフローチャートを用いて説明する。
【００５４】
図１２のフローチャートに示す処理は、図９のフローチャートにおいて説明したステップＳ５０４、ステップＳ５０５、ステップＳ５０６、及びステップＳ５０７に係るパラメータ仕様に差異があるか否かの一連の判断処理が、ステップＳ７００に示される版数に差異があるか否かの判断処理に置き換わったものであり、その他の処理は図９で説明した処理と同一である。したがって、ここでは、ステップＳ７００に示される版数に差異があるか否かの判断処理についてのみ説明する。
【００５５】
図１０及び図１１に示したように、ＩＤ１２１が"２"のパラメータ名"ＡｄｍｉｎＰａｓｓｗｏｒｄ"の版数は、ファームウェア更新前後で異なる。そのため、ＣＰＵ１０１は、版数に差異があると判断し（ステップＳ７００  有）、仮想ＥＥＰＲＯＭ１０８Ｂから値を変更しない。一方、ＩＤ１２１が"１"のパラメータ名１２２"ＭｏｄｅｌＮａｍｅ"、ＩＤ１２１が"３"のパラメータ名"ＭｅｄｉａＳｉｚｅ"、及びＩＤ１２１が"５００"のパラメータ名"ＰｏｗｅｅｒＳａｖｅＭｏｄｅ"についてはファームウェア更新前後において版数の値は"１"のままである。したがって、ＣＰＵ１０１は、版数に差異がないと判断し（ステップＳ７００  無）、ステップＳ５０８において、仮想ＥＥＰＲＯＭ１０８Ｂに対して更新処理を実行する。なお、ＩＤ１２１が"５０１"のパラメータ名１２２"ＷｉｒｅｌｅｓｓＬＡＮ"は、ファームウェア更新後に新たに追加されたパラメータであるため更新は行われず、ステップＳ５０２において仮想ＥＥＰＲＯＭ１０８Ｂに書き出された値がそのまま、ステップＳ５０９においてＥＥＲＰＯＭ１０５にコピーされる。
【００５６】
以上のように、第２の実施形態によれば、第１の実施形態の効果に加え、パラメータ仕様差分の有無を示す版数という属性が追加されたため、各パラメータに対するファームウェアの更新前の設定値に戻すか否かの判断処理に係る処理速度を向上させることできる。これは、パラメータの数、各パラメータの属性の数が増えれば増えるほど大きな効果となる。
【００５７】
本実施形態の説明においては、暗号化されてテキスト形式では取り扱うことができないようなデータとして管理者パスワード（ＡｄｍｉｎＰａｓｓｗｏｒｄ）を例として挙げたが、画像形成装置外部で暗号化され、画像形成装置では復号化できないようなデータに対しても有効である。
【００５８】
また、本実施形態の説明においては、画像形成装置の印刷機能を例にとって説明したが、本発明はこれに限定されず、ファームウェアを更新する機能を備えた全ての装置に適用可能である。
【符号の説明】
【００５９】
１００  画像形成装置
１０１  ＣＰＵ
１０２  受信部
１０３  画像処理部
１０４  印刷部
１０５  ＥＥＰＲＯＭ
１０６  設定パラメータ
１０７  ＲＡＭ
１０８  仮想ＥＥＰＲＯＭ
１０９  ＦｌａｓｈＡ
１１０  ファームウェア
１１１，１１１'  パラメータ仕様
１１２  ＦｌａｓｈＢ
１１３，１１３'  パラメータ仕様
１１４  システムバス
１１５  媒体給紙部
１１６  電源供給部
【図１】
2014191601.tif 000003
【図２】
2014191601.tif 000004
【図３】
2014191601.tif 000005
【図４】
2014191601.tif 000006
【図５】
2014191601.tif 000007
【図６】
2014191601.tif 000008
【図７】
2014191601.tif 000009
【図８】
2014191601.tif 000010
【図９】
2014191601.tif 000011
【図１０】
2014191601.tif 000012
【図１１】
2014191601.tif 000013
【図１２】
2014191601.tif 000014