(57)【要約】【課題】記録媒体に記録されたプログラムを、サーバから受信した新たなプログラムで安全に書き換えることができるプログラム書換方法等を提供する。【解決手段】第２のプログラムを実行することにより、サーバとの通信を行うステップ（ａ）と、新たな第１のプログラムを装置に送信するステップ（ｂ）と、新たな第１のプログラムを記録媒体の第１の領域に記録するステップ（ｃ）と、録媒体の第１の領域に記録された新たな第１のプログラムを実行することにより、サーバとの通信を行うステップ（ｄ）と、新たな第２のプログラムを装置に送信するステップ（ｅ）と、装置において、新たな第２のプログラムを記録媒体の第２の領域に記録するステップ（ｆ）とを具備する。【選択図】  図５
2004246576.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介してサーバに接続された装置の記録媒体に記録されたプログラムの書換処理のための第１のプログラム及び前記装置において所定の機能を実現するための第２のプログラムを書き換える方法であって、
前記装置において、前記第２のプログラムを実行することにより、前記サーバとの通信を行うステップ（ａ）と、
前記サーバにおいて、新たな第１のプログラムを前記装置に送信するステップ（ｂ）と、
前記装置において、前記新たな第１のプログラムを前記記録媒体の第１の領域に記録するステップ（ｃ）と、
前記装置において、前記記録媒体の第１の領域に記録された前記新たな第１のプログラムを実行することにより、前記サーバとの通信を行うステップ（ｄ）と、
前記サーバにおいて、新たな第２のプログラムを前記装置に送信するステップ（ｅ）と、
前記装置において、前記新たな第２のプログラムを前記記録媒体の第２の領域に記録するステップ（ｆ）と、
を具備する方法。
【請求項２】
前記新たな第１のプログラムが、前記新たな第１のプログラムの前記記録媒体の第１の領域への記録が完了したことを表す第１の情報を末尾部に有しており、
前記装置において、ステップ（ｆ）の後に、前記第１の情報を、前記新たな第２のプログラムの前記記録媒体の第２の領域への記録が完了したことを表す第２の情報に書き換えるステップ（ｇ）を更に具備することを特徴とする請求項１記載の方法。
【請求項３】
前記記録媒体の第３の領域に前記装置のブート処理のための第３のプログラムが記録されており、
ステップ（ａ）が、前記装置において、前記記録媒体の第３の領域に記録された前記第３のプログラムを実行し、前記記録媒体の第２の領域に前記第２の情報が記録されている場合に、前記記録媒体の第２の領域に記録されている第２のプログラムに制御を移すことにより、前記サーバとの通信を行い、
ステップ（ｄ）が、前記装置において、再起動後、前記記録媒体の第３の領域に記録された前記第３のプログラムを実行し、前記記録媒体の第２の領域に前記第１の情報が記録されている場合に、前記記録媒体の第１の領域に記録されている第１のプログラムに制御を移すことにより、前記サーバとの通信を行うことを特徴とする請求項２記載の方法。
【請求項４】
前記装置と前記サーバが、ＴＦＴＰ（Ｔｒｉｖｉａｌ  Ｆｉｌｅ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）においてエラーとして扱われるべきパケットで通信を行うことを特徴とする請求項１〜３のいずれか１項に記載の方法。
【請求項５】
前記パケットが、前記第２のプログラムのバージョンに関する情報を含むことを特徴とする請求項４記載の方法。
【請求項６】
前記第２のプログラムが、バージョンに関する情報を末尾部に有することを特徴とする請求項１〜５のいずれか１項に記載の方法。
【請求項７】
ステップ（ｂ）が、前記サーバにおいて、ＩＥＥＥ８０２．３のパケットを用いて、新たな第１のプログラムを前記装置に送信し、ステップ（ｅ）が、前記サーバにおいて、ＩＥＥＥ８０２．３のパケットを用いて、新たな第２のプログラムを前記装置に送信することを特徴とする請求項１〜３のいずれか１項に記載の方法。
【請求項８】
ステップ（ｂ）が、前記サーバにおいて、新たな第１のプログラムを所定のサイズのブロック単位で前記装置に送信し、
ステップ（ｃ）が、前記装置において、前記新たな第１のプログラムを所定のサイズのブロック単位で前記記録媒体の第１の領域に記録し、
ステップ（ｅ）が、前記サーバにおいて、新たな第２のプログラムを所定のサイズのブロック単位で前記装置に送信し、
ステップ（ｆ）が、前記装置において、前記新たな第２のプログラムを所定のサイズのブロック単位で前記記録媒体の第２の領域に記録することを特徴とする請求項１〜７のいずれか１項に記載の方法。
【請求項９】
ネットワークを介してサーバに接続された装置に用いられる半導体装置であって、
プログラムの書換処理のための第１のプログラムを記録する第１の領域及び所定の機能を実現するための第２のプログラムを記録する第２の領域を有するメモリと、
前記メモリの第２の領域に記録された前記第２のプログラムを実行することにより前記サーバとの通信を行い、新たな第１のプログラムを前記サーバから受信し、前記新たな第１のプログラムを前記メモリの第１の領域に記録し、前記メモリの第１の領域に記録された前記新たな第１のプログラムを実行することにより前記サーバとの通信を行い、新たな第２のプログラムを前記サーバから受信し、前記新たな第２のプログラムを前記メモリの第２の領域に記録する処理部と、
を具備する半導体装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ネットワークを介してサーバに接続された装置の記録媒体に記録されたプログラムの書換方法に関する。さらに、本発明は、ネットワークを介してサーバに接続された装置に用いられる半導体装置に関する。
【０００２】
【従来の技術】
従来より、通信コントローラ（通信用ＬＳＩ）は、ＣＰＵコアと、ＣＰＵコアが実行するためのプログラム（ファームウェア）を記録するフラッシュＲＯＭとを有している。このフラッシュＲＯＭに記録されたプログラムには通信に必要なコードが含まれており、この通信に必要なコードが書き換えられた時点で通信が不可能となってしまうため、フラッシュＲＯＭに記録されているプログラムを書き換えることはできなかった。そのため、プログラムを書き換えるには、ＲＯＭライタ等を用いなければならなかった。
【０００３】
しかしながら、通信コントローラが組み込まれた機器は、すぐに人の手の届くところに配置されているとは限らず、また、ネットワークから取り外すことが困難である場合もある。さらに、ネットワークに大量の機器が接続されている場合には、これら全ての機器内の通信コントローラのファームウェアを書き換えることが容易ではなかった。
【０００４】
ところで、従来、特に運用中にブート処理プログラムを遠隔操作により書き換え可能とするコンピュータシステムがある（例えば、特許文献１参照）。
【０００５】
【特許文献１】
特許第２９４０４８０号公報
【０００６】
特許文献１に掲載されたコンピュータシステムは、少なくとも２面の不揮発性記憶デバイス、少なくとも２面の不揮発性記憶デバイスの切り替えを行う不揮発性記憶デバイスセレクタ、マルチタスクオペレーティングシステム、少なくとも２面の不揮発性記憶デバイスにおけるブート処理プログラムの書き換え状態を保持するラッチ付きレジスタ等を必要とし、少なくとも２面の不揮発性記憶デバイスを現用系不揮発性記憶デバイス及び予備系不揮発性記憶デバイスとして使用するものである。
【０００７】
また、各装置の機能を停止することなく複数の装置がオンライン状態のまま一括して同時にソフトウェアのダウンロードの処理が可能なリモートソフトウェアダウンロード方式がある（例えば、特許文献２参照）。
【０００８】
【特許文献２】
特開平５−１５８７０３号公報
【０００９】
特許文献２に掲載されたリモートソフトウェアダウンロード方式は、ネットワークを構成する各装置が現用と予備用の２種類のＥＥＰＲＯＭを必要とし、ネットワーク管理装置からのｂｒｏａｄｃａｓｔ型通信手段を使用して複数の装置の予備用のＥＥＰＲＯＭにプログラムデータを書き込む第一の手段、ｐｏｉｎｔ−ｔｏ−ｐｏｉｎｔ型通信手段を使用して第一の手段によって個々の装置の予備用ＥＥＰＲＯＭに書き込まれたプログラムデータが正常であることを確認する第二の手段、ｂｒｏａｄｃａｓｔ型通信手段を使用して複数の装置に現用か予備用かのＥＥＰＲＯＭを指定して立ち上げを行わせる第三の手段、個々の装置に於いて第三の手段による立ち上げ後の異常検出時には自動的に予備用から現用のＥＥＰＲＯＭに切り替えて再立ち上げを行う第四の手段、第二の手段と同様に個々の装置に現在運用中のＥＥＰＲＯＭを確認する第五の手段を必要とする。
【００１０】
また、シリアル通信ポート等を利用して不揮発性の書き換え可能なメモリにファームウェアの応用部分を書き込み、また書き換えることを可能とする制御装置がある（例えば、特許文献３参照）。
【００１１】
【特許文献３】
特開２０００−１１２７６５号公報
【００１２】
特許文献３に掲載された制御装置は、ファームウェアの第１の部分に従って起動した場合に第２の記憶手段にファームウェアの第２の部分が記憶されているか否かを調べ、記憶されている場合はファームウェアの第２の部分を実行し、記憶されていない場合は待機状態を維持し、該待機状態の間またはファームウェアの第２の部分の実行中に書き込み命令が与えられた場合に、プログラムに従って外部通信手段を介してファームウェアの第２の部分を受信して第２の記憶手段に書き込み実行命令の受信を待機するものである。
【００１３】
【発明が解決しようとする課題】
そこで、上記の点に鑑み、本発明は、ネットワークを介してサーバに接続された装置の記録媒体に記録されたプログラムを安全に書き換えることができるプログラム書換方法を提供することを第１の目的とする。また、本発明は、ネットワークを介してサーバに接続された装置に用いられる半導体装置を提供することを第２の目的とする。
【００１４】
【課題を解決するための手段】
以上の課題を解決するため、本発明に係るプログラム書換方法は、ネットワークを介してサーバに接続された装置の記録媒体に記録されたプログラムの書換処理のための第１のプログラム及び装置において所定の機能を実現するための第２のプログラムを書き換える方法であって、装置において、第２のプログラムを実行することにより、サーバとの通信を行うステップ（ａ）と、サーバにおいて、新たな第１のプログラムを装置に送信するステップ（ｂ）と、装置において、新たな第１のプログラムを記録媒体の第１の領域に記録するステップ（ｃ）と、装置において、記録媒体の第１の領域に記録された新たな第１のプログラムを実行することにより、サーバとの通信を行うステップ（ｄ）と、サーバにおいて、新たな第２のプログラムを装置に送信するステップ（ｅ）と、装置において、新たな第２のプログラムを記録媒体の第２の領域に記録するステップ（ｆ）とを具備する。
【００１５】
これにより、プログラムを安全に書き換えることができる。
【００１６】
また、新たな第１のプログラムが、新たな第１のプログラムの記録媒体の第１の領域への記録が完了したことを表す第１の情報を末尾部に有しており、装置において、ステップ（ｆ）の後に、第１の情報を、新たな第２のプログラムの記録媒体の第２の領域への記録が完了したことを表す第２の情報に書き換えるステップ（ｇ）を更に具備することとしても良い。また、記録媒体の第３の領域に装置のブート処理のための第３のプログラムが記録されており、ステップ（ａ）が、装置において、記録媒体の第３の領域に記録された第３のプログラムを実行し、記録媒体の第２の領域に第２の情報が記録されている場合に、記録媒体の第２の領域に記録されている第２のプログラムに制御を移すことにより、サーバとの通信を行い、ステップ（ｄ）が、装置において、再起動後、記録媒体の第３の領域に記録された第３のプログラムを実行し、記録媒体の第２の領域に第１の情報が記録されている場合に、記録媒体の第１の領域に記録されている第１のプログラムに制御を移すことにより、サーバとの通信を行うこととしても良い。
【００１７】
また、装置とサーバが、ＴＦＴＰ（Ｔｒｉｖｉａｌ  Ｆｉｌｅ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）においてエラーとして扱われるべきパケットで通信を行うこととしても良い。
これにより、情報処理装置３以外の他のＴＦＴＰクライアントのプログラム（ファームウェア）を書き換えてしまうことを防止することができる。
さらに、パケットが、第２のプログラムのバージョンに関する情報を含むこととしても良い。
【００１８】
また、第２のプログラムが、バージョンに関する情報を末尾部に有することとしても良い。
これにより、第２の領域に記録されている第２のプログラムが書き換え対象であるか又は書き換え対象ではないかを容易に管理することができる。
【００１９】
また、ステップ（ｂ）が、サーバにおいて、ＩＥＥＥ８０２．３のパケットを用いて、新たな第１のプログラムを装置に送信し、ステップ（ｅ）が、サーバにおいて、ＩＥＥＥ８０２．３のパケットを用いて、新たな第２のプログラムを装置に送信することとしても良い。
これにより、アップデート専用プログラムのプログラムサイズを小さくすることができる。
【００２０】
また、ステップ（ｂ）が、サーバにおいて、新たな第１のプログラムを所定のサイズのブロック単位で装置に送信し、ステップ（ｃ）が、装置において、新たな第１のプログラムを所定のサイズのブロック単位で記録媒体の第１の領域に記録し、ステップ（ｅ）が、サーバにおいて、新たな第２のプログラムを所定のサイズのブロック単位で装置に送信し、ステップ（ｆ）が、装置において、新たな第２のプログラムを所定のサイズのブロック単位で記録媒体の第２の領域に記録することとしても良い。
【００２１】
これにより、通信エラー等によってメインプログラムの途中で書き換えが中止された場合に、既に書き換え（消去及び書き込み）が行われたブロックの再書き換えを不要とすることができ、メインプログラムの書き換えを再び試みたときの書き換えに必要な時間を短くすることができるとともに、既に書き換え（消去及び書き込み）が行われたブロックの書き換え寿命が短くなることを防止することができる。
【００２２】
また、本発明に係る半導体装置は、ネットワークを介してサーバに接続された装置に用いられる半導体装置であって、プログラムの書換処理のための第１のプログラムを記録する第１の領域及び所定の機能を実現するための第２のプログラムを記録する第２の領域を有するメモリと、メモリの第２の領域に記録された第２のプログラムを実行することによりサーバとの通信を行い、新たな第１のプログラムをサーバから受信し、新たな第１のプログラムをメモリの第１の領域に記録し、メモリの第１の領域に記録された新たな第１のプログラムを実行することによりサーバとの通信を行い、新たな第２のプログラムをサーバから受信し、新たな第２のプログラムをメモリの第２の領域に記録する処理部とを具備する。
これにより、メモリ内のプログラムを安全に書き換えることができる。
【００２３】
【発明の実施の形態】
以下、図面を参照しながら、本発明の実施の形態について説明する。
図１に、本発明の一実施形態に係るプログラム書換方法を実現するためのシステムの構成を示す。図１に示すように、システム１は、サーバコンピュータ２と、情報処理装置３とを具備する。サーバコンピュータ２と情報処理装置３は、ネットワークを介して接続されている。
サーバコンピュータ２は、情報処理装置３が実行するための最新バージョンのプログラムを格納しており、必要に応じて、この最新バージョンのプログラムを情報処理装置３に送信する。
【００２４】
図２は、図１の情報処理装置３の内部構成を示す図である。図２に示すように、情報処理装置３は、ＣＰＵ４と、ＲＡＭ５と、ＲＯＭ６と、通信コントローラ７と、ネットワークインタフェース８とを具備する。
ＣＰＵ４は、ＲＡＭ５を作業用領域として使用しながら、ＲＯＭ６に格納されたプログラムを実行する。
【００２５】
通信コントローラ７は、ＴＣＰ／ＩＰを用いた通信の物理層（例えば、ＩＥＥＥ８０２．３に規定される１０Ｂａｓｅ−Ｔ等）を担うネットワークインタフェース８に接続されており、外部機器との間のＴＣＰ／ＩＰを用いた通信を行う。
図３は、本発明の一実施形態に係る半導体装置として、図２の通信コントローラ７の内部構成を示す図である。図３に示すように、通信コントローラ７は、ネットワークインタフェース部１１と、バスインタフェース部１３と、ＣＰＵコア１５と、フラッシュＲＯＭ１７とを具備する。
【００２６】
ネットワークインタフェース部１１は、外部機器から通信データを受け取ってＣＰＵコア１５に送り、ＣＰＵコア１５から通信データを受け取って外部機器に送る。
バスインタフェース部１３は、ＣＰＵ４から通信データ等を受け取ってＣＰＵコア１５に送り、ＣＰＵコア１５から通信データ等を受け取ってＣＰＵ４に送る。
【００２７】
フラッシュＲＯＭ１７は、ＣＰＵコア１５がＴＣＰ／ＩＰを用いた通信等の機能を実現するためのプログラム（ファームウェア）を記録している。
図４は、フラッシュＲＯＭ１７のメモリマップを示す図である。図４に示すように、フラッシュＲＯＭ１７は、ブートセクタ（ブートプログラム記録領域）と、メインプログラム記録領域と、アップデート専用プログラム記録領域とを有する。
【００２８】
ブートセクタは、通信コントローラ７の起動時に実行されるプログラムであるブートプログラムを記録する領域である。
メインプログラム記録領域は、通信コントローラ７が所定の機能を実現するためのプログラムであるメインプログラムを記録する領域である。なお、このメインプログラムは、後に説明するように、アップデート専用プログラム記録領域に記録されているプログラムを最新バージョンのプログラムに書き換える処理のためのコードを含んでいる。
【００２９】
メインプログラム記録領域の末尾部には、メインプログラムのバージョン情報を記録するためのバージョン情報記録領域が設けられており、このバージョン情報記録領域に記録されているバージョン情報をサーバコンピュータ２（図１参照）に格納されているメインプログラムのバージョン情報と比較することにより、メインプログラム記録領域に現在記録されているメインプログラムが最新バージョンのメインプログラムであるか否かを判断することができる。
【００３０】
アップデート専用プログラム記録領域は、メインプログラム記録領域に現在記録されているメインプログラムを最新バージョンのメインプログラムに書き換える処理を行うためのプログラムであるアップデート専用プログラムを記録する領域である。アップデート専用プログラム記録領域の末尾部には、アップデート専用プログラムの書換が完了した旨又はメインプログラムの書換が完了した旨を表すシグネチャを記録するためのシグネチャ記録領域が設けられている。
【００３１】
なお、アップデート専用プログラムは、メインプログラム記録領域に現在記録されているメインプログラムを最新バージョンのメインプログラムに書き換える処理に特化したプログラムであるため、そのプログラムサイズは、メインプログラムのプログラムサイズより小さい。
【００３２】
次に、システム１におけるプログラム書換動作について、図１〜図５を参照しながら説明する。
図５は、サーバコンピュータ２及びＣＰＵコア１５の動作を示すフローチャートである。
ＣＰＵコア１５は、起動すると、ブートプログラムを実行し、さらに、ブートプログラムからメインプログラムに処理を移し、メインプログラムを実行する（ステップＳ１０１）。なお、後に説明するように、所定の条件下では、ＣＰＵコア１５が、ブートプログラムの実行後、ブートプログラムからアップデート専用プログラムに処理を移し、アップデート専用プログラムを実行する場合もある。
【００３３】
ＣＰＵコア１５は、ＵＤＰ／ＩＰ上のＴＦＴＰ（Ｔｒｉｖｉａｌ  Ｆｉｌｅ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）を用いて、最新バージョンのアップデート専用プログラムをサーバコンピュータ２に要求する。サーバコンピュータ２は、ＴＦＴＰを用いて、最新バージョンのアップデート専用プログラムをＣＰＵコア１５に送信する（ステップＳ２０１）。
【００３４】
ＣＰＵコア１５は、サーバコンピュータ２から受信した最新バージョンのアップデート専用プログラムを、フラッシュＲＯＭ１７のアップデート専用プログラム記録領域内に記録する（ステップＳ１０２）。このとき、アップデート専用プログラム記録領域の末尾部のシグネチャ記録領域内には、アップデート専用プログラムの書き換えが完了した旨を表すシグネチャが記録される。シグネチャ記録領域は、アップデート専用プログラム記録領域の末尾部に設けられているため、アップデート専用プログラムの書き換えが完了した旨を表すシグネチャがシグネチャ記録領域内に記録されていることは、アップデート専用プログラムの書き換えが完了したことを保証することとなる。
【００３５】
なお、何らかの理由（例えば、ネットワークトラブル等）により、アップデート専用プログラムの転送が途中で中断され、アップデート専用プログラムの書き換えが途中まで行われはしたが完了されなかった場合、アップデート専用プログラム記録領域内のアップデート専用プログラムは不完全なものとなる。しかしながら、このような場合であっても、メインプログラム記録領域内のメインプログラムは元の状態のままであり、メインプログラム記録領域内のメインプログラムには何らの影響もなく、ＣＰＵコア１５の動作にも何らの影響もない。
【００３６】
アップデート専用プログラムの書き換えが完了すると、ＣＰＵコア１５は、再起動を行い、ブートプログラムを実行する。ここで、アップデート専用プログラム記録領域の末尾部のシグネチャ記録領域内にアップデート専用プログラムの書き換えが完了した旨を表すシグネチャが記録されているため、ＣＰＵ１５は、ブートプログラムからアップデート専用プログラムに処理を移し、アップデート専用プログラムを実行する（ステップＳ１０３）。
次に、ＣＰＵコア１５は、最新バージョンのメインプログラムをサーバコンピュータ２に要求する。サーバコンピュータ２は、最新バージョンのメインプログラムをＣＰＵコア１５に送信する（ステップＳ２０２）。
【００３７】
ＣＰＵコア１５は、サーバコンピュータ２から受信した最新バージョンのメインプログラムを、フラッシュＲＯＭ１７のメインプログラム記録領域内に記録する（ステップＳ１０４）。
なお、ネットワークトラブル等により、メインプログラムの転送が途中で中断され、メインプログラムの書き換えが途中まで行われはしたが完了されなかった場合、メインプログラム記録領域内のメインプログラムは不完全なものとなる。しかしながら、このような場合であっても、アップデート専用プログラム記録領域内のアップデート専用プログラムは完全なものである。そのため、ＣＰＵコア１５は、再起動後、再度アップデート専用プログラム記録領域内のアップデート専用プログラムを実行し、メインプログラムの書き換えを再度試みることができる。
【００３８】
メインプログラムの書き換えが完了すると、ＣＰＵコア１５は、メインプログラムの書き換えが完了した旨を表すシグネチャを、アップデート専用プログラム記録領域の末尾部のシグネチャ記録領域内に記録する（ステップＳ１０５）。これにより、ＣＰＵコア１５は、次回再起動時に、ブートプログラムを実行し、さらに、ブートプログラムから最新バージョンのメインプログラムに処理を移し、最新バージョンのメインプログラムを実行することができる。
【００３９】
このように、本実施形態によれば、アップデート専用プログラムの転送が途中で中断され、アップデート専用プログラムの書き換えが途中まで行われはしたが完了されなかった場合であっても、メインプログラム記録領域内のメインプログラムには何らの影響もないため、アップデート専用プログラムの書き換えを再度試みることができる。また、メインプログラムの転送が途中で中断され、メインプログラムの書き換えが途中まで行われはしたが完了されなかった場合であっても、アップデート専用プログラム記録領域内のアップデート専用プログラムは完全なものであるため、メインプログラムの書き換えを再度試みることができる。従って、フラッシュＲＯＭ１７に記録されているプログラムの書き換えを安全に行うことができる。
【００４０】
なお、本実施形態においては、サーバコンピュータ２からＣＰＵコア１５へのプログラムの転送にＵＤＰ／ＩＰ上のＴＦＴＰを用いることとしている。ＴＣＰ／ＩＰ、ＵＤＰ／ＩＰ等の汎用プロトコルは、階層構造を有しており、プロトコルに細かい取り決め（例えば、再送信のための取り決め等）があるため、ＴＣＰ／ＩＰ、ＵＤＰ／ＩＰ等の汎用プロトコルを実現するためのコードは複雑であり、コードサイズも大きい。そのため、アップデート専用プログラムのプログラムサイズが大きくなり、別のフラッシュＲＯＭを用意する必要が生じたり、メインプログラム記録領域のサイズが圧迫され小さくなってしまう場合も生じ得る。
そこで、ＴＦＴＰを用いることなく、ＩＥＥＥ８０２．３のパケットをそのまま用いることとしても良い（生パケットの使用）。パケットをそのまま用いることとすれば、アップデート専用プログラムのプログラムサイズを小さくすることができ、別のフラッシュＲＯＭを用意する必要を無くし、メインプログラム記録領域のサイズが圧迫され小さくなってしまうことを防止することができる。
【００４１】
また、サーバコンピュータ２からＣＰＵコア１５へのプログラムの転送にＵＤＰ／ＩＰ上のＴＦＴＰを用いることとすると、ＴＦＴＰが汎用のプロトコルであるため、情報処理装置３以外の他のＴＦＴＰクライアントからのＴＦＴＰパケットによってサーバコンピュータ２が誤動作し、情報処理装置３以外の他のＴＦＴＰクライアントのプログラム（ファームウェア）を書き換えてしまうことが考えられる。このようなことを防止するため、ＴＣＰ／ＩＰ、ＵＤＰ／ＩＰ等の上に専用プロトコルを実装することとすると、アップデート専用プログラム又はメインプログラムのプログラムサイズが大きくなってしまう。そこで、サーバコンピュータ２がネットワーク上にブロードキャストするＴＦＴＰパケットとしてＴＦＴＰの規格外のパケットを用いることとしても良い。
【００４２】
図６は、サーバコンピュータ２がネットワーク上にブロードキャストするＴＦＴＰパケットの例を示す図である。図６に示すＴＦＴＰパケットは、”ＡＢＣＤＥＦＧＨＩＪＫＬＭＮＯＰＱ”という通常あり得ないファイル名のファイル読み込み要求（ＲＲＱ：Ｒｅａｄ  ＲｅＱｕｅｓｔ）を表しており、さらに、”ＸＹＺ”というモードはＴＦＴＰにはない。そのため、情報処理装置３以外の他のＴＦＴＰクライアントは、エラーコード１（そのようなファイル名のファイルは見つからないことを表す）又はエラーコード４（モードが不正であることを表す）をサーバコンピュータ２に返送する。一方、情報処理装置３は、図７に示すようなＴＦＴＰパケットをサーバコンピュータ２に返送する。
【００４３】
図７に示すＴＦＴＰパケットは、「未定義のエラー、エラーの詳細はエラーメッセージを参照」を意味する。これは、情報処理装置３以外の他のＴＦＴＰクライアントがサーバコンピュータ２に返送するＴＦＴＰパケットと異なるので、サーバコンピュータ２は、プログラム書換対象である情報処理装置３を他のＴＦＴＰクライアントと識別することができる。
これにより、情報処理装置３以外の他のＴＦＴＰクライアントのプログラム（ファームウェア）を書き換えてしまうことを防止することができる。
【００４４】
なお、図６のＴＦＴＰパケットのファイル名及び図７のＴＦＴＰパケットのエラーメッセージに、メインプログラムのバージョン情報を表す文字列を含ませることとしても良い。
【００４５】
また、本実施形態においては、図４に示すように、フラッシュＲＯＭ１７のメインプログラム格納領域の末尾部にバージョン情報格納領域を設けている。そのため、アップデート専用プログラム実行によるメインプログラムの書き換え処理中（図５中のステップＳ２０２及びＳ１０４参照）には、バージョン情報格納領域内には書き換えられる前の古いバージョン情報が格納されており、ＣＰＵコア１５は、サーバコンピュータ２からの問い合わせに対し、古いバージョン情報を返信する。従って、アップデート専用プログラム実行によるメインプログラムの書き換え処理中（メインプログラムの書き換え処理完了前）には、メインプログラム格納領域内のメインプログラムは、書き換え対象となる。
【００４６】
また、アップデート専用プログラム実行によるメインプログラムの書き換え処理完了後には、バージョン情報格納領域内には書き換えられた後の最新のバージョン情報が格納されており、ＣＰＵコア１５は、サーバコンピュータ２からの問い合わせに対し、最新のバージョン情報を返信する。従って、アップデート専用プログラム実行によるメインプログラムの書き換え処理完了後には、メインプログラム格納領域内のメインプログラムは、書き換え対象とならない。
【００４７】
このように、本実施形態によれば、メインプログラム格納領域内のメインプログラムが書き換え対象であるか（古いバージョンのメインプログラムであるか）、書き換え対象ではないか（最新バージョンのメインプログラムであるか）を容易に管理することができる。
【００４８】
また、フラッシュＲＯＭ１７のメインプログラム格納領域内のメインプログラムを所定サイズのブロック単位で書き換え（消去及び書き込み）を行うこととすれば、通信エラー等によってメインプログラムの途中で書き換えが中止された場合に、既に書き換え（消去及び書き込み）が行われたブロックの再書き換えを不要とすることができ、メインプログラムの書き換えを再び試みたときの書き換えに必要な時間を短くすることができるとともに、既に書き換え（消去及び書き込み）が行われたブロックの書き換え寿命が短くなることを防止することができる。
【図面の簡単な説明】
【図１】プログラム書換方法を実現するためのシステムの構成を示す図。
【図２】図１の情報処理装置の内部構成を示す図。
【図３】図２の通信コントローラの内部構成を示す図。
【図４】図３のフラッシュＲＯＭのメモリマップを示す図。
【図５】図１のシステムの動作を示すフローチャート。
【図６】送受信されるパケットのフォーマットの一例を示す図。
【図７】送受信されるパケットのフォーマットの一例を示す図。
【符号の説明】
１  システム、２  サーバコンピュータ、３  情報処理装置、４  ＣＰＵ、５ＲＡＭ、６  ＲＯＭ、７  通信コントローラ、８  ネットワークインタフェース、１１  ネットワークインタフェース部、１３  バスインタフェース部、１５ＣＰＵコア、１７  フラッシュＲＯＭ
【図１】
2004246576.tif 000003
【図２】
2004246576.tif 000004
【図３】
2004246576.tif 000005
【図４】
2004246576.tif 000006
【図５】
2004246576.tif 000007
【図６】
2004246576.tif 000008
【図７】
2004246576.tif 000009