(57)【要約】      （修正有）【課題】コストを抑えつつ、サービスを中断させずにプログラムを更新する。【解決手段】通信装置は、更新前のファームウェア２２１に関する第１データと、更新後のファームウェア２２２に関する第２データと、前記第１データ又は前記第２データと前記第１データ又は前記第２データが位置付けられたアドレスとが対応付けられたテーブル２２４とを記憶するメモリ２２と、前記テーブル２２４に定義された前記アドレスに位置付けられた前記第１データ又は前記第２データに基づく処理を実行するプロセッサ２３とを備える。【選択図】図１
2019192171.tif 000002
【特許請求の範囲】
【請求項１】
更新前のファームウェアに関する第１データと、更新後のファームウェアに関する第２データと、前記第１データ又は前記第２データと前記第１データ又は前記第２データが位置付けられたアドレスとが対応付けられたテーブルと、を記憶するメモリと、
前記テーブルに定義された前記アドレスに位置付けられた前記第１データ又は前記第２データに基づく処理を実行するプロセッサと、
を備える通信装置。
【請求項２】
前記テーブルにおいて前記第１データに対応付けられた前記アドレスを、前記第２データが位置付けられたアドレスに書き換える書込部
をさらに備える請求項１に記載の通信装置。
【請求項３】
前記書込部は、前記更新前のファームウェアにおいて定義された更新タイミングに従って前記アドレスを書き換える
請求項２に記載の通信装置。
【請求項４】
前記書込部は、前記メモリの空き領域に前記第２データを書き込む
請求項２又は請求項３に記載の通信装置。
【請求項５】
更新前のファームウェアに関する第１データと、更新後のファームウェアに関する第２データと、前記第１データと前記第１データが位置付けられたアドレスとが対応付けられた第１情報及び前記第２データと前記第２データが位置付けられたアドレスとが対応付けられた第２情報が含まれるテーブルと、前記第１情報及び前記第２情報を識別するテーブル値と、を記憶するメモリと、
前記メモリに記憶された前記テーブル値によって識別される前記第１情報又は前記第２情報に定義された前記アドレスに位置付けられた前記第１データ又は前記第２データに基づく処理を実行するプロセッサと、
を備える通信装置。
【請求項６】
前記テーブルにおいて前記第１データに対応付けられた前記アドレスを、前記第２データが位置付けられたアドレスに書き換える書込部、
をさらに備え、
前記書込部は、前記更新前のファームウェアにおいて定義された更新タイミングに従って前記アドレスを書き換える
請求項５に記載の通信装置。
【請求項７】
通信装置のコンピュータによる情報処理方法であって、
更新前のファームウェアに関する第１データと、更新後のファームウェアに関する第２データと、前記第１データ又は前記第２データと前記第１データ又は前記第２データが位置付けられたアドレスとが対応付けられたテーブルと、を記憶するステップと、
前記テーブルに定義された前記アドレスに位置付けられた前記第１データ又は前記第２データに基づく処理を実行するステップと、
を有する情報処理方法。
【請求項８】
通信装置のコンピュータによる情報処理方法であって、
更新前のファームウェアに関する第１データと、更新後のファームウェアに関する第２データと、前記第１データと前記第１データが位置付けられたアドレスとが対応付けられた第１情報及び前記第２データと前記第２データが位置付けられたアドレスとが対応付けられた第２情報が含まれるテーブルと、前記第１情報及び前記第２情報を識別するテーブル値と、を記憶するステップと、
前記テーブル値によって識別される前記第１情報又は前記第２情報に定義された前記アドレスに位置付けられた前記第１データ又は前記第２データに基づく処理を実行するステップと、
を有する情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置及び情報処理方法に関する。
【背景技術】
【０００２】
一般的に、通信装置は、プロセッサ、不揮発性メモリ及び揮発性メモリ等を含んで構成される。不揮発性メモリは、通信装置に通信機能等を実装させるためのプログラムであるファームウェアを予め記憶している。通信装置の起動時に、不揮発性メモリに記憶されたファームウェアが揮発性メモリに展開される。そして、揮発性メモリに展開されたファームウェアが実行されることによって、通信装置に通信機能等が実装される。これにより、所望の通信サービスが提供される。
【０００３】
通信サービスを提供する通信装置に対して、新機能の追加又はバグ修正を行う場合、実行されるファームウェアを更新する必要がある。ファームウェアを更新する場合、揮発性メモリに展開されて実行されているファームウェアを一旦停止させることが一般的である。その後、不揮発性メモリに記憶されたファームウェアを書き換えて、通信装置を再起動させる。これにより、不揮発性メモリに記憶された更新後のファームウェアが、再起動によってリセットされた揮発性メモリに展開されて、実行されるようになる（例えば、非特許文献１）。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】小谷  亮、清原  良三、攝津  敦、橘高  大造、“組み込みLinuxにおけるソフトウェア更新方式（１）”、情報処理学会第６６回全国大会講演論文集、平成１６年、p.1-21-p.1-22
【発明の概要】
【発明が解決しようとする課題】
【０００５】
通信装置の再起動中には通信機能が利用できなくなるため、通信サービスの提供が一時中断される。そのため、ファームウェアの更新が及ぼす、通信サービスの利用者への影響は大きい。しかしながら、もし実行中のファームウェアを停止させることなく、揮発性メモリに展開されたファームウェアを直接書き換える場合、ファームウェアが中途半端に書き換えられる可能性がある。中途半端に書き換えられたファームウェアは、セグメンテーションエラーやメモリエラーを発生させたり、動作中のハードウェアに対して致命的な故障を発生させたりする場合がある。従って、従来、通信サービスの提供を中断させずにファームウェアを更新することは困難であった。
【０００６】
例えば、光アクセスネットワークで使用される局舎側の通信装置である加入者線端局装置(ＯＬＴ；Optical Line Network)においても上記の課題がある。従来、ＯＬＴにおいて、通信サービスの中断を伴わずにファームウェアを更新させることは困難であった。上記と同様、ＯＬＴの不揮発性メモリに記憶されたファームウェアは、ＯＬＴの起動時に、揮発性メモリに展開されて実行される。ファームウェアを更新する場合には、不揮発性メモリのファームウェアを書き換えることによって、次回の起動時からは更新されたファームウェアが揮発性メモリ上に展開される。
【０００７】
ファームウェアの更新時に再起動を必要とする装置に対して、ファームウェアの更新による影響を小さくするための従来技術として、ファームウェアの更新時間を短縮させる技術が検討されている。例えば、更新後のファームウェアを予め不揮発性メモリに記憶させておくことにより、不揮発性メモリ内に更新前のファームウェア及び更新後のファームウェアの２面のファームウェアが保持された状態にする。そして、装置の起動時に、２面のファームウェアのいずれかを選択して起動させるという技術である。しかしながら、この従来技術では、ファームウェアを不揮発性メモリに書き込むことに要する時間は短縮されるものの、更新後のファームウェアを揮発性メモリに展開させるための、装置の再起動はやはり必要である。
【０００８】
また、ファームウェアの更新時におけるサービスの中断を防ぐ方法として、装置を冗長化する方法が考えられる。例えば、光スイッチ等を用いて物理的な通信経路を変更して、ファームウェアを更新させる対象の装置とは別の装置へ処理を切り替える。そして、ファームウェアの更新が完了したら再び元の通信経路へ戻す方法である。この場合、上述した、揮発性メモリに展開されたファームウェアを直接書き換える方法と比べて、より安全にファームウェアが更新されることが見込まれる。しかしながら、通信経路を切り替えるための光スイッチ及び予備のＯＬＴが別途必要となることから、このように装置を冗長化する方法ではコストが高くなり、経済性の観点から懸念される。
【０００９】
上記事情に鑑み、本発明は、コストを抑えつつ、サービスを中断させずにプログラムを更新することができる技術を提供することを目的としている。
【課題を解決するための手段】
【００１０】
本発明の一態様は、更新前のファームウェアに関する第１データと、更新後のファームウェアに関する第２データと、前記第１データ又は前記第２データと前記第１データ又は前記第２データが位置付けられたアドレスとが対応付けられたテーブルと、を記憶するメモリと、前記テーブルに定義された前記アドレスに位置付けられた前記第１データ又は前記第２データに基づく処理を実行するプロセッサと、を備える通信装置である。
【００１１】
また、本発明の一態様は、上記の通信装置であって、前記テーブルにおいて前記第１データに対応付けられた前記アドレスを、前記第２データが位置付けられたアドレスに書き換える書込部をさらに備える。
【００１２】
また、本発明の一態様は、上記の通信装置であって、前記書込部は、前記更新前のファームウェアにおいて定義された更新タイミングに従って前記アドレスを書き換える。
【００１３】
また、本発明の一態様は、上記の通信装置であって、前記書込部は、前記メモリの空き領域に前記第２データを書き込む。
【００１４】
また、本発明の一態様は、更新前のファームウェアに関する第１データと、更新後のファームウェアに関する第２データと、前記第１データと前記第１データが位置付けられたアドレスとが対応付けられた第１情報及び前記第２データと前記第２データが位置付けられたアドレスとが対応付けられた第２情報が含まれるテーブルと、前記第１情報及び前記第２情報を識別するテーブル値と、を記憶するメモリと、前記メモリに記憶された前記テーブル値によって識別される前記第１情報又は前記第２情報に定義された前記アドレスに位置付けられた前記第１データ又は前記第２データに基づく処理を実行するプロセッサと、を備える通信装置である。
【００１５】
また、本発明の一態様は、上記の通信装置であって、前記テーブルにおいて前記第１データに対応付けられた前記アドレスを、前記第２データが位置付けられたアドレスに書き換える書込部、をさらに備え、前記書込部は、前記更新前のファームウェアにおいて定義された更新タイミングに従って前記アドレスを書き換える。
【００１６】
また、本発明の一態様は、通信装置のコンピュータによる情報処理方法であって、更新前のファームウェアに関する第１データと、更新後のファームウェアに関する第２データと、前記第１データ又は前記第２データと前記第１データ又は前記第２データが位置付けられたアドレスとが対応付けられたテーブルと、を記憶するステップと、前記テーブルに定義された前記アドレスに位置付けられた前記第１データ又は前記第２データに基づく処理を実行するステップと、を有する情報処理方法である。
【００１７】
また、本発明の一態様は、通信装置のコンピュータによる情報処理方法であって、更新前のファームウェアに関する第１データと、更新後のファームウェアに関する第２データと、前記第１データと前記第１データが位置付けられたアドレスとが対応付けられた第１情報及び前記第２データと前記第２データが位置付けられたアドレスとが対応付けられた第２情報が含まれるテーブルと、前記第１情報及び前記第２情報を識別するテーブル値と、を記憶するステップと、前記テーブル値によって識別される前記第１情報又は前記第２情報に定義された前記アドレスに位置付けられた前記第１データ又は前記第２データに基づく処理を実行するステップと、を有する情報処理方法である。
【発明の効果】
【００１８】
本発明により、コストを抑えつつ、サービスを中断させずにプログラムを更新することができる。
【図面の簡単な説明】
【００１９】
【図１】第１の実施形態に係る光通信システム１の構成の一例を示す図である。
【図２】第１の実施形態に係る光アクセス装置２における間接参照の一例を示す図である。
【図３】第１の実施形態に係る光アクセス装置２の動作の一例を示すフローチャートである。
【図４】第１の実施形態に係る光アクセス装置２の動作の一例を示すフローチャートである。
【図５】プロセスの処理状況と更新タイミングとの対応を説明するための模式図である。
【図６】第２の実施形態に係る光通信システム５の構成の一例を示す図である。
【図７】第２の実施形態に係る光アクセス装置６における間接参照の一例を示す図である。
【図８】第２の実施形態に係る光アクセス装置６の動作の一例を示すフローチャートである。
【発明を実施するための形態】
【００２０】
本発明を実施するための形態を、図面を参照しつつ説明する。以下で説明する実施形態は一例に過ぎず、本発明が適用される実施形態は、以下の実施形態に限られない。
なお、実施形態を説明するための全図において、同一の機能を有するものは同一符号を用い、繰り返しの説明は省略する。
【００２１】
＜第１の実施形態＞
以下、本発明の第１の実施形態について説明する。
【００２２】
［光通信システムの構成］
図１は、第１の実施形態に係る光通信システム１の構成の一例を示す図である。光通信システム１は、光信号を用いて通信するシステムである。光通信システム１は、光アクセス装置２と、制御端末３とを備える。
なお、ここでは光信号を用いてＯＮＵ（Optical Network Unit；加入者線終端装置）等の他の通信装置との通信を行う光アクセス装置２を備える光通信システム１を一例として説明するが、これに限られるものではない。光通信とは異なる手段で通信を行うその他の通信装置及び通信システムであっても構わない。
【００２３】
光アクセス装置２は、不揮発性メモリ２０と、起動処理部２１と、揮発性メモリ２２と、プロセッサ２３と、通信部２４と、書込部２５と、を備える。
【００２４】
制御端末３は、パーソナルコンピュータ等の情報処理装置である。制御端末３は、更新後ファームウェア３００を記憶している。更新後ファームウェア３００及び後述する更新前ファームウェア２００は、例えば、光アクセス装置２が光通信を実行するためのファームウェアである。
【００２５】
仮に、更新前ファームウェア２２１をプロセッサ２３が使用している間に、制御端末３が更新後ファームウェア３００を揮発性メモリ２２に書き込んでしまった場合、光アクセス装置２に、想定外の異常が発生してしまう場合がある。そこで、光アクセス装置２は、揮発性メモリ２２に記憶されている更新前ファームウェア２２１を書き換えないように、揮発性メモリ２２の空き領域に、更新後ファームウェア３００を更新後ファームウェア２２２として書き込む。揮発性メモリ２２の空き領域に更新後ファームウェア２２２を書き込むことによって、更新前ファームウェア２２１をプロセッサ２３が使用している間であっても、光アクセス装置２は、揮発性メモリ２２に更新後ファームウェア２２２を書き込むことができる。
【００２６】
また、光アクセス装置２は、ファームウェアの更新を、更新前ファームウェア２２１において処理される関数（第１データ）が呼び出された際の呼び出し先を更新後ファームウェア２２２内の関数（第２データ）へ変更することによって実施する。なお、呼び出し先が変更される対象は関数のデータに限られるものではなく、例えばプログラム等の、その他のデータであってもよい。以下の説明においては、一例として関数の呼び出し先が変更される場合について説明する。
【００２７】
以下に、光アクセス装置２の詳細を説明する。
起動処理部２１は、大規模集積回路（ＬＳＩ；Large Scale Integration）や特定用途向け集積回路（ＡＳＩＣ；Application Specific Integrated Circuit）等のハードウェアを用いて実現される。起動処理部２１は、光アクセス装置２の起動時であってプロセッサ２３が起動する前に、不揮発性メモリ２０に記憶されている更新前ファームウェア２００を、更新前ファームウェア２２１として揮発性メモリ２２に書き込む。
更新前ファームウェア２００は、例えば、光アクセス装置２が光通信を実行するためのファームウェアである。
【００２８】
また、起動処理部２１は、光アクセス装置２が起動するときであってプロセッサ２３が起動する前に、不揮発性メモリ２０等の不揮発性の記録媒体に記憶されているプラットフォームファームウェア２２０を、揮発性メモリ２２に書き込む。以下、不揮発性の記録媒体の一例として、不揮発性メモリ２０を適用した場合について説明を続ける。
プラットフォームファームウェア２２０は、例えば、オペレーティングシステム等のファームウェアである。
【００２９】
不揮発性メモリ２０は、例えば、読み出し専用メモリ（ＲＯＭ；Read Only Memory）等の読み出し専用の記録媒体である。不揮発性メモリ２０は、書き換え可能なフラッシュＲＯＭであってもよい。不揮発性メモリ２０は、更新前ファームウェア２００を記憶している。不揮発性メモリ２０は、更新後ファームウェア２２２を記憶していない。以下では、更新前ファームウェア２００は、不揮発性メモリ２０に記憶されている状態でプロセッサ２３から参照された場合でもプロセッサ２３が動作可能な状態で、不揮発性メモリ２０に記憶されている。すなわち、更新前ファームウェア２００のバイナリデータは、更新前ファームウェア２２１のバイナリデータと同じである。
【００３０】
揮発性メモリ２２は、例えば、読み書き可能なメモリ（ＲＡＭ；Random Access Memory）等の揮発性の記録媒体である。揮発性メモリ２２は、起動処理部２１による書き込み操作によって、光アクセス装置２が起動したときに、プラットフォームファームウェア２２０を記憶する。揮発性メモリ２２は、光アクセス装置２が起動したときであってプロセッサ２３が起動する前に、起動処理部２１による書き込み操作によって、更新前ファームウェア２２１を記憶する。揮発性メモリ２２は、プラットフォームファームウェア２２０及び更新前ファームウェア２２１を記憶した場合でも、十分な容量の空き領域を備えている。十分な容量とは、少なくとも更新後ファームウェア２２２を記憶できる容量である。揮発性メモリ２２は、プロセッサ２３が起動した後に、制御端末３が出力する更新後ファームウェア３００を、更新後ファームウェア２２２として揮発性メモリ２２の空き領域に記憶する。
【００３１】
更新前ファームウェア２２１は、関数の参照先を含む。関数には、揮発性メモリ２２におけるその関数の先頭アドレスが対応付けられている。
更新後ファームウェア２２２は、関数の新たな参照先を含む。関数には、揮発性メモリ２２におけるその関数の先頭アドレスが対応付けられている。
【００３２】
揮発性メモリ２２は、関数テーブル２２４を更に記憶する。関数テーブル２２４は、関数と、揮発性メモリ２２におけるその関数の先頭アドレスとが関連付けられた、テーブル形式のデータである。なお、関数テーブル２２４は、プラットフォームファームウェア２２０、更新前ファームウェア２２１又は更新後ファームウェア２２２のいずれかに含まれている構成であってもよい。
【００３３】
書込部２５は、例えばＬＳＩやＡＳＩＣ等のハードウェアを用いて実現される。なお、書込部２５は、ソフトウェアによって実装される構成であってもよい。この場合、例えば、書込部２５の機能を実装するためのプログラムがプラットフォームファームウェア２２０（ＯＳ）に含まれており、ＯＳのシステムコールに応じてソフトウェアの実装がなされる。書込部２５は、制御端末３が出力した書込要求に基づいて、揮発性メモリ２２の空き領域に更新後ファームウェア２２２を書き込むことができるか否かを判定する。ここで、書込要求は、更新後ファームウェア２２２の容量を示す情報を含む。
【００３４】
具体的には、書込部２５は、書込要求に含まれる更新後ファームウェア２２２の容量に基づいて、揮発性メモリ２２の空き領域が、更新後ファームウェア２２２の容量以上であるか否かを判定する。書込部２５は、揮発性メモリ２２の空き領域が、更新後ファームウェア２２２の容量以上である場合には、更新後ファームウェア２２２を、揮発性メモリ２２に書き込む。一方、書込部２５は、揮発性メモリ２２の空き領域が、更新後ファームウェア２２２の容量未満である場合には、更新後ファームウェア２２２を、揮発性メモリ２２に書き込まない。なお、書込部２５は、揮発性メモリ２２の空き領域が、更新後ファームウェア２２２の容量未満である場合には、揮発性メモリ２２の空き領域が、更新後ファームウェア２２２の容量未満であることを通知するようにしてもよい。
【００３５】
また、書込部２５は、制御端末３が出力した書込要求に基づいて、関数テーブル２２４に含まれる先頭アドレスの値を書き換える。
【００３６】
プロセッサ２３は、揮発性メモリ２２に記憶されているプラットフォームファームウェア２２０に基づく動作を実行する。また、プロセッサ２３は、関数テーブル２２４に基づいて、更新前ファームウェア２２１又は更新後ファームウェア２２２に基づく動作を実行する。具体的には、プロセッサ２３は、更新前ファームウェア２２１に含まれる関数の先頭アドレスを、関数テーブル２２４を参照して取得する。そして、プロセッサ２３は、取得した先頭アドレスに位置付けられた関数を実行する。
【００３７】
通信部２４は、更新前ファームウェア２２１又は更新後ファームウェア２２２に基づく動作を実行するプロセッサ２３による制御に応じて、光信号を用いて、ＯＮＵ等の他の通信装置と通信する。
【００３８】
［光アクセス装置による間接参照］
図２は、第１の実施形態に係る光アクセス装置２における間接参照の一例を示す図である。
【００３９】
揮発性メモリ２２は、予め関数テーブル２２４を記憶している。関数テーブル２２４は、例えば、プロセッサ２３によって関数ポインタを用いて生成され、揮発性メモリ２２に記憶される。これにより、更新前ファームウェア２２１に含まれる各関数の先頭アドレスを示す情報が関数テーブル２２４に格納される。
【００４０】
プロセッサ２３は、実行中のプログラムによって関数が呼び出された場合、関数テーブル２２４を参照して、呼び出された関数の先頭アドレスを取得する。プロセッサ２３は、取得した先頭アドレスへ処理を移行させる。
【００４１】
ファームウェアの更新を実施する場合、書込部２５は、制御端末３からの書込要求に基づいて、関数テーブル２２４において定義された、関数の先頭アドレスの値を書き換える。
【００４２】
図２に示すように、関数テーブル２２４には、「ｆｕｎｃｔｉｏｎ＿Ａ」と「ｆｕｎｃｔｉｏｎ＿Ａ」の先頭アドレスである「０ｘ００００１５００」とが関連付けて記憶されている。同様に、関数テーブル２２４には、「ｆｕｎｃｔｉｏｎ＿Ｂ」と「ｆｕｎｃｔｉｏｎ＿Ｂ」の先頭アドレス「０ｘ００００１２００」とが関連付けて記憶されており、「ｆｕｎｃｔｉｏｎ＿Ｃ」と「ｆｕｎｃｔｉｏｎ＿Ｃ」の先頭アドレス「０ｘ００００１３００」とが関連付けて記憶されている。
【００４３】
図２に示すように、関数テーブル２２４に定義された、「ｆｕｎｃｔｉｏｎ＿Ａ」の先頭アドレスである「０ｘ００００１５００」は、書込部２５によって「０ｘ００００１１００」から書き換えられた値である。すなわち、更新前ファームウェアに含まれる関数「ｆｕｎｃｔｉｏｎ＿Ａ」の先頭アドレスは「０ｘ００００１１００」であり、更新後ファームウェアに含まれる関数「ｆｕｎｃｔｉｏｎ＿Ａ」の先頭アドレスは「０ｘ００００１５００」であることを示している。
【００４４】
以上の構成により、光アクセス装置２は、関数テーブル２２４を介して目的の関数を呼び出す間接的な処理を行うことによって、ファームウェアの更新を実行する。これにより、光アクセス装置２は、動作中のプログラムを上書きすることなく処理を変更することができる。そのため、光アクセス装置２によれば、基本ソフトウェア（ＯＳ；Operating System）のメモリ保護機能を回避して揮発性メモリ２２上のデータが書き換えられるため、ファームウェア更新時の安定性を担保することができる。
【００４５】
［光アクセス装置の動作］
図３は、第１の実施形態に係る光アクセス装置２の動作の一例を示すフローチャートである。
【００４６】
プロセッサ２３は、ファームウェアを更新するか否かを判定する（ステップＳ００１）。運用中のファームウェアに対して、新機能の追加、既存機能の変更又はバグ修正が行われる場合（ステップＳ００１、Ｙｅｓ）、プロセッサ２３は、ファームウェアを更新すると判定する。そうでない場合（ステップＳ００１、Ｎｏ）、プロセッサ２３は、ファームウェアを更新しないと判定し、本フローチャートが示す処理を終了させる。
【００４７】
プロセッサ２３が、ファームウェアを更新すると判定した場合（ステップＳ００１、Ｙｅｓ）、書込部２５は、制御端末３から出力された更新後ファームウェア３００を取得する（ステップＳ００２）。なお、制御端末３等において更新後ファームウェア３００が生成される際には、後に必要となる更新後ファームウェア３００のメモリマップ等の付加情報も予め生成され、光アクセス装置２によって更新後ファームウェア３００とともに取得されている必要がある。
【００４８】
書込部２５は、取得した更新後ファームウェア３００を、更新後ファームウェア２２２として揮発性メモリ２２の空き領域に書き込みを行う（ステップＳ００３）。上述したように、揮発性メモリ２２の空き領域に更新後ファームウェア２２２が書き込まれるため、実行中の更新前ファームウェア２２１を上書きすることが防止される。
【００４９】
プロセッサ２３は、不具合なくファームウェアの更新を完了させるため、更新前ファームウェア２２１から更新後ファームウェア２２２への処理の移行をする前に、揮発性メモリ２２における更新後ファームウェア２２２の展開が、エラーが発生することなく完了したか否かを確認する（ステップＳ００４）。エラーが発生したことが確認された場合（ステップＳ００４、Ｙｅｓ）、プロセッサ２３は、再度、取得した更新後ファームウェア３００を、更新後ファームウェア２２２として揮発性メモリ２２の空き領域に書き込む（ステップＳ００３）。
【００５０】
エラーが発生していないことが確認された場合（ステップＳ００４、Ｎｏ）、プロセッサ２３は、ファームウェアを更新可能なタイミングであるか否かを判定する（ステップＳ００５）。ファームウェアの更新を安全に実行するためには、動作中のプログラムの処理状況を確認して、ファームウェアの更新を実施するタイミングを適切に判定する必要がある。なお、ファームウェアを更新可能なタイミングであるか否かを判定する際の判定基準については、後に詳しく説明する。
【００５１】
更新タイミングの判断は、ファームウェアに予め組み込まれた更新実施ポイントにおいて行われる。プロセッサ２３は、プログラムが実行される周期ごとに、更新実施ポイントにおいて更新フラグの有無を確認する。
【００５２】
更新フラグに基づいて、ファームウェアを更新可能なタイミングではないと判定された場合（ステップＳ００５、Ｎｏ）、プロセッサ２３は、本フローチャートが示す処理を終了させる。更新フラグに基づいて、ファームウェアを更新可能なタイミングであると判定された場合（ステップＳ００５、Ｙｅｓ）、書込部２５は、関数テーブル２２４に定義された関数の先頭アドレスの値を書き換える（ステップＳ００６）。そして、プロセッサ２３は、本フローチャートが示す処理を終了させる。
【００５３】
図４に示すフローチャートは、関数テーブル２２４に定義された先頭アドレスを書き換える処理（すなわち、図３のステップＳ００６の処理）における光アクセス装置２の動作を更に詳細に示すフローチャートである。
【００５４】
ファームウェアの更新を実施するためには、揮発性メモリ２２に記憶された関数テーブル２２４に定義されている関数の先頭アドレスの値を書き換える必要があるが、書き換えた先頭アドレスの値が誤っていた場合にはプログラムが異常停止する場合がある。従って、書込部２５は、先頭アドレスの値を書き換える前に、書換箇所（揮発性メモリ２２上における、更新対象の関数の先頭アドレスの位置）が書換可能なエリアに存在することを確認する（ステップＳ６０１）。
【００５５】
書込部２５は、関数テーブル２２４における、更新対象の関数の先頭アドレスの値を順に書き換える（ステップＳ６０２）。更新対象の関数が複数ある場合、書込部２５は、更新対象の関数について１つずつ順に先頭アドレスの値の書き換えを行う。
【００５６】
更新対象の関数であって、先頭アドレスの値の書き換えが完了していない関数が存在する場合（ステップＳ６０３、Ｎｏ）、書込部２５は、引き続き、関数テーブル２２４における、更新対象の関数の先頭アドレスの値を書き換える処理を継続する（ステップＳ６０２）。
【００５７】
更新対象の全ての関数について、先頭アドレスの値の書き換えが完了した場合（ステップＳ６０３、Ｙｅｓ）、書込部２５は、揮発性メモリ２２上に展開された更新対象の関数の先頭アドレスの値と、関数テーブル２２４上で書き換えられた上記関数に関連付けられた先頭アドレスの値とが一致しているか否かを確認する。
【００５８】
両者の先頭アドレスの値が一致していない場合（ステップＳ６０４、Ｎｏ）、プロセッサ２３は、関数テーブル２２４に定義された先頭アドレスを書き換える処理（すなわち、図３のステップＳ００６の処理）を再度実行しなおす。両者の先頭アドレスの値が一致している場合（ステップＳ６０４、Ｙｅｓ）、プロセッサ２３は、本フローチャートが示す処理を終了させる。
【００５９】
［更新タイミングの判定基準］
以下に、ファームウェアを更新可能なタイミングであるか否かの判定における判定基準について説明する。
プラットフォームファームウェア２２０内で実行される周期処理内において、以下に説明するタイミングのいずれかに、更新実施ポイントが組み込まれる。そして、毎周期もしくは定期的に、組み込まれた更新ポイントのタイミングでファームウェアの更新が必要であるか否かの確認がなされる。ファームウェアの更新が必要である場合には、ファームウェアの更新が行われる。
図５は、プロセスの処理状況と更新タイミングとの対応を説明するための模式図である。なお、ここでいうプロセスは、例えば、ファームウェアに含まれる関数に相当するものである。
【００６０】
・単一プロセスに対するファームウェアの更新の場合
例えば、図５に示す「プロセスＡ」のみを更新対象とした場合、下記の３通りの更新タイミングが考えられる。ファームウェアにおいて、以下の更新タイミングのいずれか又は複数の箇所に、予め更新実施ポイントを組み込んでおく。
１−（１）単一プロセス実行前
１−（２）単一プロセス実行中
１−（３）単一プロセス実行後
【００６１】
細かいバグ修正やパッチ修正等を行う場合には、単一プロセスに対してファームウェアの更新を実施することで、更新範囲を絞ることができる。そのため、単一プロセスに対するファームウェア更新には、ファームウェア更新による影響範囲を削減することができるという利点がある。
【００６２】
間接参照の書き換えによって，単一プロセスの実行前後（すなわち、図５に示す１−（１）又は１−（３）のタイミング）でファームウェア更新が実施された場合、次回のプロセス実行時からファームウェアの更新が反映される。また、更新対象のプロセスの実行中（すなわち、図５に示す１−（２）のタイミング）にファームウェア更新が実施された場合、実行中である更新対象のプロセスが完了した後、次回のプロセス実行時からファームウェアの更新が反映される。
【００６３】
なお、間接参照先の書き換えによるファームウェア更新では、プロセスが実行される前に変更が反映されるため、実行中のプロセスに対して影響を及ぼすことがないという利点がある。
【００６４】
・複数プロセスに対するファームウェアの更新の場合
例えば、図５に示す「プロセスＡ」及び「プロセスＢ」の２つのプロセスを更新対象とした場合、下記の２通りの更新タイミングが考えられる。ファームウェアにおいて、以下の更新タイミングのいずれか一方又は両方の箇所に、予め更新実施ポイントを組み込んでおく。
２−（１）複数プロセス実行前
２−（２）複数プロセス実行後
【００６５】
複数プロセスの実行中に、関数テーブル２２４に定義された先頭アドレスの書き換えが行われた場合、プロセス間で正常なデータを引き継ぐことができなくなる可能性がある。そのため、更新対象の複数のプロセスの全てが実行される前か、又は更新対象の複数のプロセスの全てが実行された後に、まとめてファームウェアの更新を実施することによって、ファームウェア更新前後の光アクセス装置２の動作を安定させることができる。
【００６６】
・全プロセスに対するファームウェアの更新の場合
更新対象のプログラム全体を変更する場合（例えば、図５に示す「プロセスＡ」、「プロセスＢ」及び「プロセスＣ」全てを更新対象とした場合）、更新時の不具合防止の観点から、下記のように、全プロセスの実行前又は全プロセスの実行後に更新が実施されることが好ましい。
３−（１）全プロセス実行前
３−（２）全プロセス実行後
【００６７】
プログラム実行中における揮発性メモリ２２上のデータの書き換えは，メモリエラーの発生の原因となり、プログラムをクラッシュさせてしまう可能性が非常に高くなる。一方、更新対象のプログラムの全プロセスの実行前又は全プロセスの実行後のタイミングであれば、メモリエラーの発生の可能性を相対的に低くすることができる。従って、上記３−（１）及び３−（２）のタイミングでファームウェアの更新を実施することによって、更新後ファームウェアへの移行を安全に行うことができる。
【００６８】
以上説明したように、第１の実施形態に係る光アクセス装置２は、揮発性メモリ２２と、プロセッサ２３と、を含んで構成される。揮発性メモリ２２は、更新前ファームウェア２２１に含まれる関数（第１データ）と、更新後ファームウェア２２２に含まれる関数（第２データ）と、関数テーブル２２４と、を記憶する。関数テーブル２２４は、更新前ファームウェア２２１に含まれる関数又は更新後ファームウェア２２２に含まれる関数と、揮発性メモリ２２において更新前ファームウェア２２１に含まれる関数又は更新後ファームウェア２２２に含まれる関数が位置付けられたアドレスと、が対応付けられたテーブルである。また、プロセッサ２３は、関数テーブル２２４に定義されたアドレスに位置付けられた、更新前ファームウェア２２１に含まれる関数又は更新後ファームウェア２２２に含まれる関数に基づく処理を実行する。
【００６９】
また、第１の実施形態に係る光アクセス装置２は、書込部２５をさらに備える。書込部２５は、関数テーブル２２４において更新前ファームウェア２２１に含まれる関数に対応付けられたアドレスを、揮発性メモリ２２において更新後ファームウェア２２２に含まれる関数が位置付けられたアドレスに書き換える。
また、書込部２５は、更新前ファームウェア２００において定義された更新タイミングに従ってアドレスを書き換える。
また、書込部２５は、揮発性メモリ２２の空き領域に更新後ファームウェア２２２を書き込む。
【００７０】
以上の構成により、第１の実施形態に係る光アクセス装置２によれば、ファームウェア内に間接的な処理（間接参照）が組み入れられることによって、通信サービスの提供を中断させることなくファームウェアの更新をすることが可能となる。また、以上の構成により、第１の実施形態に係る光アクセス装置２によれば、装置を冗長化する従来の方法と比べて、より低コストに、通信サービスを中断させることのないファームウェアの更新を実現することができる。
【００７１】
＜第２の実施形態＞
以下、本発明の第２の実施形態について説明する。
【００７２】
図４に示したように、上述した第１の実施形態においては、光アクセス装置２は、更新対象の関数それぞれについて１つずつ順に、関数テーブル２２４に定義された先頭アドレスの値を書き換える構成であった。この構成では、更新対象の関数が多く存在する場合、ファームウェアの更新に時間がかかることがある。
【００７３】
一方、以下に説明する第２の実施形態に係る光アクセス装置６は、ファームウェアを更新する場合、関数テーブルの単位で更新対象の関数の先頭アドレスの値をまとめて更新する。これにより、更新対象である全ての関数の先頭アドレスの値が一度の処理でまとめて書き換えられる。そのため、とくに更新対象の関数が多く存在する場合には、光アクセス装置６は、上述した第１の実施形態に係る光アクセス装置２と比べて、ファームウェアの更新に要する時間をより短くすることができる。
【００７４】
［光通信システムの構成］
図６は、第２の実施形態に係る光通信システム５の構成の一例を示す図である。上述した第１の実施形態に係る光通信システム１と同様に、光通信システム５は、光信号を用いて通信するシステムである。光通信システム５は、光アクセス装置６と、制御端末３とを備える。
【００７５】
光アクセス装置６は、不揮発性メモリ２０と、起動処理部２１と、揮発性メモリ６２と、プロセッサ２３と、通信部２４と、書込部６５と、を備える。
なお、光通信システム５が有する機能ブロックのうち、上述した第１の実施形態に係る光通信システム１が有する機能ブロックと機能が共通する機能ブロックについては、同一の符号を付し、説明を省略する。
【００７６】
揮発性メモリ６２は、プラットフォームファームウェア２２０と、更新前ファームウェア２２１と、更新後ファームウェア２２２と、関数テーブル６２４と、関数テーブル値６２５を記憶する。
【００７７】
書込部６５は、制御端末３から出力された書込要求に基づいて、揮発性メモリ６２に、更新後ファームウェア２２２と、関数テーブル６２４と、関数テーブル値６２５と、を記憶させる。
【００７８】
関数テーブル６２４は、第１の実施形態において説明した、１つの関数群のみの各関数の先頭アドレスが定義された関数テーブル２２４とは異なり、関数テーブル値６２５に設定されうる関数テーブル値ごとの関数群の各関数の先頭アドレスがそれぞれ定義されたテーブルである。なお、関数テーブル６２４及び関数テーブル値６２５の構成については、後に詳しく説明する。
【００７９】
プロセッサ２３は、関数テーブル６２４と関数テーブル値６２５とを参照することにより、実行する関数の揮発性メモリ６２上における先頭アドレス値を取得してファームウェアを実行する。
【００８０】
［光アクセス装置による間接参照］
図７は、第２の実施形態に係る光アクセス装置６における間接参照の一例を示す図である。
【００８１】
図７（Ａ）は、各関数のバージョンと先頭アドレスの値との対応付けを示したものである。左から、バージョン１（Ｖｅｒ．１）の関数からなる関数群、バージョン２（Ｖｅｒ．２）の関数からなる関数群、及び、バージョン３（Ｖｅｒ．３）の関数からなる関数群、が示されている。すなわち、バージョン１（Ｖｅｒ．１）の関数は、更新前ファームウェア２２１に含まれる関数であり、バージョン２（Ｖｅｒ．１）及びバージョン３（Ｖｅｒ．３）の関数は、更新後ファームウェア２２２に含まれる関数である。なお、バージョン３（Ｖｅｒ．３）の関数は、バージョン２（Ｖｅｒ．２）の関数が含まれる更新後ファームウェア２２２ではなく、当該更新後ファームウェア２２２を更に更新するファームウェアに含まれていてもよい。
【００８２】
例えば、一番左の関数群には、バージョン１の関数「ｆｕｎｃｔｉｏｎ＿Ａ」、バージョン１の関数「ｆｕｎｃｔｉｏｎ＿Ｂ」、及び、バージョン１の関数「ｆｕｎｃｔｉｏｎ＿Ｃ」が含まれる。図７（Ａ）に示すように、揮発性メモリ６２上における、バージョン１の関数「ｆｕｎｃｔｉｏｎ＿Ａ」の先頭アドレスの値は「０ｘ００００１１００」であり、バージョン１の関数「ｆｕｎｃｔｉｏｎ＿Ｂ」の先頭アドレスの値は「０ｘ００００１２００」であり、及び、バージョン１の関数「ｆｕｎｃｔｉｏｎ＿Ｃ」の先頭アドレスの値は「０ｘ００００１３００」である。
【００８３】
図７（Ｂ）は、関数テーブル６２４の構成の一例を示す。図示するように、関数テーブル６２４には、関数テーブル値（(１)〜（３））ごとの関数群の各関数（「ｆｕｎｃｔｉｏｎ＿Ａ」、「ｆｕｎｃｔｉｏｎ＿Ｂ」及び「ｆｕｎｃｔｉｏｎ＿Ｃ」）の先頭アドレスがそれぞれ定義されている。
【００８４】
図７（Ｂ）に示すように、例えば、関数テーブル値６２５に設定された値が（１）であるならば、関数「ｆｕｎｃｔｉｏｎ＿Ａ」が呼び出された場合にプロセッサ２３が参照する、揮発性メモリ６２上におけるアドレスの値は「０ｘ００００１１００」である。すなわち、バージョン１の関数「ｆｕｎｃｔｉｏｎ＿Ａ」の処理が実行される。同様に、関数テーブル値６２５に設定された値が（１）であるならば、関数「ｆｕｎｃｔｉｏｎ＿Ｂ」が呼び出された場合にはバージョン１の関数「ｆｕｎｃｔｉｏｎ＿Ｂ」の処理が実行され、関数「ｆｕｎｃｔｉｏｎ＿Ｃ」が呼び出された場合にはバージョン１の関数「ｆｕｎｃｔｉｏｎ＿Ｃ」の処理が実行される。
【００８５】
また、図７（Ｂ）に示すように、例えば、関数テーブル値６２５に設定された値が（２）であるならば、関数「ｆｕｎｃｔｉｏｎ＿Ａ」が呼び出された場合にプロセッサ２３が参照する、揮発性メモリ６２上におけるアドレスの値は「０ｘ０１００１１００」である。すなわち、バージョン２の関数「ｆｕｎｃｔｉｏｎ＿Ａ」の処理が実行される。同様に、関数テーブル値６２５に設定された値が（２）であるならば、関数「ｆｕｎｃｔｉｏｎ＿Ｂ」が呼び出された場合にはバージョン１の関数「ｆｕｎｃｔｉｏｎ＿Ｂ」の処理が実行され、関数「ｆｕｎｃｔｉｏｎ＿Ｃ」が呼び出された場合にはバージョン１の関数「ｆｕｎｃｔｉｏｎ＿Ｃ」の処理が実行される。
【００８６】
すなわち、例えば、関数テーブル値６２５の値が（１）から（２）へ設定変更された場合とは、関数「ｆｕｎｃｔｉｏｎ＿Ａ」のみがバージョン１からバージョン２へ変更され、関数「ｆｕｎｃｔｉｏｎ＿Ｂ」及び関数「ｆｕｎｃｔｉｏｎ＿Ｃ」はバージョン１のままで、処理が実行されるようになることを示す。
【００８７】
また、図７（Ｂ）に示すように、例えば、関数テーブル値６２５に設定された値が（３）であるならば、関数「ｆｕｎｃｔｉｏｎ＿Ａ」が呼び出された場合にプロセッサ２３が参照する、揮発性メモリ６２上におけるアドレスの値は「０ｘ０２００１１００」である。すなわち、バージョン３の関数「ｆｕｎｃｔｉｏｎ＿Ａ」の処理が実行される。同様に、関数テーブル値６２５に設定された値が（３）であるならば、関数「ｆｕｎｃｔｉｏｎ＿Ｂ」が呼び出された場合にはバージョン３の関数「ｆｕｎｃｔｉｏｎ＿Ｂ」の処理が実行され、関数「ｆｕｎｃｔｉｏｎ＿Ｃ」が呼び出された場合にはバージョン３の関数「ｆｕｎｃｔｉｏｎ＿Ｃ」の処理が実行される。
【００８８】
すなわち、例えば、関数テーブル値６２５の値が（１）から（３）へ設定変更された場合とは、関数「ｆｕｎｃｔｉｏｎ＿Ａ」、関数「ｆｕｎｃｔｉｏｎ＿Ｂ」及び関数「ｆｕｎｃｔｉｏｎ＿Ｃ」の全てがバージョン１からバージョン３へ変更されて処理が実行されるようになることを示す。
【００８９】
図７（Ａ）に示す３つの矢印は、関数テーブル値６２５の値に（１）が設定された場合に実行される関数、関数テーブル値６２５の値に（２）が設定された場合に実行される関数、及び、関数テーブル値６２５の値に（３）が設定された場合に実行される関数が分かるように、それぞれ図示したものである。
【００９０】
このように、関数テーブル６２４は、更新前ファームウェア２２１に含まれる関数とアドレスとが対応付けられた情報（第１情報）と、更新後ファームウェア２２２に含まれる関数とアドレスとが対応付けられた情報（第２情報）とを含む。また、関数テーブル値６２５は、更新前ファームウェア２２１に含まれる関数を実行するか、又は、更新後ファームウェア２２２に含まれる関数を実行するかを識別する識別情報に相当する。
【００９１】
光アクセス装置６は、上述した構成を有する関数テーブル６２４及び関数テーブル値６２５を用いることによって、更新対象である全ての関数の先頭アドレスの値を一度の処理でまとめて書き換えることができる。
【００９２】
［光アクセス装置の動作］
図８は、第２の実施形態に係る光アクセス装置６の動作の一例を示すフローチャートである。
【００９３】
なお、図３に示した、第１の実施形態に係る光アクセス装置２の動作を示すフローチャートのうち、ステップＳ００１〜Ｓ００５の処理については、第２の実施形態に係る光アクセス装置６においても同様の処理であるため、説明を省略する。従って、以下に説明する図８に示すフローチャートは、関数テーブル６２４に定義された先頭アドレスを書き換える処理（すなわち、図３のステップＳ００６に相当する処理）における光アクセス装置６の動作を更に詳細に示すフローチャートである。
【００９４】
書込部６５は、揮発性メモリ８２に記憶された関数テーブル値６２５の値を確認する（ステップＳ６１１）。書込部６５は、設定された関数テーブル値６２５の値と、実行される処理における関数テーブル値（図示せず）とが一致しているか否かを判定する（ステップＳ６１２）。実行される処理における関数テーブル値（図示せず）は、例えば揮発性メモリ２２等の記憶媒体に記憶されている。
【００９５】
設定された関数テーブル値６２５の値と、実行される処理における関数テーブル値とが一致している場合（ステップＳ６１２、Ｙｅｓ）、プロセッサ２３は、本フローチャートが示す処理を終了させる。設定された関数テーブル値６２５の値と、実行される処理における関数テーブル値とが一致していない場合（ステップＳ６１２、Ｎｏ）、書込部６５は、関数テーブル６２４を更新する（ステップＳ６１３）。なお、関数テーブル６２４を丸ごと更新するのではなく、差分のみ追記又は変更する構成であってもよい。
【００９６】
書込部６５は、実行される処理における関数テーブル値（図示せず）を関数テーブル値６２５に設定された値に書き換える（ステップＳ６１４）。書込部６５は、関数テーブル値６２５に設定された値と、実行される処理における関数テーブル値（図示せず）とが一致しているか否かを確認する（ステップＳ６１５）。
【００９７】
関数テーブル値６２５に設定された値と、実行される処理における関数テーブル値（図示せず）とが一致していない場合（ステップＳ６１５、Ｎｏ）、書込部６５は、再度、関数テーブル６２４及び関数テーブル値６２５の更新の処理をやり直す。関数テーブル値６２５に設定された値と、実行される処理における関数テーブル値（図示せず）とが一致している場合（ステップＳ６１５、Ｙｅｓ）、プロセッサ２３は、本フローチャートが示す処理を終了させる。
【００９８】
以上説明したように、第２の実施形態に係る光アクセス装置６は、揮発性メモリ６２と、プロセッサ２３と、を備える。揮発性メモリ６２は、更新前ファームウェア２２１に含まれる関数（第１データ）と、更新後ファームウェア２２２に含まれる関数（第２データ）と、関数テーブル６２４と、関数テーブル値６２５と、を記憶する。関数テーブル６２４は、更新前ファームウェア２２１に含まれる関数と更新前ファームウェア２２１に含まれる関数が位置付けられたアドレスとが対応付けられた第１情報と、更新後ファームウェア２２２に含まれる関数と更新後ファームウェア２２２に含まれる関数が位置付けられたアドレスとが対応付けられた第２情報と、を含む。関数テーブル値６２５は、更新後ファームウェア２２２に含まれる関数と、更新後ファームウェア２２２に含まれる関数と、を識別する値である。プロセッサ２３は、揮発性メモリ６２に記憶された関数テーブル値６２５によって識別される第１情報又は前記第２情報に定義されたアドレスに位置付けられた、更新前ファームウェア２２１に含まれる関数又は更新後ファームウェア２２２に含まれる関数に基づく処理を実行する。
【００９９】
以上の構成により、第２の実施形態に係る光アクセス装置６によれば、ファームウェアを更新する場合、関数テーブルの単位で更新対象の関数の先頭アドレスの値がまとめて更新される。これにより、更新対象である全ての関数の先頭アドレスの値が一度の処理でまとめて書き換えられる。そのため、とくに更新対象の関数が多く存在する場合には、光アクセス装置６は、上述した第１の実施形態に係る光アクセス装置２と比べて、ファームウェアの更新に要する時間をより短くすることができる。
【０１００】
以上説明した構成を備える各実施形態に係る光通信システムによれば、ファームウェア内に間接的な処理（間接参照）が組み入れられることによって、通信サービスの提供を中断させることなくファームウェアの更新をすることが可能となる。
【０１０１】
間接参照によるファームウェアの更新の手法として、第１の実施形態においては、関数テーブルに保存されている先頭メモリアドレスを直接書き換える手法を説明した。また、第２の実施形態においては、とくに更新対象の関数が多い場合により有効な手法であって、複数の関数テーブル値関数テーブルを保持し、関数テーブル値を変更することによって実行する関数のバージョンを変更させる手法を説明した。
【０１０２】
また、上記の手法を適用するにあたって、各実施形態に係る光通信システムにおいて、ファームウェアの更新タイミングを適切に判断するために、予めファームウェアに更新実施ポイントを組み込む構成について説明した。この構成によって、上述した各実施形態に係る光通信システムによれば、プログラムの異常停止等を生じさせることなく、サービスを中断させずにファームウェアの更新をすることが可能となる。
【０１０３】
例えば、サービスを中断させずにファームウェアを更新することが可能になることによって、ファームウェアのバグ修正や新規サービスの提供に伴う機能追加及び機能変更が容易に実施可能となる。
【０１０４】
また、従来、ファームウェアを更新させる場合、サービスを提供する事業者は、サービスを利用する利用者に対して事前周知を行ったり、利用者への影響を小さくするため夜間に更新作業を行ったりする必要があった。しかしながら、サービスを中断させずにファームウェアを更新することが可能になることによって、事業者による上記の作業が不要になる。これにより、例えば、通信設備の保守及び運用に係るコストの削減効果等も見込まれる。
上記の各実施形態において説明したファームウェアの更新方法は、装置を冗長化する従来の方法と比べて、より低コストに、通信サービスを中断させることのないファームウェアの更新を実現できる。
【０１０５】
なお、上述した実施形態における光アクセス装置２又は光アクセス装置６の一部又は全部をコンピュータで実現するようにしてもよい。その場合、この機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現してもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでもよい。また上記プログラムは、前述した機能の一部を実現するためのものであってもよく、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであってもよく、ＦＰＧＡ（Field Programmable Gate Array）等のプログラマブルロジックデバイスを用いて実現されるものであってもよい。
【０１０６】
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【符号の説明】
【０１０７】
１…光通信システム、２・６…光アクセス装置、３…制御端末、２０…不揮発性メモリ、２１…起動処理部、２２・６２…揮発性メモリ、２３…プロセッサ、２４…通信部、２５・６５…書込部、２００・２２１…更新前ファームウェア、２２０…プラットフォームファームウェア、２２２・３００…更新後ファームウェア、２２４・６２４…関数テーブル、６２５…関数テーブル値
【図１】
2019192171.tif 000003
【図２】
2019192171.tif 000004
【図３】
2019192171.tif 000005
【図４】
2019192171.tif 000006
【図５】
2019192171.tif 000007
【図６】
2019192171.tif 000008
【図７】
2019192171.tif 000009
【図８】
2019192171.tif 000010