(57)【要約】【課題】  ファームウェア更新時における通信の中断を回避できる通信装置を提供する。【解決手段】  再書き込み可能なメモリ１に格納されたファームウェアにより通信処理を実行する通信装置において、２つの異なるファームウェアを並列動作させる固定された上位ＯＳ４１を有し、この上位ＯＳ４１により、現在通信処理を実行している旧ファームウェア（旧コード領域２２内）と新しい通信処理用の新ファームウェアをメモリ１にダウンロードする更新用ファームウェア４７とを並列動作させ、新ファームウェアのダウンロードが終了した後、新ファームウェア（新コード領域３２内）の初期化処理と旧ファームウェアとを並列動作させ、初期化処理が終了した後、旧ファームウェアを停止させ新ファームウェアに通信処理を実行させる。【選択図】        図１
2005064709.tif 000002
【特許請求の範囲】
【請求項１】
再書き込み可能なメモリに格納されたファームウェアにより通信処理を実行する通信装置において、２つの異なるファームウェアを並列動作させる固定された上位ＯＳを有し、この上位ＯＳにより、現在通信処理を実行している旧ファームウェアと新しい通信処理用の新ファームウェアをメモリにダウンロードする更新用ソフトウェアとを並列動作させ、新ファームウェアのダウンロードが終了した後、新ファームウェアの初期化処理と旧ファームウェアとを並列動作させ、初期化処理が終了した後、旧ファームウェアを停止させ新ファームウェアに通信処理を実行させることを特徴とする通信装置。
【請求項２】
旧ファームウェアから新ファームウェアに引き継ぐデータを格納する共通データ領域を有し、新ファームウェアは初期化処理中に共通データ領域からデータを取り込むことを特徴とする請求項１記載の通信装置。
【請求項３】
新ファームウェアが周辺ＬＳＩに設定するデータを格納するＬＳＩ設定データ領域を有し、新ファームウェアが初期化処理中に周辺ＬＳＩに設定するデータは周辺ＬＳＩに送出せずにＬＳＩ設定データ領域に一時保存し、新ファームウェアに通信処理を実行させるときにＬＳＩ設定データ領域の内容を周辺ＬＳＩに送出することを特徴とする請求項１又は２記載の通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信処理のファームウェアが再書き込み可能な通信装置に係り、特に、ファームウェア更新時における通信の中断を回避できる通信装置に関するものである。
【背景技術】
【０００２】
ネットワークにおける中継など高速かつ高度な通信処理が必要とされる近年の通信装置では、ＣＰＵとそのＣＰＵが実行するソフトウェアなどを格納するメモリと通信用ＬＳＩなどの周辺ＬＳＩとを備え、通信処理をソフトウェアで実行するのが一般的である。通信処理のソフトウェアは殆どハードウェアのように固定的に設けられているので、ファームウェアと呼ばれている。ファームウェアの利点は、通信装置の改良・設計変更に際してハードウェアに手を加えることなく、ファームウェアのバージョンアップだけを行うことで対応できることである。従って、ファームウェアは再書き込みが可能で、かつ停電でも記憶内容を保持できる不揮発性メモリに格納しておくのが好ましい。
【０００３】
従来、通信装置においては、ファームウェアを更新する場合、イーサネット（登録商標）に準拠したイーサポート又はＲＳ２３２Ｃポートに接続されたサーバからＴＦＴＰやＸｍｏｄｅｍなどのプロトコルを使用して新しいファームウェアを通信装置にダウンロードし、通信装置を再起動することによって、新ファームウェアによる通信処理を行う。
【０００４】
図２に、従来の通信装置におけるメモリの構成とハードウェアを含めたファームウェアの構造を示す。不揮発性メモリ５１には、新しいファームウェアをダウンロードしたとき、旧ファームウェア（現在実行されているのと同じファームウェア）５２と新ファームウェア（新しくダウンロードしたファームウェア）５３と構成情報とが格納されている。なお、旧ファームウェア５２を残さずに新ファームウェア５３を上書きしてもよい。
【０００５】
揮発性メモリ５５には、ファームウェアが使用するデータが保存されている。即ち、割り込みベクタ領域６１には割り込みベクタが、コード領域６２には実際に実行に使用されるＯＳや各種タスクのコードが、データ領域６３には実行中に変更されない静的変数が、ヒープ領域６４には実行中に変更される動的変数が、スタック領域６５には自動変数、関数の引数、関数実行時のメモリ番地などが記憶されている。なお、領域の分け方は、使用する言語などにより多少異なるので、上記した項目に限定されない。また、不揮発性メモリ５１に書き込まれているファームウェアを直接実行する形態も可能である。
【０００６】
通信処理のファームウェアは、ＯＳと各種タスクとから構成されており、ＯＳの制御下で随時必要なタスクが実行される。従って、旧ファームウェア７３は、図示のように、旧ＯＳ７１が複数の旧タスク７２を管理している構造となる。ＣＰＵ６は、再起動直前まで旧ＯＳ７１を実行し、その旧ＯＳ７１の制御下で随時必要な旧タスク７２を実行する。この後、通信装置を再起動（電源再投入或いはＣＰＵ６をリセット）すると、新ファームウェア８３が起動される。新ファームウェア８３は新ＯＳ８１が複数の新タスク８２を管理している構造となり、ＣＰＵ６は新ＯＳ８１を実行し、その新ＯＳ８１の制御下で随時必要な新タスク８２を実行する。
【０００７】
【特許文献１】特開２００１−０５１８４４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
新ファームウェア８３を起動する場合、通信装置の再起動を開始してから通信処理が実行可能になるまでには、ＣＰＵ６の初期化、揮発性メモリ５５への書き込み・読み出しを実施確認するメモリテスト、不揮発性メモリ５１の新ファームウェア５３を揮発性メモリ５５のコード領域６２へコピー、割り込みベクタの初期設定、スタック領域の設定、新ＯＳ８１の起動、各新タスク８２の起動などの初期化処理を行う必要がある。この初期化処理を行っている間は、通信処理が中断される。なお、初期化処理の内容は、ＣＰＵ６の機種、使用する言語などにより多少異なるので、上記した項目に限定されない。
【０００９】
また、旧ファームウェア７３が揮発性メモリ５５に保持していたデータが通信装置の再起動及び新ファームウェア８３の起動の際に初期化されることにより、データの不連続が生じる。例えば、リンクアップ／ダウンなどのネットワークの状態を示すデータが新ファームウェア８３に引き継ぎされず状態が変化したようになってしまう。
【００１０】
また、旧ファームウェア７３により既に設定がなされていた周辺ＬＳＩ（図示せず）が通信装置の再起動及び新ファームウェア８３により再設定されることにより、周辺ＬＳＩの状態の継続が中断されて通信の瞬断が発生する。
【００１１】
以上のように、従来の通信装置では、ファームウェア更新時に通信が中断されることは避けられない。このため、ネットワークの加入者に対する通信接続サービスが中断してしまうことになる。特にインターネットの幹線に設置される通信装置では、通信接続サービスの中断はあってはならないことである。
【００１２】
通信の中断を回避するためにＣＰＵを２個搭載して二重化することは可能であるが、コストが増大するので好ましくない。ＣＰＵを１個搭載したものにおいて通信の中断を回避する構成とするのが望ましい。
【００１３】
そこで、本発明の目的は、上記課題を解決し、ファームウェア更新時における通信の中断を回避できる通信装置を提供することにある。
【課題を解決するための手段】
【００１４】
上記目的を達成するために本発明は、再書き込み可能なメモリに格納されたファームウェアにより通信処理を実行する通信装置において、２つの異なるファームウェアを並列動作させる固定された上位ＯＳを有し、この上位ＯＳにより、現在通信処理を実行している旧ファームウェアと新しい通信処理用の新ファームウェアをメモリにダウンロードする更新用ファームウェアとを並列動作させ、新ファームウェアのダウンロードが終了した後、新ファームウェアの初期化処理と旧ファームウェアとを並列動作させ、初期化処理が終了した後、旧ファームウェアを停止させ新ファームウェアに通信処理を実行させるものである。
【００１５】
旧ファームウェアから新ファームウェアに引き継ぐデータを格納する共通データ領域を有し、新ファームウェアは初期化処理中に共通データ領域からデータを取り込んでもよい。
【００１６】
新ファームウェアが周辺ＬＳＩに設定するデータを格納するＬＳＩ設定データ領域を有し、新ファームウェアが初期化処理中に周辺ＬＳＩに設定するデータは周辺ＬＳＩに送出せずにＬＳＩ設定データ領域に一時保存し、新ファームウェアに通信処理を実行させるときにＬＳＩ設定データ領域の内容を周辺ＬＳＩに送出してもよい。
【発明の効果】
【００１７】
本発明は次の如き優れた効果を発揮する。
【００１８】
（１）ファームウェア更新時における通信の中断を回避できる。
【発明を実施するための最良の形態】
【００１９】
以下、本発明の一実施形態を添付図面に基づいて詳述する。
【００２０】
図１に示されるように、本発明に係る通信装置では、不揮発性メモリ１には、新しいファームウェアをダウンロードしたとき、旧ファームウェア（現在実行されているのと同じファームウェア）２と、新ファームウェア（新しくダウンロードしたファームウェア）３と構成情報４とが格納されている。なお、後述するファームウェア更新の手順では、未だ新しいファームウェアをダウンロードしていない状態から説明を始める。また、この実施形態では、不揮発性メモリ５１に書き込まれているファームウェアを直接実行せず、揮発性メモリ５にコピーしたものを実行するものとする。実行に用いるファームウェアは符号を変えて示してある。
【００２１】
揮発性メモリ５には、旧ファームウェア４７が使用しているデータ、新ファームウェア４８が使用している（これから使用する）データ、上位ＯＳ４１に関係するデータなどが保存されている。詳しく述べると、揮発性メモリ５の割り込みベクタ領域１１には上位ＯＳ４１が管理する割り込みベクタが、コード領域１２には実際に実行に使用される上位ＯＳ４１のコードが、データ領域１３には実行中に変更されない上位ＯＳ４１の静的変数が、ヒープ領域１４には後述する新旧の諸変数が、共通データ領域１５には旧ファームウェア４７から新ファームウェア４８に引き継ぐデータが、ＬＳＩ設定データ領域１６には新ファームウェア４８が初期化処理中に周辺ＬＳＩ７に設定するデータが、スタック領域１７には上位ＯＳ４１における自動変数、関数の引数、関数実行時のメモリ番地などが記憶されている。
【００２２】
ヒープ領域１４をさらに詳しく述べると、旧割り込みベクタ領域２１には旧ＯＳ４２が管理する割り込みベクタが、旧コード領域２２には実際に実行に使用される旧ファームウェア（旧ＯＳ４２や各種旧タスク４５）４７が、旧データ領域２３には旧ファームウェア４７の実行中に変更されない旧ファームウェア４７の静的変数が、旧ヒープ領域２４には旧ファームウェア４７の実行中に変更される動的変数が、旧スタック領域２５には旧ＯＳ４７における自動変数、関数の引数、関数実行時のメモリ番地などが、新割り込みベクタ領域３１には新ＯＳ４３が管理する割り込みベクタが、新コード領域３２には実際に実行に使用される新ファームウェア（新ＯＳ４３や各種新タスク４６）４８のコードが、新データ領域３３には新ファームウェア４８の実行中に変更されない新ＯＳ４３の静的変数が、新ヒープ領域３４には新ファームウェア４８の実行中に変更される動的変数が、新スタック領域３５には新ＯＳ４３における自動変数、関数の引数、関数実行時のメモリ番地などが記憶されている。
【００２３】
新旧ファームウェア４７，４８は、それぞれ新旧ＯＳ４２，４３と新旧各種タスク４５，４６とからなり、ＣＰＵ６は、上位ＯＳ４１を実行し、その上位ＯＳ４１の制御下で旧ＯＳ４２と新ＯＳ４３とを並列動作させることができる。上位ＯＳ４１は、時分割やイベントの割り込みに応じて使用するメモリ領域、ＣＰＵレジスタ、割り込みベクタなどを切替え、下位の新旧ＯＳ４２，４３を交互に実行させる。その新旧ＯＳ４２，４３の制御下でそれぞれ新旧の各種タスク４５，４６が実行されるので、新旧ファームウェア４７，４８が並列動作（見掛け上同時に動作）することになる。また、上位ＯＳ４１は、旧ファームウェア４７と更新用ファームウェア４４とを並列動作させることもできる。即ち、上位ＯＳ４１は、互いに独立した２つのファームウェア（便宜的に一方を主ファームウェア、他方を副ファームウェアと呼ぶことがあるが、固定的にどちらかが主というわけではない）を並列動作させることができ、その主副ファームウェアとして新旧ファームウェア４７，４８或いは更新用ファームウェア４４を選択することができる。更新用ファームウェア４４は、サーバからの新しいファームウェアを不揮発性メモリ１にダウンロードするもので、上位ＯＳ４１の中に含まれている。
【００２４】
上位ＯＳ４１は、固定的に設けられる。即ち、図示しないＲＯＭ或いは不揮発性メモリ１に書き替え不能に格納される。上位ＯＳ４１は、通信装置を再起動する際にはＣＰＵ６内にハードウェアとして組まれているブートプログラムにより揮発性メモリ５のコード領域１２に展開されて実行に供される。
【００２５】
また、図２では省略していたが、通信装置には、ポートで受信したフレームを所定の取り決めに従って他のポートへ転送するＳＷＬＳＩ、ポートの物理層インタフェースであるＰＨＹＬＳＩなどの周辺ＬＳＩ７が設けられており、これら周辺ＬＳＩ７はＣＰＵ６から設定された設定内容に基づいて動作をする。具体的な設定内容としては、ＶＬＡＮの設定、フィルタリングの設定など多様にあるが、これらは公知であるので詳しい説明は省略する。
【００２６】
次に、この通信装置におけるファームウェア更新時の動作を説明する。
【００２７】
１）上位ＯＳ４１は、常に２つのファームウェア（主ファームウェアと副ファームウェア）を交互に切り替えて実行する。切り替え時には、ＣＰＵレジスタとスタックポインタを退避する。割り込みが発生したら主ファームウェアと副ファームウェアに割り込みベクタをそれぞれ参照させ、それぞれ割り込みタスクを実行させる。
【００２８】
２）ＣＰＵ６から周辺ＬＳＩ７への書き込みは、必ず上位ＯＳ４１による制御を介して行われる。主ファームウェアが周辺ＬＳＩ７に設定を行った場合には上位ＯＳ４１が当該周辺ＬＳＩ７に書き込みを行い実際に設定が達成される。副ファームウェアが周辺ＬＳＩ７に設定を行った場合には上位ＯＳ４１は当該周辺ＬＳＩ７には書き込みを行わず実際の設定はなされない。その代わりに、上位ＯＳ４１は副ファームウェアから周辺ＬＳＩ７に書き込むはずの設定データをＬＳＩ設定データ領域１６に格納する。この制御は、副ファームウェアとして新ファームウェア４８が初期化処理を実行中に適用される。副ファームウェアとして更新用ファームウェア４４がダウンロードを実行するために周辺ＬＳＩ７に設定を行う場合はこの限りではない。
【００２９】
３）上位ＯＳ４１は、通常時（ファームウェアの更新をしないで通信処理をしているとき）には、主ファームウェアとして現行ファームウェア（現在、通信処理に供されているファームウェアのこと）を実行させ、副ファームウェアとして更新用ファームウェア４４を実行させる。ただし、サーバから更新の要請がないときは更新用ファームウェア４４が行う処理は実質的に何もなく見掛け上待ち状態であり、サーバから更新の要請があればダウンロードが開始される。
【００３０】
４）主ファームウェアとして現行ファームウェアが実行されている間（通常時とダウンロード中と新ファームウェアの初期化処理中）、現行ファームウェアはリンク状態などのデータを旧データ領域２３又は旧ヒープ領域２４に記憶すると共に、この同じデータを共通データ領域１５にも保存しておく。共通データ領域１５は、ファームウェアの新旧によらず予め決めておいた番地に予め決めておいたデータ項目を書き込み、読み出せるよう番地が固定されており、これによってファームウェアが更新されても以前のファームウェアが使用していたデータを引き継ぐことができる。
【００３１】
５）イーサポート又はＲＳ２３２Ｃポートに接続されたサーバからの更新要請によりファームウェアの更新を行うときには、更新用ファームウェア４４がサーバから新しいファームウェアを不揮発性メモリ１にダウンロードする。これにより、新ファームウェア３が不揮発性メモリ１に格納される。
【００３２】
６）更新用ファームウェア４４は、新ファームウェア３のダウンロードが終了したら、その新ファームウェア３を副ファームウェアとして実行させるため揮発性メモリ５の新コード領域３２にコピーし、その副ファームウェアに制御を移す（プログラム開始番地にプログラムカウンタをジャンプさせる）。これにより、副ファームウェアは更新用ファームウェア４４から新ファームウェア４８に移行し、更新用ファームウェア４４は終了する。
【００３３】
７）起動された新ファームウェア４８は、まず最初に初期化処理を行う。即ち、新ファームウェア４８は、現行ファームウェア（以下、旧ファームウェア４７と呼ぶ）が共通データ領域１５に保存した引継ぎ用のデータを読み取り、新データ領域３３及び新ヒープ領域３４に初期データとしてコピーする。これにより、旧ファームウェア４７がこれまで使っていたデータと新ファームウェア４８がこれから使うデータとが一致し、データが引き継がれる。さらに、新ファームウェア４８は、新割り込みベクタ領域３１への割り込みベクタの初期設定、新スタック領域３５へのスタック領域の設定、新コード領域３２内の各タスクの起動を行う。
【００３４】
８）上位ＯＳ４１は、新ファームウェア４８の初期化処理が終了したら、主ファームウェアである旧ファームウェア４７の実行を停止し、主ファームウェアを更新用ファームウェア４４に切り替える。これまでの副ファームウェアを主ファームウェアとし、主ファームウェアを副ファームウェアとする。そして、副ファームウェアとなった更新用ファームウェア４４の実行を開始する。さらに、上位ＯＳ４１は、ＬＳＩ設定データ領域１６に格納してあった設定データを周辺ＬＳＩ７に書き込むことで実際の設定を行う。主ファームウェアとなった新ファームウェア４８は、初期化処理が終了しているので通常時の動作に移り、現行ファームウェアとなる。これにより、主ファームウェアとして現行ファームウェアを実行させ、副ファームウェアとして更新用ファームウェア４４を実行させている状態に戻る。
【００３５】
なお、従来技術で行っていた初期化処理のうちＣＰＵ７の初期化及びメモリテストは、本発明によるファームウェア更新時には行う必要がなく、通信装置の電源再投入時或いはＣＰＵ７のリセット時に行うことになる。
【００３６】
以上説明したように、本発明に係る通信装置は、固定的に設けられている上位ＯＳ４１の制御下で２つの異なるファームウェアを並列動作させるようにし、現在通信処理を実行している旧ファームウェア（現行ファームウェア）４７と更新用ファームウェア４４とを並列動作させることで、通信処理を継続的に実行させながら新ファームウェア４８をダウンロードし、新ファームウェア４８の初期化処理と旧ファームウェア４７とを並列動作させた後、新ファームウェア４８による通信処理に切り替えるので、通信処理の中断がなくなる。
【００３７】
また、本発明に係る通信装置は、旧ファームウェア４７から新ファームウェア４８に引き継ぐデータを格納する共通データ領域１５を設けたので、リンクアップ／ダウンなどのネットワークの状態を示すデータを旧ファームウェア４７から新ファームウェア４８に引き継ぎすることができ、データの不連続が生じない。その際、共通データ領域１５はファームウェアの新旧によらず番地が固定されているので、プログラム長やメモリ使用量が変って新旧ファームウェア間で同じデータ項目の番地が相対的にずれても、共通データ領域１５に関しては固定の同じ番地で読み書きすることができる。
【００３８】
また、本発明に係る通信装置は、新ファームウェア４８が初期化処理中に周辺ＬＳＩ７に設定するデータは周辺ＬＳＩ７に送出せずにＬＳＩ設定データ領域１６に一時保存し、新ファームウェア４８に通信処理を実行させるときにＬＳＩ設定データ領域１６の内容を周辺ＬＳＩ７に送出するようにしたので、２つのファームウェア４７，４８が同一の周辺ＬＳＩ７に異なった設定を重ね書きし合うことがなくなり、周辺ＬＳＩ７の状態の継続が中断されることによる通信の瞬断が発生しなくなる。
【００３９】
以上のように、本発明の通信装置では、ファームウェア更新時に通信が中断されることがないので、ネットワークの加入者に対する通信接続サービスを中断することなくバージョンアップをすることができる。
【図面の簡単な説明】
【００４０】
【図１】本発明の一実施形態を示す通信装置のメモリ構成とファームウェア構造の図である。
【図２】従来の通信装置のメモリ構成とファームウェア構造の図である。
【符号の説明】
【００４１】
１  不揮発性メモリ
２  旧ファームウェア（以前にダウンロードされたもの）
３  新ファームウェア（今回ダウンロードされたもの）
５  揮発性メモリ
１５  共通データ領域
１６  ＬＳＩ設定データ領域
４１  上位ＯＳ
４２  旧ＯＳ
４３  新ＯＳ
４４  更新用ファームウェア
４５  旧タスク
４６  新タスク
４７  旧ファームウェア（実行されるもの）
４８  新ファームウェア（実行されるもの）
【図１】
2005064709.tif 000003
【図２】
2005064709.tif 000004