(57)【要約】【課題】  ファームの機能を停止することなく、ファームウェアのバージョンアップを実現することができるプログラム更新装置を提供する。【解決手段】  プログラム更新装置は、第１のマップファイル及び第２のマップファイルに基づき差分情報を抽出し、差分情報記憶手段４１に設定する差分情報設定手段１３と、中央処理手段３０がアドレスを指定して第１の主記憶領域１ａにデータの書込みを行なう場合に、差分情報に基づき、指定アドレスに対応する第２の主記憶領域１ｂにおけるデータのアドレスを指定して第２の主記憶領域１ｂに前記データの書込みを行なう擬似アクセス手段４２と、第１の主記憶領域１ａにおける各データと、当該各データに対応する第２の主記憶領域１ｂにおける各データとの一致を判定する判定手段１４と、第１の主記憶手段１０ａから第２の主記憶手段１０ｂに運用を切り替える運用切替手段１５と、を備える。【選択図】        図１
2010079837.tif 000002
【特許請求の範囲】
【請求項１】
実行非対象のプログラム及び処理非対象データを補助記憶手段に記憶し、実行対象のプログラム及び処理対象データを主記憶手段に記憶し、当該主記憶手段に記憶されるプログラムによってデータの処理を行なう中央処理手段が、前記実行対象のプログラム及び処理対象データから前記実行非対象のプログラム及び処理非対象データに対象を変更するプログラム更新方法において、
前記処理対象データのアドレス及び前記処理非対象データのアドレスの差分情報を抽出する差分情報抽出ステップと、
前記差分情報を差分情報記憶手段に設定する差分情報設定ステップと、
前記中央処理手段が一の主記憶手段の主記憶領域におけるデータのアドレスを指定して当該主記憶領域にデータの書込みを行なう場合に、前記差分情報に基づき、前記指定アドレスに対応する他の主記憶手段の主記憶領域におけるデータのアドレスを指定して当該主記憶領域に前記データの書込みを行なう擬似アクセスステップと、
前記一の主記憶手段の主記憶領域における各データと、当該各データに対応する前記他の主記憶手段の主記憶領域における各データとの一致を判定する判定ステップと、
前記判定手段が前記データが一致すると判定した場合に、前記一の主記憶手段から前記他の主記憶手段に運用を切り替える運用切替ステップと、
を有することを特徴とするプログラム更新方法。
【請求項２】
前記請求項１に記載のプログラム更新方法において、
前記差分情報抽出ステップが、前記補助記憶手段から前記一の主記憶手段にファームウェアデータをロードして展開される当該ファームウェアデータの位置情報である第１のマップファイル、及び前記補助記憶手段から前記他の主記憶手段に前記ファームウェアの更新用のバージョンアップデータをロードして展開される当該バージョンアップデータの位置情報である第２のマップファイルにおける、各データのアドレスに対して、当該データの種類毎に対応させたアドレスの差分情報を抽出することを特徴とするプログラム更新方法。
【請求項３】
前記請求項２に記載のプログラム更新方法において、
前記中央処理手段が前記一の主記憶手段の主記憶領域におけるデータのアドレスを指定して当該主記憶領域にデータの書込みを行なう場合であり、当該指定アドレスに対応する前記他の主記憶手段の主記憶領域におけるデータのアドレスが前記差分情報に存在しない場合に、前記擬似アクセスステップが、前記指定アドレスのオフセットアドレスに等価である前記他の主記憶手段の主記憶領域におけるデータのアドレスを指定して前記データの書込みを行なうことを特徴とするプログラム更新方法。
【請求項４】
前記請求項３に記載のプログラム更新方法において、
前記指定アドレスのオフセットアドレスに等価である前記他の主記憶手段の主記憶領域におけるデータのアドレスが、前記差分情報に存在する場合に、前記擬似アクセスステップが、前記差分情報に存在しない指定アドレスに対して、前記他の主記憶手段の主記憶領域におけるデータの所定のアドレスを指定して当該主記憶領域に前記データの書込みを行なうことを特徴とするプログラム更新方法。
【請求項５】
前記請求項３又は４に記載のプログラム更新方法において、
前記差分情報設定ステップが、前記差分情報に存在しない指定アドレスのオフセットアドレスに等価である前記他の主記憶手段の主記憶領域におけるデータのアドレスを指定して当該主記憶領域に前記データの書込みを行なう機能の有効又は無効の情報を示すフラグを設定し、
前記フラグが立っていない場合に、前記擬似アクセスステップが、前記差分情報に存在しない指定アドレスに対して、前記他の主記憶手段の主記憶領域にデータの書込みを行なわないことを特徴とするプログラム更新方法。
【請求項６】
前記請求項２乃至５のいずれかに記載のプログラム更新方法において、
前記判定ステップが、前記一の主記憶手段の主記憶領域における各データと当該各データに対応する前記他の主記憶手段の主記憶領域における各データとの一致率が所定の基準を満たすこと、当該一致率の変動が収束したこと、又は所定の時間の経過後に前記全てのデータが一致していないことを検出した場合に、
前記擬似アクセスステップが、一致していないデータのアドレスに対応する前記他の主記憶手段の主記憶領域におけるデータのアドレスに対して、当該データを書込み、前記全てのデータを一致させることで、
前記運用切替ステップが、前記一の主記憶手段から前記他の主記憶手段への運用を切り替えることを特徴とするプログラム更新方法。
【請求項７】
実行非対象のプログラム及び処理非対象データを補助記憶手段に記憶し、実行対象のプログラム及び処理対象データを主記憶手段に記憶し、当該主記憶手段に記憶されるプログラムによってデータの処理を行なう中央処理手段が、前記実行対象のプログラム及び処理対象データから前記実行非対象のプログラム及び処理非対象データに対象を変更するプログラム更新装置において、
前記処理対象データのアドレス及び前記処理非対象データのアドレスの差分情報を抽出する差分情報設定手段と、
前記差分情報を記憶する差分情報記憶手段と、
前記中央処理手段が一の主記憶手段の主記憶領域におけるデータのアドレスを指定して当該主記憶領域にデータの書込みを行なう場合に、前記差分情報に基づき、前記指定アドレスに対応する他の主記憶手段の主記憶領域におけるデータのアドレスを指定して当該主記憶領域に前記データの書込みを行なう擬似アクセス手段と、
前記一の主記憶手段の主記憶領域における各データと、当該各データに対応する前記他の主記憶手段の主記憶領域における各データとの一致を判定する判定手段と、
前記判定手段が前記データが一致すると判定した場合に、前記一の主記憶手段から前記他の主記憶手段に運用を切り替える運用切替手段と、
を備えることを特徴とするプログラム更新装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ファームウェアが動作する主記憶装置が運用面と非運用面とからなる２面で構成され、ファームの機能を停止することなく、ファームウェアのバージョンアップを実現することができるプログラム更新方法及びプログラム更新装置に関する。
【背景技術】
【０００２】
組込み系のファームウェアのバージョンアップには、再起動（リブート）の手順が含まれており、この再起動には、時間の短長はあるが、ファームの機能（警報や統計収集など）を停止する時間が発生し、デバイスの運用に支障をきたすことになる。
【０００３】
例えば、従来のプログラム更新装置は、従来動作していた旧動作プログラムとは別な記憶領域に、ダウンロードした新動作プログラムを格納する。ついで、新動作プログラムを起動させ、新動作プログラムの上で実行アプリケーションを動かす。新動作プログラムが起動に失敗した場合には、旧動作プログラムを再起動して旧動作プログラムでシステムを動かす。また、新動作プログラム又は旧動作プログラムが起動に成功した状態で、実行アプリケーションが起動できなかった場合には、修復アプリケーションによって実行アプリケーションを修復する（例えば、特許文献１参照）。なお、従来のプログラム更新装置は、システムがフリーズすることを防止しているが、新動作プログラムの起動の失敗により、再起動を伴うものであり、デバイスの運用に支障をきたすことになる。
【０００４】
また、従来の情報処理装置は、プロセス情報退避手段と、プロセス復元手段とを備え、アプリケーションの実行時にＯＳ内に存在するプロセス表やその他、プロセスを復元するために必要な情報を主記憶領域上の退避領域に複写しておき、再起動時には、アプリケーションの使用していた主記憶領域はそのままに、ＯＳのみを初期化する。初期化の後に、退避しておいたプロセス情報（プロセス表やその他ＯＳが管理していた情報）をＯＳデータ領域に上書きするよう動作する（例えば、特許文献２参照）。なお、従来の情報処理装置は、システムの終了時間を短縮しているが、再起動を伴うものであり、デバイスの運用に支障をきたすことになる。
【０００５】
これに対し、従来の構内交換機は、プログラムエリアＡと、プログラムエリアＢとの２面が定義され、その他に交換制御を行うための交換制御用メモリエリアと、通話状態等を管理する呼状態メモリエリアとを有する。プログラムエリアＡ及びプログラムエリアＢは運用面及び待機面として扱われ、その２面のプログラムエリアをシステム監視部の制御によって切替える。（例えば、特許文献３参照）。
【特許文献１】特開２００２−３３３９９０号公報
【特許文献２】国際公開第２００５／０７１５２２号パンフレット
【特許文献３】特開２００２−４４２３８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来の構内交換機は、プログラム更新により、プログラムのコード（実行部）のみを変更するものであり、呼情報のようなデータ部（一般的に、装置設定データ、静的変数、動的変数）の変更については考慮されていない。また、プログラムは常に動作しており、構内交換機内部に記録される状態収集結果（ログ）や統計情報（カウンタ）などが随時変化しているのであるが、従来の構内交換機は、プログラム更新において、これらの情報などについては考慮されていない。
【０００７】
このため、従来の構内交換機は、プログラム更新後も、プログラム更新前の状態収集結果（ログ）や統計情報（カウンタ）などを引き継ぐことができず、デバイスの運用に支障をきたすという課題があった。
【０００８】
この発明は、上述のような課題を解決するためになされたもので、ファームの機能を停止することなく、ファームウェアのバージョンアップを実現することができるプログラム更新方法及びプログラム更新装置を提供するものである。
【課題を解決するための手段】
【０００９】
この発明に係るプログラム更新方法は、処理対象データのアドレス及び前記処理非対象データのアドレスの差分情報を抽出する差分情報抽出ステップと、前記差分情報を差分情報記憶手段に設定する差分情報設定ステップと、前記中央処理手段が一の主記憶手段の主記憶領域におけるデータのアドレスを指定して当該主記憶領域にデータの書込みを行なう場合に、前記差分情報に基づき、前記指定アドレスに対応する他の主記憶手段の主記憶領域におけるデータのアドレスを指定して当該主記憶領域に前記データの書込みを行なう擬似アクセスステップと、前記一の主記憶手段の主記憶領域における各データと、当該各データに対応する前記他の主記憶手段の主記憶領域における各データとの一致を判定する判定ステップと、前記判定手段が前記データが一致すると判定した場合に、前記一の主記憶手段から前記他の主記憶手段に運用を切り替える運用切替ステップと、を有する。
【発明の効果】
【００１０】
開示のプログラム更新方法は、オペレーティングシステム（Operating System：ＯＳ）やプログラムコードだけではなく、デバイスの設定データを含んだファームウェアのバージョンアップが行なえ、ファームの機能を停止することなく、ファームウェアのバージョンアップを実現することができるという効果を奏する。また、開示のプログラム更新方法は、中央処理装置（Central Processing Unit：ＣＰＵ）を二重化する構成を必要とせず、従来のプログラム更新装置と比較して、ハードウェア資源（費用）を削減できるという効果を奏する。
【発明を実施するための最良の形態】
【００１１】
（本発明の第１の実施形態）
図１は本実施形態に係るデバイスの主要な構成を示す概略図、図２は図１に示す主記憶手段のデータの書込み又は読出しの処理を説明するためのブロック図、図３（ａ）は図１に示すバージョンアップデータ書込手段による処理を説明するための説明図、図３（ｂ）は図１に示すバージョンアップデータ展開手段による処理を説明するための説明図、図４は図１に示す差分情報設定手段による処理を説明するための説明図、図５は図１に示す擬似アクセス手段による処理を説明するための説明図、図６は図１に示す判定手段及び運用切替手段による処理を説明するための説明図、図７は図１に示すプログラム更新装置によるバージョンアップの処理手順を示すフローチャートである。
【００１２】
図１において、デバイス１００は、通常のデバイスの主構成である、実行対象のプログラム及び処理対象データを記憶する主記憶装置（例えば、ＲＡＭ（random access memory））である主記憶手段１０と、実行非対象のプログラム及び処理非対象データを記憶する補助記憶装置（例えば、フラッシュメモリ）である補助記憶手段２０と、主記憶手段１０に記憶されるプログラムによってデータの処理を行なう中央処理装置（Central Processing Unit：ＣＰＵ）である中央処理手段３０と、新たに追加されたメモリ管理手段４０とを備える。
【００１３】
主記憶手段１０は、図２に示すように、主記憶領域１（メモリ領域）、アドレス選択回路２及び読み書き回路３を備え、主記憶領域１に対するデータの読出し及び書込みは、処理の対象とするデータのアドレスを指定することにより行なわれる。すなわち、プログラムの命令の中には、処理の対象になるデータのアドレスが指定され、命令実行時にそのアドレスをアドレス選択回路２に送り、アドレス選択回路２によって、主記憶領域１上の場所が確定し、読み書き回路３によって、データの読出し又は書込みが行なわれる。
【００１４】
また、デバイス１００は、主記憶手段１０として、第１の主記憶手段１０ａと第２の主記憶手段１０ｂとを備え、一方の主記憶手段１０が運用面として機能している場合には、他方の主記憶手段１０が非運用面となる。なお、主記憶手段１０は、物理的に異なる２つの主記憶装置によって構成してもよいが、１つの主記憶装置内の主記憶領域１を２つに領域分けをして構成してもよい。
【００１５】
また、運用面である主記憶手段１０には、後述する、バージョンアップデータ書込手段１１、バージョンアップデータ展開手段１２、差分情報設定手段１３、判定手段１４及び運用切替手段１５による処理を実行するプログラムであるバージョンアッププロセスが記憶されている。
【００１６】
なお、以下の説明においては、ファームウェアのバージョンアップ前の運用面を第１の主記憶手段１０ａ（非運用面を第２の主記憶手段１０ｂ）とし、バージョンアップ後の運用面を第２の主記憶手段１０ｂ（非運用面を第１の主記憶手段１０ａ）として説明する。
【００１７】
バージョンアップデータ書込手段１１は、ファームウェアの機能を向上したり不具合を修正したりするバージョンアップのためのファームウェアデータ（以下、バージョンアップデータと称す）を、後述する第２の補助記憶手段２０ｂに書き込む機能を有する。
【００１８】
バージョンアップデータ展開手段１２は、中央処理手段３０による処理の空き時間を利用して、第２の補助記憶手段２０ｂに記憶するバージョンアップデータを、第２の主記憶手段１０ｂにロードして、第２の主記憶手段１０ｂに展開する機能を有する。なお、中央処理手段３０による処理の空き時間を利用することは、通常のファーム機能（警報や統計収集など）を停止（低下）させずに実行できるという作用効果を奏する。
【００１９】
差分情報設定手段１３は、ファームウェアデータの作成時に生成されるファームウェアデータの位置情報であるＭＡＰファイル（以下、第１のマップファイルと称す）、及びバージョンアップデータの作成時に生成されるバージョンアップデータの位置情報であるＭＡＰファイル（以下、第２のマップファイルと称す）における、各データのアドレスに対して、当該データの種類毎に対応させたアドレスの差分情報を抽出する機能を有する。
また、差分情報設定手段１３は、抽出した差分情報を、後述する差分情報記憶手段４１に設定する機能を有する。
【００２０】
ここで、例えば、データ「変数g_alm_status」が、第１のマップファイルにおけるアドレス「0xa0001000」に対応しており、第２のマップファイルにおけるアドレス「0xb0001100」に対応している場合を想定する。この場合には、データ「変数g_alm_status」に対応させたアドレスの差分情報は、第１のマップファイルのアドレス「0xa0001000」の変更点として第２のマップファイルのアドレス「0xb0001100」が対応するという情報となる。なお、変数とは、プログラムのソースコードにおいて、扱われるデータを一定期間記憶し必要なときに利用できるようにするために、データに固有の名前を与えたものである。
【００２１】
また、例えば、データ「装置設定情報（回線設定等）」が、第１のマップファイルにおけるアドレス「0xa000a000」に対応しており、第２のマップファイルにおけるアドレス「0xb000b000」に対応している場合を想定する。この場合には、データ「装置設定情報（回線設定等）」に対応する差分情報は、第１のマップファイルのアドレス「0xa000a000」の変更点として第２のマップファイルのアドレス「0xb000b000」が対応するという情報となる。
【００２２】
また、差分情報設定手段１３は、後述する擬似アクセス手段４２による機能（差分情報に存在しない指定アドレスのオフセットアドレスに等価である第２の主記憶手段１０ｂの主記憶領域１（以下、第２の主記憶領域１ｂと称す）におけるデータのアドレスを指定して第２の主記憶領域１ｂにデータの書込みを行なう機能）の有効又は無効の情報を示すフラグを設定する。
【００２３】
なお、オフセットアドレスとは、例えば、第１のマップファイルのアドレスが「0xa0001000」であれば、先頭から４ビット目から１０ビット目までの「0001000」を指すものである。また、オフセットアドレスに等価であるアドレスは、例えば、第１のマップファイルのアドレスが「0xa0001000」であれば、第２のマップファイルのアドレス「0xb0001000」が対応する。
【００２４】
判定手段１４は、第１の主記憶手段１０ａの主記憶領域１（以下、第１の主記憶領域１ａと称す）における各データと、当該各データに対応する第２の主記憶領域１ｂにおける各データとの一致を判定する機能を有する。なお、ここでの一致は、第１の主記憶領域１ａにおける各データを基準にするものであり、第２の主記憶領域１ｂにおける、バージョンアップにより新たに追加されるデータは対象外である。
【００２５】
運用切替手段１５は、判定手段１４が全てのデータが一致すると判定した場合に、第１の主記憶手段１０ａから第２の主記憶手段１０ｂに運用を切り替える機能を有する。すなわち、運用切替手段１５は、中央処理手段３０における、取り出す命令のアドレスを記憶するレジスタ（プログラムカウンタ３１）に記憶した第１の主記憶領域１ａにおける各データのアドレスを、第２の主記憶領域１ｂにおける各データのアドレスに変更する。
【００２６】
デバイス１００は、補助記憶手段２０として、第１の補助記憶手段２０ａと第２の補助記憶手段２０ｂとを備えており、第１の補助記憶手段２０ａに記憶されるファームウェアデータが第１の主記憶手段１０ａにロードされ、第２の補助記憶手段２０ｂに記憶されるバージョンアップデータが第２の主記憶手段１０ｂにロードされる。
なお、補助記憶手段２０は、物理的に異なる２つの補助記憶装置によって構成してもよいが、１つの補助記憶装置内の記憶領域を２つに領域分けをして構成してもよい。
【００２７】
メモリ管理手段４０は、論理ブロック間及び配線間を接続するスイッチマトリクスを制御するビットストリームを外部から書き込むことによって、所望の論理回路を再構成することができるデバイスであるＦＰＧＡ（Field Programmable Gate Array）を用いている。また、メモリ管理手段４０は、後述する差分情報記憶手段４１及び擬似アクセス手段４２を構成している。
【００２８】
差分情報記憶手段４１は、差分情報設定手段１３により抽出された差分情報を、差分情報設定手段１３により設定されるレジスタである。
【００２９】
ここで、データ「変数g_alm_status」に対応させたアドレスの差分情報が、第１のマップファイルのアドレス「0xa0001000」の変更点として第２のマップファイルのアドレス「0xb0001100」が対応するという情報である場合を想定する。この場合には、例えば、差分情報記憶手段４１の差分設定領域におけるアドレス「0xd0000000」に第１のマップファイルのアドレス「0xa0001000」がレジスタ設定され、差分情報記憶手段４１の差分設定領域におけるアドレス「0xd0000004」に第２のマップファイルのアドレス「0xb0001100」がレジスタ設定される。
【００３０】
また、データ「装置設定情報（回線設定等）」に対応させたアドレスの差分情報が、第１のマップファイルのアドレス「0xa000a000」の変更点として第２のマップファイルのアドレス「0xb000b000」が対応するという情報である場合を想定する。この場合には、例えば、差分情報記憶手段４１の差分設定領域におけるアドレス「0xd0000008」に第１のマップファイルのアドレス「0xa000a000」がレジスタ設定され、差分情報記憶手段４１の差分設定領域におけるアドレス「0xd000000C」に第２のマップファイルのアドレス「0xb000b000」がレジスタ設定される。
【００３１】
擬似アクセス手段４２は、中央処理手段３０が第１の主記憶領域１ａにおけるデータのアドレスを指定して第１の主記憶領域１ａにデータの書込み（Writeアクセス）を行なう場合に、差分情報に基づき、指定アドレスに対応する第２の主記憶領域１ｂにおけるデータのアドレスを指定して第２の主記憶領域１ｂにデータの書込みを行なう機能を有する。
【００３２】
また、擬似アクセス手段４２は、中央処理手段３０が第１の主記憶領域１ａにおけるデータのアドレスを指定して第１の主記憶領域１ａにデータの書込みを行なう場合であり、当該指定アドレスに対応する第２の主記憶領域１ｂにおけるデータのアドレスが差分情報に存在しない場合（すなわち、バージョンアップにより、削除するファームウェアの機能）に、以下のように処理する。
【００３３】
まず、擬似アクセス手段４２は、差分情報設定手段１３により差分情報記憶手段４１に設定されたフラグが立っているか否かを判断する。
そして、フラグが立っていない場合には、擬似アクセス手段４２は、差分情報に存在しない指定アドレスに対して、第２の主記憶領域１ｂにデータの書込みを行なわない。
【００３４】
また、フラグが立っている場合には、擬似アクセス手段４２は、指定アドレスのオフセットアドレスに等価である第２の主記憶領域１ｂにおけるデータのアドレスが、差分情報に存在するか否かを判断する。
【００３５】
そして、擬似アクセス手段４２は、指定アドレスのオフセットアドレスに等価である第２の主記憶領域１ｂにおけるデータのアドレスが差分情報に存在しないと判断した場合には、指定アドレスのオフセットアドレスに等価である第２の主記憶領域１ｂにおけるデータのアドレスを指定してデータの書込みを行なう。
【００３６】
また、擬似アクセス手段４２は、指定アドレスのオフセットアドレスに等価である第２の主記憶領域１ｂにおけるデータのアドレスが差分情報に存在すると判断した場合には、差分情報に存在しない指定アドレスに対して、第２の主記憶領域１ｂにおけるデータの所定のアドレスを指定して第２の主記憶領域１ｂにデータの書込みを行なう。なお、所定のアドレスは、データを処理させないゴミ箱としてのアドレスであり、例えば、アドレス「0xbfffffff」に設定することが考えられる。
【００３７】
また、擬似アクセス手段４２は、判定手段１４による判定が完全に一致してない場合であっても、所定の条件を満たすことを、判定手段１４が検出した場合に、以下のように処理する。なお、所定の条件を満たすこととして、例えば、第１の主記憶領域１ａにおける各データと当該各データに対応する第２の主記憶領域１ｂにおける各データとの一致率が所定の基準（例えば、９０％以上）を満たすこと、当該一致率の変動が収束したこと、又は所定の時間（例えば、１時間）の経過後に前記全てのデータが一致していないことなどが挙げられる。
【００３８】
擬似アクセス手段４２は、一致していないデータのアドレスに対応する第２の主記憶領域１ｂにおけるデータのアドレスに対して、当該データを書込み、全てのデータを一致させる。
【００３９】
つぎに、本実施形態に係るプログラム更新装置によるファームウェアのバージョンアップの処理手順について、図７を用いて説明する。
ここで、デバイス１００は、第１の補助記憶手段２０ａから第１の主記憶手段１０ａにロードされたファームウェアデータが、中央処理手段３０により処理されている場合を想定する。
【００４０】
まず、デバイス１００を使用するユーザは、バージョンアップデータの配布サイトやバージョンアップデータを保持するＦＴＰ（File Transfer Protocol：ファイル転送プロトコル）ファイルサーバから、バージョンアップデータをダウンロードする（ステップＳ１）。なお、ユーザは、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）やフラッシュメモリなどのリムーバブルメディアを用いて、デバイス１００にバージョンアップデータを読み込ませてもよい。
【００４１】
中央処理手段３０は、図３（ａ）に示すように、第１の主記憶手段１０ａに記憶されたプログラムであるバージョンアッププロセスにおけるバージョンアップデータ書込手段１１により、第２の補助記憶手段２０ｂにバージョンアップデータを書き込む（ステップＳ２）。
【００４２】
そして、中央処理手段３０は、図３（ｂ）に示すように、バージョンアッププロセスにおけるバージョンアップデータ展開手段１２により、第２の補助記憶手段２０ｂへのバージョンアップデータの書込みの完了を認識すると、空き時間を利用して、第２の主記憶手段１０ｂにバージョンアップデータを展開する（ステップＳ３）。
【００４３】
中央処理手段３０は、図４に示すように、バージョンアッププロセスにおける差分情報設定手段１３により、第１のマップファイル及び第２のマップファイルに基づき、差分情報を抽出し、メモリ管理手段４０の差分情報記憶手段４１における差分設定領域に差分情報を設定する（ステップＳ４）。この場合に、中央処理手段３０は、差分情報設定手段１３により、擬似アクセス手段４２による機能の有効又は無効の情報を示すフラグを設定する。
【００４４】
そして、メモリ管理手段４０の擬似アクセス手段４２は、図５に示すように、中央処理手段３０が第１の主記憶領域１ａにおけるデータのアドレスを指定して第１の主記憶領域１ａにデータの書込み（ステップＳ５）を行なう度に、差分情報記憶手段４１の差分設定領域に設定された差分情報を参照して、以下の処理を行なう。
【００４５】
ここで、例えば、Ｃ言語で扱う主記憶領域１は、一般的に、プログラム領域（テキスト領域）、静的領域、スタック領域及びヒープ領域の４つに大別され、図５においては、静的領域、スタック領域及びヒープ領域のみを示している。
【００４６】
なお、プログラム領域は、プログラムを実行するための機械語に翻訳されたプログラム（プログラムコード）が格納される領域であり、この機械語の命令が１行づつ実行されることでプログラムが実行されることになる。
【００４７】
また、スタック領域は、Ｃ言語の自動変数（多くのローカル変数）や、自動変数以外に、関数の引数、関数の戻り値、長い計算式の一時変数などが格納される領域である。また、ＣＰＵのレジスタを一時的に退避させる領域でもある。
【００４８】
また、ヒープ領域は、malloc関数などのメモリ割り当て関数を用いてメモリをプログラム中で動的に確保する場合に、割り当てられる領域である。また、静的領域は、グローバル変数（外部変数）などの静的変数が格納される領域である。
【００４９】
まず、擬似アクセス手段４２は、指定アドレスに対応する第２の主記憶領域１ｂにおけるデータのアドレスが差分情報に存在するか否かを判断する（ステップＳ６）。
ステップＳ６において、指定アドレスに対応する第２の主記憶領域１ｂにおけるデータのアドレスが差分情報に存在すると判断した場合には、擬似アクセス手段４２は、差分情報に基づき、指定アドレスに対応する第２の主記憶領域１ｂにおけるデータのアドレスを指定して第２の主記憶領域１ｂにデータの書込みを行なう（ステップＳ７）。
【００５０】
そして、中央処理手段３０は、図６に示すように、バージョンアッププロセスにおける判定手段１４により、第１の主記憶領域１ａにおける各データと、当該各データに対応する第２の主記憶領域１ｂにおける各データとの一致を判定する（ステップＳ８）。
【００５１】
ステップＳ８において、第１の主記憶領域１ａにおける各データと、当該各データに対応する第２の主記憶領域１ｂにおける各データとが、全て一致すると判断した場合には、中央処理手段３０は、図６に示すように、バージョンアッププロセスにおける運用切替手段１５により、プログラムカウンタ３１に記憶した第１の主記憶領域１ａにおける各データのアドレスを、第２の主記憶領域１ｂにおける各データのアドレスに変更する。これにより、中央処理手段３０は、第１の主記憶手段１０ａから第２の主記憶手段１０ｂに運用を切り替え（ステップＳ９）、デバイス１００におけるファームウェアのバージョンアップを終了する。
【００５２】
また、ステップ８において、第１の主記憶領域１ａにおける各データと、当該各データに対応する第２の主記憶領域１ｂにおける各データとが、完全には一致していないと判断した場合には、判定手段１４は、前述した所定の条件を満たすか否かを判断する（ステップＳ１０）。
【００５３】
ステップ１０において、所定の条件を満たすと判断した場合には、擬似アクセス手段４２は、一致していないデータのアドレスに対応する第２の主記憶領域１ｂにおけるデータのアドレスに対して、当該一致していないデータを書込み（ステップＳ１１）、全てのデータを一致させ、前述したステップＳ９に進む。
【００５４】
また、ステップ１０において、所定の条件を満たしていないと判断した場合には、前述したステップＳ５に戻る。
なお、前述したステップＳ６において、指定アドレスに対応する第２の主記憶領域１ｂにおけるデータのアドレスが差分情報に存在しないと判断した場合には、擬似アクセス手段４２は、差分情報記憶手段４１に設定されたフラグが立っているか否かを判断する（ステップＳ１２）。
【００５５】
ステップＳ１２において、フラグが立っていないと判断した場合には、擬似アクセス手段４２は、差分情報に存在しない指定アドレスに対して、第２の主記憶領域１ｂにデータの書込みを行なうことなく、前述したステップＳ８に進む。
【００５６】
また、ステップＳ１２において、フラグが立っていると判断した場合には、擬似アクセス手段４２は、指定アドレスのオフセットアドレスに等価である第２の主記憶領域１ｂにおけるデータのアドレスが、差分情報に存在するか否かを判断する（ステップＳ１３）。
【００５７】
ステップＳ１３において、差分情報に存在しないと判断した場合には、擬似アクセス手段４２は、指定アドレスのオフセットアドレスに等価である第２の主記憶領域１ｂにおけるデータのアドレスを指定してデータの書込みを行ない（ステップＳ１４）、前述したステップＳ８に進む。
【００５８】
また、ステップＳ１３において、差分情報に存在すると判断した場合には、擬似アクセス手段４２は、差分情報に存在しない指定アドレスに対して、第２の主記憶領域１ｂにおけるデータの前述した所定のアドレスを指定して、第２の主記憶領域１ｂにデータの書込みを行ない（ステップＳ１５）、前述したステップＳ８に進む。
【００５９】
以上のように、本実施形態に係るプログラム更新装置においては、アプリケーション及びＯＳがバージョンアップ前に使用していた主記憶領域１におけるデータ構造を維持することで、デバイス１００を再起動することなく、当該アプリケーション及びＯＳによる処理を継続して実行できるという作用効果を奏する。
【００６０】
［付記］  以上の実施例を含む実施形態に関し、更に以下の付記を開示する。
（付記１）  実行非対象のプログラム及び処理非対象データを補助記憶手段に記憶し、実行対象のプログラム及び処理対象データを主記憶手段に記憶し、当該主記憶手段に記憶されるプログラムによってデータの処理を行なう中央処理手段が、前記実行対象のプログラム及び処理対象データから前記実行非対象のプログラム及び処理非対象データに対象を変更するプログラム更新方法において、前記処理対象データのアドレス及び前記処理非対象データのアドレスの差分情報を抽出する差分情報抽出ステップと、前記差分情報を差分情報記憶手段に設定する差分情報設定ステップと、前記中央処理手段が一の主記憶手段の主記憶領域におけるデータのアドレスを指定して当該主記憶領域にデータの書込みを行なう場合に、前記差分情報に基づき、前記指定アドレスに対応する他の主記憶手段の主記憶領域におけるデータのアドレスを指定して当該主記憶領域に前記データの書込みを行なう擬似アクセスステップと、前記一の主記憶手段の主記憶領域における各データと、当該各データに対応する前記他の主記憶手段の主記憶領域における各データとの一致を判定する判定ステップと、前記判定手段が前記データが一致すると判定した場合に、前記一の主記憶手段から前記他の主記憶手段に運用を切り替える運用切替ステップと、を有することを特徴とするプログラム更新方法。
【００６１】
（付記２）  前記差分情報抽出ステップが、前記補助記憶手段から前記一の主記憶手段にファームウェアデータをロードして展開される当該ファームウェアデータの位置情報である第１のマップファイル、及び前記補助記憶手段から前記他の主記憶手段に前記ファームウェアの更新用のバージョンアップデータをロードして展開される当該バージョンアップデータの位置情報である第２のマップファイルにおける、各データのアドレスに対して、当該データの種類毎に対応させたアドレスの差分情報を抽出することを特徴とするプログラム更新方法。
【００６２】
（付記３）  前記中央処理手段が前記一の主記憶手段の主記憶領域におけるデータのアドレスを指定して当該主記憶領域にデータの書込みを行なう場合であり、当該指定アドレスに対応する前記他の主記憶手段の主記憶領域におけるデータのアドレスが前記差分情報に存在しない場合に、前記擬似アクセスステップが、前記指定アドレスのオフセットアドレスに等価である前記他の主記憶手段の主記憶領域におけるデータのアドレスを指定して前記データの書込みを行なうことを特徴とするプログラム更新方法。
【００６３】
（付記４）  前記指定アドレスのオフセットアドレスに等価である前記他の主記憶手段の主記憶領域におけるデータのアドレスが、前記差分情報に存在する場合に、前記擬似アクセスステップが、前記差分情報に存在しない指定アドレスに対して、前記他の主記憶手段の主記憶領域におけるデータの所定のアドレスを指定して当該主記憶領域に前記データの書込みを行なうことを特徴とするプログラム更新方法。
【００６４】
（付記５）  前記差分情報設定ステップが、前記差分情報に存在しない指定アドレスのオフセットアドレスに等価である前記他の主記憶手段の主記憶領域におけるデータのアドレスを指定して当該主記憶領域に前記データの書込みを行なう機能の有効又は無効の情報を示すフラグを設定し、前記フラグが立っていない場合に、前記擬似アクセスステップが、前記差分情報に存在しない指定アドレスに対して、前記他の主記憶手段の主記憶領域にデータの書込みを行なわないことを特徴とするプログラム更新方法。
【００６５】
（付記６）  前記判定ステップが、前記一の主記憶手段の主記憶領域における各データと当該各データに対応する前記他の主記憶手段の主記憶領域における各データとの一致率が所定の基準を満たすこと、当該一致率の変動が収束したこと、又は所定の時間の経過後に前記全てのデータが一致していないことを検出した場合に、前記擬似アクセスステップが、一致していないデータのアドレスに対応する前記他の主記憶手段の主記憶領域におけるデータのアドレスに対して、当該データを書込み、前記全てのデータを一致させることで、前記運用切替ステップが、前記一の主記憶手段から前記他の主記憶手段への運用を切り替えることを特徴とするプログラム更新方法。
【００６６】
（付記５）  実行非対象のプログラム及び処理非対象データを補助記憶手段に記憶し、実行対象のプログラム及び処理対象データを主記憶手段に記憶し、当該主記憶手段に記憶されるプログラムによってデータの処理を行なう中央処理手段が、前記実行対象のプログラム及び処理対象データから前記実行非対象のプログラム及び処理非対象データに対象を変更するプログラム更新装置において、前記処理対象データのアドレス及び前記処理非対象データのアドレスの差分情報を抽出する差分情報設定手段と、前記差分情報を記憶する差分情報記憶手段と、前記中央処理手段が一の主記憶手段の主記憶領域におけるデータのアドレスを指定して当該主記憶領域にデータの書込みを行なう場合に、前記差分情報に基づき、前記指定アドレスに対応する他の主記憶手段の主記憶領域におけるデータのアドレスを指定して当該主記憶領域に前記データの書込みを行なう擬似アクセス手段と、前記一の主記憶手段の主記憶領域における各データと、当該各データに対応する前記他の主記憶手段の主記憶領域における各データとの一致を判定する判定手段と、前記判定手段が前記データが一致すると判定した場合に、前記一の主記憶手段から前記他の主記憶手段に運用を切り替える運用切替手段と、を備えることを特徴とするプログラム更新装置。
【図面の簡単な説明】
【００６７】
【図１】本実施形態に係るデバイスの主要な構成を示す概略図である。
【図２】図１に示す主記憶手段のデータの書込み又は読出しの処理を説明するためのブロック図である。
【図３】（ａ）は図１に示すバージョンアップデータ書込手段による処理を説明するための説明図であり、（ｂ）は図１に示すバージョンアップデータ展開手段による処理を説明するための説明図である。
【図４】図１に示す差分情報設定手段による処理を説明するための説明図である。
【図５】図１に示す擬似アクセス手段による処理を説明するための説明図である。
【図６】図１に示す判定手段及び運用切替手段による処理を説明するための説明図である。
【図７】図１に示すプログラム更新装置によるバージョンアップの処理手順を示すフローチャートである。
【符号の説明】
【００６８】
１      主記憶領域
１ａ    第１の主記憶領域
１ｂ    第２の主記憶領域
２      アドレス選択回路
３      読み書き回路
１０    主記憶手段
１０ａ  第１の主記憶手段
１０ｂ  第２の主記憶手段
１１    バージョンアップデータ書込手段
１２    バージョンアップデータ展開手段
１３    差分情報設定手段
１４    判定手段
１５    運用切替手段
２０    補助記憶手段
２０ａ  第１の補助記憶手段
２０ｂ  第２の補助記憶手段
３０    中央処理手段
３１    プログラムカウンタ
４０    メモリ管理手段
４１    差分情報記憶手段
４２    擬似アクセス手段
１００  デバイス
【図１】
2010079837.tif 000003
【図２】
2010079837.tif 000004
【図３】
2010079837.tif 000005
【図４】
2010079837.tif 000006
【図５】
2010079837.tif 000007
【図６】
2010079837.tif 000008
【図７】
2010079837.tif 000009