(57)【要約】【課題】書き換え可能なファームウェアを搭載した電子機器に対し、そのファームウェアを新ファームウェアに更新した後に、記録されている他バージョンのファームウェアの中から適切なファームウェアを利用することを可能にする。【解決手段】一定期間が経過した段階で現ファームウェアのその期間内のシステムエラー数を算出する（ステップＳ２）。過去バージョンのシステムエラー数をストレージデバイス１４から読み出す（ステップＳ３）。現在バージョンと過去の複数バージョンのファームウェアのシステムエラー数を比較する（ステップＳ４）。そして、現在よりシステムエラー数が少ないバージョンのファームウェアが存在するかを判定し（ステップＳ５）、存在する場合のみ、現ファームウェアを該当するバージョンに変更し（ステップＳ６）、再起動する（ステップＳ７）。【選択図】図２
2006099393.tif 000002
【特許請求の範囲】
【請求項１】
現在利用中のファームウェアである現ファームウェアが書き換え可能な不揮発性記憶手段に格納されている電子機器に対し、該電子機器のファームウェアを管理するファームウェア管理装置であって、
前記現ファームウェアを前記電子機器で実行した際に発生したエラー数を計数する計数手段と、
前記計数手段によって計数された現ファームウェアのエラー数と、過去に利用されたバージョンのファームウェアを前記電子機器で実行した際に発生したエラー数とを比較する比較手段と、
該比較手段による比較結果に基づいて、過去に利用されたバージョンのファームウェアの中から、前記現ファームウェアに比べ利用に適したバージョンのファームウェアを特定する特定手段と、
前記現ファームウェアを、前記特定手段で特定されたバージョンのファームウェアに変更する変更手段と、
を備えたことを特徴とするファームウェア管理装置。
【請求項２】
前記現ファームウェアに対し、該現ファームウェアの更新時から所定期間経過までの平均エラー数を算出する平均数算出手段をさらに備え、前記比較手段は、エラー数の代わりに、前記平均数算出手段で算出された現ファームウェアの平均エラー数と、過去に利用されたバージョンのファームウェアを前記電子機器で実行した際に発生した平均エラー数とを比較することを特徴とする請求項１に記載のファームウェア管理装置。
【請求項３】
前記特定手段は、前記比較手段による比較結果に基づいて、前記現ファームウェアの平均エラー数より少ない平均エラー数をもつバージョンのファームウェアが存在した場合、該当するバージョンのファームウェアを前記利用に適したバージョンとして特定することを特徴とする請求項２に記載のファームウェア管理装置。
【請求項４】
前記特定手段は、前記比較手段による比較結果に基づいて、比較対象である過去に利用したバージョンのファームウェアの平均エラー数に対する前記現ファームウェアの平均エラー数の割合が、所定割合以上であった場合に、該当するバージョンのファームウェアを前記利用に適したバージョンとして特定することを特徴とする請求項２に記載のファームウェア管理装置。
【請求項５】
前記エラーはシステムエラーであることを特徴とする請求項１乃至４のいずれか１項に記載のファームウェア管理装置。
【請求項６】
前記エラーは、システムエラーとその他のエラーである通常エラーとが該当し、
前記計数手段は、エラー数としてシステムエラー数及び通常エラー数をそれぞれ計数する手段を有し、
前記平均数算出手段は、平均エラー数として平均システムエラー数及び平均通常エラー数をそれぞれ算出する手段を有し、
前記比較手段は、平均エラー数として平均システムエラー数及び平均通常エラー数のそれぞれに基づく比較を行う手段を有し、
前記特定手段は、前記比較手段による比較結果に基づいて、比較対象である過去に利用したバージョンのファームウェアの平均システムエラー数に対する前記現ファームウェアの平均システムエラー数の割合が、第１の所定割合以上であった場合で、且つ、比較対象である過去に利用したバージョンのファームウェアの平均通常エラー数に対する前記現ファームウェアの平均通常エラー数の割合が、第２の所定割合以下であった場合に、該当するバージョンのファームウェアを前記利用に適したバージョンとして特定することを特徴とする請求項２に記載のファームウェア管理装置。
【請求項７】
前記比較手段は、利用された期間が所定の期間より短いバージョンのファームウェアを、比較対象から除外することを特徴とする請求項１乃至６のいずれか１項に記載のファームウェア管理装置。
【請求項８】
前記特定手段において特定の対象となるバージョンを指定する手段をさらに備えたことを特徴とする請求項１乃至７のいずれか１項に記載のファームウェア管理装置。
【請求項９】
現在利用中のファームウェアである現ファームウェアが書き換え可能な不揮発性記憶手段に格納されている電子機器に対し、該電子機器のファームウェアを管理するファームウェア管理プログラムであって、
前記現ファームウェアを前記電子機器で実行した際に発生したエラー数を計数し、前記電子機器の記憶手段に記憶して蓄積する計数ステップと、
前記計数ステップで計数された現ファームウェアのエラー数と、過去に利用されたバージョンのファームウェアを前記電子機器で実行した際に発生したエラー数とを、前記記憶手段から読み出して比較する比較ステップと、
該比較ステップでの比較結果に基づいて、過去に利用されたバージョンのファームウェアの中から、前記現ファームウェアに比べ利用に適したバージョンのファームウェアを特定する特定ステップと、
前記不揮発性記憶手段に格納されている前記現ファームウェアを、前記特定ステップで特定されたバージョンのファームウェアに変更する変更ステップと、
を含んでなることを特徴とするファームウェア管理プログラム。
【請求項１０】
前記現ファームウェアに対し、該現ファームウェアの更新時から所定期間経過までの平均エラー数を算出する平均数算出ステップをさらに含み、前記比較ステップは、エラー数の代わりに、前記平均数算出ステップで算出された現ファームウェアの平均エラー数と、過去に利用されたバージョンのファームウェアを前記電子機器で実行した際に発生した平均エラー数とを比較することを特徴とする請求項９に記載のファームウェア管理プログラム。
【請求項１１】
前記特定ステップは、前記比較ステップでの比較結果に基づいて、前記現ファームウェアの平均エラー数より少ない平均エラー数をもつバージョンのファームウェアが存在した場合、該当するバージョンのファームウェアを前記利用に適したバージョンとして特定することを特徴とする請求項１０に記載のファームウェア管理プログラム。
【請求項１２】
前記特定ステップは、前記比較ステップでの比較結果に基づいて、比較対象である過去に利用したバージョンのファームウェアの平均エラー数に対する前記現ファームウェアの平均エラー数の割合が、所定割合以上であった場合に、該当するバージョンのファームウェアを前記利用に適したバージョンとして特定することを特徴とする請求項１０に記載のファームウェア管理プログラム。
【請求項１３】
前記エラーはシステムエラーであることを特徴とする請求項９乃至１２のいずれか１項に記載のファームウェア管理プログラム。
【請求項１４】
前記エラーは、システムエラーとその他のエラーである通常エラーとが該当し、
前記計数ステップは、エラー数としてシステムエラー数を計数するステップと、エラー数として通常エラー数を計数するステップとを有し、
前記平均数算出ステップは、平均エラー数として平均システムエラー数を算出するステップと、平均エラー数として平均通常エラー数を算出するステップとを有し、
前記比較ステップは、平均エラー数として平均システムエラー数に基づく比較を行うステップと、平均エラー数として平均通常エラー数に基づく比較を行うステップとを有し、
前記特定ステップは、前記比較ステップでの比較結果に基づいて、比較対象である過去に利用したバージョンのファームウェアの平均システムエラー数に対する前記現ファームウェアの平均システムエラー数の割合が、第１の所定割合以上であった場合で、且つ、比較対象である過去に利用したバージョンのファームウェアの平均通常エラー数に対する前記現ファームウェアの平均通常エラー数の割合が、第２の所定割合以下であった場合に、該当するバージョンのファームウェアを前記利用に適したバージョンとして特定することを特徴とする請求項１０に記載のファームウェア管理プログラム。
【請求項１５】
前記比較ステップは、利用された期間が所定の期間より短いバージョンのファームウェアを、比較対象から除外することを特徴とする請求項９乃至１４のいずれか１項に記載のファームウェア管理プログラム。
【請求項１６】
前記特定ステップにおいて特定の対象となるバージョンを予め指定するステップをさらに含むことを特徴とする請求項９乃至１５のいずれか１項に記載のファームウェア管理プログラム。
【請求項１７】
当該ファームウェア管理プログラムは、前記ファームウェアの一部として含まれることを特徴とする請求項９乃至１６のいずれか１項に記載のファームウェア管理プログラム。
【請求項１８】
請求項１乃至８のいずれか１項に記載のファームウェア管理装置を備えたことを特徴とする電子機器。
【請求項１９】
請求項９乃至１７のいずれか１項に記載のファームウェア管理プログラムを実行可能に格納したことを特徴とする電子機器。
【請求項２０】
請求項９乃至１７のいずれか１項に記載のファームウェア管理プログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項２１】
現在利用中のファームウェアである現ファームウェアが書き換え可能な不揮発性記憶手段に格納されている電子機器に対し、該電子機器のファームウェアを管理するファームウェア管理方法であって、
前記現ファームウェアを前記電子機器で実行した際に発生したエラー数を計数し、前記電子機器の記憶手段に記憶して蓄積する計数ステップと、
前記計数ステップで計数された現ファームウェアのエラー数と、過去に利用されたバージョンのファームウェアを前記電子機器で実行した際に発生したエラー数とを、前記記憶手段から読み出して比較する比較ステップと、
該比較ステップでの比較結果に基づいて、過去に利用されたバージョンのファームウェアの中から、前記現ファームウェアに比べ利用に適したバージョンのファームウェアを特定する特定ステップと、
前記不揮発性記憶手段に格納されている前記現ファームウェアを、前記特定ステップで特定されたバージョンのファームウェアに変更する変更ステップと、
を含んでなることを特徴とするファームウェア管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ファームウェア管理装置、ファームウェア管理プログラム、電子機器、記録媒体、及びファームウェア管理方法に関する。
【背景技術】
【０００２】
従来から、複合機，プリンタ，通信管理機器，コンピュータなどの機器は、その機能拡張や機器の不具合解消のために、その処理プログラム、すなわちファームウェアが機器内の書き換え可能なＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）などに書き換え可能に格納されている。コンピュータでは、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ），ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）がこの処理プログラムに該当し、マザーボード上に装着されたフラッシュメモリ等の不揮発性メモリに記録されている。ファームウェアは、更新の必要がないものはマスクＲＯＭ等に書き換え不能に記録されているものもあるが、近年の情報処理技術が急速に発達していることもあり、フラッシュメモリやＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  ａｎｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）などに書き換え可能に記録されているものが多い。
【０００３】
従来から各種電子機器のファームウェアを更新する技術として、ＲＯＭ内の起動プログラムを確実且つ復元可能な状態で更新制御するコンピュータ周辺装置及びそのプログラム更新制御方法が提案されている（例えば、特許文献１を参照）。特許文献１に記載の技術は、アドレスマップを変更し、周辺装置を制御する起動プログラムを書き換え可能なＲＯＭに記憶し、その起動プログラムを書き換える際に、ワークメモリ上で、既にＲＯＭ上に書き込まれている起動プログラムをワークメモリ上に退避し、ダウンロードされた新規の起動プログラムの実行状態に基づいてＲＯＭの更新又はＲＯＭの復元を制御する。
【０００４】
また、特許文献１に記載の技術はアドレスマップの変更を必要とするため、ハードウェアが複雑になることなど種々の問題が生ずるが、このような問題を解消するためのファームウェア更新システムも提案されている（例えば、特許文献２を参照）。
【０００５】
特許文献２に記載のシステムは、フラッシュＲＯＭに格納されている旧ファームウェアを新ファームウェアに更新する場合に、番地格納手段により、フレキシブルディスク装置初期化手段の番地を示す番地情報を、不揮発性ＲＡＭの初期化手段番地格納領域に格納しておく。ファームウェアに更新後、エラーが発生すると、エラー情報をエラー情報格納領域に格納し、特別領域に、フレキシブルディスク装置初期化手段を複写し、さらにメモリの展開領域に展開し、実行し、旧ファームウェアに戻す。
【特許文献１】特開平７−１４６８３７号公報
【特許文献２】特開２０００−３２７６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
上述したように、ファームウェアをアップデート後、不具合が生じた場合には、前回のファームウェアに戻すことが通常行われている。
【０００７】
しかしながら、前回のファームウェア自体が機能はするものの致命的な不具合が存在することや、致命的ではないが頻繁にエラーが生ずることもある。上述した特許文献１，２をはじめとするファームウェア更新に関する従来技術にあっても、新ファームウェアを書き込み可能なＲＯＭへ書き込む際の書き込みエラーや、新ファームウェアを一度実行した際のエラーに対しては、前回のファームウェアに戻すという対処ができるものの、前回のファームウェア自体の不具合には何ら対処できない。
【０００８】
従って、ファームウェアの更新者は、通常、新ファームウェアを搭載できた場合には、その状態を維持し、そうでない場合や感覚的にあまりにも実行時のエラーが多い場合には、新ファームウェアを採用せずに前回のファームウェアを実行可能に電子機器に搭載した状態に戻すことになる。実際には、新ファームウェア自体を起動することにより生ずるエラーが、前回のファームウェアを起動することにより生ずるエラーに比べて格段に多い場合であっても、その電子機器に詳しいサービスマンなどでない限りそのエラーがファームウェア起因のものであることは判り難いので、ユーザは新ファームウェアを実行可能に搭載したままその電子機器を利用することになる。
【０００９】
本発明は、上述のごとき実情に鑑みてなされたものであり、書き換え可能なファームウェアを搭載した電子機器に対し、そのファームウェアを新ファームウェアに更新した後に、記録されている他バージョンのファームウェアの中から適切なファームウェアを利用することが可能な、ファームウェア管理装置、ファームウェア管理プログラム、そのファームウェア管理装置又はファームウェア管理プログラムを搭載した電子機器、そのファームウェア管理プログラムを記録したコンピュータ読み取り可能な記録媒体、及び、ファームウェア管理方法を提供することをその目的とする。
【課題を解決するための手段】
【００１０】
本発明は、上述のごとき課題を解決するために、以下の各技術手段でそれぞれ構成される。
第１の技術手段は、現在利用中のファームウェアである現ファームウェアが書き換え可能な不揮発性記憶手段に格納されている電子機器に対し、該電子機器のファームウェアを管理するファームウェア管理装置であって、前記現ファームウェアを前記電子機器で実行した際に発生したエラー数を計数する計数手段と、前記計数手段によって計数された現ファームウェアのエラー数と、過去に利用されたバージョンのファームウェアを前記電子機器で実行した際に発生したエラー数とを比較する比較手段と、該比較手段による比較結果に基づいて、過去に利用されたバージョンのファームウェアの中から、前記現ファームウェアに比べ利用に適したバージョンのファームウェアを特定する特定手段と、前記現ファームウェアを、前記特定手段で特定されたバージョンのファームウェアに変更する変更手段と、を備えたことを特徴としたものである。
【００１１】
第２の技術手段は、第１の技術手段において、前記現ファームウェアに対し、該現ファームウェアの更新時から所定期間経過までの平均エラー数を算出する平均数算出手段をさらに備え、前記比較手段は、エラー数の代わりに、前記平均数算出手段で算出された現ファームウェアの平均エラー数と、過去に利用されたバージョンのファームウェアを前記電子機器で実行した際に発生した平均エラー数とを比較することを特徴としたものである。
【００１２】
第３の技術手段は、第２の技術手段において、前記特定手段は、前記比較手段による比較結果に基づいて、前記現ファームウェアの平均エラー数より少ない平均エラー数をもつバージョンのファームウェアが存在した場合、該当するバージョンのファームウェアを前記利用に適したバージョンとして特定することを特徴としたものである。
【００１３】
第４の技術手段は、第２の技術手段において、前記特定手段は、前記比較手段による比較結果に基づいて、比較対象である過去に利用したバージョンのファームウェアの平均エラー数に対する前記現ファームウェアの平均エラー数の割合が、所定割合以上であった場合に、該当するバージョンのファームウェアを前記利用に適したバージョンとして特定することを特徴としたものである。
【００１４】
第５の技術手段は、第１乃至第４のいずれかの技術手段において、前記エラーはシステムエラーであることを特徴としたものである。
【００１５】
第６の技術手段は、第２の技術手段において、前記エラーは、システムエラーとその他のエラーである通常エラーとが該当し、前記計数手段は、エラー数としてシステムエラー数及び通常エラー数をそれぞれ計数する手段を有し、前記平均数算出手段は、平均エラー数として平均システムエラー数及び平均通常エラー数をそれぞれ算出する手段を有し、前記比較手段は、平均エラー数として平均システムエラー数及び平均通常エラー数のそれぞれに基づく比較を行う手段を有し、前記特定手段は、前記比較手段による比較結果に基づいて、比較対象である過去に利用したバージョンのファームウェアの平均システムエラー数に対する前記現ファームウェアの平均システムエラー数の割合が、第１の所定割合以上であった場合で、且つ、比較対象である過去に利用したバージョンのファームウェアの平均通常エラー数に対する前記現ファームウェアの平均通常エラー数の割合が、第２の所定割合以下であった場合に、該当するバージョンのファームウェアを前記利用に適したバージョンとして特定することを特徴としたものである。
【００１６】
第７の技術手段は、第１乃至第６のいずれかの技術手段において、前記比較手段は、利用された期間が所定の期間より短いバージョンのファームウェアを、比較対象から除外することを特徴としたものである。
【００１７】
第８の技術手段は、第１乃至第７のいずれかの技術手段において、前記特定手段において特定の対象となるバージョンを指定する手段をさらに備えたことを特徴としたものである。
【００１８】
第９の技術手段は、現在利用中のファームウェアである現ファームウェアが書き換え可能な不揮発性記憶手段に格納されている電子機器に対し、該電子機器のファームウェアを管理するファームウェア管理プログラムであって、前記現ファームウェアを前記電子機器で実行した際に発生したエラー数を計数し、前記電子機器の記憶手段に記憶して蓄積する計数ステップと、前記計数ステップで計数された現ファームウェアのエラー数と、過去に利用されたバージョンのファームウェアを前記電子機器で実行した際に発生したエラー数とを、前記記憶手段から読み出して比較する比較ステップと、該比較ステップでの比較結果に基づいて、過去に利用されたバージョンのファームウェアの中から、前記現ファームウェアに比べ利用に適したバージョンのファームウェアを特定する特定ステップと、前記不揮発性記憶手段に格納されている前記現ファームウェアを、前記特定ステップで特定されたバージョンのファームウェアに変更する変更ステップと、を含んでなることを特徴としたものである。
【００１９】
第１０の技術手段は、第９の技術手段において、前記現ファームウェアに対し、該現ファームウェアの更新時から所定期間経過までの平均エラー数を算出する平均数算出ステップをさらに含み、前記比較ステップは、エラー数の代わりに、前記平均数算出ステップで算出された現ファームウェアの平均エラー数と、過去に利用されたバージョンのファームウェアを前記電子機器で実行した際に発生した平均エラー数とを比較することを特徴としたものである。
【００２０】
第１１の技術手段は、第１０の技術手段において、前記特定ステップは、前記比較ステップでの比較結果に基づいて、前記現ファームウェアの平均エラー数より少ない平均エラー数をもつバージョンのファームウェアが存在した場合、該当するバージョンのファームウェアを前記利用に適したバージョンとして特定することを特徴としたものである。
【００２１】
第１２の技術手段は、第１０の技術手段において、前記特定ステップは、前記比較ステップでの比較結果に基づいて、比較対象である過去に利用したバージョンのファームウェアの平均エラー数に対する前記現ファームウェアの平均エラー数の割合が、所定割合以上であった場合に、該当するバージョンのファームウェアを前記利用に適したバージョンとして特定することを特徴としたものである。
【００２２】
第１３の技術手段は、第９乃至第１２のいずれかの技術手段において、前記エラーはシステムエラーであることを特徴としたものである。
【００２３】
第１４の技術手段は、第１０の技術手段において、前記エラーは、システムエラーとその他のエラーである通常エラーとが該当し、前記計数ステップは、エラー数としてシステムエラー数を計数するステップと、エラー数として通常エラー数を計数するステップとを有し、前記平均数算出ステップは、平均エラー数として平均システムエラー数を算出するステップと、平均エラー数として平均通常エラー数を算出するステップとを有し、前記比較ステップは、平均エラー数として平均システムエラー数に基づく比較を行うステップと、平均エラー数として平均通常エラー数に基づく比較を行うステップとを有し、前記特定ステップは、前記比較ステップでの比較結果に基づいて、比較対象である過去に利用したバージョンのファームウェアの平均システムエラー数に対する前記現ファームウェアの平均システムエラー数の割合が、第１の所定割合以上であった場合で、且つ、比較対象である過去に利用したバージョンのファームウェアの平均通常エラー数に対する前記現ファームウェアの平均通常エラー数の割合が、第２の所定割合以下であった場合に、該当するバージョンのファームウェアを前記利用に適したバージョンとして特定することを特徴としたものである。
【００２４】
第１５の技術手段は、第９乃至第１４のいずれかの技術手段において、前記比較ステップは、利用された期間が所定の期間より短いバージョンのファームウェアを、比較対象から除外することを特徴としたものである。
【００２５】
第１６の技術手段は、第９乃至第１５のいずれかの技術手段において、前記特定ステップにおいて特定の対象となるバージョンを予め指定するステップをさらに含むことを特徴としたものである。
【００２６】
第１７の技術手段は、第９乃至第１６のいずれかの技術手段において、当該ファームウェア管理プログラムは、前記ファームウェアの一部として含まれることを特徴としたものである。
【００２７】
第１８の技術手段は、第１乃至第８のいずれかの技術手段におけるファームウェア管理装置を備えたことを特徴とする電子機器である。
【００２８】
第１９の技術手段は、第９乃至第１７のいずれかの技術手段におけるファームウェア管理プログラムを実行可能に格納したことを特徴とする電子機器である。
【００２９】
第２０の技術手段は、第９乃至第１７のいずれかの技術手段におけるファームウェア管理プログラムを記録したコンピュータ読み取り可能な記録媒体である。
【００３０】
第２１の技術手段は、現在利用中のファームウェアである現ファームウェアが書き換え可能な不揮発性記憶手段に格納されている電子機器に対し、該電子機器のファームウェアを管理するファームウェア管理方法であって、前記現ファームウェアを前記電子機器で実行した際に発生したエラー数を計数し、前記電子機器の記憶手段に記憶して蓄積する計数ステップと、前記計数ステップで計数された現ファームウェアのエラー数と、過去に利用されたバージョンのファームウェアを前記電子機器で実行した際に発生したエラー数とを、前記記憶手段から読み出して比較する比較ステップと、該比較ステップでの比較結果に基づいて、過去に利用されたバージョンのファームウェアの中から、前記現ファームウェアに比べ利用に適したバージョンのファームウェアを特定する特定ステップと、前記不揮発性記憶手段に格納されている前記現ファームウェアを、前記特定ステップで特定されたバージョンのファームウェアに変更する変更ステップと、を含んでなることを特徴としたものである。
【発明の効果】
【００３１】
本発明によれば、書き換え可能なファームウェアを搭載した電子機器に対し、そのファームウェアを新ファームウェアに更新した後に、記録されている他バージョンのファームウェアの中から適切なファームウェアを利用することが可能となる。従って、本発明を適用することで、ファームウェアを更新した後にそれを旧バージョンのファームウェアに変更した場合であっても、そうでなくても、提供されている全てのバージョンの中で最適なバージョンのファームウェアが利用されるので、全バージョン中で不具合を最大限解消した状態にすることが可能となる。
【発明を実施するための最良の形態】
【００３２】
本発明は、電子機器のファームウェアの管理に関するものである。本発明は、ファームウェア管理装置、ファームウェア管理プログラム、電子機器、そのプログラムを記録した記録媒体、或いは、ファームウェア管理装置又はファームウェア管理プログラムにおける処理手順に沿ったファームウェアの変更を行うファームウェア管理方法としての形態もある。ここで、その電子機器において現在利用中のファームウェア（以下、現ファームウェアという）は、そのバージョンをアップグレード或いはデグレードすることが可能なように、書き換え可能な不揮発性記憶手段に格納されているものとする。
【００３３】
また、本発明に係るファームウェア管理装置は、そのファームウェア管理プログラムを実行可能に組み込んだ装置として、或いはそれに対応する手段（後述の計数手段，比較手段，特定手段，変更手段，平均数算出手段等）をハードウェアとして搭載した装置として構成できる。そして、このようなファームウェア管理装置を電子機器にハードウェアとして搭載することで、或いは、このようなファームウェア管理プログラムをファームウェアの一部として電子機器に搭載することで、実行時のエラーを少なくするファームウェアが選定されるように、ファームウェアの管理を行う。ファームウェア管理プログラムをファームウェアの一部として電子機器に搭載する例としては、電子機器の書き換え可能な不揮発性半導体メモリ（フラッシュメモリ（フラッシュＲＯＭ）等のＥＥＰＲＯＭなどのＰＲＯＭ）に、自身を管理するファームウェア管理プログラムを含むファームウェアを実行可能に格納するか、或いは図１０で後述するようにファームウェア管理プログラムのみをマスクＲＯＭなど書き換え不可能なメモリ（勿論書き換え可能なメモリでもよい）に一ファームウェアとして格納して現ファームウェアを書き換え可能な不揮発性半導体メモリに格納するなどが挙げられる。
【００３４】
このように、本発明に係る電子機器は、ここで説明するファームウェア管理装置を備えた電子機器、或いはファームウェア管理プログラムを実行可能に格納した電子機器として実現できる。ここで、電子機器としては、コピー機、ファクシミリ機、スキャナ、それらの複合機をはじめとして、ターミナルアダプタやルータ、ファイアウォールやウィルスチェック機能を組み込んだセキュリティ機器、ネットワークアダプタ等の通信機器、さらにはＰＣ（パーソナルコンピュータ）内のネットワークアダプタ，ビデオエンコーダ等の各種ボード、テレビ受像機やビデオレコーダ等の家電機器、自動車など、様々な分野の電子機器やその構成部品が挙げられる。
【００３５】
以下、本発明を、ファームウェア管理装置を中心として説明し、さらにファームウェア管理装置が、ファームウェア管理プログラムを含む現ファームウェアが実行可能に組み込まれた装置であること、及び過去に利用されたことのある歴代のバージョンのファームウェアのそれぞれにもこのファームウェア管理プログラムが含まれること、を前提として主に説明する。そして、本発明に係るファームウェア管理プログラムを含む現ファームウェアが、電子機器の一例としての、複合機のメインコントローラに実行可能に組み込まれる形態を中心に説明する。従って、ここでは、ファームウェア管理装置はメインコントローラにおける、演算装置、各種記憶装置、及びファームウェア管理プログラムから構成されることになる。なお、本発明に係るプログラム、電子機器、記録媒体、方法についても、これらの前提に限定されることなく、以下の説明が流用できることは言及するまでもない。
【００３６】
図１は、本発明の一実施形態に係るファームウェア管理装置の一構成例を示す図で、複合機のメインコントローラに組み込まれたファームウェア管理装置の一例を示す図である。図中、１はメインコントローラ（以下、単にコントローラという）、２は画像印字部（プリンタ部）、３は画像読み取り部（スキャナ部）、４は外部Ｉ／Ｆ（インターフェース）、１１はＲＡＭ、１２フラッシュＲＯＭ（以下、フラッシュメモリという）、１３はＣＰＵ、１４はストレージデバイスである。
【００３７】
ここで例示する複合機は、画像を印字する画像印字部２、原稿の画像を読み取る画像読み取り部３、及びＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）アダプタ等の外部Ｉ／Ｆなどが、それらにバス接続されたコントローラ１によって制御されている。
【００３８】
コントローラ１は、処理データ格納用のＲＡＭ（Ｒａｎｄａｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１１、実行プログラム格納用のフラッシュメモリ１２、ＣＰＵ（中央演算処理装置）１３、及び過去のファームウェア・エラー履歴格納用のストレージデバイスによって構成されている。本発明に係るファームウェア管理プログラムを含んだ現ファームウェアは、フラッシュメモリ１２に格納されており、その実行時には、ＣＰＵ１３によってＲＡＭ１１上に読み出されて実行され、この実行によりコントローラ１が機能し、画像印字部２，画像読み取り部３，外部Ｉ／Ｆ４などを集中的に制御する。なお、各部２〜４それぞれにサブコントローラが内蔵されていてもよい。さらに、現ファームウェアに対応する過去に利用したバージョンのファームウェアは、ストレージデバイス１４に格納されている。
【００３９】
そして、本実施形態に係るファームウェア管理装置は、次の計数手段，比較手段，特定手段，変更手段を備えるものとする。計数手段は、現ファームウェアをコントローラ１で実行した際に発生したエラー数を計数する。実際には、例えばＣＰＵ１３がエラー発生時毎にストレージデバイス１４等の記憶装置におけるそのバージョンに対するエラー履歴のカウントをアップすることで、この計数結果をエラー履歴として記憶させておく。この計数処理は、現ファームウェアとなった歴代のバージョン（世代）のファームウェアに対しても行われ、計数の結果がストレージデバイス１４にエラー履歴として格納される。
【００４０】
比較手段は、計数手段によって計数された現ファームウェアのエラー数と、過去に利用された１又は複数バージョンのファームウェアをコントローラ１で実行した際に発生したエラー数とを比較する。この比較処理は、例えば、ＣＰＵ１３がストレージデバイス１４からエラー履歴をＲＡＭ１１上に読み出して実行すればよい。
【００４１】
特定手段は、比較手段による比較結果に基づいて、過去に利用されたバージョンのファームウェアの中から、現ファームウェアに比べ利用に適したバージョンのファームウェアを特定する。ここで、現ファームウェアに比べて利用に適したバージョンがない場合には、特定しなければよい。この特定処理は、例えば、ＣＰＵ１３が比較処理結果に基づいて実行すればよい。そして、変更手段は、フラッシュメモリ１２等の書き換え可能な不揮発性記憶手段に記憶されている現ファームウェアを、特定手段で特定されたバージョンのファームウェアに変更する。この変更処理については後述するが、現ファームウェアがコントローラ１内にある中で最新のファームウェアである場合には、デグレードとなる。ファームウェアの変更は、ファームウェアのバージョンアップ（グレードアップ）がファームウェア自体を書き換えることで実行されることを前提に説明しているが、パッチによりアップグレードする場合であっても、変更する際には、デグレードの場合でもそのパッチ部分を削除してやればよい。
【００４２】
なお、図１においては、上述の各手段は、それらの処理内容を手順とするプログラム（本実施形態に係るファームウェア管理プログラム）、及びそれを実行するためのＣＰＵ１３等の演算装置で構成している。従って、このプログラムは、計数ステップ，比較ステップ，特定ステップ，変更ステップを含んでなる。また、本実施形態に係るファームウェア管理方法も、これらステップを含んでなる。
【００４３】
図２は、図１のファームウェア管理装置における処理例を説明するためのフロー図で、本発明の一実施形態に係るファームウェア管理プログラム及び方法による処理手順を説明するためのフロー図でもある。
【００４４】
ここでは、エラーとして、複合機ユーザによって回復が不可能なエラーであるシステムエラーのみを考慮した例を説明するが、その他のエラー（通信エラーやジャム等も含む）に対してのみ対応してもよいし、その双方を合わせて取り扱っても、さらには後述する他の実施形態のごとくその双方を個々に取り扱ってもよい。なお、システムエラーは、システムが停止するような致命的なエラーを指し、電源を入れ直して再起動によって回復するようなエラーや、別システムから起動させて復帰可能なエラーも含むものとする。
【００４５】
まず、一定期間経過したか否かを判定し（ステップＳ１）、一定期間が経過した段階でステップＳ２以降の処理を実行する。一定期間としては、１ヶ月，１０日，１日など適宜決めればよく、また、電子機器或いはそのコントローラ１の稼動時間をベースにした期間に定めてもよい。また、ここでは、新ファームウェアを現ファームウェアとしてアップデートした時点から一定期間経過後にステップＳ２以降の処理を施すものとして説明するが、このファームウェアとは異なるファームウェア（バージョンが異なるのではなく対象が異なるファームウェア）を導入したときにそれとの相性などからエラーが発生し始めることも考えられ、ステップＳ２以降の処理を一定期間毎に実行するよう構成してもよい。
【００４６】
ステップＳ２では、現ファームウェアのその期間内のシステムエラー数を算出する（ステップＳ２）。過去バージョンのシステムエラー数をストレージデバイス１４から読み出す（ステップＳ３）。現在バージョンと過去の複数バージョンのファームウェアのシステムエラー数を比較する（ステップＳ４）。そして、現在よりシステムエラー数が少ないバージョンのファームウェアが存在するかを判定し（ステップＳ５）、存在しない場合には処理を終了する。一方、ステップＳ５において存在すると判定された場合には、現ファームウェアを該当するバージョンに変更し（ステップＳ６）、再起動する（ステップＳ７）。再起動後は、上述の現ファームウェア（既に以前に利用していたファームウェアと化している）に比べ、利用に適したバージョンのファームウェアによってコントローラ１が駆動されることになる。そして、そのバージョンのファームウェアが、変更前に利用していたファームウェアより古いファームウェアであっても、現ファームウェアになる。
【００４７】
図３は、図２のファームウェア管理処理において実行されるファームウェア変更処理を説明するためのフロー図である。
【００４８】
上述したステップＳ６，Ｓ７におけるファームウェアの変更処理について補足的に説明する。変更前は、現在バージョンのファームウェア（現ファームウェア）がフラッシュメモリ１２に格納されており、ＲＡＭ１１上に転送されて実行中である。まず、そのフラッシュメモリ１２に、ストレージデバイス１４から該当するバージョンのファームウェアを読み出して上書きする（ステップＳ１１）。このとき、上書きすることで現ファームウェアは消去されるが、上述のごとくＲＡＭ１１上に一時的に記憶されており、現ファームウェアの実行に差し支えはない。また、ステップＳ１１において、上書きせずに、現ファームウェアをストレージデバイス１４に移動させるようにしてもよい。この場合、過去のファームウェアの中の１バージョンとして、この現ファームウェアも格納されることになる。
【００４９】
ステップＳ１１の後、システムエラー数をリセットし（ステップＳ１２）、再起動する（ステップＳ１３）。この後は通常の起動後の処理を行うが、この時点で既に変更バージョン（更新バージョン）のファームウェアがフラッシュメモリ１２に格納されており、従って、コントローラ１のＣＰＵ１３は変更バージョンのファームウェアをＲＡＭ１１上に転送して実行する（ステップＳ１４）。ステップＳ１４の処理からは、コントローラ１では変更バージョンのファームウェアに基づく制御がなされている。
【００５０】
以上、本実施形態は、現行ファームウェアでエラーが発生した場合に、過去複数世代のファームウェアにおけるエラー発生状況との比較から、ファームウェアをデグレード（アップグレードの場合もある）する世代を特定する。従って、従来の技術では、このような過去に利用した複数世代におけるエラー発生頻度からデグレードするといった処理ができなかったが、本実施形態によれば、ファームウェアをバージョンアップ後にシステムエラー等が多発した場合、緊急避難的に過去の複数世代の中からエラーの少ないファームウェアに戻すことでシステムエラー等発生を抑えることが可能となる。このように、本実施形態によれば、書き換え可能なファームウェアを搭載した電子機器に対し、そのファームウェアを新ファームウェアに更新した後に、記録されている１又は複数のバージョンのファームウェアの中から適切なファームウェアを、喩えそれが旧ファームウェアでありデグレードとなったとしても選択して利用することが可能となる。
【００５１】
図４は、図１のファームウェア管理装置で表される本発明の他の実施形態に係るファームウェア管理装置における処理例を説明するためのフロー図で、本発明の他の実施形態に係るファームウェア管理プログラム及び方法による処理手順を説明するためのフロー図でもある。
【００５２】
本発明に係る他の実施形態として、上述した実施形態において、次の平均数算出手段をファームウェア管理装置に備え、エラー数を単純に比較するのではなく、その平均で比較するようにすることが好ましい。
【００５３】
平均数算出手段は、現ファームウェアに対し、その現ファームウェアの更新時から所定期間経過までの平均エラー数を、例えば計数手段での計数値（エラー発生回数）を所定期間で除算することで算出する手段である。ここで、更新時だけからではなくその後の所定期間の平均を算出するようにしてもよい。また、所定期間としては例えば上述したような期間（１日，１０日等）でよいし、起動中の時間も鑑みて平均エラー数を算出するようにしてもよい。そして、比較手段は、エラー数の代わりに、平均数算出手段で算出された現ファームウェアの平均エラー数と、過去に利用されたバージョンのファームウェアを電子機器で実行した際に発生した平均エラー数とを比較する。そして、本実施形態に係るファームウェア管理プログラムはこれら手段に対応するステップを含んでなる。
【００５４】
そして、本実施形態においては、次の特定手段を備えることが好ましい。この特定手段は、比較結果に基づいて、現ファームウェアの平均エラー数より少ない平均エラー数をもつバージョンのファームウェアが存在した場合、該当するバージョンのファームウェアを利用に適したバージョンとして特定する。そして、本実施形態に係るファームウェア管理プログラムはこの特定手段に対応するステップを含んでなる。
【００５５】
本実施形態におけるファームウェア変更処理は、まず、図２で説明したステップＳ１と同じ処理（ステップＳ２１）を実行し、一定期間が経過した段階でステップＳ２２以降の処理を実行する。なお、ここでも、エラーとしてシステムエラーのみを考慮した場合を例示する。
【００５６】
ステップＳ２２では、現ファームウェアの１日当りの平均システムエラー数を算出する（ステップＳ２２）。過去バージョンのシステムエラー数をストレージデバイス１４から読み出す（ステップＳ２３）、過去バージョンそれぞれの１日当りの平均システムエラー数を算出する（ステップＳ２４）。そして、現在バージョンと過去の複数バージョンのファームウェアの平均システムエラー数を比較する（ステップＳ２５）。そして、現在より平均システムエラー数が少ないバージョンのファームウェアが存在するかを判定し（ステップＳ２６）、存在しない場合には処理を終了する。一方、ステップＳ２６において存在すると判定された場合には、現ファームウェアを該当するバージョンに変更し（ステップＳ２７）、再起動する（ステップＳ２８）。これ以降は、上述したように、利用に適したバージョンのファームウェアによってコントローラ１が駆動されることになる。
【００５７】
以上、本実施形態によれば、図１乃至図３を参照して説明した実施形態の効果に加えて、突発的なエラー数からデグレードなど変更を行うのではなく、平均エラー数の比較からデグレードなど変更を行うので、拙速なバージョン切替とはならずに済む。
【００５８】
図５は、図１のファームウェア管理装置で表される本発明の他の実施形態に係るファームウェア管理装置における処理例を説明するためのフロー図で、本発明の他の実施形態に係るファームウェア管理プログラム及び方法による処理手順を説明するためのフロー図でもある。
【００５９】
本発明の他の実施形態として、上述した平均数算出手段を備える実施形態において、特定手段において利用に適したバージョンを特定するに際し、現ファームウェアの平均エラー数の割合に基づいた特定を行うことが好ましい。すなわち、本実施形態における特定手段は、比較手段による比較結果に基づいて、比較対象である過去に利用したバージョンのファームウェアの平均エラー数に対する現ファームウェアの平均エラー数の割合が、所定割合以上であった場合に、該当するバージョンのファームウェアを利用に適したバージョンとして特定する。そして、本実施形態に係るファームウェア管理プログラムはこの特定手段に対応するステップを含んでなる。
【００６０】
本実施形態におけるファームウェア変更処理は、図４で説明したステップＳ２１〜Ｓ２６と同じ処理（ステップＳ３１〜Ｓ３６）を行った後、ステップＳ３６で存在しないと判定された場合にはそのまま処理を終了し、存在すると判定された場合には、ステップＳ３７へ進む。なお、ここでも、エラーとしてシステムエラーのみを考慮した場合を例示する。
【００６１】
ステップＳ３７では、現在バージョンの平均システムエラー数が該当バージョンより一定の割合ａ以上であるか否かを判定する。そして、一定割合ａ以上である場合にのみ、現ファームウェアを該当するバージョンに変更して（ステップＳ３８）、再起動する（ステップＳ３９）。これ以降は、上述したように、利用に適したバージョンのファームウェアによってコントローラ１が駆動されることになる。
【００６２】
以上、本実施形態によれば、図４を参照して説明した実施形態の効果に加えて、過去のファームウェアより現行ファームウェアがエラーが多かったとしても、僅差の場合にデグレードすることがなくなるので、他の問題を起こす虞がなくなる。
【００６３】
図６は、図１のファームウェア管理装置で表される本発明の他の実施形態に係るファームウェア管理装置における処理例を説明するためのフロー図で、本発明の他の実施形態に係るファームウェア管理プログラム及び方法による処理手順を説明するためのフロー図でもある。
【００６４】
本発明の他の実施形態として、上述した平均数算出手段を備えた実施形態において、特定処理を行う前段階で、システムエラーとその他のエラーである通常エラー（通信エラーやジャム発生）とのそれぞれに対して別々に処理を行うことが好ましい。そのため、本実施形態においては、計数手段は、システムエラー数を計数する手段と、通常エラー数を計数する手段との双方を有し、平均数算出手段は、平均システムエラー数を算出する手段と平均通常エラー数を算出する手段との双方を有し、比較手段は、平均システムエラー数に基づいて比較を行う手段と平均通常エラー数に基づいて比較を行う手段との双方を有する。さらに、本実施形態における特定手段は、比較手段による比較結果に基づいて、比較対象である過去に利用したバージョンのファームウェアの平均システムエラー数に対する現ファームウェアの平均システムエラー数の割合が、第１の所定割合以上であった場合で、且つ、比較対象である過去に利用したバージョンのファームウェアの平均通常エラー数に対する現ファームウェアの平均通常エラー数の割合が、第２の所定割合以下であった場合に、該当するバージョンのファームウェアを利用に適したバージョンとして特定する。そして、本実施形態に係るファームウェア管理プログラムはこれら手段に対応するステップを含んでなる。
【００６５】
本実施形態におけるファームウェア変更処理は、まず、図５で説明したステップＳ３１〜Ｓ３７と同様の処理（ステップＳ４１〜Ｓ４７）を行う。但し、ステップＳ４２〜Ｓ４４での処理は、システムエラー数に対してのみ施すのではなく、通常エラー数に対しても施すものとする。
【００６６】
本実施形態においては、ステップＳ４６，Ｓ４７の判定で、現ファームウェアより平均システムエラー数が少ないバージョンＶのファームウェアが存在する場合であって、且つ、現ファームウェアの平均システムエラー数が、バージョンＶより一定の割合Ａ以上であった場合であっても、一律にファームウェアの変更を実行する処理とはなっていない。すなわち、ステップＳ４７でＹＥＳの場合、今度は、平均通常エラー数の平均値によってファームウェアの変更が必要か否か（変更することが適しているか否か）を判定する。
【００６７】
具体的には、まず、ステップＳ４２〜Ｓ４４により算出した現ファームウェア及び利用したことのある他のバージョンのファームウェアに対する平均通常エラー数に基づいて、現在バージョンと過去に利用した複数バージョンのファームウェアの平均通常エラー数を比較する（ステップＳ４８）。平均通常エラー数の算出については、ステップＳ４８での比較処理までに実行していればよい。ステップＳ４８での比較の結果、現在バージョンの平均通常エラー数がバージョンＶより一定の割合Ｂ以下か否かを判定する（ステップＳ４９）。割合Ｂより大きい場合には処理を終了し、割合Ｂ以下である場合のみ、現ファームウェアを該当するバージョンＶに変更して（ステップＳ５０）、再起動する（ステップＳ５１）。これ以降は、上述したように、利用に適したバージョンのファームウェアによってコントローラ１の制御がなされることになる。
【００６８】
ここで、割合Ａ，Ｂの値は、基本的に設計事項であるが、例えば、Ａ＝１．４（１４０％）、Ｂ＝０．５（５０％）とすると、現ファームウェアがバージョンＶのファームウェアより平均システムエラー数において４割以上増しでも、平均通常エラー数において５割以下であれば、現ファームウェアをバージョンＶに変更しないことになる。逆に、現ファームウェアがバージョンＶより平均システムエラー数において４割以上増しで、平均通常エラー数において５割より大きければ、現ファームウェアをバージョンＶに変更することになる。通常の使用状態を鑑みると、現ファームウェアが蓄積された中で最新のバージョンとなっていることが多く、この変更はデグレードに該当する。
【００６９】
以上、本実施形態によれば、図４を参照して説明した実施形態の効果に加えて、現行ファームウェアのシステムエラーが増加していたとしても、それを補うに足るほど通常エラーが低減している場合にはデグレードなど変更を禁止するので、実際のトラブルを少なく保つことができる。
【００７０】
図７は、図１のファームウェア管理装置で表される本発明の他の実施形態に係るファームウェア管理装置における処理例を説明するためのフロー図で、本発明の他の実施形態に係るファームウェア管理プログラム及び方法による処理手順を説明するためのフロー図でもある。
【００７１】
本発明の他の実施形態として、図６で説明した実施形態において通常エラーが少なくてもあまりにもシステムエラーが多い場合には変更処理を実行するようにすることが好ましい。そして、本実施形態に係るファームウェア管理装置ではこのような変更処理を実行する手段を備えるものとし、また、本実施形態に係るファームウェア管理プログラムはこの手段に対応するステップを含んでなる。
【００７２】
本実施形態におけるファームウェア変更処理は、まず、図６で説明したステップＳ４１〜Ｓ４６と同じ処理（ステップＳ６１〜Ｓ６６）を行う。ステップＳ６２〜Ｓ６４での処理でも、システムエラー数に対してのみ施すのではなく、通常エラー数に対しても施す。そして、ステップＳ６６において、平均システムエラー数の少ないバージョンＶが存在した場合のみ、ステップＳ６７以降の処理に進む。本実施形態においては、平均システムエラー数による比較においてその閾値を２つ、平均通常エラー数による比較においてその閾値を１つ設け、ステップＳ６７以降で閾値処理がなされる。
【００７３】
ステップＳ６７では、現在バージョンの平均システムエラー数がバージョンＶより一定の割合Ｃ以上か否かを判定する。この判定の結果、割合Ｃ以上であれば、現ファームウェアを該当するバージョンＶに変更して（ステップＳ７１）、再起動する（ステップＳ７２）。これ以降は、上述したように、利用に適したバージョンのファームウェアによってコントローラ１の制御がなされることになる。
【００７４】
一方、ステップＳ６７において、割合Ｃ以上でないと判定された場合、ステップＳ６８へ進む。ステップＳ６８では、現ファームウェアの平均システムエラー数がバージョンＶより一定の割合Ｄ以上か否かを判定する。この判定の結果、割合Ｄ以上でなければ、処理を終了し、割合Ｄ以上であればステップＳ６９へ進む。ステップＳ６９では、現ファームウェアと過去に利用された複数バージョンのファームウェアの平均通常エラー数を比較する。平均通常エラー数の算出については、ステップＳ７０での比較処理までに実行していればよく、この例ではステップＳ６２〜Ｓ６４で算出している。ステップＳ６９での比較の結果、現ファームウェアの平均通常エラー数がバージョンＶより一定の割合Ｂ以下か否かを判定する（ステップＳ７０）。割合Ｂより大きい場合には処理を終了し、割合Ｂ以下である場合のみ、現ファームウェアを該当するバージョンＶに変更して（ステップＳ７１）、再起動する（ステップＳ７２）。これ以降は、上述したように、利用に適したバージョンのファームウェアによってコントローラ１の制御がなされることになる。
【００７５】
ここで、割合Ｃ，Ｄ，Ｂの値は、基本的に設計事項であり、Ｃ＞Ｄであればよく、例えば、Ｃ＝１．５（１５０％）、Ｄ＝１．１（１１０％）、Ｂ＝０．５（５０％）とすると、現ファームウェアがバージョンＶのファームウェアより平均システムエラー数において５割以上増しでなくても、１割以上増しで、且つ平均通常エラー数において５割より大きければ、現ファームウェアをバージョンＶに変更することになる。通常の使用状態を鑑みると、現ファームウェアが蓄積された中で最新のバージョンとなっていることが多く、この変更はデグレードに該当する。逆に、現ファームウェアがバージョンＶより平均システムエラー数において１割以上５割未満の増しでも、平均通常エラー数において５割以下であれば、現ファームウェアをバージョンＶに変更しないことになる。このように、本発明では、なるべくバージョンの変更を行わなくて済むような処理を追加することが好ましい。
【００７６】
以上、本実施形態によれば、図６を参照して説明した実施形態の効果に加えて、通常エラーが少なくてもあまりにもシステムエラーが多い場合には変更処理を実行するので、システムエラーの許容限度を設け、適切に変更処理を行うことができる。
【００７７】
図８は、図１のファームウェア管理装置で表される本発明の他の実施形態に係るファームウェア管理装置における処理例を説明するためのフロー図で、本発明の他の実施形態に係るファームウェア管理プログラム及び方法による処理手順を説明するためのフロー図でもある。
【００７８】
本発明の他の実施形態として、上述した各実施形態における比較処理に際し、利用された期間が所定の期間より短いバージョンのファームウェアを、比較対象から除外することが好ましい。ファームウェアは、ある程度の間隔でリリースされているが、たまたま算定期間が短いバージョンがあった場合、エラー数が少ないか偏りがあることが考えられ、他の問題が生ずることも考えられるので、比較対象から除外することが好ましい。そして、本実施形態に係るファームウェア管理装置ではこのような除外処理を実行する手段を備えるものとし、また、本実施形態に係るファームウェア管理プログラムはこの手段に対応するステップを含んでなる。以下、説明の簡略化のため、本実施形態を、図２を参照して説明した実施形態に対してこの除外を実行する例のみを図８を参照して説明するが、上述した他の実施形態にもこの説明を流用できる。
【００７９】
本実施形態におけるファームウェア変更処理は、まず、図２で説明したステップＳ１〜Ｓ３と同じ処理（ステップＳ８１〜Ｓ８３）を行う。なお、ここでも、エラーとしてシステムエラーのみを考慮した場合を例示する。
【００８０】
ステップＳ８３の後、過去に利用したバージョンから使用期間の短いバージョンを取り除いた変更候補リスト（更新候補リストともいえる）を作成する（ステップＳ８４）。そして、現在バージョンと変更候補リストにある過去に利用された複数バージョンとに対し、ファームウェアのシステムエラー数を比較する（ステップＳ８５）。そして、現在よりシステムエラー数が少ないバージョンのファームウェアが変更候補リスト内に存在するかを判定し（ステップＳ８６）、存在しない場合には処理を終了する。一方、ステップＳ８６において存在すると判定された場合には、現ファームウェアを該当するバージョンに変更し（ステップＳ８７）、再起動する（ステップＳ８８）。再起動後は、上述のごとく利用に適したバージョンのファームウェアによってコントローラ１の制御がなされることになる。
【００８１】
以上、本実施形態によれば、上述した各実施形態の効果に加えて、あまりに短い期間でしか利用されていないファームウェアへの変更（デグレード又はアップグレード）を禁止するよう比較対象から除外するので、短期間のみ使用されているような他のエラーが予想されるバージョンのファームウェアに変更されることがなくなる。
【００８２】
図９は、図１のファームウェア管理装置で表される本発明の他の実施形態に係るファームウェア管理装置における処理例を説明するためのフロー図で、本発明の他の実施形態に係るファームウェア管理プログラム及び方法による処理手順を説明するためのフロー図でもある。
【００８３】
本発明の他の実施形態として、上述した各実施形態における特定処理に際し、予め、特定の対象となるバージョンを指定しておくようにすることが好ましい。すなわち、本実施形態では、ファームウェア管理装置に、特定手段において特定の対象となるバージョンを指定する手段を設け、予めこのような指定を行っておく。なお、特定の対象とならないバージョンの指定であっても当然よい。
【００８４】
そして、本実施形態に係るファームウェア管理プログラムはこの手段に対応するステップを含んでなる。例示しているような、ファームウェア管理プログラムが現ファームウェアや過去のファームウェアに含まれる形態にあっては、ファームウェア内にどのバージョンまで遡っていいか、或いはこのバージョンまでは互換性があるなどという情報が記述され、その情報に基づく処理がなされる。これにより、例えば、デグレードの対象が現ファームウェアから過去Ｎ世代までを限度とするような指定も可能である。なお、ファームウェア内に使用可能なグレードを記載しておく際などは、その後のアップグレードを可能とするように、このバージョン以上も特定可能としておくか、或いは、所定期間毎に変更処理を行ってアップグレードできなくするのではなく、変更処理を基本的に一度だけとするとよい。以下、説明の簡略化のため、本実施形態を、図２を参照して説明した実施形態に対してこの除外を実行する例のみを図９を参照して説明するが、上述した他の実施形態にもこの説明を流用できる。
【００８５】
本実施形態におけるファームウェア変更処理は、まず、図２で説明したステップＳ１〜Ｓ３と同じ処理（ステップＳ９１〜Ｓ９３）を行う。なお、ここでも、エラーとしてシステムエラーのみを考慮した場合を例示する。
【００８６】
ステップＳ９３の後、過去に利用したバージョンから、現在バージョンで限定されたバージョンのみからなる変更候補リスト（更新候補リストともいえる）を作成する（ステップＳ９４）。そして、現在バージョンと変更候補リストにある過去に利用された複数バージョンとに対し、ファームウェアのシステムエラー数を比較する（ステップＳ９５）。そして、現在よりシステムエラー数が少ないバージョンのファームウェアが変更候補リスト内に存在するかを判定し（ステップＳ９６）、存在しない場合には処理を終了する。一方、ステップＳ９６において存在すると判定された場合には、現ファームウェアを該当するバージョンに変更し（ステップＳ９７）、再起動する（ステップＳ９８）。再起動後は、上述のごとく利用に適したバージョンのファームウェアによってコントローラ１の制御がなされることになる。
【００８７】
以上、本実施形態によれば、上述した各実施形態の効果に加えて、あまりにも古いバージョンに遡ってデグレードすることを禁止するよう比較対象から除外するので、他の問題が予想されるバージョンのファームウェアに変更されることがなくなる。例えば、ファームウェアのアップグレードが、その電子機器に接続されるネットワークシステムの規格変更などに伴うものである場合などにも、遡り過ぎでデグレードされてしまうようなことを防ぐことができる。
【００８８】
図１０は、本発明の他の実施形態に係るファームウェア管理装置の一構成例を示す図で、図中、５はファームウェア管理部であり、その他の構成要素は図１のそれと同様であり、その詳細な説明を省略する。
【００８９】
図１０では、図１のファームウェア管理装置と異なり、ファームウェア管理装置としてコントローラ１内ではなくファームウェア管理部５を別途設けている。ファームウェア管理部５は、例えば、コントローラ１に接続されたサブコントローラでなり、このサブコントローラ内にそのファームウェアとして本発明に係るファームウェア管理プログラムが実行可能にマスクＲＯＭ，フラッシュメモリ等の記憶手段に格納されている。この例では、実質的に、まずサブコントローラを起動させることになる。
【００９０】
このように、電子機器（或いは電子機器をコントロールするための他の電子機器；但し他の電子機器からの起動が必要となる）のファームウェアの一つとしてのファームウェア管理プログラムが、現ファームウェアやそれに対応する過去のバージョンのファームウェアとは別途組み込まれるよう、構成してもよい。
【００９１】
最後に、本発明によるファームウェア管理の機能を実現するためのファームウェア管理プログラムやデータを記憶した記録媒体の実施形態について簡単に説明する。記録媒体としては、具体的には、ＣＤ−ＲＯＭ、光磁気ディスク、ＤＶＤ−ＲＯＭ、ＦＤ、フラッシュメモリ、及びその他各種ＲＯＭやＲＡＭ等が想定でき、上述した本発明の各実施形態のファームウェア管理プログラムを、これら記録媒体に記録して流通させることにより、当機能の実現を容易にする。そして、コンピュータ等の情報処理装置に、上述のごとくの記録媒体を装着して情報処理装置によりプログラムを読み出すか、若しくは情報処理装置が備えている記録媒体に当プログラムを記憶させておき、必要に応じて読み出すことにより、本発明に係わるファームウェア管理の機能を実行することができる。
【図面の簡単な説明】
【００９２】
【図１】本発明の一実施形態に係るファームウェア管理装置の一構成例を示す図である。
【図２】図１のファームウェア管理装置における処理例を説明するためのフロー図である。
【図３】図２のファームウェア管理処理において実行されるファームウェア変更処理を説明するためのフロー図である。
【図４】図１のファームウェア管理装置で表される本発明の他の実施形態に係るファームウェア管理装置における処理例を説明するためのフロー図である。
【図５】図１のファームウェア管理装置で表される本発明の他の実施形態に係るファームウェア管理装置における処理例を説明するためのフロー図である。
【図６】図１のファームウェア管理装置で表される本発明の他の実施形態に係るファームウェア管理装置における処理例を説明するためのフロー図である。
【図７】図１のファームウェア管理装置で表される本発明の他の実施形態に係るファームウェア管理装置における処理例を説明するためのフロー図である。
【図８】図１のファームウェア管理装置で表される本発明の他の実施形態に係るファームウェア管理装置における処理例を説明するためのフロー図である。
【図９】図１のファームウェア管理装置で表される本発明の他の実施形態に係るファームウェア管理装置における処理例を説明するためのフロー図である。
【図１０】本発明の他の実施形態に係るファームウェア管理装置の一構成例を示す図である。
【符号の説明】
【００９３】
１…メインコントローラ（コントローラ）、２…画像印字部、３…画像読み取り部、４…外部Ｉ／Ｆ、５…ファームウェア管理部、１１…ＲＡＭ、１２…フラッシュＲＯＭ（フラッシュメモリ）、１３…ＣＰＵ、１４…ストレージデバイス。
【図１】
2006099393.tif 000003
【図２】
2006099393.tif 000004
【図３】
2006099393.tif 000005
【図４】
2006099393.tif 000006
【図５】
2006099393.tif 000007
【図６】
2006099393.tif 000008
【図７】
2006099393.tif 000009
【図８】
2006099393.tif 000010
【図９】
2006099393.tif 000011
【図１０】
2006099393.tif 000012