(57)【要約】      （修正有）【課題】不揮発性メモリへのデータ書き込み時間を小さくすることが可能なマイクロコントローラを提供する。【解決手段】マイクロコントローラでは、セクタ有効フラグがセットされている第１のセクタ32aの複数の差分データ領域の一つの差分データ領域のみが空いている場合には、当該一つの差分データ領域に差分データが書き込まれ、且つ、第２のセクタ32ｂが消去される。セクタ有効フラグ34aがセットされている第１のセクタの複数の差分データ領域に空きがない場合には、差分データ、第１のセクタのベースデータ領域38aに記憶されたベースデータ、及び第１のセクタの複数の差分データ領域に記憶された差分データに基づいて新たなベースデータが作成され、新たなベースデータが第２のセクタに書き込まれ、第１のセクタにセクタ無効フラグがセットされ、第２のセクタにセクタ有効フラグ34bがセットされる。【選択図】図３
2010186305.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサ及びフラッシュメモリを備え、
前記フラッシュメモリは、プログラム領域及びユーザ書き込み可能ＥＥＰＲＯＭ領域を含んでおり、
前記ユーザ書き込み可能ＥＥＰＲＯＭ領域は、第１のセクタ及び第２のセクタを含んでおり、
前記第１のセクタ及び前記第２のセクタの各々は、ベースデータ領域、複数の差分データ領域、セクタ有効フラグ領域、及び、セクタ無効フラグ領域を含んでおり、
前記プログラム領域に記憶されたプログラムに基づいて動作する前記プロセッサが、
前記ユーザ書き込み可能ＥＥＰＲＯＭ領域からのデータの読み出し時には、前記第１のセクタ及び前記第２のセクタのうち前記セクタ有効フラグ領域にセクタ有効フラグがセットされている一方のセクタの前記ベースデータ領域に記憶されたベースデータに該一方のセクタの前記複数の差分データ領域に記憶された差分データを適用することによってデータを生成し、
前記ユーザ書き込み可能ＥＥＰＲＯＭ領域への差分データの書き込み時に、
前記第１のセクタ及び前記第２のセクタのうち前記セクタ有効フラグ領域にセクタ有効フラグがセットされている一方のセクタにおいて前記複数の差分データ領域のうち二つ以上の差分データ領域が空いている場合には、該一方のセクタの前記複数の差分データ領域のうち空いている差分データ領域に前記差分データを書き込み、
前記第１のセクタ及び前記第２のセクタのうち前記セクタ有効フラグ領域にセクタ有効フラグがセットされている一方のセクタにおいて前記複数の差分データ領域のうち一つの差分データ領域のみが空いている場合には、該一つの差分データ領域に前記差分データを書き込み、且つ、前記第１のセクタ及び前記第２のセクタのうち他方のセクタを消去し、
前記第１のセクタ及び前記第２のセクタのうち前記セクタ有効フラグ領域にセクタ有効フラグがセットされている一方のセクタにおいて前記複数の差分データ領域に空きがない場合には、前記差分データ、該一方のセクタの前記ベースデータ領域に記憶されたベースデータ、及び該一方のセクタの前記複数の差分データ領域に記憶された差分データに基づいて新たなベースデータを作成し、前記第１のセクタ及び前記第２のセクタのうち他方のセクタに該新たなベースデータを書き込み、前記一方のセクタの前記セクタ無効フラグ領域にセクタ無効フラグをセットし、前記他方のセクタの前記セクタ有効フラグ領域にセクタ有効フラグをセットする、
マイクロコントローラ。
【請求項２】
請求項１に記載のマイクロコントローラを備える光データリンク。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロコントローラ、及びそれを備えた光トランシーバに関するものである。
【背景技術】
【０００２】
光データリンクには、ユーザ定義のデータを書き込むためのユーザ書き込み可能ＥＥＰＲＯＭ領域（Ｕｓｅｒ  Ｗｒｉｔａｂｌｅ  ＥＥＰＲＯＭ領域）を備えるものがある。例えば、非特許文献１に記載のプラガブル小型光データリンクＳＦＰ＋は、１２０バイトのユーザ書き込み可能ＥＥＰＲＯＭ領域を備えている。
【０００３】
また、特許文献１に記載されているように、このようなユーザ書き込みＥＥＰＲＯＭ領域をマイクロコントローラ（ＭＣＵ）のフラッシュメモリで実現することにより、部品点数を削減する試みがなされている。
【０００４】
ＭＣＵのフラッシュメモリの書き換えは、一般的には、セクタ単位で行われる。また、非特許文献２に記載されているように、ＳＦＰ＋といった光データリンクのユーザ書き込み可能ＥＥＰＲＯＭ領域の書き込み回数に対しては規格値が定められていることがある。しかしながら、非特許文献３に記載されているように、ＭＣＵのフラッシュメモリには、この規格値よりも少ない回数の書き込みしかできないものもある。
【０００５】
そこで、特許文献２に記載されているように、差分データを異なる領域に書き込みを行うことで、フラッシュメモリの各領域の書き込み及び消去の回数を削減する試みが行われている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平０８−１７１５４５号公報
【特許文献２】特開２００８−１９１７９７号公報
【非特許文献】
【０００７】
【非特許文献１】SFF-8472 Specification for Diagnostic Monitoring Interface forOptical Transceivers Rev.10.3
【非特許文献２】SFF-8431 Specifications for Enhanced Small Form Factor PluggableModule “SFP+”
【非特許文献３】Silicon Laboratories C8051F93x-C8051F92x
【発明の概要】
【発明が解決しようとする課題】
【０００８】
差分データをフラッシュメモリに書き込む方式では、フラッシュメモリの差分データ書き込み領域に空きがなくなると、ユーザ書き込み可能ＥＥＰＲＯＭ領域のデータの再構築、フラッシュメモリの消去、及び、再構築したデータの書き込みを含む処理が必要となる。この処理に要する時間は大きいことがあり、ＳＦＰ＋の規格に定められた時間のような書き込みに認められる時間を超えることがある。例えば、非特許文献２に記載のＳＦＰ＋の規格では、この処理に最大で４０ｍｓの時間を認めている。一方、非特許文献３に記載のマイクロプロセッサでは、フラッシュメモリの消去に３６ｍｓを要し、データの書き込みに１２０（Ｂｙｔｅ）×７１μｓを要するので、当該処理に４４．５２ｍｓ要する。したがって、マイクロプロセッサによっては、フラッシュメモリへのデータの書き込みが、規格によって定められた許容時間を超えることがある。
【０００９】
本発明は、ユーザ書き込み可能ＥＥＰＲＯＭ領域を提供するフラッシュメモリを備えるマイクロコントローラであって、当該ユーザ書き込み可能ＥＥＰＲＯＭ領域へのデータ書き込み時間を小さくすることが可能なマイクロコントローラを提供することを目的としている。また、本発明は、このようなマイクロコントローラを有する光データリンクを提供することを目的としている。
【課題を解決するための手段】
【００１０】
本発明のマイクロコントローラは、プロセッサ及びフラッシュメモリを備えている。フラッシュメモリは、プログラム領域及びユーザ書き込み可能ＥＥＰＲＯＭ領域を含んでいる。ユーザ書き込み可能ＥＥＰＲＯＭ領域は、第１のセクタ及び第２のセクタを含んでいる。第１のセクタ及び第２のセクタの各々は、ベースデータ領域、複数の差分データ領域、セクタ有効フラグ領域、及び、セクタ無効フラグ領域を含んでいる。プロセッサは、プログラム領域に記憶されたプログラムに基づいて動作する。プロセッサは、ユーザ書き込み可能ＥＥＰＲＯＭ領域からのデータの読み出し時には、第１のセクタ及び第２のセクタのうちセクタ有効フラグ領域にセクタ有効フラグがセットされている一方のセクタのベースデータ領域に記憶されたベースデータに当該一方のセクタの複数の差分データ領域に記憶された差分データを適用することによってデータを生成する。また、プロセッサは、ユーザ書き込み可能ＥＥＰＲＯＭ領域への差分データの書き込み時に、（ａ）第１のセクタ及び第２のセクタのうちセクタ有効フラグ領域にセクタ有効フラグがセットされている一方のセクタにおいて複数の差分データ領域のうち二つ以上の差分データ領域が空いている場合には、当該一方のセクタの複数の差分データ領域のうち空いている差分データ領域に差分データを書き込み、（ｂ）第１のセクタ及び第２のセクタのうちセクタ有効フラグ領域にセクタ有効フラグがセットされている一方のセクタにおいて複数の差分データ領域のうち一つの差分データ領域のみが空いている場合には、当該一つの差分データ領域に差分データを書き込み、且つ、第１のセクタ及び第２のセクタのうち他方のセクタを消去し、（ｃ）第１のセクタ及び第２のセクタのうちセクタ有効フラグ領域にセクタ有効フラグがセットされている一方のセクタにおいて複数の差分データ領域に空きがない場合には、差分データ、当該一方のセクタのベースデータ領域に記憶されたベースデータ、及び当該一方のセクタの複数の差分データ領域に記憶された差分データに基づいて新たなベースデータを作成し、第１のセクタ及び第２のセクタのうち他方のセクタに当該新たなベースデータを書き込み、当該一方のセクタのセクタ無効フラグ領域にセクタ無効フラグをセットし、当該他方のセクタのセクタ有効フラグ領域にセクタ有効フラグをセットする。
【００１１】
また、本発明の光データリンクは、このようなマイクロコントローラを備えている。
【００１２】
本発明によれば、セクタ有効フラグがセットされている一方のセクタの複数の差分データ領域が差分データによって満たされるときに、他方のセクタが消去される。そして、次に、差分データを書き込むときには、新たなベースデータが構築されて他方のセクタに書き込まれる。このように、本発明によれば、新たなベースデータの書き込み時に、セクタの消去が行われないので、データ書き込み時間が小さくなる。なお、特開２００４−７１０３３号公報には、メモリブロックの最終セクタにデータの書き込みを行った後、次のメモリブロックを消去し、次回のデータの書き込み時には、消去したメモリブロックのセクタに順次データを書き込む発明が記載されている。この特開２００４−７１０３３号公報に記載された発明では、消去されたメモリブロックのデータが失われるので、データの再構築を行うことは不可能である。
【発明の効果】
【００１３】
以上説明したように、本発明によれば、ユーザ書き込み可能ＥＥＰＲＯＭ領域を提供するフラッシュメモリを備えるマイクロコントローラであって、当該ユーザ書き込み可能ＥＥＰＲＯＭ領域へのデータ書き込み時間を小さくすることが可能なマイクロコントローラが提供される。また、本発明によれば、このようなマイクロコントローラを有する光データリンクが提供される
【図面の簡単な説明】
【００１４】
【図１】一実施形態に係る光データリンクを概略的に示す図である。
【図２】図１に示したマイクロコントローラを示す図である。
【図３】図２に示したフラッシュメモリの各領域を示す図である。
【図４】図３に示した各差分データ領域のメモリマップを示す図である。
【図５】図２に示したマイクロコントローラの書き込み動作を示す図である。
【発明を実施するための形態】
【００１５】
以下、図面を参照して本発明の好適な実施形態について詳細に説明する。なお、各図面において同一又は相当の部分に対しては同一の符号を附すこととする。
【００１６】
図１は、一実施形態に係る光データリンクを概略的に示す図である。図１に示す光データリンク１０は、発光部１２、受光部１４、トランシーバＩＣ  １６、及び、マイクロコントローラ１８を備えている。
【００１７】
発光部１２は、半導体レーザといった発光素子と、発光素子の発光量をモニタするためのモニタフォトダイオードといった受光素子と、を有している。発光部１２は、後述するＩＣ  １６からの駆動電流を受けて、当該駆動電流に応じた光信号を出力する。この発光部１２への駆動電流は、ＩＣ  １６によって変調され、受光素子からの光電流に基づいてＩＣ  １６によって制御される。
【００１８】
受光部１４は、フォトダイオードといった受光素子を有している。受光部１４は、光ファイバといった外部からの光を受けて光電流を出力する。
【００１９】
ＩＣ  １６は、発光部１２に駆動電流を与える。ＩＣ  １６は、駆動電流を、ホストから与えられる送信信号に基づいて変調する。また、ＩＣ  １６は、後述するマイクロコントローラ１８からの調整値、及び、発光部１２からの光電流に基づいて、駆動電流を調整する。さらに、ＩＣ１６は、受光部１４からの光電流に応じた受信信号を、ホストに対して出力する。このＩＣ１６は、インタフェイス２０を介してマイクロコントローラ１８に接続されている。
【００２０】
図２は、図１に示したマイクロコントローラを示す図である。図２に示すように、マイクロコントローラ１８は、ＣＰＵ  ２２、揮発性メモリ２４、及び、フラッシュメモリ２６を備えている。
【００２１】
ＣＰＵ  ２２は、フラッシュメモリ２６に記憶されたプログラムに従って動作する。揮発性メモリ２４は、一時的なデータ等の記憶のために利用される。ＣＰＵ  ２２の動作、特に、フラッシュメモリ２６からのデータ読み込み動作、及び、当該フラッシュメモリ２６へのデータの書き込み動作については、後述する。
【００２２】
以下、フラッシュメモリ２６について詳細に説明する。図３は、図２に示すフラッシュメモリの各領域を示す図である。図３に示すように、フラッシュメモリ２６は、プログラム領域２８、調整値領域３０、及び、ユーザ書き込み可能ＥＥＰＲＯＭ領域３２を含んでいる。
【００２３】
プログラム領域２８には、ＣＰＵ  ２２を動作させるためのプログラムが記憶されている。また、調整値領域３０には、ＩＣ  １６に与える調整値が記憶されている。
【００２４】
ユーザ書き込み可能ＥＥＰＲＯＭ領域３２は、二つのセクタに分割されている。即ち、ユーザ書き込み可能ＥＥＰＲＯＭ領域３２は、第１のセクタ３２ａ、及び第２のセクタ３２ｂを含んでいる。
【００２５】
第１のセクタ３２ａは、セクタ有効フラグ領域３４ａ、セクタ無効フラグ領域３６ａ、ベースデータ領域３８ａ、及び、複数の差分データ領域４０ａ１〜４０ａＭ（Ｍは、２以上の整数）を含んでいる。
【００２６】
第２のセクタ３２ｂは、セクタ有効フラグ領域３４ｂ、セクタ無効フラグ領域３６ｂ、ベースデータ領域３８ｂ、及び、複数の差分データ領域４０ｂ１〜４０ｂＭ（Ｍは、２以上の整数）を含んでいる。
【００２７】
第１のセクタ３２ａ及び第２のセクタ３２ｂは、互いに排他的に利用されるものである。第１のセクタ３２ａがデータの書き込み及び読み込みに利用されるときには、第１のセクタ３２ａのセクタ有効フラグ領域３４ａにセクタ有効フラグがセットされ、第２のセクタ３２ｂのセクタ無効フラグ領域３６ｂにセクタ無効フラグがセットされる。
【００２８】
一方、第２のセクタ３２ｂがデータの書き込み及び読み込みに利用されるときには、第２のセクタ３２ｂのセクタ有効フラグ領域３４ｂにセクタ有効フラグがセットされ、第１のセクタ３２ａのセクタ無効フラグ領域３６ａにセクタ無効フラグがセットされる。
【００２９】
ベースデータ領域３８ａ及び３８ｂは、基となるデータ、即ちベースデータを記憶するための領域である。複数の差分データ領域４０ａ１〜４０ａＭは、ベースデータ領域３８ａに記憶されたベースデータに対する差分データを記憶するための領域である。複数の差分データ領域４０ｂ１〜４０ｂＭは、ベースデータ領域３８ｂに記憶されたベースデータに対する差分データを記憶するための領域である。
【００３０】
図４は、図３に示す各差分データ領域のメモリマップを示す図である。ここでは、各差分領域を参照符号４０で指し示す。図４に示すように、各差分データ領域４０は、データを記憶する領域４０ｃ、終了アドレスを記憶する領域４０ｄ、開始アドレスを記憶する領域４０ｅ、及び、更新済みフラグを記憶する領域４０ｆを含んでいる。
【００３１】
以下、マイクロコントローラのデータ読み込み及び書き込み動作について説明する。まず、データの読み込み動作について説明する。ＣＰＵ  ２２は、データの読み込み要求を受けたときに、セクタ有効フラグがセットされているセクタのベースデータ領域に記憶されたベースデータ、及び、当該セクタの差分データ領域に記憶されている差分データを揮発性メモリ２４に読み込む。次いで、ＣＰＵ  ２２は、ベースデータに差分データを適用することによって、ベースデータを更新し、揮発性メモリ２４に記憶する。ＣＰＵ  ２２は、このように更新したベースデータを、読み込み要求に対して返す。
【００３２】
次に、データの書き込み動作について説明する。図５は、図２に示すマイクロコントローラの書き込み動作を示す図である。なお、以下の説明では、下付き文字で示す数値が小さい参照符号をもった差分データ領域から順に差分データが書き込まれるものとする。また、第１のセクタ３２ａのセクタ有効フラグ領域３４ａにセクタ有効フラグがセットされており、第２のセクタ３２ｂのセクタ無効フラグ領域３６ｂにセクタ無効フラグがセットされているものとする。また、次に差分データを書き込むべき差分データ領域をｋが指しているものとする。なお、ｋや差分データ領域の参照符号における下付き文字は、例えば、差分データ領域のアドレスとし得る。
【００３３】
図５に示すように、データの書き込みに関連したマイクロコントローラの動作は、書き込み要求の発生（ステップＳ０）において開始する。書き込み要求が発生すると、ＣＰＵ  ２２は、ベースデータ領域３８に記憶されているベースデータ及び以前に差分データ領域に書き込まれている差分データとに基づくデータと書き込み要求されたデータとの差分データを生成する。なお、書き込み要求と共に、差分データがＣＰＵ  ２２に与えられてもよい。
【００３４】
次いで、ＣＰＵ  ２２は、セクタ有効フラグがセットされているセクタ、ここでは、第１のセクタ３２ａの複数の差分データ領域４０ａ１〜４０ａＭに二つ以上の空き領域が存在するか否かをチェックする。
【００３５】
具体的には、ＣＰＵ  ２２は、ｋがＭ＋１であるか否かチェックし（ステップＳ２）、ｋがＭ＋１でない場合には、ｋがＭであるか否かをチェックする（ステップＳ４）。ｋがＭに一致しない場合には、複数の差分データ領域４０ａ１〜４０ａＭに二つ以上の空き領域が存在するので、ＣＰＵ  ２２は、ｋが指し示す差分データ領域４０ａｋに差分データを書き込む（ステップＳ６）。そして、ＣＰＵ  ２２は、ｋが次の差分データ領域を指すように、ｋを増分する（ステップＳ８）。
【００３６】
ステップＳ４において、ｋがＭである場合、即ち、ｋが第１のセクタ３２ａの最終の差分データ領域４０ａＭを指しているときには、ＣＰＵ  ２２は、ｋが指し示す差分データ領域４０ａｋ、即ち、差分データ領域４０ａＭに差分データを書き込む（ステップＳ１０）。
【００３７】
ステップＳ１０の処理に次いで、ＣＰＵ  ２２は、次のセクタ、ここでは、第２のセクタ３２ｂの全領域を消去する（ステップＳ１２）。この後、ステップＳ８において、ｋが増分される。
【００３８】
ステップＳ２においてｋがＭ＋１である場合、ＣＰＵ  ２２は、新たなベースデータを再構築する（ステップＳ２２）。具体的には、ＣＰＵ  ２２は、書き込むべき差分データ、ベースデータ領域３８ａに記憶されたベースデータ、及び、差分データ領域４０ａ１〜４０ａＭに記憶された差分データを用いて、新たなベースデータを揮発性メモリ２４に作成する。
【００３９】
次いで、ＣＰＵ  ２２は、現セクタ、即ち、第１のセクタ３２ａのセクタ無効フラグ領域３６ａにセクタ無効フラグをセットする（ステップＳ２２）。また、ＣＰＵ  ２２は、第１のセクタ３２ａのセクタ有効フラグ領域３４ａのセクタ有効フラグを解除する。
【００４０】
次いで、ＣＰＵ  ２２は、次のセクタ、即ち、第２のセクタ３２ｂのセクタ有効フラグ領域３４ｂにセクタ有効フラグをセットする（ステップＳ２４）。また、ＣＰＵ  ２２は、第２のセクタ３２ｂのセクタ無効フラグ領域３６ｂのセクタ無効フラグを解除する。
【００４１】
次いで、ＣＰＵ  ２２は、次のセクタのベースデータ領域、ここでは、ベースデータ領域３８ｂに、新たなベースデータを書き込む。そして、ＣＰＵ  ２２は、ｋを増分する。
【００４２】
以上説明したマイクロコントローラ１８によれば、新たなベースデータの書き込み時（ステップＳ２０〜Ｓ２８）に、セクタの消去（ステップＳ１２）を行わないので、データ書き込み時間を小さくすることが可能である。
【００４３】
例えば、ステップＳ１０において７１μｓ／ｂｙｔｅの速度で１１ｂｙｔｅのデータが書き込まれ、ステップＳ１２において３６ｍｓで次のセクタが消去されるものとすると、ステップＳ１０〜Ｓ１２の手順は、３６．８ｍｓで行われる。なお、１１ｂｙｔｅは、差分データのバイト数であり、データ、終了アドレス、開始アドレス、更新済みフラグそれぞれのバイト数の合計である。
【００４４】
また、セクタ無効フラグ及びセクタ有効フラグのそれぞれのバイト数が１ｂｙｔｅであり、ベースデータのバイト数が１２０ｂｙｔｅであり、７１μｓ／ｂｙｔｅの速度で書き込みが行われるものとすると、ステップＳ２２〜Ｓ２６の処理は、８．７ｍｓで行われることとなる。
【００４５】
即ち、ステップＳ１０〜Ｓ１２の処理、ステップＳ２２〜２８の処理はそれぞれ、上述した規格値の４０ｍｓ以下で行われることとなる。したがって、マイクロコントローラ１８を備える光トランシーバ１０は、データの書き込みに要する時間を規格値より少なくすることができる。
【符号の説明】
【００４６】
１０…光データリンク、１２…発光部、１４…受光部、１６…トランシーバＩＣ、１８…マイクロコントローラ、２０…インタフェイス、２２…ＣＰＵ、２４…揮発性メモリ、２６…フラッシュメモリ、２８…プログラム領域、３０…調整値領域、３２…ユーザ書き込み可能ＥＥＰＲＯＭ領域、３２ａ…第１のセクタ、３２ｂ…第２のセクタ、３４ａ，３４ｂ…セクタ有効フラグ領域、３６ａ，３６ｂ…セクタ無効フラグ領域、３８ａ，３８ｂ…ベースデータ領域、４０ａ１〜４０ａＭ，４０ｂ１〜４０ｂＭ…差分データ領域。
【図１】
2010186305.tif 000003
【図２】
2010186305.tif 000004
【図３】
2010186305.tif 000005
【図４】
2010186305.tif 000006
【図５】
2010186305.tif 000007