(57)【要約】【目的】  ファームウェアを書き換える処理を行う書き換えプログラムを確実に実行できるようにする。【構成】  システムコントローラは、Ｓ１でホストＰＣからファームウェアの書き換え命令を受信したか否かを判断し、受信したらＳ２でプログラムメモリに記憶された書き換えプログラムを読み出してバッファメモリに移動し、Ｓ３でバッファメモリ上で書き換えプログラムを実行し、Ｓ４でホストＰＣから新しい主のプログラムを受信してバッファメモリに記憶し、Ｓ５でプログラムメモリの主のプログラム領域を消去してプログラムメモリに記憶された主のプログラムを消去し、Ｓ６でバッファメモリに記憶された新しい主のプログラムを読み出してプログラムメモリに書き込み、Ｓ７でプログラムメモリに書き込み完了フラグを書き込む。【選択図】        図４
2005085039.tif 000002
【特許請求の範囲】
【請求項１】
記録媒体に対する情報の記録又は再生の制御処理を行うファームウェアプログラムと該ファームウェアプログラムを書き換える書き換えプログラムとを記憶する書き換え可能なプログラムメモリと、前記記録媒体に記録する情報又は記録媒体から再生した情報を一時的に記憶するバッファメモリと、
前記プログラムメモリに記憶された書き換えプログラムを前記バッファメモリに移動する手段と、
前記バッファメモリに記憶された書き換えプログラムを実行して外部から新しいファームウェアプログラムを受信し、該受信した新しいファームウェアプログラムを前記バッファメモリに記憶し、前記プログラムメモリに記憶されたファームウェアプログラムを消去し、前記バッファメモリに記憶された新しいファームウェアプログラムを前記プログラムメモリに書き込んで前記プログラムメモリに記憶されたファームウェアプログラムを書き換える手段とを備えたことを特徴とする記録再生装置。
【請求項２】
記録媒体に対する情報の記録又は再生の制御処理を行うファームウェアプログラムを記憶する書き換え可能なプログラムメモリと、前記記録媒体に記録する情報又は記録媒体から再生した情報を一時的に記憶するバッファメモリと、
外部から前記ファームウェアプログラムを書き換える書き換えプログラムを受信し、該受信した書き換えプログラムを前記バッファメモリに記憶する手段と、
前記バッファメモリに記憶された書き換えプログラムを実行して外部から新しいファームウェアプログラムを受信し、該受信した新しいファームウェアプログラムを前記バッファメモリに記憶し、前記プログラムメモリに記憶されたファームウェアプログラムを消去し、前記バッファメモリに記憶された新しいファームウェアプログラムを前記プログラムメモリに書き込んで前記プログラムメモリに記憶されたファームウェアプログラムを書き換える手段とを備えたことを特徴とする記録再生装置。
【請求項３】
記録媒体に対する情報の記録又は再生の制御処理を行うファームウェアプログラムと該ファームウェアプログラムを書き換える書き換えプログラムとを記憶する書き換え可能なプログラムメモリと、前記記録媒体に記録する情報又は記録媒体から再生した情報を一時的に記憶するバッファメモリと、各種の処理の実行時のスタックと変数とを記憶するワークメモリと、
前記プログラムメモリに記憶された書き換えプログラムを前記ワークメモリに移動する手段と、
前記ワークメモリに記憶された書き換えプログラムを実行して外部から新しいファームウェアプログラムを受信し、該受信した新しいファームウェアプログラムを前記バッファメモリに記憶し、前記プログラムメモリに記憶されたファームウェアプログラムを消去し、前記バッファメモリに記憶された新しいファームウェアプログラムを前記プログラムメモリに書き込んで前記プログラムメモリに記憶されたファームウェアプログラムを書き換える手段とを備えたことを特徴とする記録再生装置。
【請求項４】
請求項１乃至３のいずれか一項に記載の記録再生装置において、前記書き換えプログラムが正常か否かを判断する手段と、該手段によって異常と判断されたときに外部から代わりの書き換えプログラムを受信して実行させる手段を設けたことを特徴とする記録再生装置。
【請求項５】
記録媒体に対する情報の記録又は再生の制御処理を行うファームウェアプログラムと該ファームウェアプログラムを書き換える書き換えプログラムとを記憶する書き換え可能なプログラムメモリと、前記記録媒体に記録する情報又は記録媒体から再生した情報を一時的に記憶するバッファメモリとを備えた記録再生装置のファームウェア書き換え方法であって、
前記プログラムメモリに記憶された書き換えプログラムを前記バッファメモリに移動する工程と、前記バッファメモリに記憶された書き換えプログラムを実行して外部から新しいファームウェアプログラムを受信し、該受信した新しいファームウェアプログラムを前記バッファメモリに記憶し、前記プログラムメモリに記憶されたファームウェアプログラムを消去し、前記バッファメモリに記憶された新しいファームウェアプログラムを前記プログラムメモリに書き込んで前記プログラムメモリに記憶されたファームウェアプログラムを書き換える工程とからなることを特徴とする記録再生装置のファームウェア書き換え方法。
【請求項６】
記録媒体に対する情報の記録又は再生の制御処理を行うファームウェアプログラムを記憶する書き換え可能なプログラムメモリと、前記記録媒体に記録する情報又は記録媒体から再生した情報を一時的に記憶するバッファメモリとを備えた記録再生装置のファームウェア書き換え方法であって、
外部から前記ファームウェアプログラムを書き換える書き換えプログラムを受信し、該受信した書き換えプログラムを前記バッファメモリに記憶する工程と、前記バッファメモリに記憶された書き換えプログラムを実行して外部から新しいファームウェアプログラムを受信し、該受信した新しいファームウェアプログラムを前記バッファメモリに記憶し、前記プログラムメモリに記憶されたファームウェアプログラムを消去し、前記バッファメモリに記憶された新しいファームウェアプログラムを前記プログラムメモリに書き込んで前記プログラムメモリに記憶されたファームウェアプログラムを書き換える工程とからなることを特徴とする記録再生装置のファームウェア書き換え方法。
【請求項７】
記録媒体に対する情報の記録又は再生の制御処理を行うファームウェアプログラムと該ファームウェアプログラムを書き換える書き換えプログラムとを記憶する書き換え可能なプログラムメモリと、前記記録媒体に記録する情報又は記録媒体から再生した情報を一時的に記憶するバッファメモリと、各種の処理の実行時のスタックと変数とを記憶するワークメモリとを備えた記録再生装置のファームウェア書き換え方法であって、
前記プログラムメモリに記憶された書き換えプログラムを前記ワークメモリに移動する工程と、前記ワークメモリに記憶された書き換えプログラムを実行して外部から新しいファームウェアプログラムを受信し、該受信した新しいファームウェアプログラムを前記バッファメモリに記憶し、前記プログラムメモリに記憶されたファームウェアプログラムを消去し、前記バッファメモリに記憶された新しいファームウェアプログラムを前記プログラムメモリに書き込んで前記プログラムメモリに記憶されたファームウェアプログラムを書き換える工程とからなることを特徴とする記録再生装置のファームウェア書き換え方法。
【請求項８】
請求項５乃至７のいずれか一項に記載の記録再生装置のファームウェア書き換え方法において、前記書き換えプログラムが正常か否かを判断する工程と、該工程によって異常と判断されたときに外部から代わりの書き換えプログラムを受信して実行させる工程とを設けたことを特徴とする記録再生装置のファームウェア書き換え方法。
【請求項９】
コンピュータに、プログラムメモリに記憶された記録媒体に対する情報の記録又は再生の制御処理を行うファームウェアプログラムを書き換える書き換えプログラムを前記記録媒体に記録する情報又は記録媒体から再生した情報を一時的に記憶するバッファメモリに移動する手順と、前記バッファメモリに記憶された書き換えプログラムを実行して外部から新しいファームウェアプログラムを受信し、該受信した新しいファームウェアプログラムを前記バッファメモリに記憶し、前記プログラムメモリに記憶されたファームウェアプログラムを消去し、前記バッファメモリに記憶された新しいファームウェアプログラムを前記プログラムメモリに書き込んで前記プログラムメモリに記憶されたファームウェアプログラムを書き換える手順とを実行させるためのプログラム。
【請求項１０】
コンピュータに、外部から記録媒体に対する情報の記録又は再生の制御処理を行うファームウェアプログラムを書き換える書き換えプログラムを受信し、該受信した書き換えプログラムを前記記録媒体に記録する情報又は記録媒体から再生した情報を一時的に記憶するバッファメモリに記憶する手順と、前記バッファメモリに記憶された書き換えプログラムを実行して外部から新しいファームウェアプログラムを受信し、該受信した新しいファームウェアプログラムを前記バッファメモリに記憶し、前記プログラムメモリに記憶されたファームウェアプログラムを消去し、前記バッファメモリに記憶された新しいファームウェアプログラムを前記プログラムメモリに書き込んで前記プログラムメモリに記憶されたファームウェアプログラムを書き換える手順とを実行させるためのプログラム。
【請求項１１】
コンピュータに、プログラムメモリに記憶された記録媒体に対する情報の記録又は再生の制御処理を行うファームウェアプログラムを書き換える書き換えプログラムを各種の処理の実行時のスタックと変数とを記憶するワークメモリに移動する手順と、前記ワークメモリに記憶された書き換えプログラムを実行して外部から新しいファームウェアプログラムを受信し、該受信した新しいファームウェアプログラムを前記記録媒体に記録する情報又は記録媒体から再生した情報を一時的に記憶するバッファメモリに記憶し、前記プログラムメモリに記憶されたファームウェアプログラムを消去し、前記バッファメモリに記憶された新しいファームウェアプログラムを前記プログラムメモリに書き込んで前記プログラムメモリに記憶されたファームウェアプログラムを書き換える手順とを実行させるためのプログラム。
【請求項１２】
請求項９乃至１１のいずれか一項に記載のプログラムにおいて、前記書き換えプログラムが正常か否かを判断する手順と、該手順によって異常と判断されたときに外部から代わりの書き換えプログラムを受信して実行させる手順とを実行させるためのプログラム。
【請求項１３】
請求項５乃至１１のいずれか一項に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、記録媒体に対して情報を記録再生するディスク装置等の記録再生装置と記録再生装置のファームウェア書き換え方法とプログラムとコンピュータ読み取り可能な記録媒体とに関する。
【背景技術】
【０００２】
記録再生装置の一例であるディスク装置にはＣＰＵが内蔵されており、そのＣＰＵが実行するプログラムをファームウェア（ファームウェアプログラム）と言う。
最近のディスク装置はファームウェアの規模が大きく製品発売後も改善ファームウェアがリリースされることが珍しくない。これは不具合の修正であったり性能の向上であったり新規仕様の追加であったりする。そのため、多くのディスク装置はファームウェアを更新（アップデート）する手段を用意している。
【０００３】
通常、ディスク装置におけるファームウェアは不揮発性メモリに記憶するが、以前はその不揮発性メモリにチップの製造段階でプログラムを入れるマスクロムや、一回だけプログラムを書き込めるワンタイムロムや、紫外線消去によって複数回プログラムを書き込めるＥＰロムなどを使用していたので、ディスク装置内のファームウェアを簡単に書き換えることができなかった。
しかし、近年フラッシュロムといわれる電気的に消去可能な不揮発性メモリが提供されたことにより、プログラムメモリを記憶する用途だけではなく、デジタルカメラやＭＰ３等の音楽再生装置のデータ記憶用として市場が急拡大し、半導体プロセスの微細化も手伝ってとても安価になったため、そのフラッシュロムを使用することでファームウェアの書き換えが可能になった。
【０００４】
フラッシュロムはデータを書き込んでいる最中に他のデータを読み出せるものと読み出せないものがある。また、全体を一括消去しなければならないもの、数分割した領域毎に消去するもの、消去せず小さな単位でオーバーライトするものなどいろいろある。
例えば、ファームウェアを記憶するプログラムメモリに、データを書き込んでいる最中に他のデータを読み出せないフラッシュロムまたは全体を一括消去しなければならないフラッシュロムを用いた場合、ファームウェア書き換えを行うための書き換えプログラムをフラッシュロム以外のメモリ上で実行する必要がある。
また、書き換えプログラムをマスクロムに持つこともできるが、メモリの種類が増えコストアップになる。
【０００５】
通常、ＣＰＵはスタックや変数を格納するためのワークメモリを持っている。そのワークメモリは揮発性のメモリで電源を切ると内容が消えてしまうが、ここにプログラムデータを配置すればプログラムメモリと同様にプログラムを実行できる。ただし、ワークメモリの容量は小さいことが多い。
しかし、フラッシュロム以外のメモリ上の書き換えプログラムを、フラッシュロムを消去したりワードデータを書き込む部分だけに限定すればそのプログラムサイズを小さくでき、容量の小さなワークメモリでも実行できる。
【０００６】
そこで従来、ファームウェアの実行時にスタックや変数のメモリ領域として使用していたワークメモリ領域にプログラムメモリからファームウェアの書き換えプログラムをコピーして実行するファームウェア書き換え方法があった（例えば、特許文献１，特許文献２参照）。
【特許文献１】特開平０７−０７８０７７号公報
【特許文献２】特開２０００−２０７１３１
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述した従来のファームウェア書き換え方法では、書き換えプログラムがワークメモリへ入り切らなくなった場合に実行できなくなるという問題があった。
近年、プログラムの書き換え用途はユーザによるファームウェアのアップデートでありこれはホストコンピュータに接続された状態で行われる。
工場で専用機を使って行う場合はインタフェースを簡素化できるが、ホストコンピュータのオペレーティングシステムへの応答処理を組み込まなければならない現状では、書き換えプログラムの規模はとても大きなものになっている。
【０００８】
つまり、書き換えプログラムの規模の増大に伴ってスタックや変数に使用するメモリ量が増え、ワークメモリ上に書き換えプログラムを実行するための領域が無くなってしまったのである。
この発明は上記の点に鑑みてなされたものであり、ファームウェアを書き換える処理を行う書き換えプログラムを確実に実行できるようにすることを目的とする。
【課題を解決するための手段】
【０００９】
この発明は上記の目的を達成するため、次の（１）〜（４）の記録再生装置を提供する。
（１）記録媒体に対する情報の記録又は再生の制御処理を行うファームウェアプログラムとそのファームウェアプログラムを書き換える書き換えプログラムとを記憶する書き換え可能なプログラムメモリと、上記記録媒体に記録する情報又は記録媒体から再生した情報を一時的に記憶するバッファメモリと、上記プログラムメモリに記憶された書き換えプログラムを上記バッファメモリに移動する手段と、上記バッファメモリに記憶された書き換えプログラムを実行して外部から新しいファームウェアプログラムを受信し、その受信した新しいファームウェアプログラムを上記バッファメモリに記憶し、上記プログラムメモリに記憶されたファームウェアプログラムを消去し、上記バッファメモリに記憶された新しいファームウェアプログラムを上記プログラムメモリに書き込んで上記プログラムメモリに記憶されたファームウェアプログラムを書き換える手段を備えた記録再生装置。
【００１０】
（２）記録媒体に対する情報の記録又は再生の制御処理を行うファームウェアプログラムを記憶する書き換え可能なプログラムメモリと、上記記録媒体に記録する情報又は記録媒体から再生した情報を一時的に記憶するバッファメモリと、外部から上記ファームウェアプログラムを書き換える書き換えプログラムを受信し、その受信した書き換えプログラムを上記バッファメモリに記憶する手段と、上記バッファメモリに記憶された書き換えプログラムを実行して外部から新しいファームウェアプログラムを受信し、その受信した新しいファームウェアプログラムを上記バッファメモリに記憶し、上記プログラムメモリに記憶されたファームウェアプログラムを消去し、上記バッファメモリに記憶された新しいファームウェアプログラムを上記プログラムメモリに書き込んで上記プログラムメモリに記憶されたファームウェアプログラムを書き換える手段を備えた記録再生装置。
【００１１】
（３）記録媒体に対する情報の記録又は再生の制御処理を行うファームウェアプログラムとそのファームウェアプログラムを書き換える書き換えプログラムとを記憶する書き換え可能なプログラムメモリと、上記記録媒体に記録する情報又は記録媒体から再生した情報を一時的に記憶するバッファメモリと、各種の処理の実行時のスタックと変数とを記憶するワークメモリと、上記プログラムメモリに記憶された書き換えプログラムを上記ワークメモリに移動する手段と、上記ワークメモリに記憶された書き換えプログラムを実行して外部から新しいファームウェアプログラムを受信し、その受信した新しいファームウェアプログラムを上記バッファメモリに記憶し、上記プログラムメモリに記憶されたファームウェアプログラムを消去し、上記バッファメモリに記憶された新しいファームウェアプログラムを上記プログラムメモリに書き込んで上記プログラムメモリに記憶されたファームウェアプログラムを書き換える手段を備えた記録再生装置。
【００１２】
（４）上記（１）乃至（３）のいずれかの記録再生装置において、上記書き換えプログラムが正常か否かを判断する手段と、その手段によって異常と判断されたときに外部から代わりの書き換えプログラムを受信して実行させる手段を設けた記録再生装置。
【００１３】
また、次の（５）〜（８）の記録再生装置のファームウェア書き換え方法も提供する。
（５）記録媒体に対する情報の記録又は再生の制御処理を行うファームウェアプログラムとそのファームウェアプログラムを書き換える書き換えプログラムとを記憶する書き換え可能なプログラムメモリと、上記記録媒体に記録する情報又は記録媒体から再生した情報を一時的に記憶するバッファメモリを備えた記録再生装置のファームウェア書き換え方法であって、上記プログラムメモリに記憶された書き換えプログラムを上記バッファメモリに移動する工程と、上記バッファメモリに記憶された書き換えプログラムを実行して外部から新しいファームウェアプログラムを受信し、その受信した新しいファームウェアプログラムを上記バッファメモリに記憶し、上記プログラムメモリに記憶されたファームウェアプログラムを消去し、上記バッファメモリに記憶された新しいファームウェアプログラムを上記プログラムメモリに書き込んで上記プログラムメモリに記憶されたファームウェアプログラムを書き換える工程とからなる記録再生装置のファームウェア書き換え方法。
【００１４】
（６）記録媒体に対する情報の記録又は再生の制御処理を行うファームウェアプログラムを記憶する書き換え可能なプログラムメモリと、上記記録媒体に記録する情報又は記録媒体から再生した情報を一時的に記憶するバッファメモリを備えた記録再生装置のファームウェア書き換え方法であって、外部から上記ファームウェアプログラムを書き換える書き換えプログラムを受信し、その受信した書き換えプログラムを上記バッファメモリに記憶する工程と、上記バッファメモリに記憶された書き換えプログラムを実行して外部から新しいファームウェアプログラムを受信し、その受信した新しいファームウェアプログラムを上記バッファメモリに記憶し、上記プログラムメモリに記憶されたファームウェアプログラムを消去し、上記バッファメモリに記憶された新しいファームウェアプログラムを上記プログラムメモリに書き込んで上記プログラムメモリに記憶されたファームウェアプログラムを書き換える工程とからなる記録再生装置のファームウェア書き換え方法。
【００１５】
（７）記録媒体に対する情報の記録又は再生の制御処理を行うファームウェアプログラムとそのファームウェアプログラムを書き換える書き換えプログラムとを記憶する書き換え可能なプログラムメモリと、上記記録媒体に記録する情報又は記録媒体から再生した情報を一時的に記憶するバッファメモリと、各種の処理の実行時のスタックと変数とを記憶するワークメモリを備えた記録再生装置のファームウェア書き換え方法であって、上記プログラムメモリに記憶された書き換えプログラムを上記ワークメモリに移動する工程と、上記ワークメモリに記憶された書き換えプログラムを実行して外部から新しいファームウェアプログラムを受信し、その受信した新しいファームウェアプログラムを上記バッファメモリに記憶し、上記プログラムメモリに記憶されたファームウェアプログラムを消去し、上記バッファメモリに記憶された新しいファームウェアプログラムを上記プログラムメモリに書き込んで上記プログラムメモリに記憶されたファームウェアプログラムを書き換える工程とからなる記録再生装置のファームウェア書き換え方法。
【００１６】
（８）上記（５）乃至（７）のいずれかの記録再生装置のファームウェア書き換え方法において、上記書き換えプログラムが正常か否かを判断する工程と、その工程によって異常と判断されたときに外部から代わりの書き換えプログラムを受信して実行させる工程を設けた記録再生装置のファームウェア書き換え方法。
【００１７】
さらに、次の（９）〜（１２）のプログラムも提供する。
（９）コンピュータに、プログラムメモリに記憶された記録媒体に対する情報の記録又は再生の制御処理を行うファームウェアプログラムを書き換える書き換えプログラムを上記記録媒体に記録する情報又は記録媒体から再生した情報を一時的に記憶するバッファメモリに移動する手順と、上記バッファメモリに記憶された書き換えプログラムを実行して外部から新しいファームウェアプログラムを受信し、その受信した新しいファームウェアプログラムを上記バッファメモリに記憶し、上記プログラムメモリに記憶されたファームウェアプログラムを消去し、上記バッファメモリに記憶された新しいファームウェアプログラムを上記プログラムメモリに書き込んで上記プログラムメモリに記憶されたファームウェアプログラムを書き換える手順を実行させるためのプログラム。
【００１８】
（１０）コンピュータに、外部から記録媒体に対する情報の記録又は再生の制御処理を行うファームウェアプログラムを書き換える書き換えプログラムを受信し、その受信した書き換えプログラムを上記記録媒体に記録する情報又は記録媒体から再生した情報を一時的に記憶するバッファメモリに記憶する手順と、上記バッファメモリに記憶された書き換えプログラムを実行して外部から新しいファームウェアプログラムを受信し、その受信した新しいファームウェアプログラムを上記バッファメモリに記憶し、上記プログラムメモリに記憶されたファームウェアプログラムを消去し、上記バッファメモリに記憶された新しいファームウェアプログラムを上記プログラムメモリに書き込んで上記プログラムメモリに記憶されたファームウェアプログラムを書き換える手順を実行させるためのプログラム。
【００１９】
（１１）コンピュータに、プログラムメモリに記憶された記録媒体に対する情報の記録又は再生の制御処理を行うファームウェアプログラムを書き換える書き換えプログラムを各種の処理の実行時のスタックと変数とを記憶するワークメモリに移動する手順と、上記ワークメモリに記憶された書き換えプログラムを実行して外部から新しいファームウェアプログラムを受信し、その受信した新しいファームウェアプログラムを上記記録媒体に記録する情報又は記録媒体から再生した情報を一時的に記憶するバッファメモリに記憶し、上記プログラムメモリに記憶されたファームウェアプログラムを消去し、上記バッファメモリに記憶された新しいファームウェアプログラムを上記プログラムメモリに書き込んで上記プログラムメモリに記憶されたファームウェアプログラムを書き換える手順を実行させるためのプログラム。
【００２０】
（１２）上記（９）乃至（１１）のいずれかのプログラムにおいて、上記書き換えプログラムが正常か否かを判断する手順と、その手順によって異常と判断されたときに外部から代わりの書き換えプログラムを受信して実行させる手順を実行させるためのプログラム。
さらにまた、次の（１３）のコンピュータ読み取り可能な記録媒体も提供する。
（１３）上記（５）乃至（１１）のいずれかのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の効果】
【００２１】
この発明による記録再生装置と記録再生装置のファームウェア書き換え方法とプログラムとコンピュータ読み取り可能な記録媒体は、ファームウェアを書き換える処理を行う書き換えプログラムを確実に実行することができる。
【発明を実施するための最良の形態】
【００２２】
以下、この発明を実施するための最良の形態を図面に基づいて具体的に説明する。
図１は、この発明の一実施形態のドライブ装置の構成を示すブロック図である。
このドライブ装置は、ＤＶＤドライブ装置等の記録再生装置であり、スピンドルモータ１によって光ディスク１９を回転駆動して光ディスク１９に対する情報の記録及び再生を行う。スピンドルモータ１は、モータドライバ４とサーボ処理部８によって線速度又は角速度が一定になるように制御される。その線速度又は角速度は段階的に変更が可能である。
【００２３】
光ピックアップ２は、公知なので図示を省略した半導体レーザ，光学系，フォーカスアクチュエータ，トラックアクチュエータ，受光素子及びポジションセンサを内蔵したものであり、レーザ光を光ディスク１９に照射する。また、光ピックアップ２は同じく図示を省略したシークモータによって移動可能である。
上記フォーカスアクチュエータ，トラックアクチュエータ、シークモータは、受光素子，ポジションセンサから得られた信号に基づいてモータドライバ４とサーボ処理部８によってレーザ光のスポットが光ディスク１９上の目的の場所（書込位置又は読み出し位置）に位置するように制御される。
【００２４】
光ディスク１９に記録された情報を再生（読み出し：リード）する場合、光ピックアップ２で得られた再生信号はリードアンプ５で増幅されて２値化された後、ＣＤデコーダ６に入力されてデインターリーブとエラー訂正の処理を受ける。続いてこのデータはＣＤ−ＲＯＭデコーダ・ＣＤ−ＲＯＭエンコーダ・サブコードコントローラ１０のＣＤ−ＲＯＭデコーダに入力されてさらにデータの信頼性を高めるためにエラー訂正の処理を受ける。
その後、そのデータはバッファマネージャ１４によって一旦バッファメモリ１５に蓄えられ、セクタデータとして揃ったところでＡＴＡＰＩ又はＳＣＳＩインタフェース等のホストインタフェース（Ｉ／Ｆ）１６を通してホストへＰＣ（ホストコンピュータ）１７へ一気に送られる。
【００２５】
光ディスク１９に情報を記録（書き込み：ライト）する場合、ホストＩ／Ｆ１６を通してホストＰＣ１７から送られてきたデータはバッファマネージャ１４によって一旦バッファメモリ１５に蓄えられる。
バッファメモリ１５にある程度の量のデータが貯まったところでライトを開始するが、その前にレーザ光のスポットを書き込み開始地点に位置させなければならない。その開始地点はトラックの蛇行によって予め光ディスク１９に刻まれているウォブル信号から求められる。ウォブル信号にはＡＴＩＰと呼ばれる絶対時間情報が含まれており、ＡＴＩＰデコーダ９によってその絶対時間情報が取り出せる。
また、ＡＴＩＰデコーダが生成する同期信号はＣＤエンコーダに入力され正確な位置でのデータの書き出しを可能にしている。
【００２６】
バッファメモリ１５のデータは、ＣＤ−ＲＯＭデコーダ・ＣＤ−ＲＯＭエンコーダ・サブコードコントローラ１０のＣＤ−ＲＯＭエンコーダやＣＤエンコーダ７でエラー訂正コードの付加やインターリーブが行われてＬＤドライバ（レーザコントロール回路）３，光ピックアップ２を介して光ディスク１９に記録される。
上記一連の制御処理は、マイクロコンピュータであるシステムコントローラ（ＣＰＵ）１１が行っている。
システムコントローラ１１のバス１８には、ワークメモリ１２，プログラムメモリ１３が接続されている。
【００２７】
プログラムメモリ１３は、主にシステムコントローラ用プログラムの記憶用であり、記録媒体に対する情報の記録又は再生の制御処理を行うファームウェアプログラムである主のプログラムと、その主のプログラム（ファームウェアプログラム）を書き換える（ファームウェアをアップデートする）書き換えプログラムを記憶し、後述のこの発明に係る処理で書き込み完了フラグも記憶する。
このプログラムメモリ１３は書き換え可能な不揮発性メモリであり、例えば、５１２Ｋバイトの記憶容量のフラッシュロムである。
【００２８】
ワークメモリ１２は、各種のプログラムの実行時に各種のスタック（スタック情報）や変数を記憶し、後述のこの発明に係る処理で書き換えプログラムも記憶する。このワークメモリ１２は揮発性メモリであり、例えば、８Ｋバイトの記憶容量のスタティックラムである。
バッファメモリ１５は、光ディスク１９に記録する情報であるライトデータと、光ディスク１９から再生した情報であるリードデータを一時的に記憶し、後述のこの発明に係る処理で書き換えプログラム及び主のプログラム（ファームウェアプログラム）も記憶する。このバッファメモリ１５は揮発性メモリであり、例えば、２Ｍバイトの記憶容量のダイナミックラムである。
【００２９】
システムコントローラ１１は、バッファマネージャ１４を介してバッファメモリ１５をランダムにアクセスすることができ、ヘッダ情報やＣＤ−ＲＯＭデコーダ・ＣＤ−ＲＯＭエンコーダ・サブコードコントローラ１０のサブコードコントローラによってサブコード情報を取得したり付加したりすることができる。
そして、このシステムコントローラ１１が、この発明に係るファームウェア書き換えのプログラムを実行することにより、この発明に係る記録再生装置のファームウェア書き換え方法の処理を実行する。すなわち、システムコントローラ１１がこの発明に係る記録再生装置の各手段の機能を果たす。
この発明に係るファームウェア書き換えのプログラムは、直接プログラムメモリ１３に格納するようにしても良いし、上述した光ディスク等のコンピュータ読み取り可能な記録媒体に記録し、その記録媒体を介してプログラムメモリ１３にシステムコントローラ１１が実行可能にインストールして格納してもよい。
【００３０】
図２は、図１に示したワークメモリ１２，プログラムメモリ１３，バッファメモリ１５のメモリマップを示す図である。
システムコントローラ１１は、バッファメモリ１５を第１バッファウインドウ２０又は第２バッファウインドウ２１に投影される形でアクセス可能であり、それぞれのウィンドウサイズは６４Ｋバイトと４Ｋバイトである。
システムコントローラ１１は、レジスタ設定によって上記第１バッファウインドウ２０と第２バッファウインドウ２１をバッファメモリ１５のどこへでも配置できるため、バッファメモリ全域をランダムにアクセス可能である。
【００３１】
前記バッファメモリ内の情報をランダムにアクセスする手段と、書き換えプログラムを実行して前記プログラムメモリのファームウェアをアップデートする手段と、書き換えプログラムをプログラムメモリからバッファメモリへ移し、そのプログラムを実行することによりファームウェアのアップデートを行なうことを特徴としたディスク装置。
【００３２】
次に、この実施形態のディスク装置における第１のファームウェア書き換え処理について説明する。
図３は、図１に示したディスク装置における第１のファームウェア書き換え処理の説明図である。
まず、プログラムメモリ１３には、書き換えプログラム２２と主のプログラム２３が記憶されている。
通常、システムコントローラ１１は、プログラムメモリ１３の主のプログラム２３を実行して光ディスク１９のリードライトを行っている。
【００３３】
システムコントローラ１１は、ホストＰＣ１７からファームウェアのアップデートを行うための書き換え命令を受信すると、第１バッファウインドウ２０をバッファメモリ１５の先頭に設定してプログラムメモリ１３の書き換えプログラム２２を読み出してバッファメモリ１５へ書き込んで移す。その移される書き換えプログラムは予め移されることを考慮したアドレッシングになっていて書き換えプログラム全体であっても一部であってもよい。また、プログラムメモリ１３上で実行できるプログラムのアドレッシングを変換しながら移す方法も考えられる。
【００３４】
システムコントローラ１１は、書き換えプログラム２２をバッファメモリ１５に移動したら、その書き換えプログラム２２を実行するが、移動した書き換えプログラムが書き換えプログラムの一部であるなら、その一部の書き換えプログラムを実行してから残りの書き換えプログラムを移動しても良い。
次に、システムコントローラ１１は、ホストＰＣ１７から新しい主のプログラム２４を受信し、バッファメモリ１５上の書き換えプログラム２２に重ならないようにその新しい主のプログラム２４を書き込んで記憶する。
【００３５】
その後、システムコントローラ１１は、プログラムメモリ１３の主のプログラム２３が記憶された領域を消去し（主のプログラム２３を消去し）、第２バッファウインドウ２１を通してバッファメモリ１５から新しい主のプログラム２４を読み出し、バッファメモリ１５に記憶された新しい主のプログラム２４をプログラムメモリ１３に書き込んでファームウェアを書き換える。
第２バッファウインドウ２１のサイズは４Ｋであるが、そのウィンドウをずらせばバッファメモリ１５の全ての新しい主のプログラム２４を読出し可能である。
そして、システムコントローラ１１は、プログラムメモリ１３の所定の領域に新しい主のプログラムを書き込んでファームウェアを書き換えたことを示す書き込み完了フラグを書き込む。
【００３６】
図４は、図１に示したディスク装置のシステムコントローラ１１による第１のファームウェア書き換え処理のフローチャート図である。
システムコントローラ１１は、ステップ（図中「Ｓ」で示す）１でホストＰＣからファームウェアの書き換え命令を受信したか否かを判断し、受信しなければこの処理を終了し、受信したらステップ２でプログラムメモリに記憶された書き換えプログラムを読み出し、バッファメモリに書き込んで移動する。
ステップ３でバッファメモリ上で書き換えプログラムを実行し、ステップ４でホストＰＣから新しい主のプログラムを受信し、その新しい主のプログラムをバッファメモリに書き込んで記憶する。ステップ５でプログラムメモリの主のプログラム領域を消去してプログラムメモリに記憶された主のプログラムを消去し、ステップ６でバッファメモリに記憶された新しい主のプログラムを読み出してプログラムメモリに書き込み、ステップ７でプログラムメモリに書き込み完了フラグを書き込んでこの処理を終了する。
【００３７】
上述の処理では、バッファメモリがプログラムメモリ（フラッシュメモリ）に対して十分大きいので主のプログラムを一度に受信するが、バッファメモリがプログラムメモリより小さい場合は、新しい主のプログラム受信と書き込み動作を繰り返し行うことも可能である。
このようにして、ディスク装置のバッファメモリにＤＲＡＭと呼ばれる安価なメモリを使用すれば、ワークメモリよりかなり大容量であるから、書き換えプログラムをバッファメモリ上で実行することによって高機能で大規模な書き換えプログラムを確実に実行することができる。
また、ワークメモリの内容を壊すことがないのでリセットすること無く制御を主のプログラムへ戻すことができる。
【００３８】
次に、ドライブ装置を出荷した時点でプログラム容量がフラッシュロムの容量に迫っていると、変更したファームウェアがフラッシュロムの容量をオーバーしてしまってファームウェアをリリースできない場合がある。
そこで、書き換えプログラムを予めプログラムメモリに持たずにホストＰＣから転送するようにすれば、その分の容量を主のプログラムに割り当てられる。
次に、この実施形態のディスク装置における第２のファームウェア書き換え処理について説明する。
図５は、図１に示したディスク装置における第２のファームウェア書き換え処理の説明図である。
まず、プログラムメモリ１３には主のプログラム２３が記憶されている。
通常、システムコントローラ１１は、プログラムメモリ１３の主のプログラム２３を実行して光ディスク１９のリードライトを行っている。
【００３９】
システムコントローラ１１は、ホストＰＣ１７からファームウェアのアップデートを行うための書き換え命令を受信すると、第１バッファウインドウ２０をバッファメモリ１５の先頭に設定し、ホストＰＣ１７から書き換えプログラム２２を受信し、バッファメモリ１５に書き込んで記憶する。
システムコントローラ１１は、書き換えプログラム２２をバッファメモリ１５に記憶したら、その書き換えプログラム２２を実行する。
次に、システムコントローラ１１は、ホストＰＣ１７から新しい主のプログラム２４を受信し、バッファメモリ１５上の書き換えプログラム２２に重ならないようにその新しい主のプログラム２４を書き込んで記憶する。
【００４０】
その後、システムコントローラ１１は、プログラムメモリ１３の主のプログラム２３が記憶された領域を消去し（主のプログラム２３を消去し）、第２バッファウインドウ２１を通してバッファメモリ１５から新しい主のプログラム２４を読み出し、バッファメモリ１５に記憶された新しい主のプログラム２４をプログラムメモリ１３に書き込んでファームウェアを書き換える。
第２バッファウインドウ２１のサイズは４Ｋであるが、そのウィンドウをずらせばバッファメモリ１５の全ての新しい主のプログラム２４を読出し可能である。
そして、システムコントローラ１１は、プログラムメモリ１３の所定の領域に新しい主のプログラムを書き込んでファームウェアを書き換えたことを示す書き込み完了フラグを書き込む。
【００４１】
図６は、図１に示したディスク装置のシステムコントローラ１１による第２のファームウェア書き換え処理のフローチャート図である。
システムコントローラ１１は、ステップ（図中「Ｓ」で示す）１１でホストＰＣからファームウェアの書き換え命令を受信したか否かを判断し、受信しなければこの処理を終了し、受信したらステップ１２でホストＰＣから書き換えプログラムを受信し、バッファメモリに書き込んで記憶する。
ステップ１３でバッファメモリ上で書き換えプログラムを実行し、ステップ１４でホストＰＣから新しい主のプログラムを受信し、その新しい主のプログラムをバッファメモリに書き込んで記憶する。ステップ１５でプログラムメモリの主のプログラム領域を消去してプログラムメモリに記憶された主のプログラムを消去し、ステップ１６でバッファメモリに記憶された新しい主のプログラムを読み出してプログラムメモリに書き込み、ステップ１７でプログラムメモリに書き込み完了フラグを書き込んでこの処理を終了する。
【００４２】
上述の処理で、バッファメモリがプログラムメモリ（フラッシュメモリ）に対して十分大きいので主のプログラムを一度に受信するが、バッファメモリがプログラムメモリより小さい場合は、新しい主のプログラム受信と書き込み動作を繰り返し行うことも可能である。
このようにして、新しい高機能で大規模な書き換えプログラムを簡単に確実に実行することができる。
【００４３】
次に、ワークメモリが書き換えプログラムを実行するのに不足する場合もあるが、場合によっては十分な容量を持つ場合がある。その場合は書き換えプログラムをワークメモリへ移して主のプログラムを実行している間も常駐させると、主のプログラムを実行中でも不揮発の情報をフラッシュメモリへ書くことがあり、そのためのルーチンを書き換えプログラムと共用することができる。
【００４４】
次に、この実施形態のディスク装置における第３のファームウェア書き換え処理について説明する。
図７は、図１に示したディスク装置における第３のファームウェア書き換え処理の説明図である。
まず、プログラムメモリ１３には、書き換えプログラム２２と主のプログラム２３が記憶されている。また、システムコントローラ１１の処理によってワークメモリ１２には変数，スタック２６が格納される。
【００４５】
システムコントローラ１１は、このディスク装置のドライブシステムがリセットされると、一通りの初期設定を実行し、その初期設定を終えるとプログラムメモリ１３に記憶された書き換えプログラム２２を読み出し、ワークメモリ１２の主のプログラム２３で使用されない領域へ書き込んで移す。その移される書き換えプログラム２２は予め移されることを考慮したアドレッシングになっていて書き換えプログラム全体であっても一部であってもよい。その後、システムコントローラ１１は、プログラムメモリ１３の主のプログラム２３を実行して光ディスク１９のリードライトを行う。
こうして、主のプログラム２３の実行中も書き換えプログラム２２を常駐させることができる。
【００４６】
システムコントローラ１１は、ホストＰＣ１７からファームウェアのアップデートを行うための書き換え命令を受信すると、ワークメモリ１２上の書き換えプログラム２２を実行し、ホストＰＣ１７から新しい主のプログラム２４を受信し、バッファメモリ１５にその新しい主のプログラム２４を書き込んで記憶する。
その後、システムコントローラ１１は、プログラムメモリ１３の主のプログラム２３が記憶された領域を消去し（主のプログラム２３を消去し）、第２バッファウインドウ２１を通してバッファメモリ１５から新しい主のプログラム２４を読み出し、バッファメモリ１５に記憶された新しい主のプログラム２４をプログラムメモリ１３に書き込んでファームウェアを書き換える。
第２バッファウインドウ２１のサイズは４Ｋであるが、そのウィンドウをずらせばバッファメモリ１５の全ての新しい主のプログラム２４を読出し可能である。
そして、システムコントローラ１１は、プログラムメモリ１３の所定の領域に新しい主のプログラムを書き込んでファームウェアを書き換えたことを示す書き込み完了フラグを書き込む。
【００４７】
図８は、図１に示したディスク装置のシステムコントローラ１１によるシステムリセット時の処理のフローチャート図である。
システムコントローラ１１は、ステップ（図中「Ｓ」で示す）２１でシステムをリセットすると、ステップ２２でプログラムメモリに記憶された書き換えプログラムを読み出してワークメモリに書き込んで移動し、ステップ２３でプログラムメモリに記憶された主のプログラムを実行すると、システムリセット時の処理を終了する。
【００４８】
図９は、図１に示したディスク装置のシステムコントローラ１１による第３のファームウェア書き換え処理のフローチャート図である。
システムコントローラ１１は、ステップ（図中「Ｓ」で示す）３１でホストＰＣからファームウェアの書き換え命令を受信したか否かを判断し、受信しなければこの処理を終了し、受信したらステップ３２でワークメモリ上で書き換えプログラムを実行し、ステップ３３でホストＰＣから新しい主のプログラムを受信し、その新しい主のプログラムをバッファメモリに書き込んで記憶する。ステップ３４でプログラムメモリの主のプログラム領域を消去してプログラムメモリに記憶された主のプログラムを消去し、ステップ３５でバッファメモリに記憶された新しい主のプログラムを読み出してプログラムメモリに書き込み、ステップ３６でプログラムメモリに書き込み完了フラグを書き込んでこの処理を終了する。
【００４９】
上述の処理で、バッファメモリがプログラムメモリ（フラッシュメモリ）に対して十分大きいので主のプログラムを一度に受信するが、バッファメモリがプログラムメモリより小さい場合は、新しい主のプログラム受信と書き込み動作を繰り返し行うことも可能である。
このようにして、ワークメモリを有効に活用して書き換えプログラムを簡単に確実に実行することができる。
【００５０】
次に、ファームウェアのアップデート中に電源が落ちるとそのプログラムを失い、もう二度と起動できなくなる危険性がある。
そこで、書き換えプログラムと主のプログラムを独立に実行できるように構成し、ファームウェアのアップデートは主のプログラムのみを書き換えることにより、事故で主のプログラムを失っても再度主のプログラムを書き込めるようにするとよい。
また、時には書き換えプログラムをアップデートする場合もある。この時事故が発生して書き換えプログラムを失っても復帰させるようにするとよい。
【００５１】
上記第２のファームウェア書き換え処理の際、ホストＰＣ１７から受信した書き換えプログラムが正常か否かを判断し、正常なら上述の処理を実行するが、異常ならホストＰＣ１７から正常な書き換えプログラムを受信して実行する。
また、上記第１又は第３のファームウェア書き換え処理の場合は、次の図１０のフローチャートに示す処理を実行する。
【００５２】
図１０は、図１に示したディスク装置のシステムコントローラ１１による書き換えプログラムと主のプログラムを書き換える処理のフローチャート図である。
システムコントローラ１１は、ステップ（図中「Ｓ」で示す）４１でホストＰＣからファームウェアのアップデートを行うための書き換え命令を受信したか否かを判断し、受信しなければこの処理を終了し、受信したらステップ４２で書き換えプログラムが正常か否かを判断する。この判断は書き込み完了フラグや書き換えプログラムのチェックサムを計算することによって確認できる。
【００５３】
ステップ４２の判断で書き換えプログラムが正常でなく異常だった場合、ステップ５２で第１バッファウインドウをバッファメモリの先頭に設定して書き換えプログラムをホストＰＣから受信し、その書き換えプログラムをバッファメモリ又はワークメモリに記憶し、ステップ５３でその書き換えプログラムを実行する。
一方、ステップ４２の判断で書き換えプログラムが正常だった場合、ステップ４３で第１バッファウインドウをバッファメモリの先頭に設定して書き換えプログラムをバッファメモリへ移す処理（あるいは、書き換えプログラムをワークメモリへ移す処理）を実行し、ステップ４４でその書き換えプログラムを実行する。
【００５４】
次に、ステップ４５でホストＰＣから新しい主のプログラムと新しい書き換えプログラムとを受信し、バッファメモリ上の書き換えプログラムに重ならないようにバッファメモリに新しい主のプログラムと新しい書き換えプログラムを書き込んで記憶する。
ステップ４６でプログラムメモリの主のプログラム領域を消去してプログラムメモリに記憶された主のプログラムを消去し、ステップ４７でバッファメモリに記憶された新しい主のプログラムを読み出してプログラムメモリに書き込み、主のプログラムを書き換え、ステップ４８でプログラムメモリに書き込み完了フラグを書き込む。
【００５５】
さらに、ステップ４９でプログラムメモリの書き換えプログラム領域を消去してプログラムメモリに記憶された書き換えプログラムを消去し、ステップ５０でバッファメモリに記憶された新しい書き換えプログラムを読み出してプログラムメモリに書き込み、書き換えプログラムを書き換え、ステップ５１でプログラムメモリに書き込み完了フラグを書き込む。
第２バッファウインドウ２１を通してバッファメモリ１５から新しい主のプログラム２４を読み出す。第２バッファウインドウ２１のサイズは４Ｋであるが、そのウィンドウをずらせばバッファメモリ１５の全ての新しい主のプログラム２４を読出し可能である。
【００５６】
上述の処理で、バッファメモリがプログラムメモリ（フラッシュメモリ）に対して十分大きいので主のプログラムを一度に受信するが、バッファメモリがプログラムメモリより小さい場合は、新しい主のプログラム受信と書き込み動作を繰り返し行うことも可能である。
このようにして、ファームウェアアップデートの安全性を向上させることができる。
【産業上の利用可能性】
【００５７】
この発明による記録再生装置と記録再生装置のファームウェア書き換え方法とプログラムとコンピュータ読み取り可能な記録媒体は、ＣＤ−ＲＯＭディスク装置，ＣＤ−Ｒディスク装置，ＣＤ−ＲＷディスク装置，ＤＶＤ−ＲＯＭディスク装置，ＤＶＤ−Ｒディスク装置，ＤＶＤ＋Ｒディスク装置，ＤＶＤ−ＲＷディスク装置，ＤＶＤ＋ＲＷディスク装置等の光ディスクドライブ装置、光磁気ディスク装置、ＭＤ装置においても適用することができる。
【図面の簡単な説明】
【００５８】
【図１】この発明の一実施形態のドライブ装置の構成を示すブロック図である。
【図２】図１に示すワークメモリ１２，プログラムメモリ１３，バッファメモリ１５のメモリマップを示す図である。
【図３】図１に示すディスク装置における第１のファームウェア書き換え処理の説明図である。
【図４】図１に示すディスク装置のシステムコントローラ１１による第１のファームウェア書き換え処理のフローチャート図である。
【図５】図１に示すディスク装置における第２のファームウェア書き換え処理の説明図である。
【００５９】
【図６】図６は、図１に示したディスク装置のシステムコントローラ１１による第２のファームウェア書き換え処理のフローチャート図である。
【図７】図１に示すディスク装置における第３のファームウェア書き換え処理の説明図である。
【図８】図１に示すディスク装置のシステムコントローラ１１によるシステムリセット時の処理のフローチャート図である。
【図９】図１に示すディスク装置のシステムコントローラ１１による第３のファームウェア書き換え処理のフローチャート図である。
【図１０】図１に示すディスク装置のシステムコントローラ１１による書き換えプログラムと主のプログラムを書き換える処理のフローチャート図である。
【符号の説明】
【００６０】
１：スピンドルモータ    ２：光ピックアップ    ３：ＬＤドライバ    ４：モータドライバ    ５：リードアンプ    ６：ＣＤデコーダ    ７：ＣＤエンコーダ    ８：サーボ処理部    ９：ＡＴＩＰデコーダ    １０：ＣＤ−ＲＯＭデコーダ・ＣＤ−ＲＯＭエンコーダ・サブコードコントローラ    １１：システムコントローラ    １２：ワークメモリ    １３：プログラムメモリ    １４：バッファマネージャ    １５：バッファメモリ    １６：ホストＩ／Ｆ    １７：ホストＰＣ    １８：バス    １９：光ディスク    ２０：第１バッファウインドウ    ２１：第２バッファウインドウ    ２２：書き換えプログラム    ２３：主のプログラム    ２４：新しい主のプログラム    ２５：書き込み完了フラグ    ２６：変数，スタック
【図１】
2005085039.tif 000003
【図２】
2005085039.tif 000004
【図３】
2005085039.tif 000005
【図４】
2005085039.tif 000006
【図５】
2005085039.tif 000007
【図６】
2005085039.tif 000008
【図７】
2005085039.tif 000009
【図８】
2005085039.tif 000010
【図９】
2005085039.tif 000011
【図１０】
2005085039.tif 000012