特許第5929809号(P5929809)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社沖データの特許一覧

特許5929809ファームウェア更新方法及びファームウェアプログラム
<>
  • 特許5929809-ファームウェア更新方法及びファームウェアプログラム 図000002
  • 特許5929809-ファームウェア更新方法及びファームウェアプログラム 図000003
  • 特許5929809-ファームウェア更新方法及びファームウェアプログラム 図000004
  • 特許5929809-ファームウェア更新方法及びファームウェアプログラム 図000005
  • 特許5929809-ファームウェア更新方法及びファームウェアプログラム 図000006
  • 特許5929809-ファームウェア更新方法及びファームウェアプログラム 図000007
  • 特許5929809-ファームウェア更新方法及びファームウェアプログラム 図000008
  • 特許5929809-ファームウェア更新方法及びファームウェアプログラム 図000009
  • 特許5929809-ファームウェア更新方法及びファームウェアプログラム 図000010
  • 特許5929809-ファームウェア更新方法及びファームウェアプログラム 図000011
  • 特許5929809-ファームウェア更新方法及びファームウェアプログラム 図000012
  • 特許5929809-ファームウェア更新方法及びファームウェアプログラム 図000013
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5929809
(24)【登録日】2016年5月13日
(45)【発行日】2016年6月8日
(54)【発明の名称】ファームウェア更新方法及びファームウェアプログラム
(51)【国際特許分類】
   G06F 11/00 20060101AFI20160526BHJP
【FI】
   G06F9/06 630A
