(57)【要約】【課題】複数のＣＰＵを備える光トランシーバに対して、各ＣＰＵのファームウェアの書き込みに用いる端子の数を低減する。【解決手段】一実施形態に係る光トランシーバは、外部装置に接続された第１のＣＰＵと内部信号線を介して第１のＣＰＵに接続された第２のＣＰＵとを備え、第１のＣＰＵは、第１のＣＰＵが実行するための第１のファームウェアを外部装置から受信したときに第１のファームウェアを第１のＣＰＵのメモリに格納し、第２のＣＰＵが実行するための第２のファームウェアを外部装置から受信したときに第２のファームウェアを内部信号線を介して第２のＣＰＵに送信する。【選択図】図１
2018125772.tif 000002
【特許請求の範囲】
【請求項１】
外部装置と電気的に接続可能な第１の通信端子部と、
前記外部装置と電気的に接続可能な第２の通信端子部と、
前記第１の通信端子部および前記第２の通信端子部に電気的に接続された第１のＣＰＵと、
第１の内部信号線を介して前記第１のＣＰＵと電気的に接続された第２のＣＰＵと、
を備え、
前記第１のＣＰＵは、前記第１の通信端子部と電気的に接続された第１のＳＷＤ部と、前記第２の通信端子部と電気的に接続されたＭＤＩＯ部と、前記第１のＳＷＤ部と電気的に接続された第１のメモリと、を備え、前記第１のＳＷＤ部を介して前記外部装置から前記第１のＣＰＵが実行するための第１のファームウェアを受信したときに、前記外部装置から受信した前記第１のファームウェアを前記第１のメモリに格納し、前記ＭＤＩＯ部を介して前記外部装置から前記第２のＣＰＵが実行するための第２のファームウェアを受信したときに、受信した前記第２のファームウェアを前記第１の内部信号線を介して前記第２のＣＰＵに送信し、
前記第２のＣＰＵは、前記第１の内部信号線を介して前記第１のＣＰＵと電気的に接続された第２のＳＷＤ部と、第２のメモリと、を備え、前記第２のＳＷＤ部を介して前記第１のＣＰＵから前記第２のファームウェアを受信したときに、前記第１のＣＰＵから受信した前記第２のファームウェアを前記第２のメモリに格納する、
光トランシーバ。
【請求項２】
前記外部装置と電気的に接続可能な第３の通信端子部をさらに備え、
前記第１のＣＰＵは、前記第３の通信端子部と電気的に接続されており、前記第３の通信端子部を介して前記外部装置から第１のリセット信号を受信したときに、前記第１のリセット信号に応じて前記第１のＣＰＵを再起動して前記第２のＣＰＵに第２のリセット信号を送信し、
前記第２のＣＰＵは、前記第１のＣＰＵから前記第２のリセット信号を受信したときに、前記第２のリセット信号に応じて前記第２のＣＰＵを再起動する、
請求項１に記載の光トランシーバ。
【請求項３】
第２の内部信号線を介して前記第１のＣＰＵと電気的に接続された少なくとも一つの第３のＣＰＵをさらに備え、
前記第１のＣＰＵは、前記ＭＤＩＯ部を介して前記外部装置から前記少なくとも一つの第３のＣＰＵが実行するための第３のファームウェアを受信したときに、前記外部装置から受信した前記第３のファームウェアを前記第２の内部信号線を介して前記少なくとも一つの第３のＣＰＵに送信し、
前記少なくとも一つの第３のＣＰＵは、それぞれ、前記第２の内部信号線を介して前記第１のＣＰＵと電気的に接続された第３のＳＷＤ部と、第３のメモリと、を備え、前記第３のＳＷＤ部を介して前記第１のＣＰＵから前記第３のファームウェアを受信したときに、前記第１のＣＰＵから受信した前記第３のファームウェアを前記第３のメモリに格納する、
請求項１または請求項２に記載の光トランシーバ。
【請求項４】
光トランシーバのファームウェアの書き込み方法であって、前記光トランシーバは、外部装置と電気的に接続可能な第１の通信端子部と、前記外部装置と電気的に接続可能な第２の通信端子部と、前記第１の通信端子部および前記第２の通信端子部に電気的に接続された第１のＣＰＵと、第１の内部信号線を介して前記第１のＣＰＵと電気的に接続された第２のＣＰＵとを備え、当該書き込み方法は、
前記第１の通信端子部を介して前記外部装置から前記第１のＣＰＵが実行するための第１のファームウェアを受信し、
前記外部装置から受信した前記第１のファームウェアを前記第１のＣＰＵが内蔵する第１のメモリに格納し、
前記第２のＣＰＵが実行するための第２のファームウェアが複数に分割された第１のデータブロックを、前記第２の通信端子部を介して前記外部装置から受信し、
前記外部装置から受信した前記第１のデータブロックを前記第１のＣＰＵが内蔵するＲＡＭに格納し、
前記ＲＡＭに格納された前記第１のデータブロックを前記第１の内部信号線を介して前記第２のＣＰＵに送信可能な形式に変換し、
前記第２のＣＰＵに送信可能な形式に変換された前記第１のデータブロックを前記第１の内部信号線を介して前記第２のＣＰＵに送信し、
前記第１の内部信号線を介して前記第１のＣＰＵから前記第１のデータブロックを受信し、
前記第１のＣＰＵから受信した前記第１のデータブロックを前記第２のＣＰＵが内蔵する第２のメモリに格納する、
を備える光トランシーバのファームウェアの書き込み方法。
【請求項５】
前記光トランシーバは、前記外部装置と電気的に接続可能な第３の通信端子部をさらに備え、
前記第３の通信端子部を介して前記外部装置から第１のリセット信号を受信したときに、前記第１のＣＰＵを再起動して前記第２のＣＰＵに第２のリセット信号を送信し、
前記第１のＣＰＵから前記第２のリセット信号を受信したときに、前記第２のリセット信号に応じて前記第２のＣＰＵを再起動する、
請求項４に記載の光トランシーバのファームウェアの書き込み方法。
【請求項６】
前記光トランシーバは、第２の内部信号線を介して前記第１のＣＰＵと電気的に接続された少なくとも一つの第３のＣＰＵをさらに備え、
前記少なくとも一つの第３のＣＰＵが実行するための第３のファームウェアが複数に分割された第２のデータブロックを、前記第２の通信端子部を介して前記外部装置から受信し、
前記外部装置から受信した前記第２のデータブロックを前記ＲＡＭに格納し、
前記ＲＡＭに格納された前記第２のデータブロックを前記第２の内部信号線を介して前記第３のＣＰＵに送信可能な形式に変換し、
前記第２のＣＰＵに送信可能な形式に変換された前記第２のデータブロックを前記第２の内部信号線を介して前記少なくとも一つの第３のＣＰＵに送信し、
前記第２の内部信号線を介して前記第１のＣＰＵから前記第２のデータブロックを受信し、
前記第１のＣＰＵから受信した前記第２のデータブロックを前記少なくとも一つの第３のＣＰＵが内蔵する第３のメモリに格納する、
請求項４または請求項５に記載の光トランシーバのファームウェアの書き込み方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、光トランシーバと光トランシーバにおけるファームウェアの書き込み方法とに関する。
【背景技術】
【０００２】
特許文献１には光トランシーバに係る技術が開示されている。特許文献１においては、ファームウェアのコンピュータプログラムのダウンロードに用いるクロック信号を受ける第１の端子がＳＦＰ規格のＭＯＤ＿ＤＥＦ端子に接続され、ファームウェアのコンピュータプログラムを受ける第２の端子がＳＦＰ規格のＭＯＤ＿ＤＥＦ端子に接続されている。
【０００３】
特許文献２には、光トランシーバに係る技術が開示されている。特許文献２においては、ファームウェアのコンピュータプログラムのダウンロードに用いるクロック信号を受けるクロック端子がＸＦＰ規格のＰ＿Ｄｏｗｎ端子及びＭｏｄ＿Ａｂｓ端子に接続され、ファームウェアのコンピュータプログラムを受けるデータ端子がＸＦＰ規格のＭｏｄ＿ＤｅＳｅｌ端子に接続されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３−１８７７１４号公報
【特許文献２】特開２０１３−２３６１８１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、例えばＣＦＰ ＭＳＡ（100G Form-factorPluggable Multi-Source Agreement）規格に準拠した光トランシーバなどでは、上位レイヤ（ホスト装置）との監視制御のための通信（ＭＤＩＯ（ＭＤＩＯ：Management  Data  Input/Output）インタフェースを介したデータ通信など）を処理する制御と、トランシーバ内部にある発光素子や受光素子等の各種デバイスへの制御とにおける負荷が増大している。そのような負荷を緩和するために、前者の制御には一つのＣＰＵ（ＣＰＵ：Central  Processing  Unit）（以下、Ｆｒｏｎｔ−ＣＰＵという）を用い、後者の制御にはもう一つのＣＰＵ（以下、Ｂａｃｋ−ＣＰＵという）を用いる構成が考えられる。この場合、例えば各ＣＰＵのファームウェアを外部コンピュータからダウンロード（書き込み）する場合には、各ＣＰＵに対し、例えばファームウェアを書き込むためのＳＷＤ（Serial  Wire  Debug）インタフェースに準拠したＳＷＤ信号線がそれぞれ必要となる。ＳＷＤインタフェースに準拠したＳＷＤ信号線は、クロック信号線およびデータ信号線によって構成される。従って、光トランシーバが二つのＣＰＵを備える場合には、合計で二つのＳＷＤ信号線（すなわち、二本のクロック信号線および二本のデータ信号線）が必要となる。そして、ホスト装置あるいは外部コンピュータが各ＣＰＵにファームウェアをダウンロードするためには、このようなＳＷＤ信号線を介して光トランシーバ内部の各ＣＰＵと電気的に通信するために光トランシーバにＳＷＤ信号用の端子が必要となる。例えばＣＦＰ規格の場合、任意の使用が可能な９本のベンダー専用の端子が用意されているが、これら９本の端子のうち４本の端子に上記の二つのＳＷＤ信号線（二本のクロック信号線および二本のデータ信号線）が割り当てられることとなる。
【０００６】
しかしながら、ベンダー専用の端子は、ダウンロード以外の用途にも使用されるものもあり、例えば、ＣＰＵの数が３個以上に増加する場合に、ベンダー専用の端子が足りなくなる、ということが技術的な問題となる。また、光トランシーバを更に小型化するために、このようなベンダー専用の端子の数が削減され得る。そのような状況により、ファームウェアのダウンロードに用いる端子をベンダー専用の端子によって確保することが困難となる、ということが技術的な問題となっている。
【０００７】
そこで、複数のＣＰＵを備える光トランシーバであって、各ＣＰＵのファームウェアの書き込みに用いる端子の数が低減された光トランシーバ、および、光トランシーバのファームウェアの書き込み方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の一態様に係る光トランシーバは、外部装置と電気的に接続可能な第１の通信端子部と、外部装置と電気的に接続可能な第２の通信端子部と、第１の通信端子部および第２の通信端子部に電気的に接続された第１のＣＰＵと、第１の内部信号線を介して第１のＣＰＵと電気的に接続された第２のＣＰＵと、を備え、第１のＣＰＵは、第１の通信端子部と電気的に接続された第１のＳＷＤ部と、第２の通信端子部と電気的に接続されたＭＤＩＯ部と、第１のＳＷＤ部と電気的に接続された第１のメモリと、を備え、第１のＳＷＤ部を介して外部装置から第１のＣＰＵが実行するための第１のファームウェアを受信したときに、外部装置から受信した第１のファームウェアを第１のメモリに格納し、ＭＤＩＯ部を介して外部装置から第２のＣＰＵが実行するための第２のファームウェアを受信したときに、受信した第２のファームウェアを第１の内部信号線を介して第２のＣＰＵに送信し、第２のＣＰＵは、第１の内部信号線を介して第１のＣＰＵと電気的に接続された第２のＳＷＤ部と、第２のメモリと、を備え、第２のＳＷＤ部を介して第１のＣＰＵから第２のファームウェアを受信したときに、第１のＣＰＵから受信した第２のファームウェアを第２のメモリに格納する。
【０００９】
本発明の他の一態様に係るファームウェア取得方法は、光トランシーバのファームウェアの書き込み方法であって、光トランシーバは、外部装置と電気的に接続可能な第１の通信端子部と、外部装置と電気的に接続可能な第２の通信端子部と、第１の通信端子部および第２の通信端子部に電気的に接続された第１のＣＰＵと、第１の内部信号線を介して第１のＣＰＵと電気的に接続された第２のＣＰＵとを備え、当該書き込み方法は、第１の通信端子部を介して外部装置から第１のＣＰＵが実行するための第１のファームウェアを受信し、外部装置から受信した第１のファームウェアを第１のＣＰＵが内蔵する第１のメモリに格納し、第２のＣＰＵが実行するための第２のファームウェアが複数に分割された第１のデータブロックを、第２の通信端子部を介して外部装置から受信し、外部装置から受信した第１のデータブロックを第１のＣＰＵが内蔵するＲＡＭに格納し、ＲＡＭに格納された第１のデータブロックを第１の内部信号線を介して第２のＣＰＵに送信可能な形式に変換し、第２のＣＰＵに送信可能な形式に変換された第１のデータブロックを第１の内部信号線を介して第２のＣＰＵに送信し、第１の内部信号線を介して第１のＣＰＵから第１のデータブロックを受信し、第１のＣＰＵから受信した第１のデータブロックを第２のＣＰＵが内蔵する第２のメモリに格納する。
【発明の効果】
【００１０】
上記の光トランシーバおよび光トランシーバのファームウェアの書き込み方法によれば、複数のＣＰＵを備える光トランシーバであって、各ＣＰＵのファームウェアの書き込みに用いる端子の数が低減された光トランシーバ、および、光トランシーバのファームウェアの書き込み方法を提供することが可能となる。
【図面の簡単な説明】
【００１１】
【図１】図１は、本発明の実施形態に係る光トランシーバの構成を模式的に示す図である。
【図２】図２は、本発明の実施形態に係るファームウェアの書き込み方法に含まれている処理であって、第１のＣＰＵがファームウェアをダウンロードする処理を説明するためのフローチャートである。
【図３】図３は、本発明の実施形態に係るファームウェアの書き込み方法に含まれている処理であって、第２のＣＰＵにファームウェアを送信する処理を説明するためのフローチャートである。
【図４】図４は、本発明の実施形態に係るファームウェアの書き込み方法に含まれている処理であって、外部コンピュータから第１のＣＰＵに対して第２のＣＰＵのファームウェアを送信する処理を説明するためのフローチャートである。
【図５】図５は、本発明の他の実施形態に係る光トランシーバの構成を模式的に示す図である。
【発明を実施するための形態】
【００１２】
［本発明の実施形態の説明］
最初に本発明の実施形態を列記して説明する。本発明の一態様に係る光トランシーバは、外部装置と電気的に接続可能な第１の通信端子部と、外部装置と電気的に接続可能な第２の通信端子部と、第１の通信端子部および第２の通信端子部に電気的に接続された第１のＣＰＵと、第１の内部信号線を介して第１のＣＰＵと電気的に接続された第２のＣＰＵと、を備え、第１のＣＰＵは、第１の通信端子部と電気的に接続された第１のＳＷＤ部と、第２の通信端子部と電気的に接続されたＭＤＩＯ部と、第１のＳＷＤ部と電気的に接続された第１のメモリと、を備え、第１のＳＷＤ部を介して外部装置から第１のＣＰＵが実行するための第１のファームウェアを受信したときに、外部装置から受信した第１のファームウェアを第１のメモリに格納し、ＭＤＩＯ部を介して外部装置から第２のＣＰＵが実行するための第２のファームウェアを受信したときに、受信した第２のファームウェアを第１の内部信号線を介して第２のＣＰＵに送信し、第２のＣＰＵは、第１の内部信号線を介して第１のＣＰＵと電気的に接続された第２のＳＷＤ部と、第２のメモリと、を備え、第２のＳＷＤ部を介して第１のＣＰＵから第２のファームウェアを受信したときに、第１のＣＰＵから受信した第２のファームウェアを第２のメモリに格納する。従って、光トランシーバが第１のＣＰＵおよび第２のＣＰＵを備えており、当該二つのＣＰＵにおいてファームウェアの取得が必要となる場合でも、第２のＣＰＵの第２のファームウェアの取得が第１のＣＰＵを介して行えるので、第１のＣＰＵの第１のファームウェアの取得に必要な通信端子のみが光トランシーバにあれば、第２のＣＰＵの第２のファームウェアの取得には通信端子が不要となり、よって、二つのＣＰＵそれぞれのファームウェアの取得に必要な通信端子の数を一つのＣＰＵのファームウェアの取得に必要な通信端子の数に抑制できる。
【００１３】
一実施形態において、第１の通信部は、外部装置と電気的に接続可能な第３の通信端子部をさらに備え、第１のＣＰＵは、第３の通信端子部と電気的に接続されており、第３の通信端子部を介して外部装置から第１のリセット信号を受信したときに、第１のリセット信号に応じて第１のＣＰＵを再起動して第２のＣＰＵに第２のリセット信号を送信し、第２のＣＰＵは、第１のＣＰＵから第２のリセット信号を受信したときに、第２のリセット信号に応じて第２のＣＰＵを再起動する。このように、第２のＣＰＵに対するリセットが第１のＣＰＵのリセットに応じて行われるので、第１のＣＰＵに対するリセット信号の端子のみがあれば、第２のＣＰＵに対するリセット信号の端子は不要となる。
【００１４】
一実施形態において、第２の内部信号線を介して第１のＣＰＵと電気的に接続された少なくとも一つの第３のＣＰＵをさらに備え、第１のＣＰＵは、ＭＤＩＯ部を介して外部装置から少なくとも一つの第３のＣＰＵが実行するための第３のファームウェアを受信したときに、外部装置から受信した第３のファームウェアを第２の内部信号線を介して少なくとも一つの第３のＣＰＵに送信し、少なくとも一つの第３のＣＰＵは、それぞれ、第２の内部信号線を介して第１のＣＰＵと電気的に接続された第３のＳＷＤ部と、第３のメモリと、を備え、第３のＳＷＤ部を介して第１のＣＰＵから第３のファームウェアを受信したときに、第１のＣＰＵから受信した第３のファームウェアを第３のメモリに格納する。このように、光トランシーバが三つ以上のＣＰＵを備える構成であっても、全てのＣＰＵのファームウェアの取得に必要な通信端子の数を一つのＣＰＵのファームウェアの取得に必要な通信端子の数に抑制できる。
【００１５】
本発明の他の一態様に係るファームウェア取得方法は、光トランシーバのファームウェアの書き込み方法であって、光トランシーバは、外部装置と電気的に接続可能な第１の通信端子部と、外部装置と電気的に接続可能な第２の通信端子部と、第１の通信端子部および第２の通信端子部に電気的に接続された第１のＣＰＵと、第１の内部信号線を介して第１のＣＰＵと電気的に接続された第２のＣＰＵとを備え、当該書き込み方法は、第１の通信端子部を介して外部装置から第１のＣＰＵが実行するための第１のファームウェアを受信し、外部装置から受信した第１のファームウェアを第１のＣＰＵが内蔵する第１のメモリに格納し、第２のＣＰＵが実行するための第２のファームウェアが複数に分割された第１のデータブロックを、第２の通信端子部を介して外部装置から受信し、外部装置から受信した第１のデータブロックを第１のＣＰＵが内蔵するＲＡＭに格納し、ＲＡＭに格納された第１のデータブロックを第１の内部信号線を介して第２のＣＰＵに送信可能な形式に変換し、第２のＣＰＵに送信可能な形式に変換された第１のデータブロックを第１の内部信号線を介して第２のＣＰＵに送信し、第１の内部信号線を介して第１のＣＰＵから第１のデータブロックを受信し、第１のＣＰＵから受信した第１のデータブロックを第２のＣＰＵが内蔵する第２のメモリに格納する。従って、光トランシーバが第１のＣＰＵおよび第２のＣＰＵを備えており、当該二つのＣＰＵにおいてファームウェアの取得が必要となる場合でも、第２のＣＰＵの第２のファームウェアの取得が第１のＣＰＵを介して行えるので、第１のＣＰＵの第１のファームウェアの取得に必要な通信端子のみが光トランシーバにあれば、第２のＣＰＵの第２のファームウェアの取得には通信端子が不要となり、よって、二つのＣＰＵそれぞれのファームウェアの取得に必要な通信端子の数を一つのＣＰＵのファームウェアの取得に必要な通信端子の数に抑制できる。
【００１６】
一実施形態において、光トランシーバは、外部装置と電気的に接続可能な第３の通信端子部をさらに備え、第３の通信端子部を介して外部装置から第１のリセット信号を受信したときに、第１のＣＰＵを再起動して第２のＣＰＵに第２のリセット信号を送信し、第１のＣＰＵから第２のリセット信号を受信したときに、第２のリセット信号に応じて第２のＣＰＵを再起動する。このように、第２のＣＰＵに対するリセットが第１のＣＰＵのリセットに応じて行われるので、第１のＣＰＵに対するリセット信号の端子のみがあれば、第２のＣＰＵに対するリセット信号の端子は不要となる。
【００１７】
一実施形態において、光トランシーバは、第２の内部信号線を介して第１のＣＰＵと電気的に接続された少なくとも一つの第３のＣＰＵをさらに備え、少なくとも一つの第３のＣＰＵが実行するための第３のファームウェアが複数に分割された第２のデータブロックを、第２の通信端子部を介して外部装置から受信し、外部装置から受信した第２のデータブロックをＲＡＭに格納し、ＲＡＭに格納された第２のデータブロックを第２の内部信号線を介して第３のＣＰＵに送信可能な形式に変換し、第２のＣＰＵに送信可能な形式に変換された第２のデータブロックを第２の内部信号線を介して少なくとも一つの第３のＣＰＵに送信し、第２の内部信号線を介して第１のＣＰＵから第２のデータブロックを受信し、第１のＣＰＵから受信した第２のデータブロックを少なくとも一つの第３のＣＰＵが内蔵する第３のメモリに格納する。このように、光トランシーバが三つ以上のＣＰＵを備える構成であっても、全てのＣＰＵのそれぞれに対して、順次、ファームウェアを取得する処理を実行するので、全てのＣＰＵのファームウェアの取得に必要な通信端子の数を一つのＣＰＵのファームウェアの取得に必要な通信端子の数に抑制できる。
【００１８】
［本発明の実施形態の詳細］
本発明の実施形態に係る光トランシーバおよび光トランシーバのファームウェアの書き込み方法の具体例を、以下に図面を参照しつつ説明する。なお、本発明はこれらの例示に限定されるものではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内での全ての変更が含まれることが意図される。図面の説明において、可能な場合には、同一要素には同一符号を付し、重複する説明を省略する。
【００１９】
図１は、本発明の一実施形態に係る光トランシーバの構成を模式的に示す図である。図１に示す光トランシーバ１０は、第１のＣＰＵ１、第２のＣＰＵ２、第１の通信端子部３ａ、第２の通信端子部３ｂ、第３の通信端子部３ｃ、ＬＤＤ４、ＴＯＳＡ５、ＬＩＡ６、ＲＯＳＡ７を主に備える。第１のＣＰＵ１は、第１の通信部１ａ、フラッシュメモリ１ｂ（第１のメモリ）、ＲＡＭ１ｃを備える。第１の通信部１ａは、ＳＷＤ部１ａ１（第１のＳＷＤ部）、ＭＤＩＯ部１ａ２を備える。ＳＷＤ部１ａ１は、第１の通信端子部３ａと電気的に接続される。ＭＤＩＯ部１ａ２は、第２の通信端子部３ｂと電気的に接続される。フラッシュメモリ１ｂは、ＳＷＤ部１ａ１と電気的に接続される。第２のＣＰＵ２は、第２の通信部２ａ、フラッシュメモリ２ｂ（第２のメモリ）を備える。第２の通信部２ａは、ＳＷＤ部２ａ１（第２のＳＷＤ部）を備える。ＳＷＤ部２ａ１は、ＳＷＤ信号線Ｌ４（第１の内部信号線）を介して第１のＣＰＵ１と電気的に接続される。なお、第２のＣＰＵ２は、さらにＲＡＭを備えていても良く、第２の通信部２ａは、さらにＭＤＩＯ部を備えていても良い。
【００２０】
図１には、更に、光トランシーバ１０のファームウェアが外部コンピュータ２０（ホスト装置）から光トランシーバ１０に送信される場合の状態が示されている。ファームウェアは、バイナリデータで構成されており、デジタル信号として外部コンピュータ２０から送信される。第１のＣＰＵ１は、ＳＷＤ信号線Ｌ１を介して外部コンピュータ２０に接続されている。第１のＣＰＵ１は、ＭＤＩＯ信号線Ｌ２を介して外部コンピュータ２０に接続されている。ＭＤＩＯ信号線Ｌ２は、外部コンピュータ２０と第１のＣＰＵ１とがＭＤＩＯインターフェースの規格に準拠した通信（ＭＤＩＯ通信）を行うための信号線である。第１のＣＰＵ１は、リセット信号線Ｌ３を介して外部コンピュータ２０に接続されている。リセット信号線Ｌ３は、外部コンピュータ２０が第１のＣＰＵ１の動作をリセットするための信号線である。例えば、外部コンピュータ２０は、第１のＣＰＵ１を再起動するためにリセット信号線を使用して第１のＣＰＵ１をリセットする。
【００２１】
第１の通信端子部３ａ、第２の通信端子部３ｂ、第３の通信端子部３ｃは、外部コンピュータ２０が備えるそれぞれの通信端子部に対応した端子とそれぞれ電気的に接続可能となっている。図１に示す状態（光トランシーバ１０のファームウェアが外部コンピュータ２０から光トランシーバ１０に送信される状態）において、外部コンピュータ２０と第１のＣＰＵ１の第１の通信部１ａとは、ＳＷＤ信号線Ｌ１を介して電気的に接続されている。ＳＷＤ信号線Ｌ１は、第１の通信端子部３ａを含み、第１の通信端子部３ａにおいて分離・結合され得る。すなわち、ＳＷＤ信号線Ｌ１は、第１の通信端子部３ａと外部コンピュータ２０とを接続する部分と第１の通信端子部３ａと第１のＣＰＵ１とを接続する部分とからなり、それぞれの部分は第１の通信端子部３ａにて互いに電気的に接続可能となっている。同様に、外部コンピュータ２０と第１のＣＰＵ１の第１の通信部１ａとは、ＭＤＩＯ信号線Ｌ２を介して接続されている。ＭＤＩＯ信号線Ｌ２は、第２の通信端子部３ｂを含み、第２の通信端子部３ｂにおいて分離・結合され得る。すなわち、ＭＤＩＯ信号線Ｌ２は、第２の通信端子部３ｂと外部コンピュータ２０とを接続する部分と第２の通信端子部３ｂと第１のＣＰＵ１とを接続する部分とからなり、それぞれの部分は第２の通信端子部３ｂにて互いに電気的に接続可能となっている。また、外部コンピュータ２０と第１のＣＰＵ１とは、リセット信号線Ｌ３を介して接続されている。リセット信号線Ｌ３は、第３の通信端子部３ｃを含み、第３の通信端子部３ｃにおいて分離・結合され得る。第３の通信端子部３ｃは、第１のＣＰＵ１に電気的に接続される。すなわち、リセット信号線Ｌ３は、第３の通信端子部３ｃと外部コンピュータ２０とを接続する部分と第３の通信端子部３ｃと第１のＣＰＵ１とを接続する部分とからなり、それぞれの部分は第３の通信端子部３ｃにて互いに電気的に接続可能となっている。
【００２２】
ＳＷＤ信号線Ｌ１は、ＳＷＤインタフェース（第１のインタフェース）の規格に準拠したシリアルデータ通信（以下、ＳＷＤ通信という）に用いられる。ＳＷＤ信号線Ｌ１は、少なくとも、ＳＷＤインタフェースの規格に準拠したクロック信号線と、ＳＷＤインタフェースの規格に準拠したデータ信号線とによって構成される。なお、ここでＳＷＤ信号線Ｌ１を使用する理由は、ＳＷＤインタフェースをＣＰＵのファームウェアの書き込みのためのインターフェースと想定しているためで、例えば、他のＩ２Ｃ（Inter-Integrated Circuit）やＳＰＩ（SerialPeripheral Interface）などのシリアルデータ通信用のインターフェースによってＣＰＵへのファームウェアの書き込みが可能な場合には、ＳＷＤ信号線Ｌ１の代わりに、それらのシリアルデータ通信用のインターフェースの規格に準拠した信号線を使用しても良い。ＭＤＩＯ信号線Ｌ２は、ＭＤＩＯインタフェース（第２のインタフェース）の規格に準拠したシリアルデータ通信（以下、ＭＤＩＯ通信という）に用いられる。外部コンピュータ２０は、光トランシーバ１０の動作状態の監視や動作の制御のために、ＭＤＩＯ信号線Ｌ２を使用して第１のＣＰＵ１と通信を行う。リセット信号線Ｌ３は、外部コンピュータ２０の第１のＣＰＵ１へのリセット信号（第１のリセット信号）の送信に用いられる。リセット信号線Ｌ３は、リセットを掛けるか（例えば、ハイレベルを設定する）、掛けないか（例えば、ローレベルを設定する）の１ビットのバイナリデータを伝送できれば良いので、例えば、１本のデジタル信号線が使用される。なお、リセットを掛ける方法として、外部コンピュータ２０から特定の波形のパルス信号を送信しても良い。第１のＣＰＵ１は、外部コンピュータ２０から送信される第１のリセット信号に応じて自身（第１のＣＰＵ１）をリセットする。
【００２３】
ＳＷＤ通信は、クロック信号線によって伝送されるクロック信号とデータ信号線によって伝送されるデータ信号とを用いて、シリアルにデータの送信を行う。ここで、「シリアルに」とは、例えば、ファームウェアを構成するバイナリデータを１ビットずつ時系列で送信する様態を意味する。クロック信号は、所定の周期でハイレベルとロウレベルとを交互に繰り返して送信し、データ信号は、そのクロック信号に同期してバイナリデータを１ビットずつ送信する。ＳＷＤ通信では、「Ｓｔａｒｔ」データから「Ｐａｒｋ」データを含む第１の部分と、当該第１の部分に引き続く第１の「Ｔｕｒｎ  Ａｒｏｕｎｄ」データ（第１の「Ｔｕｒｎ  Ａｒｏｕｎｄ」データを受信したスレーブ装置を一時的に送信動作を行うように切り替えるためのコマンド）と、当該第１の「Ｔｕｒｎ  Ａｒｏｕｎｄ」データに引き続く３ビット長の「Ｒｅｓｐｏｎｓｅ」データ（「ＯＫ」、「ＷＡＩＴ」、および、「ＦＡＵＬＴ」の何れかを示すものであって、第１の部分を受信した受信側のスレーブ装置の状態を示すデータ）を含む第２の部分と、当該第２の部分に引く続く第２の「Ｔｕｒｎ  Ａｒｏｕｎｄ」データ（第２の「Ｔｕｒｎ  Ａｒｏｕｎｄ」データを受信したスレーブ装置を一時的に送信動作を行うように切り替えるためのコマンド）と、当該第１の「Ｔｕｒｎ  Ａｒｏｕｎｄ」データに引き続く第３の部分（送信対象となるデータ）と、当該第３の部分に引き続く「Ｐａｒｉｔｙ」データとを備える。一般に、シリアルデータ通信では、一つのマスタと一つのスレーブとが一対一で対向して通信を行い、マスタからスレーブの動作を支持するためのコマンド（命令）やデータが所定の形式（プロトコル）で送信される。例えば、マスタがスレーブ内に格納されているデータを読み出す場合には、マスタから送信される読み出し命令に応じて上述の「Ｔｕｒｎ  Ａｒｏｕｎｄ」データを受信したタイミングでスレーブからマスタへ読み出し命令の対象のデータを送信する。
【００２４】
ＭＤＩＯ通信では、「ＰＲＥ（Ｐｒｅａｍｂｌｅ）」データ等から成る６４ビット長のバイナリデータ（以下、ＭＤＩＯフレームという）がシリアルに送信される。ＭＤＩＯフレームには、１６ビット長の任意のデータ（例えばアドレスデータやアドレスデータによって指定されたアドレスに書き込むためのデータ等の送信対象となるデータであり、以下、対象データという）を含むことができる。すなわち、ＭＤＩＯ通信では６４ビット長のＭＤＩＯフレームがシリアルに送信され、各ＭＤＩＯフレームには送信対象となる１６ビット長の対象データがそれぞれ含まれる。
【００２５】
第１のＣＰＵ１は、ＳＷＤ部１ａ１を介して外部コンピュータ２０から第１のＣＰＵ１が実行するためのファームウェア（第１のファームウェア）を受信したときに、外部コンピュータ２０から受信した第１のファームウェアをフラッシュメモリ１ｂに格納し、ＭＤＩＯ部１ａ２を介して外部コンピュータ２０から第２のＣＰＵ２が実行するためのファームウェア（第２のファームウェア）を受信したときに、受信した第２のファームウェアをＳＷＤ信号線Ｌ４を介して第２のＣＰＵ２に送信する。
【００２６】
第１のＣＰＵ１の第１の通信部１ａは、外部コンピュータ２０と第２のＣＰＵ２との間の通信を制御する。ＳＷＤ部１ａ１は、第１の通信部１ａが備える機能またはその機能を行う一部分であって、ＳＷＤインターフェースの規格に準拠した通信（ＳＷＤ通信）を制御する。より具体的には、ＳＷＤ部１ａ１は、外部コンピュータ２０との間で、第１の通信端子部３ａと第１の通信端子部３ａを含むＳＷＤ信号線Ｌ１とを介してＳＷＤ通信を行う第１の通信部１ａの機能またはその機能を行う一部分を示している。ＭＤＩＯ部１ａ２は、第１の通信部１ａが備える機能またはその機能を行う一部分であって、ＭＤＩＯインターフェースに準拠した通信（ＭＤＩＯ通信）を制御する。より具体的には、ＭＤＩＯ部１ａ２は、外部コンピュータ２０との間で、第２の通信端子部３ｂと第２の通信端子部３ｂを含むＭＤＩＯ信号線Ｌ２とを介してＭＤＩＯ通信を行う第１の通信部１ａの機能またはその機能を行う一部分を示している。第１の通信部１ａは、第１のＣＰＵ１が第１の通信端子部３ａおよび第２の通信端子部３ｂを介して外部コンピュータ２０に接続されている場合において、外部コンピュータ２０との間で、第１の通信端子部３ａ（ＳＷＤ信号線Ｌ１）を介したＳＷＤ通信と、第２の通信端子部３ｂ（ＭＤＩＯ信号線Ｌ２）を介したＭＤＩＯ通信とを行う。
【００２７】
ところで、例えば、ＣＦＰ  ＭＳＡ規格において、ＭＤＩＯインターフェースは外部コンピュータ２０が監視制御を行うために光トランシーバに実装するよう規定されており、従って、第２の通信端子部３ｂが規格上用意されている。具体的には、クロック信号ＭＤＣ用に端子ＭＤＣ，データ信号ＭＤＩＯ用に端子ＭＤＩＯが用意されている。従って、ベンダーが第２の通信端子部３ｂを新たに用意する必要はない。また、リセット信号についてもＣＦＰ  ＭＳＡ規格において端子ＭＯＤ＿ＲＳＴが用意されているので、ベンダーが第３の通信端子部３ｃを用意しなくても良い。なお、第１の通信端子部３ａは、ＣＦＰ  ＭＳＡ規格には含まれていないが、上述の９本のベンダー専用の端子内の２本に割り当てることで用意することができる。
【００２８】
後述するように、第１の通信部１ａは、第２のＣＰＵ２の第２のファームウェアが分割されたデータブロック（本実施形態においては、ＳＷＤ通信で送信可能な最小のデータ長である４バイト（＝３２ビット）長のデータブロックであり、以下同様）をＭＤＩＯ通信によって外部コンピュータ２０から第２の通信端子部３ｂ（ＭＤＩＯ信号線Ｌ２）を介して受信することができる。第１のＣＰＵ１は、ＭＤＩＯ通信によって受信したデータブロックを、ＳＷＤ通信でＳＷＤ信号線Ｌ４を介して第２のＣＰＵ２に送信することができる。
【００２９】
第１のＣＰＵ１は、外部コンピュータ２０からリセット信号線Ｌ３を介して送信される第１のリセット信号に応じて、第１のＣＰＵ１をリセットするとともに第２のリセット信号をリセット信号線Ｌ５を介して第２のＣＰＵ２に送信することができる。このように、第１のＣＰＵ１は、第３の通信端子部３ｃを介して外部コンピュータ２０から第１のリセット信号を受信したときに、第１のリセット信号に応じて第１のＣＰＵ１を再起動して第２のＣＰＵ２に第２のリセット信号を送信することができる。
【００３０】
フラッシュメモリ１ｂは、第１のＣＰＵ１の第１のファームウェアがＳＷＤ通信で外部コンピュータ２０から第１の通信端子部３ａ（ＳＷＤ信号線Ｌ１）を介して第１の通信部１ａのＳＷＤ部１ａ１によって受信される場合に、この第１のファームウェアを格納する。ＲＡＭ１ｃは、各種データを一時的に格納するために用いられ得る。
【００３１】
第２のＣＰＵ２は、ＳＷＤ信号線Ｌ４、リセット信号線Ｌ５を介して第１のＣＰＵ１に電気的に接続されている。ＳＷＤ信号線Ｌ４は、ＳＷＤ通信に用いられる。ＳＷＤ信号線Ｌ４は、ＳＷＤインタフェースの規格に準拠したクロック信号線と、ＳＷＤインタフェースの規格に準拠したデータ信号線とによって構成される。リセット信号線Ｌ５は、第１のＣＰＵ１から第２のＣＰＵ２への第２のリセット信号の送信に用いられる。。第２のＣＰＵ２は、ＳＷＤ部２ａ１を介して第１のＣＰＵ１から第２のファームウェアを受信したときに、第１のＣＰＵ１から受信した第２のファームウェアをフラッシュメモリ２ｂに格納する。第２のＣＰＵ２は、第１のＣＰＵ１から第２のリセット信号を受信したときに、第１のＣＰＵ１から送信される第２のリセット信号に応じて自身（第２のＣＰＵ２）をリセット（再起動）する。なお、第２のＣＰＵ２は、Ｉ２ＣやＳＰＩといったシリアル通信を行うための信号線によって、第１のＣＰＵ１とさらに接続されていても良い。
【００３２】
第２のＣＰＵ２の第２の通信部２ａは、第１のＣＰＵ１との通信と、ＬＤＤ４、ＬＩＡ６等の光トランシーバ１０が備える各種デバイス（ＩＣ）等との間の通信と、を制御する。ＳＷＤ部２ａ１は、第２の通信部２ａが有している機能またはその機能を行う一部分であって、ＳＷＤ通信を制御する。より具体的には、ＳＷＤ部２ａ１は、第１のＣＰＵ１の第１の通信部１ａとの間で、ＳＷＤ通信を行う第２の通信部２ａの機能またはその機能を行う一部分を示している。フラッシュメモリ２ｂは、ＳＷＤ通信で第１の通信部１ａのＳＷＤ部１ａ１から送信される第１のファームウェアのデータブロックが第２の通信部２ａのＳＷＤ部２ａ１によって受信される場合に、このデータブロックを格納する。
【００３３】
ＬＤＤ４は、レーザ・ダイオード・ドライバ（Laser  Diode  Driver）であり、ＴＯＳＡ５は、光送信モジュール（Transmitter  Optical  Sub-Assembly）である。ＬＤＤ４とＴＯＳＡ５とは相互に接続されており、ＬＤＤ４には、Ｔｘ電気信号線ＬＡ１（Ｔｘ：Transmitter）が接続されており、ＴＯＳＡ５には、Ｔｘ光信号線ＬＡ２が接続されている。ＬＤＤ４は、Ｔｘ電気信号線ＬＡ１を介して受信した電気信号に応じてＴＯＳＡ５を駆動信号によって駆動する。ＴＯＳＡ５は、駆動信号に応じて光信号をＴｘ光信号線ＬＡ２に出力する。ＬＤＤ４は、第２のＣＰＵ２と信号線を介して接続され、第２のＣＰＵ２と通信を行うことができる。ＬＩＡ６は、リミティング・アンプ（limiting  amplifier）であり、ＲＯＳＡ７は、光受信モジュール（Receiver  Optical  Sub-Assembly）である。ＬＩＡ６とＲＯＳＡ７とは相互に接続されており、ＬＩＡ６には、Ｒｘ電気信号ＬＢ１が接続されており、ＲＯＳＡ７にはＲｘ光信号線ＬＢ２が接続されている。ＲＯＳＡ７は、Ｒｘ光信号線ＬＢ２を介して光信号を受信し、受信した光信号に応じて電気信号を生成する。ＬＩＡ６は、ＲＯＳＡ７から出力された電気信号を増幅して出力する。ＬＩＡ６は、第２のＣＰＵと信号線を介して接続され、第２のＣＰＵと通信をおこなうことができる。
【００３４】
次に、図２、図３、および、図４を参照して、一実施形態に係るファームウェアの書き込み方法について説明する。光トランシーバ１０におけるファームウェアの書き込み（ダウンロード）は、第１のＣＰＵ１の第１のファームウェアと、第２のＣＰＵ２の第２のファームウェアとをそれぞれ書き込みすることを意味しており、図１に示すように光トランシーバ１０が第１の通信端子部３ａ、第２の通信端子部３ｂ、および第３の通信端子部３ｃを介して外部コンピュータ２０に接続された状態で行われる。光トランシーバ１０にて、まず、第１のＣＰＵ１の第１のファームウェアの書き込みが行われ、引き続き、第２のＣＰＵ２の第２のファームウェアの書き込みが行われる。図２は、一実施形態に係るファームウェアの書き込み方法に含まれている処理であって、第１のＣＰＵに第１のファームウェアに書き込まれる処理を説明するためのフローチャートである。図３は、一実施形態に係るファームウェアの書き込み方法に含まれている処理であって、第２のＣＰＵにファームウェアに書き込まれる処理を説明するためのフローチャートである。図４は、一実施形態に係るファームウェアの書き込み方法に含まれている処理であって、外部コンピュータから第１のＣＰＵに対して第２のＣＰＵの第２のファームウェアを送信する処理を説明するためのフローチャートである。
【００３５】
まず、図２を参照して、第１のＣＰＵ１に第１のファームウェアが書き込まれる処理について説明する。図２に示すように、第１のＣＰＵ１の第１の通信部１ａのＳＷＤ部１ａ１は、ステップＳＡ１において、外部コンピュータ２０から、第１の通信端子部３ａ（ＳＷＤ信号線Ｌ１）を介してＳＷＤ通信を行うことによって第１のファームウェアを受信し、当該受信した第１のファームウェアを、第１のＣＰＵ１内のフラッシュメモリ１ｂに格納する（ステップＳＡ１）。すなわち、ステップＳＡ１において、ＳＷＤ通信によって外部コンピュータ２０から第１の通信端子部３ａ（ＳＷＤ信号線Ｌ１）を介して第１のＣＰＵ１に送信された第１のＣＰＵ１の第１のファームウェアを、第１のＣＰＵ１が受信してフラッシュメモリ１ｂに格納する。引き続き、第１のＣＰＵ１は、リセット信号線Ｌ３（第３の通信端子部３ｃ）を介して外部コンピュータ２０から送信された第１のリセット信号に応じて、自身（第１のＣＰＵ１）をリセット（再起動）する（ステップＳＡ２）。すなわち、ステップＳＡ２においては、ステップＳＡ１の実行後であって後述する図３および図４に示す処理の実行前において、外部コンピュータ２０からの第１のファームウェアの送信が完了した後に、外部コンピュータ２０から送信される第１のリセット信号に応じて第１のＣＰＵ１が第１のＣＰＵ１をリセットする。そのリセットによって第１のＣＰＵ１は再起動（電源投入時と同様に起動）し、フラッシュメモリ１ｂに格納された第１のファームウェアを実行可能な状態になる。以上のステップＳＡ１およびステップＳＡ２の実行によって、第１のＣＰＵ１の第１のファームウェアが光トランシーバ１０に書き込まれ、第１のＣＰＵ１において第１のファームウェアが実行可能な状態となる。
【００３６】
一実施形態に係るファームウェアの書き込みにおいては、図２に示すステップＳＡ２に引き続いて、図３および図４に示すように、第２のＣＰＵ２の第２のファームウェアを書き込む処理が実行される。すなわち、ステップＳＡ１およびステップＳＡ２の後において実行される複数ステップ（図３に示すステップＳＢ１〜ステップＳＢ９および図４に示すステップＳＣ１〜ステップＳＣ５）では、第２のＣＰＵ２の第２のファームウェアを分割したデータブロックが、ＭＤＩＯ通信で外部コンピュータ２０から第２の通信端子部３ｂ（ＭＤＩＯ信号線Ｌ２）を介して第１のＣＰＵ１に送信されると、第１のＣＰＵ１は、当該データブロックを受信し、受信した当該データブロックをＳＷＤ信号線Ｌ４を介してＳＷＤ通信によって第２のＣＰＵ２に送信する。
【００３７】
以下、上述した複数ステップの詳細について図３および図４を参照して説明する。まず、図３に示すステップＳＢ１において、第１のＣＰＵ１は、外部コンピュータ２０からリセット信号線Ｌ３を介して送信される第１のリセット信号に応じて（図２に示すステップＳＡ２）、自身（第１のＣＰＵ１）をリセットするとともに第２のリセット信号をリセット信号線Ｌ５を介して第２のＣＰＵ２に送信する（ステップＳＢ１）。このように、第１のＣＰＵ１は、リセット信号線Ｌ３の第３の通信端子部３ｃを介して外部コンピュータ２０から第１のリセット信号を受信したときに、自身（第１のＣＰＵ１）を再起動して第２のＣＰＵ２に第２のリセット信号を送信し、第２のＣＰＵ２は、第１のＣＰＵ１から第２のリセット信号を受信したときに、この第２のリセット信号に応じて自身（第２のＣＰＵ２）を再起動する。より具体的には、ステップＳＡ２によって第１のＣＰＵ１が自身（第１のＣＰＵ１）をリセットすると、第１のＣＰＵ１の第１の通信部１ａは、図３のステップＳＢ１に示すように、当該リセットをトリガとして、リセット信号線Ｌ５を介して第２のＣＰＵ２に第２のリセット信号を送信する（ステップＳＢ１）。ステップＳＢ１に引き続き、リセットによって再起動した後に、第１のＣＰＵ１は、プロテクト解除データをＭＤＩＯ通信で外部コンピュータ２０から受信したか否かを判断し（図３に示すステップＳＢ２）、プロテクト解除データを未だ受信していないと判断した場合には（ステップＳＢ２：未受信）、通常動作を行いつつ（ステップＳＢ３）、プロテクト解除データを受信するまで待機する。
【００３８】
外部コンピュータ２０は、図２に示すステップＳＡ２において第１のリセット信号を第１の通信部１ａに送信した後において、図４に示すように、第１のＣＰＵが第１のリセット信号によって再起動し、第１のファームウェアを実行してＭＤＩＯ信号線Ｌ２を介したＭＤＩＯ通信が可能な状態になった後に、ＭＤＩＯ信号線Ｌ２を介して、プロテクト解除データを第１のＣＰＵ１の第１の通信部１ａにＭＤＩＯ通信で送信する（ステップＳＣ１）。より具体的には、外部コンピュータ２０は、下記の二つ（第１番目、第２番目）のＭＤＩＯフレームをシリアルに順次送信することによって、プロテクト解除データを第１のＣＰＵ１の第１の通信部１ａに送信する。外部コンピュータ２０から第１のＣＰＵ１の第１の通信部１ａに最初に送信される第１番目のＭＤＩＯフレームには、第１のＣＰＵ１のＲＡＭ１ｃ内のメモリアドレスを示す１６ビット長のデータが対象データとして含まれる。上記第１番目のＭＤＩＯフレームに引き続いて外部コンピュータ２０から第１のＣＰＵ１の第１の通信部１ａに送信される第２番目のＭＤＩＯフレームには、１６ビット長のプロテクト解除データが対象データとして含まれる。送信対象となるプロテクト解除データは、第１のＣＰＵ１のＲＡＭ１ｃ内の当該メモリアドレス（所定のＭＤＩＯレジスタ）に一時的に格納される。
【００３９】
第１のＣＰＵ１は、図４に示すステップＳＣ１の後に、プロテクト解除データを外部コンピュータ２０からＭＤＩＯ通信でＭＤＩＯ信号線Ｌ２を介して受信したと判断し（図３に示すステップＳＢ２：受信）、受信したプロテクト解除データをＲＡＭ１ｃに格納する。そして、第１のＣＰＵ１は、フラッシュメモリ１ｂに予め格納されていている照合用データと、図４に示すステップＳＣ１によって外部コンピュータ２０から第１のＣＰＵ１に送信されてＲＡＭ１ｃに格納されたプロテクト解除データとを照合し、両データが同一であると判断した場合には、ステップＳＢ４に進み、同一ではないと判断した場合にはその旨をＭＤＩＯ信号線Ｌ２を介して外部コンピュータ２０に通知してファームウェア取得処理（以降の処理）を終了する。
【００４０】
第１のＣＰＵ１は、図３に示すステップＳＢ２：受信に引き続き、第２のＣＰＵ２の第２のファームウェアのデータブロック（第２のファームウェアが外部コンピュータ２０によって複数に分割された４バイト（＝３２ビット）長（ＳＷＤ通信で可能な最小のデータ長）の第１のデータブロック）を外部コンピュータ２０から第２の通信端子部３ｂ（ＭＤＩＯ信号線Ｌ２）を介してＭＤＩＯ通信で受信するまで待機する（ステップＳＢ４：未受信）。
【００４１】
外部コンピュータ２０は、図４に示すステップＳＣ１の後に、第２のＣＰＵ２の第２のファームウェアのデータブロック（第１のデータブロック）を第１のＣＰＵ１の第１の通信部１ａに第２の通信端子部３ｂ（ＭＤＩＯ信号線Ｌ２）を介してＭＤＩＯ通信で送信する（ステップＳＣ２）。外部コンピュータ２０は、第２のファームウェアを第１の通信部１ａに送信する場合に、第２のファームウェアを４バイト（＝３２ビット）長の複数のデータブロック（第１のデータブロック）に分割し、各データブロックを三つのＭＤＩＯフレームに分けて第１の通信部１ａに送信する。なお、後述するが、図４に示すように、外部コンピュータ２０は、第２のファームウェアを構成する全てのデータブロックの第１の通信部１ａへの送信が完了するまで、ステップＳＣ２を繰り返し実行する。
【００４２】
第１のＣＰＵ１は、図４に示すステップＳＣ２の後に、第２のＣＰＵ２の第２のファームウェアのデータブロックを外部コンピュータ２０からＭＤＩＯ通信で受信したと判断し（図３に示すステップＳＢ４：受信）、当該受信したデータブロックをＲＡＭ１ｃに一時的に格納する（ステップＳＢ５）。外部コンピュータ２０は、データブロックを第１のＣＰＵ１の第１の通信部１ａにＭＤＩＯ通信で送信する場合、下記の三つ（第１番目〜第３番目）のＭＤＩＯフレームを第１の通信部１ａに送信する。外部コンピュータ２０から第１のＣＰＵ１の第１の通信部１ａに最初に送信される第１番目のＭＤＩＯフレームには、第１のＣＰＵ１のＲＡＭ１ｃ内のメモリアドレスを示す１６ビット長のデータが対象データとして含まれる。送信対象となるデータブロックは、第１のＣＰＵ１のＲＡＭ１ｃ内において当該メモリアドレスに一時的に格納されることとなる。上記第１番目のＭＤＩＯフレームに引き続いて外部コンピュータ２０から第１のＣＰＵ１の第１の通信部１ａに送信される第２番目のＭＤＩＯフレームには、３２ビット長の当該データブロックのうち前半の１６ビット（＝２バイト）のデータが対象データとして含まれる。第１のＣＰＵ１は、第２番目のＭＤＩＯフレームに含まれた当該データブロックの前半の１６ビットを第１番目のＭＤＩＯフレームに含まれていたメモリアドレスによって指定されたアドレスに書き込む。上記第２番目のＭＤＩＯフレームに引き続いて外部コンピュータ２０から第１のＣＰＵ１の第１の通信部１ａに送信される第３番目のＭＤＩＯフレームには、３２ビット長の当該データブロックのうち後半の１６ビット（＝２バイト）のデータが対象データとして含まれる。第１のＣＰＵ１は、第３番目のＭＤＩＯフレームに含まれた当該データブロックの後半の１６ビットを第２番目のＭＤＩＯフレームに含まれていた前半１６ビットが書き込まれたアドレスの次のアドレスに書き込む。
【００４３】
第１のＣＰＵ１は、図３に示すステップＳＢ５の後に、ＲＡＭ１ｃ内のビジー・フラグ（Busy  Flag）を１に設定し、第１の通信部１ａは現時点でデータの受信が不可能である旨を、外部コンピュータ２０に示す（ステップＳＢ６）。なお、当該ビジー・フラグが０の場合、第１の通信部１ａは、外部コンピュータ２０からのデータの受信が可能な状態となっている。外部コンピュータ２０は、ＲＡＭ１ｃ内の当該ビジー・フラグを参照することによって、第１の通信部１ａに対してデータの送信を行うか否かを判断する。
【００４４】
第１のＣＰＵ１は、図３に示すステップＳＢ６の後に、ステップＳＢ５においてＲＡＭ１ｃに格納されたデータブロックを、ＭＤＩＯ通信のフォーマットからＳＷＤ通信のフォーマットに（当該データブロックをＳＷＤ信号線Ｌ４を介して第２のＣＰＵ２に送信可能な形式に）変換し、第１のＣＰＵ１の第１の通信部１ａは、当該フォーマットに変換したデータブロックを、第２のＣＰＵ２の第２の通信部２ａにＳＷＤ信号線Ｌ４を介してＳＷＤ通信で送信する（ステップＳＢ７）。より詳細には、ステップＳＢ７においては、第１のＣＰＵ１の第１の通信部１ａは、まず、第１の部分および第１の「Ｔｕｒｎ  Ａｒｏｕｎｄ」データをＳＷＤ信号線Ｌ４を介して第２のＣＰＵ２の第２の通信部２ａに送信した後に、第２の通信部２ａから送信される第２の部分（「Ｒｅｓｐｏｎｓｅ」データ）および第２の「Ｔｕｒｎ  Ａｒｏｕｎｄ」データの受信を待つ。そして、第１の通信部１ａは、第２の通信部２ａからＳＷＤ信号線Ｌ４を介して送信された第２の部分の「Ｒｅｓｐｏｎｓｅ」データの内容が「ＯＫ」を示している場合には、第２の通信部２ａに対して４バイト長の当該データブロックを含む第３の部分を第２の通信部２ａにＳＷＤ信号線Ｌ４を介してＳＷＤ通信で送信する。なお、第１の通信部１ａは、第２の通信部２ａから送信された第２の部分の「Ｒｅｓｐｏｎｓｅ」データの内容が「ＷＡＩＴ」の場合には、第１の部分を再び第２の通信部２ａにＳＷＤ信号線Ｌ４を介してＳＷＤ通信で送信する。また、第１の通信部１ａは、第２の通信部２ａから送信された第２の部分の「Ｒｅｓｐｏｎｓｅ」データの内容が「ＦＡＵＬＴ」の場合には、第２のＣＰＵ２に第２のファームウェアを送信する処理を終了し、第１のＣＰＵ１は、ＲＡＭ１ｃ内のエラー・フラグ（Error  Flag）を１を設定する。
【００４５】
第１のＣＰＵ１は、図３に示すステップＳＢ７の後、送信対象の当該データブロックを含む第３の部分および「Ｐａｒｉｔｙ」データの送信が完了した場合において、ＲＡＭ１ｃに一時的に格納されている送信済みのデータブロックを消去し（ステップＳＢ８）、この後に、ＲＡＭ１ｃ内のビジー・フラグを０に設定して、第１の通信部１ａは現時点でデータの受信が可能である旨を、外部コンピュータ２０に示す（ステップＳＢ９）。第１のＣＰＵ１は、図３に示すステップＳＢ９の後にステップＳＢ４に移行して、外部コンピュータ２０からＭＤＩＯ通信で第２のファームウェアのデータブロックを更に受信するまで待機するが、当該待機中において、外部コンピュータ２０から第１のリセット信号を受信して第１のＣＰＵ１自身をリセットして再起動した場合には、ステップＳＢ１に移行し、ステップＳＢ２およびステップＳＢ３（通常動作）を行う。ステップＳＢ７の後に、第２のＣＰＵ２の第２の通信部２ａは、ＳＷＤ信号線Ｌ４を介して第１のＣＰＵ１からデータブロックを受信し、この第１のＣＰＵ１から受信したデータブロックを、第２のＣＰＵ２が内蔵するフラッシュメモリ２ｂに格納する。
【００４６】
外部コンピュータ２０は、図４に示すステップＳＣ２の後に、図３に示すステップＳＢ６において１に設定されたＲＡＭ１ｃ内のビジー・フラグが、図３に示すステップＳＢ８において０に設定されるまで待機しつつ、ＲＡＭ１ｃ内のエラー・フラグを検出し、当該エラー・フラグが１に設定されている場合には、外部コンピュータ２０は、光トランシーバ１０に第２のＣＰＵ２の第２のファームウェアを送信する処理（特に図４に示すステップＳＣ４以降の処理）を終了する（ステップＳＣ３）。外部コンピュータ２０は、図４に示すステップＳＣ３において、ＲＡＭ１ｃ内のビジー・フラグが０に設定されており、且つ、エラー・フラグが０に設定されていることを確認すると、ステップＳＣ４に移行して、第２のＣＰＵ２の第２のファームウェアを構成する全てのデータブロックを第１の通信部１ａに送信したか否かを判断する（ステップＳＣ４）。外部コンピュータ２０は、ステップＳＣ４において、第２のファームウェアを構成する全てのデータブロックのうち第１の通信部１ａに未だ送信していないデータブロックがあると判断すると（ステップＳＣ４；ＮＯ）、ステップＳＣ２に移行し、未送信のデータブロックを、引き続き第１の通信部１ａにＭＤＩＯ信号線Ｌ２を介してＭＤＩＯ通信で送信する。外部コンピュータ２０は、第２のファームウェアを構成する全てのデータブロックの第１の通信部１ａへの送信が完了するまで、ステップＳＣ２を繰り返し実行する（ステップＳＣ４：ＹＥＳ）。
【００４７】
外部コンピュータ２０は、図４に示すステップＳＣ４；ＹＥＳの後（すなわち、第２のＣＰＵ２に対する第２のファームウェアの送信が完了するまで複数ステップ（図３に示すステップＳＢ１〜ステップＳＢ９および図４に示すステップＳＣ１〜ステップＳＣ５）が繰り返し実行された後）において、第１のＣＰＵ１に対し第１のリセット信号をリセット信号線Ｌ３を介して送信し、第１のＣＰＵ１をリセットする（ステップＳＣ５）。ステップＳＣ５によって第１のＣＰＵ１がリセットされ再起動されると、図３に示すステップＳＢ１が再び実行される。そして、ステップＳＣ４：ＹＥＳの後に実行されるステップＳＢ１において、第２のＣＰＵ２は、第１のＣＰＵ１から送信される第２のリセット信号に応じて自身（第２のＣＰＵ２）をリセットする。
【００４８】
以上、好適な実施の形態において本発明の原理を図示し説明してきたが、本発明は、そのような原理から逸脱することなく配置および詳細において変更され得ることは、当業者によって認識される。本発明は、本実施の形態に開示された特定の構成に限定されるものではない。したがって、特許請求の範囲およびその精神の範囲から来る全ての修正および変更に権利を請求する。
【００４９】
例えば、図５に示すように、第１のＣＰＵ１には第２のＣＰＵ２が電気的に接続されているが、第２のＣＰＵ２と共に更に少なくとも一つの第３のＣＰＵ２ｃを第２のＣＰＵ２と並列に第１のＣＰＵ１に電気的に接続されていてもよい。第３のＣＰＵ２ｃの構成は、第２のＣＰＵ２の構成と同一であることができる。また、第３のＣＰＵ２ｃは、第２のＣＰＵ２と同じ構成（第２の通信部２ａ（ＳＷＤ部２ａ１を含む）およびフラッシュメモリ２ｂ）を備えると共に第３のＣＰＵ２ｃが実行するファームウェアの書き込み方法が第２のＣＰＵ２の場合と同様であれば、他の構成を有することも可能である。図５は、本発明の他の一態様に係る光トランシーバの構成を模式的に示す図である。図５に示す光トランシーバ１０は、第２のＣＰＵ２と共に更に少なくとも一つの第３のＣＰＵ２ｃを備え、第３のＣＰＵ２ｃは、ＳＷＤ信号線Ｌ４（第２の内部信号線）、リセット信号線Ｌ５を介して第１のＣＰＵ１に対し第２のＣＰＵ２と並列に電気的に接続されている。具体的には、第１のＣＰＵ１は、ＭＤＩＯ部１ａ２を介して外部コンピュータ２０から第３のＣＰＵ２ｃが実行するためのファームウェア（第３のファームウェア）を受信したときに、外部コンピュータ２０から受信した第３のファームウェアをＳＷＤ信号線Ｌ４を介して第３のＣＰＵ２ｃに送信する。第２のＣＰＵ２と同様に、第３のＣＰＵ２ｃは、第２の通信部２ａと、フラッシュメモリ２ｂ（第３のメモリ）とを備え、第３のＣＰＵ２ｃの第２の通信部２ａは、ＳＷＤ信号線Ｌ４を介して第１のＣＰＵ１と電気的に接続されたＳＷＤ部２ａ１（第３のＳＷＤ部）を備える。第３のＣＰＵ２ｃは、第３のＣＰＵ２ｃのＳＷＤ部２ａ１を介して、第１のＣＰＵ１から第３のファームウェアを受信したときに、当該受信した第３のファームウェアを、第３のＣＰＵ２ｃのフラッシュメモリ２ｂに格納する。
【００５０】
この場合、第３のＣＰＵ２ｃに対しても、図２〜図４の各フローチャートに示す各処理（図３および図４の各フローチャートにおいて、第２のＣＰＵ２は第３のＣＰＵ２ｃに替えられ、第２のファームウェアは第３のファームウェアに替えられる）が、実行される。具体的には、図５に示す光トランシーバ１０は、第３のＣＰＵ２ｃが実行するための第３のファームウェアが複数に分割されたデータブロック（第２のデータブロック）を、第２の通信端子部３ｂを介して外部コンピュータ２０から受信し（ステップＳＢ４）、当該受信したデータブロックをＲＡＭ１ｃに格納し（ステップＳＢ５）、当該格納されたデータブロックを、ＳＷＤ信号線Ｌ４（第２の内部信号線）を介して第３のＣＰＵ２ｃに送信可能な形式に変換して、当該変換したデータブロックをＳＷＤ信号線Ｌ４（第２の内部信号線）を介して第３のＣＰＵ２ｃに送信し（ステップＳＢ７）、この後、ＳＷＤ信号線Ｌ４（第２の内部信号線）を介して第１のＣＰＵ１からデータブロック（第２のデータブロック）を受信し、当該受信したデータブロックを第３のＣＰＵ２ｃが内蔵するフラッシュメモリ２ｂ（第３のメモリ）に格納する。
【００５１】
このように光トランシーバ１０が第２のＣＰＵ２と共に少なくとも一つの第３のＣＰＵ２ｃを備える場合、上記説明した一実施形態に係るファームウェア取得処理（図２、図３、および、図４に示す各フローチャートを参照）においては、複数の第２のＣＰＵ２のそれぞれに対して、順次、複数ステップ（図３に示すステップＳＢ１〜ステップＳＢ９および図４に示すステップＳＣ１〜ステップＳＣ５）を繰り返し実行する。
【符号の説明】
【００５２】
１…第１のＣＰＵ、１０…光トランシーバ、１ａ…第１の通信部、１ａ１…ＳＷＤ部、１ａ２…ＭＤＩＯ部、１ｂ…フラッシュメモリ、１ｃ…ＲＡＭ、２…第２のＣＰＵ、２０…外部コンピュータ（外部装置）、２ａ…第２の通信部、２ａ１…ＳＷＤ部、２ｂ…フラッシュメモリ、２ｃ…第３のＣＰＵ、３ａ…第１の通信端子部、３ｂ…第２の通信端子部、３ｃ…第３の通信端子部、４…ＬＤＤ、５…ＴＯＳＡ、６…ＬＩＡ、７…ＲＯＳＡ、Ｌ１…ＳＷＤ信号線、Ｌ２…ＭＤＩＯ信号線、Ｌ３…リセット信号線、Ｌ４…ＳＷＤ信号線、Ｌ５…リセット信号線、ＬＡ１…Ｔｘ電気信号線、ＬＡ２…Ｔｘ光信号線、ＬＢ１…Ｒｘ電気信号、ＬＢ２…Ｒｘ光信号線。
【図１】
2018125772.tif 000003
【図２】
2018125772.tif 000004
【図３】
2018125772.tif 000005
【図４】
2018125772.tif 000006
【図５】
2018125772.tif 000007