(57)【要約】      （修正有）【課題】ファームウェアのバグなどの発生に対応し、安定した装置運用を実現するため、複数世代のファームウェアを小容量のフラッシュメモリでも格納でき、世代管理を行えるファームウェア世代管理機構を提供する。【解決手段】装置のファームウェアのうち、装置構造に関係しない機能的な部分である機能モジュールを格納するコモンブロック２と、装置のファームウェアのうち、装置構造に関係し、装置起動、保守などの機能のみの部分であるブートファームウェアを格納する複数のブートブロック３とを有し、装置構造に関係しない機能部分であるコモンブロック２に格納されるファームウェアは１世代のみであり、装置構造に依存し、装置起動、保守などの限定機能のみでサイズの小さいブートブロック３のファームウェアは複数世代分を格納しておく。【選択図】図２
2007310551.tif 000002
【特許請求の範囲】
【請求項１】
装置のファームウェアを格納するフラッシュメモリのファームウェア世代管理機構において、
装置のファームウェアのうち、特定の装置構造に関係しない機能的な部分である機能モジュールを格納するコモンブロックと、
装置のファームウェアのうち、特定の装置構造に関係し、装置保守および装置起動、フラッシュメモリへのファームウェア転送に必要な機能のみの部分であるブートファームウェアを格納する複数のブートブロックと、
を有することを特徴とするフラッシュメモリのファームウェア世代管理機構。
【請求項２】
装置のファームウェアを格納するフラッシュメモリのファームウェア世代管理機構において、
コモンブロックのファームウェアを書き換える場合に、コモンブロックのファームウェアの正当性を示す正当性提示手段を備える、
ことを特徴とする請求項1に記載のフラッシュメモリのファームウェア世代管理機構。
【請求項３】
装置のファームウェアを格納するフラッシュメモリのファームウェア世代管理機構において、
現在運用中のファームウェアを格納しているブートブロックを示す運用中提示手段を備える、
ことを特徴とする請求項１または２記載のフラッシュメモリのファームウェア世代管理機構。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、装置のファームウェアを格納しておくフラッシュメモリに関し、バグなどの障害が発生した場合でも装置を安定して運用できるように、複数世代のファームウェアを格納する場合の世代管理を、ファームウェアのモジュール構成を効率的な構成とすることで、小容量のフラッシュメモリでも実現することを可能とするフラッシュメモリのファームウェア世代管理機構に関するものである。
【背景技術】
【０００２】
装置のブートや制御を行うファームウェアもプログラムであり、バグなどの障害が発生したり、装置の構造が変更されたりした場合に、これに対応するように、新しいファームウェアに書き換えるため、書き換え可能なフラッシュメモリに格納されていることが多い。
【０００３】
また、新しいファームウェアにはバグが潜んでいる可能性があり、安定した装置の運用のための冗長性をもたせるためには、フラッシュメモリに旧世代を含めた複数世代のファームウェアを格納しておくことが望ましい。
【０００４】
しかし、単純に複数世代のファームウェアをフラッシュメモリに格納すると、世代数×１世代のファームウェアサイズのファームウェアを格納するためのフラッシュメモリの容量が必要となり、容量に比例したコストの高いフラッシュメモリを使用しなければならず、また、ファームウェアの書き換えも1世代分のファームウェア全体を書き換えなければならず、時間がかかるという問題があった。
【０００５】
そこで、図５に示すように、1世代分のファームウェアをいくつかのモジュールに分割し、ファームウェアの修正時には、修正が必要なモジュールだけを書き換えるファームウェアの書き換え方法が考案されている（特許文献１を参照）。
【０００６】
しかし、このような方法でも、複数世代のファームウェアを格納するためには、複数世代分のファームウェアサイズの容量のフラッシュメモリが必要であり、コストの高い大容量のフラッシュメモリを使用しなければならないという問題があった。
【０００７】
【特許文献１】特開平２００２−３４２１００号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
前記のごとく、従来の技術では次のような問題点がある。
【０００９】
装置のブートや制御を行うファームウェアもプログラムであり、バグなどの障害が発生したり、装置の構造が変更されたりした場合には、これに対応するように、新しいファームウェアに書き換えるため、書き換え可能なフラッシュメモリに格納されている場合が多く、また、新しいファームウェアにはバグが潜んでいる可能性があり、安定した装置の運用のためには、フラッシュメモリに旧世代を含めた複数世代のファームウェアを格納しておき、冗長性をもたせることも行われている。
【００１０】
しかし、単純に複数世代のファームウェアをフラッシュメモリに格納すると、世代数×１世代のファームウェアサイズのファームウェアを格納するためのフラッシュメモリの容量が必要となり、容量に比例したコストの高いフラッシュメモリを使用しなければならず、また、ファームウェアの書き換えも１世代分のファームウェア全体を書き換えなければならず、時間がかかるという問題があった。
【００１１】
そこで、１世代分のファームウェアをいくつかのモジュールに分割し、ファームウェアの修正時には、修正が必要なモジュールだけを書き換えるファームウェアの書き換え方法が考案されているが、このような方法でも、複数世代のファームウェアを格納するためには、複数世代分のファームウェアサイズの容量のフラッシュメモリが必要であり、コストの高い大容量のフラッシュメモリを使用しなければならないという問題があった。
【００１２】
この発明の課題は、ファームウェアのバグなどの障害の発生や装置の構造変更に対応し、安定した装置運用を実現するために冗長性をもたせるため、複数世代のファームウェアを小容量のフラッシュメモリでも格納でき、適切に世代管理を行えるフラッシュメモリのファームウェア世代管理機構を提供することにある。
【課題を解決するための手段】
【００１３】
前記の問題点を解決するために、この発明では次に示す手段を取った。
【００１４】
装置のファームウェアのうち、特定の装置構造に関係しない機能的な部分である機能モジュールを格納するコモンブロックと、装置のファームウェアのうち、特定の装置構造に関係し、装置保守および装置起動、ファームウェア転送に必要な機能のみの部分であるブートファームウェアを格納する複数のブートブロックとを有する。
【００１５】
特定の装置構造に関係しない機能部分であるコモンブロックに格納されるファームウェアは１世代のみであり、装置構造に依存し、装置起動や保守処理などの限定された機能のみでサイズの小さいブートブロックのファームウェアを複数世代格納しておくことで、ファームウェア全体としての格納領域の縮小が可能となる。
【００１６】
なお、ファームウェアの保守処理を矛盾なく、適正に行うために、フラッシュメモリの管理域にはコモンブロックのファームウェアの正当性を示す正当性提示手段を備え、また、ファームウェアの世代管理を適正に行うために、現在運用中のファームウェアを格納しているブートブロックを示す運用中提示手段を備えている。
【発明の効果】
【００１７】
この発明により、以下に示すような効果が期待できる。
【００１８】
コストの低い小容量のフラッシュメモリを使用する場合でも、バグなどの障害や装置構造の変更などにも対応し、安定した装置運用が行えるよう、複数世代のファームウェアを格納、管理することができ、冗長性をもったファームウェアの世代管理機構を提供することができるようになる。
【発明を実施するための最良の形態】
【００１９】
この発明は、次に示す実施の形態を取った。
【００２０】
装置のファームウェアのうち、特定の装置構造に関係しない機能的な部分、例えば装置起動などの特定の装置固有の処理が必要な部分ではなく、どのような装置構成であっても必要となる機能部分である機能モジュールを格納するコモンブロックを備え、ここに複数世代のファームウェアに共通の機能を実現するためのプログラムモジュールを格納する。
【００２１】
これにより、この機能モジュールを複数世代のブートファームウェアで共通して使用することで、どのファームウェア世代にも共通な機能を実現しているプログラムを重複してもつ必要性をなくし、ファームウェアの格納サイズの削減を図ることができる。
【００２２】
装置のファームウェアのうち、特定の装置構造に関係し、装置保守および装置起動、フラッシュメモリへのファームウェア転送に必要な機能のみの部分であるブートファームウェアを格納する複数のブートブロックを備え、ここに複数世代の装置依存のブートファームウェアモジュールを格納する。
【００２３】
これにより、機能が限定されているため、モジュールサイズが小さくでき、このような小容量のファームウェアモジュールを複数もつことで、バグなどの障害が発生した場合や装置構造の変更などに対応した、適切な世代のファームウェアを選択して実行することができるようになる。
【００２４】
コモンブロックのファームウェアを書き換える場合に、コモンブロックのファームウェアの正当性を示す正当性提示手段を備えるように構成し、コモンブロックのファームウェアを書き換える前に、この正当性提示手段によりコモンブロック内のファームウェアが不当であることを示すように設定し、ファームウェアの書き換えを実行する。その後、コモンブロックへのファームウェアの書き換えが正常に終了した段階で、この正当性提示手段によりコモンブロック内のファームウェアが正当であることを示すように設定するようにする。
【００２５】
これにより、フラッシュメモリの故障やファームウェアの書き換え中の装置の不具合により、正しくコモンブロックのファームウェアの書き換えが行えなかった場合、この正当性提示手段が不当を示しており、この場合、ブートブロックに格納されたブートファームウェアのみで運用を実行し、適切な保守あるいは、再度のコモンブロックのファームウェアの更新を行うことができる。
【００２６】
現在運用中のファームウェアを格納しているブートブロックを示す運用中提示手段を備えるように構成する。
【００２７】
これにより、ブートブロックのファームウェアを書き換えるときに、現在運用に使用されていないブートブロックを判断して新規ファームウェアをその運用中ではないブートブロックに書き換えることができ、また、書き換えられて新規となったファームウェアにバグなどの障害が発生した場合には、この運用中提示手段により旧世代のブートブロックを運用中に変更し、装置を立ち上げなおすことで、旧世代のブートブロックのファームウェアにより装置が立ち上がり、適切に再度バグを修正した新規ファームウェアの書き換えなどを行うことができるようになる。
【実施例】
【００２８】
この発明による代表的な実施例を図によって説明する。なお、以下において、同じ箇所は同一の符号を付してあり、詳細な説明を省略することがある。
【００２９】
装置のブートや制御、装置の保守処理などを行うファームウェアもプログラムであり、バグなどの障害が発生したり、また、装置構造の変更に対応したりする必要がある場合もある。
【００３０】
そのため、書き換え可能なフラッシュメモリにファームウェアを格納する場合が多く、また、安定した装置運用を行えるようにするため、冗長性をもたせるために、複数世代のファームウェアを格納していることもある。
【００３１】
このとき、単純に複数世代のファームウェアを、図１に示すように、世代ごとのファームウェアを並べて格納したのでは、世代数×ファームウェアサイズ分のフラッシュメモリ１の格納容量が必要となり、コストの高い大容量のフラッシュメモリを使用しなければならなくなる。
【００３２】
そこで本発明では、図２に示すように、装置のファームウェアのうち、特定の装置構造に関係しない機能的な部分である機能モジュール４を格納するコモンブロック２を１世代分備えており、また、装置ファームウェアのうち、特定の装置構造に関係し、装置保守および装置起動、フラッシュメモリへのファームウェア転送に必要な機能のみの部分であるブートファームウェアモジュール５を格納する複数のブートブロック３を備えるように構成している。
【００３３】
機能モジュール４は、特定の装置構造に関係しない機能的な部分のプログラムをモジュール化したものであり、複数世代のブートファームウェアモジュール５から共通に使用できるプログラムモジュールである。
【００３４】
このように共通の機能を実現するためのプログラムを重複してもつ必要性をなくすことで、装置のファームウェア全体の容量を削減することができ、コストの低い小容量のフラッシュメモリを使用した場合でも、旧世代を含めた複数世代のファームウェアを格納することができ、運用中の新規ファームウェアにバグなどの障害が発生した場合でも、旧世代の安定したファームウェアを図示しないメモリにダウンロードして実行することで、安定した装置運用が行える冗長性のある構成とすることができる。
【００３５】
以下において、本発明によるフラッシュメモリのファームウェア世代管理の運用処理を説明する。
【００３６】
図２に示すように、フラッシュメモリ１のフラッシュメモリ管理域８には、複数世代管理されたブートファームウェアモジュール５のうち、どの世代から装置を起動するかを示す運用中提示手段７を有しており、その指示に従って装置の起動動作が行われる。
【００３７】
図２の例では、運用中提示手段７は世代３を示しているので、世代３のブートファームウェアモジュール５が図示しない実行用のメモリに展開され、装置の起動処理が始められる。
【００３８】
装置が起動するまではブートファームウェアモジュール５単独で動作し、装置起動後、機能モジュール４も図示しない実行用のメモリに展開され、ブートファームウェアモジュール５とともに連携して動作し始め通常動作となる。
【００３９】
ファームウェアを更新する際は、現在動作していない（運用中提示手段７が運用中を示していない）世代のファームウェアを格納した、もしくは何も格納していないブートブロック３に、新規ブートファームウェアモジュール５を転送し、ファームウェアを書き換える。
【００４０】
このとき、運用されていないブートブロック３が複数ある場合は、どのブートブロック３にどの世代のブートファームウェアモジュール５が格納されているのか、世代を管理しておき、最も古い世代のファームウェアモジュールを格納しているブートブロック３のブートファームウェアモジュール５を書き換えるようにしてもよい。
【００４１】
ブートブロック３への転送、書き換えが正常に終了した後、続いてコモンブロック２に新規機能モジュール４を転送し、ファームウェアを書き換える。このとき、図３に示すように、転送前にフラッシュメモリ管理域８に有しているコモンブロック２の正当性を示す正当性提示手段６により、コモンブロック２に格納されているファームウェアが不当であることを示すように変更しておく。
【００４２】
その後、図２に示すように、コモンブロック２への機能モジュール４の転送、書き換えが正常に終了した段階で、正当性提示手段６により、コモンブロック２に格納されているファームウェアが正当であることを示すように変更する。
【００４３】
次に、フラッシュメモリ管理域８の運用中提示手段７を、上記で新規に書き換えた世代のブートファームウェアモジュール５が格納されているブートブロック３を示すように変更し、装置の再起動を行う。
【００４４】
装置は運用中提示手段７の指す世代のブートブロック３よりブートファームウェアモジュール５をメモリ上に展開し、起動される。正常に装置が起動した段階で正当性提示手段６が正当を示しているか否かを判定し、正当を示していれば機能モジュール４もメモリ上に展開し、正常運用に入る。
【００４５】
不当を示している場合には、機能モジュール４は使用不能と判断され、ブートファームウェアモジュール５のみの運用となり、ブートファームウェアモジュール５には装置保守、フラッシュメモリへのファームウェアの転送の機能をもっているため、適切な保守、あるいは再度のファームウェア更新を行う。
【００４６】
以上が通常の装置運用およびファームウェアの更新処理であるが、新規に更新したファームウェアにバグがあり障害が発生したり、フラッシュメモリの故障などの異常が発生したりした場合でも、複数世代のブートファームウェアモジュール５を有している冗長性を利用して、以下のようにリカバリ処理ができるようになっている。
【００４７】
転送、書き込みを完了した新規ファームウェアに障害があり、装置は起動したが機能に問題があるケース、具体的には新規ファームウェアの機能モジュール４にバグなどの障害が発生したケースであるが、この場合は、上記のようにブートファームウェアモジュール５にファームウェアの転送を行う機能をもっているため、再度バグ修正を行った機能モジュール４をフラッシュメモリのコモンブロック２に転送、書き込みを実行し、通常運用を行えるようにできる。
【００４８】
次に、転送、書き込みを完了した新規ファームウェアに障害があり、装置が起動しないケース、具体的には新規ファームウェアのブートファームウェアモジュール５にバグなどの障害が発生したケースであるが、この場合は、図４に示すように、ユーザが、装置本体とは独立して動作するオペレーションパネル９を操作することで、運用中提示手段７を旧世代のブートファームウェアモジュール５を格納しているブートブロック３を指すように変更し、装置の再起動を行うことで救済する。
【００４９】
ブートブロック３へのファームウェアの転送、書き込み中に異常が発生したケース、具体的にはフラッシュメモリの該当するブートブロック３のハードウェア上の故障に該当し、待機世代への上書きに失敗することになる。
【００５０】
この場合は、運用中提示手段７は運用中の世代のまま変更されておらず、コモンブロック２の機能モジュール４も未更新のため、そのまま装置再起動されても問題は発生しない。このようなケースの場合は、通常はフラッシュメモリ自体の保守交換を実施する。
【００５１】
フラッシュメモリの故障など、コモンブロック２へのファームウェアの転送、書き込み中に異常が発生したケース、具体的にはフラッシュメモリのコモンブロック２のハードウェア上の故障などが該当し、機能モジュール４の更新に失敗することとなる。
【００５２】
この場合も、運用中提示手段７は運用中の世代のまま変更されていないが、コモンブロック２の機能モジュール４は破壊されており、実質ブートファームウェアモジュール５のみしか動作できない。
【００５３】
ところが、コモンブロック２へのファームウェアの転送、書き込み前に正当性提示手段６により、コモンブロック２に格納されたファームウェアが不当であることを示すように変更してあるため、そのまま装置再起動されても、ブートファームウェアモジュール５のみで動作することができ、正当性提示手段６が不当を示していることを判断して、適切な保守作業を行うこととなる。
【００５４】
以上説明したように、共通の機能部分である機能モジュール４を格納した１世代分のコモンブロック２と、複数世代の限定された機能のみのブートファームウェアモジュール５を格納した複数のブートブロック３を備えるようにフラッシュメモリを構成し、正当性提示手段６、運用中提示手段７を利用することで、小容量のフラッシュメモリにおいても、バグなどの障害に対応できる冗長性のある複数世代のファームウェアをもった、フラッシュメモリのファームウェア世代管理機構を実現することが可能となる。
【００５５】
なお、機能モジュール４を複数のブートファームウェアモジュール５で共通して使用するため、機能モジュール４とブートファームウェアモジュール５で相互に連携する機能のインターフェース部はどの世代においても共通のインターフェースを決めるようにしてもよく、新規機能を機能モジュール４に追加した場合、その後の新規ブートファームウェアモジュール５ではその新機能を使用できるが、旧世代のブートファームウェアモジュール５では、新規機能追加以前までの共通インターフェースのみを利用できるようにしている。
【図面の簡単な説明】
【００５６】
【図１】単純に各世代のファームウェアを並べて格納した場合の説明図である。
【図２】本発明の実施例である。
【図３】コモンブロックのファームウェア更新処理の説明図である。
【図４】運用中提示手段の内容変更処理の説明図である。
【図５】従来のモジュール分割したフラッシュメモリ上のファームウェア構成図である。
【符号の説明】
【００５７】
１：フラッシュメモリ
２：コモンブロック
３：ブートブロック
４：機能モジュール
５：ブートファームウェアモジュール
６：正当性提示手段
７：運用中提示手段
８：フラッシュメモリ管理域
９：オペレーションパネル
【図１】
2007310551.tif 000003
【図２】
2007310551.tif 000004
【図３】
2007310551.tif 000005
【図４】
2007310551.tif 000006
【図５】
2007310551.tif 000007