【請求項の数】8
【全頁数】15
(21)【出願番号】特願2013-66809(P2013-66809)
(22)【出願日】2013年3月27日
(65)【公開番号】特開2014-191601(P2014-191601A)
(43)【公開日】2014年10月6日
【審査請求日】2015年3月16日
(73)【特許権者】
【識別番号】591044164
【氏名又は名称】株式会社沖データ
(74)【代理人】
【識別番号】100110434
【弁理士】
【氏名又は名称】佐藤 勝
(72)【発明者】
【氏名】山田 孝宏
【審査官】 杉浦 孝光
(56)【参考文献】
【文献】 特開平10−283167(JP,A)
【文献】 特開2003−256228(JP,A)
【文献】 特開2010−015265(JP,A)
【文献】 特開2012−118869(JP,A)
【文献】 特開2009−254513(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/00
(57)【特許請求の範囲】
【請求項1】
第1の不揮発性メモリに記憶されたパラメータ設定値を参照して装置を動作させるファームウェアを更新する方法であって、
前記ファームウェアを更新するファームウェア更新ステップと、
前記ファームウェアの更新後に、更新前の前記ファームウェアのパラメータ識別子と配置情報とを含むパラメータ定義情報を第2の不揮発性メモリから読み出す更新前パラメータ定義読み出しステップと、
メモリ上にファームウェア更新前の前記第1の不揮発性メモリに記憶されたパラメータ設定値と同じ形式のメモリイメージを作成する更新前メモリイメージ作成ステップと、
前記メモリイメージから前記ファームウェア更新前のパラメータ設定値を読み出しパラメータ識別子と関連付けて前記メモリに保持させる更新前パラメータ設定値保持ステップと、
前記ファームウェア更新後のパラメータ配置情報に従って前記メモリに保持させたファームウェア更新前のパラメータ設定値を前記メモリイメージに再配置するパラメータ設定値再配置ステップと、
パラメータ設定値が再配置された前記メモリイメージを前記第1の不揮発メモリにコピーする第1の不揮発性メモリ書き込みステップと、
前記ファームウェア更新後に、更新後の前記ファームウェアのパラメータ定義情報を前記第2の不揮発性メモリ上に書き出す第2の不揮発性メモリ書き出しステップとを有することを特徴とするファームウェア更新方法。
【請求項2】
前記パラメータ定義情報はパラメータごとに版数を属性としてもち、前記パラメータ設定値再配置ステップは、前記第2の不揮発メモリの更新前の前記パラメータ定義情報の版数と前記更新後のファームウェアが有する更新後の前記パラメータ定義情報の版数とを比較し、前記パラメータの版数が異なるパラメータについては、更新前の前記メモリイメージに再配置しないことを特徴とする請求項1記載のファームウェア更新方法。
【請求項3】
前記更新前パラメータ設定値保持ステップで保持される前記パラメータ設定値はバイナリ形式であることを特徴とする請求項1又は請求項2記載のファームウェア更新方法。
【請求項4】
前記パラメータ定義情報はパラメータごとの初期値を有し、前記パラメータ設定値再配置ステップの実行以前に、前記ファームウェア更新後のパラメータ定義情報に従って、前記パラメータごとの初期値を、前記更新前メモリイメージに書き込むメモリイメージ初期化ステップをさらに有することを特徴とする請求項1記載のファームウェア更新方法。
【請求項5】
第1の不揮発性メモリに記憶されたパラメータ設定値を参照して装置を動作させるファームウェアを更新するファームウェアプログラムであって、
前記ファームウェアを更新するファームウェア更新プログラムと、
前記ファームウェアの更新後に、更新前の前記ファームウェアのパラメータ識別子と配置情報とを含むパラメータ定義情報を第2の不揮発性メモリから読み出す更新前パラメータ定義読み出しプログラムと、
メモリ上にファームウェア更新前の前記第1の不揮発性メモリに記憶されたパラメータ設定値と同じ形式のメモリイメージを作成する更新前メモリイメージ作成プログラムと、
前記メモリイメージから前記ファームウェア更新前のパラメータ設定値を読み出しパラメータ識別子と関連付けて前記メモリに保持させる更新前パラメータ設定値保持プログラムと、
前記ファームウェア更新後のパラメータ配置情報に従って前記メモリに保持させたファームウェア更新前のパラメータ設定値を前記メモリイメージに再配置するパラメータ設定値再配置プログラムと、
パラメータ設定値が再配置された前記メモリイメージを前記第1の不揮発メモリにコピーする第1の不揮発性メモリ書き込みプログラムと、
前記ファームウェア更新後に、更新後の前記ファームウェアのパラメータ定義情報を前記第2の不揮発性メモリ上に書き出す第2の不揮発性メモリ書き出しプログラムとを有することを特徴とするファームウェアプログラム。
【請求項6】
前記パラメータ定義情報はパラメータごとに版数を属性としてもち、前記パラメータ設定値再配置プログラムは、前記第2の不揮発メモリの更新前の前記パラメータ定義情報の版数と前記更新後のファームウェアが有する更新後の前記パラメータ定義情報の版数とを比較し、前記パラメータの版数が異なるパラメータについては、更新前の前記メモリイメージに再配置しないことを特徴とする請求項5記載のファームウェアプログラム
【請求項7】
前記更新前パラメータ設定値保持プログラムが保持させる前記パラメータ設定値はバイナリ形式であることを特徴とする請求項5又は請求項6記載のファームウェアプログラム。
【請求項8】
前記パラメータ定義情報はパラメータごとの初期値を有し、前記パラメータ設定値再配置プログラムの実行以前に、前記ファームウェア更新後のパラメータ定義情報に従って、前記パラメータごとの初期値を、前記更新前メモリイメージに書き込むメモリイメージ初期化プログラムをさらに有することを特徴とする請求項5記載のファームウェアプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ファームウェア更新方法及び更新機能を備えたファームウェアプログラムに関するものである。
【背景技術】
【0002】
プリンタといった画像形成装置が実行する動作は、予め装置内に組み込まれた制御プログラム(以下、ファームウェアと称する)によって制御される。ファームウェアは、メモリに記憶されたパラメータを読み出すことにより、例えば、印刷設定等の個別に設定された設定内容を再現することができる。
【0003】
このようなファームウェアを更新する場合において、ファームウェアの更新前後でパラメータの配置情報が異なるため、ファームウェア更新前後のパラメータをリセットしなければならないといった問題を解決するため、ファームウェア更新前のパラメータを一旦、RAM(Random Access Memory)上に書き出して、ファームウェア更新後の配置情報に従い、書き出したパラメータを再配置する方法が知られている。
【0004】
例えば、特許文献1には、バイナリ形式でメモリ上に保持されているパラメータをテキスト形式に変換して書き出すことにより、ファームウェアの仕様によって適切な読み出し方が異なるバイナリ形式で読み出すよりも容易にパラメータを引き継ぐことができるファームウェアの更新方法が提案されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2009−254513号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、従来技術においては、バイナリ形式のパラメータをテキスト形式に変換することにより、制御コードが含まれる暗号化された情報、例えば、パスワード等の秘匿情報を元のバイナリデータに正しく戻せない場合があるといった問題があった。
【0007】
上記課題を解決するために、本発明に係るファームウェア更新方法は、第1の不揮発性メモリに記憶されたパラメータ設定値を参照して装置を動作させるファームウェアを更新する方法であって、前記ファームウェアを更新するファームウェア更新ステップと、前記ファームウェアの更新後に、更新前の前記ファームウェアのパラメータ識別子と配置情報とを含むパラメータ定義情報を第2の不揮発性メモリから読み出す更新前パラメータ定義読み出しステップと、メモリ上にファームウェア更新前の前記第1の不揮発性メモリに記憶されたパラメータ設定値と同じ形式のメモリイメージを作成する更新前メモリイメージ作成ステップと、前記メモリイメージから前記ファームウェア更新前のパラメータ設定値を読み出しパラメータ識別子と関連付けて前記メモリに保持させる更新前パラメータ設定値保持ステップと、前記ファームウェア更新後のパラメータ配置情報に従って前記メモリに保持させたファームウェア更新前のパラメータ設定値を前記メモリイメージに再配置するパラメータ設定値再配置ステップと、パラメータ設定値が再配置された前記メモリイメージを前記第1の不揮発メモリにコピーする第1の不揮発性メモリ書き込みステップと、前記ファームウェア更新後に、更新後の前記ファームウェアのパラメータ定義情報を前記第2の不揮発性メモリ上に書き出す第2の不揮発性メモリ書き出しステップとを有することを特徴としている。
【課題を解決するための手段】
【0008】
また、本発明に係るファームウェアプログラムは、第1の不揮発性メモリに記憶されたパラメータ設定値を参照して装置を動作させるファームウェアを更新するファームウェアプログラムであって、前記ファームウェアを更新するファームウェア更新プログラムと、前記ファームウェアの更新後に、更新前の前記ファームウェアのパラメータ識別子と配置情報とを含むパラメータ定義情報を第2の不揮発性メモリから読み出す更新前パラメータ定義読み出しプログラムと、メモリ上にファームウェア更新前の前記第1の不揮発性メモリに記憶されたパラメータ設定値と同じ形式のメモリイメージを作成する更新前メモリイメージ作成プログラムと、前記メモリイメージから前記ファームウェア更新前のパラメータ設定値を読み出しパラメータ識別子と関連付けて前記メモリに保持させる更新前パラメータ設定値保持プログラムと、前記ファームウェア更新後のパラメータ配置情報に従って前記メモリに保持させたファームウェア更新前のパラメータ設定値を前記メモリイメージに再配置するパラメータ設定値再配置プログラムと、パラメータ設定値が再配置された前記メモリイメージを前記第1の不揮発メモリにコピーする第1の不揮発性メモリ書き込みプログラムと、前記ファームウェア更新後に、更新後の前記ファームウェアのパラメータ定義情報を前記第2の不揮発性メモリ上に書き出す第2の不揮発性メモリ書き出しプログラムとを有することを特徴としている。
【0009】
また、本発明に係るファームウェアプログラムは、第1の不揮発性メモリに記憶されたパラメータ設定値を参照して装置を動作させるファームウェアを更新するファームウェアプログラムであって、前記ファームウェアを更新するファームウェア更新プログラムと、前記ファームウェアの更新前に、更新前の前記ファームェアのパラメータ識別子と配置情報とを含むパラメータ定義情報を第2の不揮発性メモリから読み出す更新前パラメータ定義読み出しプログラムと、メモリ上にファームウェア更新前の前記第1の不揮発性メモリに記憶されたパラメータ設定値と同じ形式のメモリイメージを作成する更新前メモリイメージ作成プログラムと、前記メモリイメージから前記ファームウェア更新前のパラメータ設定値を読み出しパラメータ識別子と関連付けて前記メモリに保持させる更新前パラメータ設定値保持プログラムと、前記ファームウェア更新後のパラメータ配置情報に従って前記メモリに保持させたファームウェア更新前のパラメータ設定値を前記メモリイメージに再配置するパラメータ設定値再配置プログラムと、パラメータ設定値が再配置された前記メモリイメージを前記第1の不揮発メモリにコピーする第1の不揮発性メモリ書き込みプログラムと、前記ファームウェア更新後に、更新後の前記ファームウェアのパラメータ定義情報を前記第2の不揮発性メモリ上に書き出す第2の不揮発性メモリ書き出しプログラムとを有することを特徴としている。
としている。
【発明の効果】
【0010】
本発明によれば、ファームウェアの更新前のをパラメータ仕様に基づきバイナリ形式のままで更新することを可能とし、暗号化されてテキスト形式では取り扱うことができないようなデータでも取り扱うことができるファームウェア更新方法及びファームウエアプログラムを提供することができる。
【図面の簡単な説明】
【0011】
図1】画像形成装置の機能構成を説明する機能ブロック図である。
図2】ファームウェア更新前のパラメータ仕様を説明する概略図である。
図3】ファームウェア更新前のEEPROMの設定パラメータがRAMにコピーされた仮想EEPROMの概略図である。
図4】ファームウェア更新後のパラメータ仕様で初期化された仮想EEPROMの概略図である。
図5】仮想EEPROMをファームウェア更新前の設定パラメータに書き換えた仮想EEPROMの概略図である。
図6】仮想EEPROMの作成、更新方法を説明する図である。
図7】仮想EEPROMをファームウェア更新後のパラメータ仕様で初期化するため、一時的にRAMに待避させた状態を説明する図である。
図8】ファームウェア更新後のパラメータ仕様を説明する概略図である。
図9】更新後のファームウェアを動作させるための設定パラメータにファームウェア更新前の設定パラメータを反映させるための処理を説明するフローチャートである。
図10】ファームウェア更新前のパラメータ仕様を説明する概略図である。
図11】ファームウェア更新後のパラメータ仕様を説明する概略図である。
図12】更新後のファームウェアを動作させるための設定パラメータにファームウェア更新前の設定パラメータを反映させるための処理を説明するフローチャートである。
【発明を実施するための形態】
【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】
また、本実施形態の説明においては、画像形成装置の印刷機能を例にとって説明したが、本発明はこれに限定されず、ファームウェアを更新する機能を備えた全ての装置に適用可能である。
【符号の説明】
【0059】
100 画像形成装置
101 CPU
102 受信部
103 画像処理部
104 印刷部
105 EEPROM
106 設定パラメータ
107 RAM
108 仮想EEPROM
109 FlashA
110 ファームウェア
111,111' パラメータ仕様
112 FlashB
113,113' パラメータ仕様
114 システムバス
115 媒体給紙部
116 電源供給部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12