(57)【要約】【課題】書換え不可能メモリ内の制御プログラム上に不具合が発生し修正が必要になった場合でも、不具合を回避することで余分なコストの発生や日程の遅れを軽減することができる不具合制御プログラム回避方法を提供する。【解決手段】ＣＰＵ内のマスクＲＯＭに格納される制御プログラムに不具合が発生した場合、フラッシュメモリの一部を使用して、制御プログラムの不具合を修正したモジュールを任意のアドレスへ格納することで、不具合部分のみを回避して代わりに修正モジュールを実行する。【選択図】図５
2005202525.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性で書換え不可能な読出し専用の第１メモリのアドレス領域に、予めローダ用の第１プログラムを書込み、前記第１メモリのアドレス領域とは異なるようにマッピングされ不揮発性で書換え可能な第２メモリのアドレス領域に、外部デバイスから書換え可能なファームウエア用の第２プログラムと、前記第２プログラムとともに前記外部デバイスから書換え可能で前記第２プログラムのアドレス領域とは異なるようにマッピング可能な第３プログラムと、前記第２プログラムおよび前記第３プログラムとは異なる固定されたアドレス領域にマッピングされ、前記第１プログラムの正誤を示す正誤テーブルからなる第４プログラムとを書込む不具合制御プログラム回避方法であって、前記第１プログラムを実行するに際し、前記第４プログラムの正誤テーブルに基づいて前記第１プログラムの正誤を確認し、前記第１プログラムの全部もしくは一部に誤りがあると判定した場合にのみ、前記第１プログラムの誤りを修正して前記外部デバイスから前記第３プログラムとして書込み、前記第１プログラムの誤り部分の代わりに前記第３プログラムを実行して、前記第１プログラムの不具合を回避することを特徴とする不具合制御プログラム回避方法。
【請求項２】
前記第１プログラムを複数のモジュールで構成し、全てのモジュール毎に論理識別コードを配置することを特徴とする請求項１記載の不具合制御プログラム回避方法。
【請求項３】
前記第３プログラムとして、前記第１プログラムにおける不具合の発生したモジュールに対して、その不具合部分を修正した制御プログラムを書込むとともに、前記第１プログラムの不具合発生モジュールに含まれる論理識別コードを配置することを特徴とする請求項２記載の不具合制御プログラム回避方法。
【請求項４】
前記第４プログラムとして、前記第１プログラムに不具合が発生したかどうかを判別するための正誤テーブルに、前記第１プログラムのモジュール毎に配置した論理識別コードと、前記第３プログラムをマッピングした開始アドレスとを格納することを特徴とする請求項３記載の不具合制御プログラム回避方法。
【請求項５】
前記第１プログラムを実行するに際し、前記第４プログラムとして正誤テーブルが書込まれているか否かを判定して前記第１プログラムに不具合が発生したと判断した時には、論理識別コードにより前記第１プログラムの不具合が発生したモジュールとの照合を行うことを特徴とする請求項４記載の不具合制御プログラム回避方法。
【請求項６】
前記第１プログラムを実行するに際し、前記第１プログラムの不具合モジュールに対応させて前記第４プログラムの正誤テーブルに格納した前記第３プログラムの開始アドレスを読み取り、前記第３プログラムの開始アドレスへ状態遷移し、前記不具合モジュールのみ前記第３プログラムを用いて実行回避することを特徴とする請求項５記載の不具合制御プログラム回避方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えばＣＰＵ内のマスクＲＯＭのような書換え不可能メモリ上にマッピングされた制御プログラムを、その不具合部分を回避して正常に実行するための不具合制御プログラム回避方法に関するものである。
【背景技術】
【０００２】
従来から、各種の制御装置において、それらを駆動するための制御プログラムを格納するメモリの一例として、マスクＲＯＭやフラッシュメモリと呼ばれるものがある。マスクＲＯＭとはＣＰＵに内蔵されているメモリで、制御プログラムを１回だけ書込み可能で、その後は書換え不可能なメモリであり、通常メーカ側へ制御プログラムの書込みを依頼する。一方、フラッシュメモリはメーカが推奨する回数まで書換え可能なメモリであり、フラッシュメモリへ装置の駆動動作を制御するための制御プログラム（ファームウエア）を格納し、この制御プログラムに対して、更新や不具合等が起こった場合、書換えが可能なようになっている。
【０００３】
様々な制御装置（例えば、特許文献１を参照）において、これらのメモリを両方使用する構成が取られることがある。この場合、通常、マスクＲＯＭ側にローダ部が格納されており、その中にはフラッシュメモリの書換えモジュールも含まれている。これらのメモリを含む制御装置において、最初に起動されるのはマスクＲＯＭであり、このマスクＲＯＭに格納される制御プログラムに問題なければ、次にフラッシュメモリ側へ状態遷移し、フラッシュメモリ内の制御プログラムを実行する。
【０００４】
このような制御プログラムが組込まれた従来の光ディスクドライブ制御システムについて、以下に説明する。
図１は従来から用いられている一般的な光ディスクドライブ制御システムの構成を示すブロック図であり、図２は図１における各メモリのメモリマッピングの説明図である。
【０００５】
図１において、ＣＰＵ１によりフラッシュメモリ３に格納されている制御プログラムが実行されているときに、ホストコンピュータ６からダウンロード要求がくると、まずホストコンピュータ６からダウンロード開始命令を示すコマンドがインターフェイス５を通じてＣＰＵ１へ発行される。このコマンドに従ってＣＰＵ１が処理実行する際には、ＣＰＵ１の内部にあるマスクＲＯＭ２が動作する。
【０００６】
一方、マスクＲＯＭ２にはフラッシュメモリ３の制御プログラムを書換えることが可能な処理を実行するための命令プログラムを含んでおり、フラッシュメモリ３に対して、その制御プログラムの書換えを行いたい場合や制御プログラムに不具合が発生した場合に、マスクＲＯＭ２内の命令プログラムに従ってＣＰＵ１が書換え処理を実行することにより、フラッシュメモリ３の制御プログラムを書換えることができる。
【０００７】
また、上記のような光ディスクドライブ制御システムにおけるメモリ空間を表すメモリマップは、図２に示すように、ある固定エリアにマッピングされたマスクＲＯＭ２と、マスクＲＯＭ２とは異なるエリアにマッピングされたフラッシュメモリ３とで構成されている。マスクＲＯＭ２に格納される第１プログラムは、複数のモジュール（例えば、モジュールＡ、Ｂ、・・・、Ｚ）で構成されており書換えは不可能である。一方、フラッシュメモリ３に格納される第２プログラムも、複数のモジュール（例えば、モジュール１、２、・・・、ｎ）で構成されているが、書換えは可能である。
【０００８】
以上のような従来の光ディスクドライブ制御システムの機能処理について、図面を用いて説明する。
図３は従来の光ディスクドライブ制御システムにおける各メモリ内の制御プログラムによる制御の流れを示すフローチャートである。図３に示すように、最初は、マスクＲＯＭ部に格納されたローダ部を立上げて、例えば第１プログラムをスタートさせ、その中のモジュール（Ａ）の機能処理を実行し（Ｓ３０）、続けてモジュール（Ｂ）の機能処理を実行し（Ｓ３１）、その後モジュール（Ｚ）までの機能処理を実行し（Ｓ３２）て、第１プログラムを終了する。次に、フラッシュメモリ部に格納されたファームウエア部を立上げて、例えば第２プログラムをスタートさせ、その中のモジュール（１）の機能処理を実行し（Ｓ３３）、続けてモジュール（２）の機能処理を実行し（Ｓ３４）、その後モジュール（ｎ）までの機能処理を実行し（Ｓ３５）て、第２プログラムを終了する。
【特許文献１】特開平９−１６０７６９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら上記のような従来の光ディスクドライブ制御システムでは、図３に示すように、最初は、マスクＲＯＭ部に格納されたローダ部から立上げるが、このローダ部の制御プログラムの一部にプログラムバグ等の不具合が発生している場合には、その不具合が発生した制御プログラム部分でループ動作に入ってしまい、フラッシュメモリ部に格納されたファームウエア部の処理が実行できなくなったり、その不具合が発生した制御プログラムによって不正な動作を実行してしまうという問題点を有していた。
【００１０】
これに対し、マスクＲＯＭが書換え不可能なため、ローダ部の制御プログラムは不具合を持ったままとなり、それらの不具合を修正して回避するためには、新たにマスクＲＯＭを作成する必要があり、マスクＲＯＭへ格納する前の制御プログラムの動作確認や不具合検証には多くの時間を費やす必要がある。また確認したにもかかわらず一部の確認漏れやハードウエアの変更などの要因により、マスクＲＯＭへ格納した後で不具合が発見された場合には、マスクＲＯＭをさらに作成し直す必要があり、不具合のないマスクＲＯＭの完成日程の遅れや再発注による無駄なコストがかかるという問題点を有していた。
【００１１】
本発明は、上記従来の問題点を解決するもので、書換え不可能メモリ内の制御プログラム上に不具合が発生し修正が必要になった場合でも、その不具合を回避することで余分なコストの発生や日程の遅れを軽減することができるとともに、常に正常な動作を確保することができる不具合制御プログラム回避方法を提供する。
【課題を解決するための手段】
【００１２】
上記の課題を解決するために、本発明の請求項１に記載の不具合制御プログラム回避方法は、不揮発性で書換え不可能な読出し専用の第１メモリのアドレス領域に、予めローダ用の第１プログラムを書込み、前記第１メモリのアドレス領域とは異なるようにマッピングされ不揮発性で書換え可能な第２メモリのアドレス領域に、外部デバイスから書換え可能なファームウエア用の第２プログラムと、前記第２プログラムとともに前記外部デバイスから書換え可能で前記第２プログラムのアドレス領域とは異なるようにマッピング可能な第３プログラムと、前記第２プログラムおよび前記第３プログラムとは異なる固定されたアドレス領域にマッピングされ、前記第１プログラムの正誤を示す正誤テーブルからなる第４プログラムとを書込む不具合制御プログラム回避方法であって、前記第１プログラムを実行するに際し、前記第４プログラムの正誤テーブルに基づいて前記第１プログラムの正誤を確認し、前記第１プログラムの全部もしくは一部に誤りがあると判定した場合にのみ、前記第１プログラムの誤りを修正して前記外部デバイスから前記第３プログラムとして書込み、前記第１プログラムの誤り部分の代わりに前記第３プログラムを実行して、前記第１プログラムの不具合を回避する方法としたことを特徴とする。
【００１３】
以上により、第４プログラムの正誤テーブルを書換えることで書換え不可能な第１プログラムに修正が必要かどうかを自動判断し、正誤テーブルの書換え方として、第１プログラムの全部に誤りがあるかどうか、もしくは一部に誤りがあるかどうか、どのレベルの誤りかを任意に設定でき、修正が必要な場合のみ修正したプログラムを第３プログラムとして書換え可能メモリに書込むことにより、メモリ消費量を極力減らすことができる。
【００１４】
また、本発明の請求項２に記載の不具合制御プログラム回避方法は、請求項１記載の不具合制御プログラム回避方法であって、前記第１プログラムを複数のモジュールで構成し、全てのモジュール毎に論理識別コードを配置する方法としたことを特徴とする。
【００１５】
以上により、論理識別コードを用いて全てのモジュールを個別に管理し、修正が必要となった場合に、どのモジュールで修正が必要かを判断するためのコードとして使用して、修正の必要なモジュールのみを判別することができる。
【００１６】
また、本発明の請求項３に記載の不具合制御プログラム回避方法は、請求項２記載の不具合制御プログラム回避方法であって、前記第３プログラムとして、前記第１プログラムにおける不具合の発生したモジュールに対して、その不具合部分を修正した制御プログラムを書込むとともに、前記第１プログラムの不具合発生モジュールに含まれる論理識別コードを配置する方法としたことを特徴とする。
【００１７】
以上により、修正が必要なモジュールに対して、修正したモジュールを、書換え可能メモリ内の第３プログラムとして配置することができる。
また、本発明の請求項４に記載の不具合制御プログラム回避方法は、請求項３記載の不具合制御プログラム回避方法であって、前記第４プログラムとして、前記第１プログラムに不具合が発生したかどうかを判別するための正誤テーブルに、前記第１プログラムのモジュール毎に配置した論理識別コードと、前記第３プログラムをマッピングした開始アドレスとを格納する方法としたことを特徴とする。
【００１８】
以上により、第１プログラムに含まれるモジュールのうちどのモジュールに不具合が起こったかを論理識別コードによって判断し、その論理識別コードに登録された不具合モジュールに対して修正した代替モジュールとなる第３プログラムが、どのアドレスに格納されているかを判断することができ、第２メモリ内の任意のアドレスに第３プログラムとして格納することができる。
【００１９】
また、本発明の請求項５に記載の不具合制御プログラム回避方法は、請求項４記載の不具合制御プログラム回避方法であって、前記第１プログラムを実行するに際し、前記第４プログラムとして正誤テーブルが書込まれているか否かを判定して前記第１プログラムに不具合が発生したと判断した時には、論理識別コードにより前記第１プログラムの不具合が発生したモジュールとの照合を行う方法としたことを特徴とする。
【００２０】
以上により、正誤テーブルにより第１プログラムに不具合が有るかどうかを判断し、論理識別コードを読み出すことで第１プログラムのどのモジュールで不具合が起こったかを判断することができる。
【００２１】
また、本発明の請求項６に記載の不具合制御プログラム回避方法は、請求項５記載の不具合制御プログラム回避方法であって、前記第１プログラムを実行するに際し、前記第１プログラムの不具合モジュールに対応させて前記第４プログラムの正誤テーブルに格納した前記第３プログラムの開始アドレスを読み取り、前記第３プログラムの開始アドレスへ状態遷移し、前記不具合モジュールのみ前記第３プログラムを用いて実行回避する方法としたことを特徴とする。
【００２２】
以上により、第３プログラムがどのアドレスに格納されているかを判断し、第１プログラム内の不具合モジュールの代わりに第３プログラムを実行することができる。
【発明の効果】
【００２３】
以上のように本発明によれば、ＣＰＵ内の書換え不可能メモリに格納される制御プログラムに不具合が発生した場合には、書換え可能メモリの一部を使用して、制御プログラムの不具合を修正したモジュールを任意のアドレスへ格納することで、不具合部分のみを回避して代わりに修正モジュールを実行することができる。
【００２４】
そのため、書換え不可能メモリ内の制御プログラム上で不具合が発生し修正が必要になった場合でも、その不具合を修正することなく確実に回避することができ、動作確認および不具合検証やメモリの再発注などによる余分なコストの発生や日程の遅れを軽減することができるとともに、制御装置を駆動するためのファームウエア等の制御プログラムを含めて常に正常な動作を確保することができる。
【発明を実施するための最良の形態】
【００２５】
以下、本発明の実施の形態を示す不具合制御プログラム回避方法について、図面を参照しながら具体的に説明する。
なおここでは、本実施の形態の不具合制御プログラム回避方法により制御プログラムを処理実行する制御システムの一構成例に、図１に示した光ディスクドライブ制御システムを適用するものとして、本制御システムの構成についての説明は省略する。
【００２６】
ここでは、制御システムとして図１に示した光ディスクドライブ制御システムにおける本実施の形態の不具合制御プログラム回避方法を説明する。
図４は本実施の形態の不具合制御プログラム回避方法における動作説明図であり、図４（ａ）はマスクＲＯＭとフラッシュメモリで構成されるメモリマッピングの説明図を示し、図４（ｂ）はフラッシュメモリ内の第４プログラムのデータ構成を示すものである。
【００２７】
本実施の形態の不具合制御プログラム回避方法におけるメモリ空間は、図４（ａ）に示すように、固定エリアにマッピングされたマスクＲＯＭエリア１０１と、マスクＲＯＭエリア１０１とは異なるエリアにマッピングされたフラッシュメモリエリア１０２とで構成されている。マスクＲＯＭエリア１０１に格納される第１プログラムは、複数のモジュール（モジュールＡ、Ｂ、・・・、Ｚ）で構成されており、書換えは不可能である。一方、フラッシュメモリエリア１０２内の任意エリア１０２ａに格納される第２プログラムも複数のモジュール（モジュール１、２、・・・、ｎ）で構成されているが、書換えは可能である。また、フラッシュメモリエリア１０２内にはマッピング固定エリア１０３が確保してあり、そのエリア１０３には正誤テーブルを含む第４プログラムが格納されている。また、フラッシュメモリエリア１０２では、マッピング固定エリア１０３とは異なる任意エリア１０４に第３プログラムを書込むことが可能であり、この第３プログラムには、マスクＲＯＭエリア１０１に格納される第１プログラムの代わりに実行される制御プログラムからなるモジュールが格納されている。
【００２８】
以上のようにマッピングされたメモリ空間を有する制御システムについて、その動作を以下に説明する。
まず、マスクＲＯＭエリア１０１に格納されている第１プログラムにおいて不具合等の問題がない場合、マッピング固定エリア１０３にある第４プログラムの正誤テーブルには正誤データ「０」が書込まれる。その後、第１プログラムによる機能処理を実行する場合は、第４プログラムの正誤テーブルにある正誤データ「０」に基づいて第１プログラムによる通常の機能処理を実行する。ここで、第１プログラムに従って通常ダウンロードを実行するため、ホストコンピュータ６からダウンロード命令コマンドをインターフェイス５を介してＣＰＵ１へ発行すると、フラッシュメモリ３から制御プログラムである第２プログラムに構成されたファイル（以下、ファームウエア）が、ＥＦＭエンコードデコード回路４を介してバッファＲＡＭ７へ送られる。ファームウエアの全てがフラッシュメモリ３からバッファＲＡＭ７へ格納されると、ＣＰＵ１はマスクＲＯＭ２に格納されているフラッシュメモリ３への書込み処理を実行し、ファームウエアを指定されたフラッシュメモリエリア１０２に書込む。
【００２９】
一方、第１プログラムにおいて不具合やハードウエアの変更等の要因により書換える必要性が発生した場合、第４プログラムの正誤テーブルを書換えるため、ホストコンピュータ６から正誤テーブル書換え開始のコマンド命令を、インターフェイス５を介してＣＰＵ１へ発行する。このコマンドは正誤テーブルを含む第４プログラムだけを書換えるための命令であり、フラッシュメモリエリア１０２の一部を書換える処理を動作させるものである。ここで正誤テーブルの正誤データを「１」に書換えることで、第１プログラムの一部に不具合があることを認識することが可能となる。
【００３０】
マスクＲＯＭエリア１０１に格納される第１プログラムは、通常、複数のモジュール（モジュールＡ、Ｂ、・・・、Ｚ）単位で構成されているが、このモジュール毎に論理識別コードを割り当てる。例えば、モジュールＡには論理識別コード「１」、モジュールＢには論理識別コード「２」という具合に、シーケンシャルに論理識別コードを割り当てる。ここで第１プログラムの一部（以下、ここでは仮にモジュールＡ、論理識別コード「１」とする）に不具合が発生した場合、第３プログラムとして、第１プログラムのモジュールＡを修正して作成したモジュールＡ’を格納する。このモジュールＡ’にはモジュールＡと同じ識別用の論理識別コード「１」を割り当てることとする。
【００３１】
このようにすることで、第３プログラムのモジュールＡ’はモジュールＡの修正プログラムであるという判断が可能となる。ここで作成した第３プログラムのモジュールＡ’は、通常のダウンロードで書換えられる第２プログラムだけのファームウエアに第４プログラムを挟んで追加されるようにマッピングされることにより、フラッシュメモリエリア１０２には第２プログラムに第３プログラムを付加した状態でダウンロードされ、一方でフラッシュメモリエリア１０２内のプログラムを総称してファームウエアとしているため、形態的にはフラッシュメモリエリア１０２内のプログラムとして第２プログラムと第３プログラムとで構成するファームウエアが作成される。
【００３２】
次に、ダウンロード処理が行われる場合、第１プログラムは、第４プログラムの正誤テーブルを確認して、正誤データが「１」であれば、第２プログラムと第３プログラムをフラッシュメモリエリア１０２へ書込み、正誤テーブルが「０」の場合は第２プログラムのみをフラッシュメモリエリア１０２へ書込む。また、第３プログラムをフラッシュメモリエリア１０２の任意エリア１０４へ書込み、その開始アドレスを図４（ｂ）に示す第４プログラム内の正誤テーブルに書込むことで、第３プログラムのマッピングアドレスが分かるため、これにより第１プログラムは、第４プログラムに格納されている第３プログラムのマッピングアドレスを参照して、第３プログラムがどのエリアにマッピングされているかを判断することが可能となる。
【００３３】
さらに、第３プログラムは固定エリアに配置する必要がないため、第１プログラムに不具合が発見されるまでは、メモリエリア１０４を通常のファームウエア用として自由に使用することが可能である。つまり不具合が発生した場合のためにわざわざエリアを確保する必要がない。
【００３４】
以上のように、フラッシュメモリエリア１０２にマッピング固定エリア１０３を確保することで、書換え不可能プログラムに対して任意に不具合を回避することが可能となる。この固定エリアは正誤テーブルと第３プログラムの開始アドレスを格納できるだけのメモリ容量を確保すればよいため、メモリ容量を極力減らすことが可能となる。
【００３５】
次に、上記で説明した不具合制御プログラム回避方法の具体例について、図５のフローチャートを用いて説明する。
図５は本実施の形態の不具合制御プログラム回避方法を実現するためのフローチャートである。まず制御装置が電源投入されると、マスクＲＯＭエリア１０１側の制御プログラムが起動し、Ｓ１のステップにてフラッシュメモリエリア１０２内の第４プログラムの正誤テーブルから第１プログラムのモジュールＡについての正誤データを読込むと、Ｓ２のステップにて正誤データについて条件判断を行う。この場合、予め正誤テーブルの正誤データには、第１プログラム内に不具合があれば、その不具合モジュールに対応させて「１」が格納され、問題無ければ「０」が格納されている。ここで正誤データとして「０」が書込まれていればモジュールＡに問題がないため、Ｓ７のステップでモジュールＡの機能処理を実行し、その後、Ｓ８、Ｓ９のステップにより各モジュールＢ〜Ｚの機能処理を実行し、マスクＲＯＭエリア側からの制御プログラムを終了して、フラッシュメモリエリア１０２側のファームウエアによる機能処理の実行へと状態遷移する。このフラッシュメモリエリア１０２側の機能処理は、従来技術で図３を用いて説明した機能処理と同一であるので、ここでの説明は省略する。
【００３６】
一方、Ｓ２のステップにて正誤データが「１」と判定した場合、マスクＲＯＭエリア１０１の第１プログラムのモジュールＡに不具合があるため、第３プログラムがフラッシュメモリエリア１０２に書込まれているかどうかを確認する。ここで通常は、第３プログラムがフラッシュメモリエリア１０２に入っている場合、第４プログラムの正誤テーブルに第３プログラムの開始アドレスが格納されているため、第４プログラムの正誤テーブルからモジュールＡに対応する修正モジュール開始アドレスを読出し、その開始アドレスを元に第３プログラムが書かれているかどうかも確認することで二重の確認を行う。
【００３７】
この場合は、まずＳ３のステップにて、第４プログラムの正誤テーブルから読出したモジュールＡに対応する修正モジュール開始アドレスに基づいて、第３プログラム内のモジュールＡに対応するアドレスからデータを読込み、Ｓ４のステップにて第３プログラム内に修正モジュールの有無を判断し、もし第３プログラムに修正モジュールが無ければ、Ｓ１０のステップにてホストコンピュータからダウンロードコマンドが発行されるのを待つ。すなわちマスクＲＯＭエリア１０１で不具合が発生し、そのモジュールに対応して第４プログラムの正誤テーブル内の正誤データが「１」に書換えられているにもかかわらず、その修正モジュールが第３プログラムに存在しなければ、ダウンロード要求が来るまで正常な動作を行わないようにする。
【００３８】
ここでＳ１１のステップでダウンロードコマンドがホストコンピュータから発行されると、マスクＲＯＭ２内の制御プログラムに従って、Ｓ１２のステップによりファームウエアである第２プログラムの書込みを行うとともに、Ｓ１３のステップにより不具合のあったモジュールＡを修正したモジュールＡ’と論理識別コードをあわせた第３プログラムをフラッシュメモリエリア１０２に書込む。さらにＳ１４のステップにより先ほどフラッシュメモリエリア１０２に書込んだ第３プログラムのモジュールＡ’の開始アドレスを、正誤テーブルが含まれている第４プログラムに書込む。これにより不具合を修正したモジュールがフラッシュメモリエリア１０２に書込まれたため、マスクＲＯＭエリア１０１内の制御プログラムの先頭Ｓ１のステップからプログラムを実行する。
【００３９】
一方、Ｓ４のステップにおいて第３プログラムに修正モジュールが有ると判定した場合、Ｓ５のステップにより第３プログラムに含まれる論理識別コードを確認すれば、この論理識別コードは不具合が発生したモジュールに対して割り当てた論理識別コードと同値であるので、各モジュールを実行することになるが、モジュール毎に論理識別コードを配置しており、モジュール毎の先頭で論理識別コードの照合を行う処理を持っている。
【００４０】
図５のフローチャートでは、モジュールＡに不具合があったと仮定しているため、第３プログラムにはモジュールＡ’が書込まれており、Ｓ６のステップによりモジュールＡを呼び出す処理で、モジュールＡを実行する代わりに第３プログラム内のモジュールＡ’を実行する。これにより不具合の発生したモジュールＡを回避して修正したモジュールＡ’が実行可能となり、モジュールＡ’を含んだ正常な動作をさせることができる。
【産業上の利用可能性】
【００４１】
本発明の不具合制御プログラム回避方法は、例えばＣＰＵ内のマスクＲＯＭのような書換え不可能メモリ上にマッピングされた制御プログラムを、その不具合部分を回避して正常に実行するものであり、ＣＰＵ内にローダ部のプログラムが格納されたマスクＲＯＭを有し、ＣＰＵ外にファームウエア部のプログラムが格納されたフラッシュメモリを有する光ディスクドライブ制御システム等に適用できる。
【図面の簡単な説明】
【００４２】
【図１】従来から用いられている一般的な光ディスクドライブ制御システムの構成を示すブロック図
【図２】同光ディスクドライブ制御システムにおける各メモリ内のマッピングの説明図
【図３】同光ディスクドライブ制御システムにおける各メモリ内の制御プログラムによる制御の流れを示すフローチャート
【図４】本発明の実施の形態の不具合制御プログラム回避方法における動作説明図
【図５】同実施の形態の不具合制御プログラム回避方法における動作を示すフローチャート
【符号の説明】
【００４３】
１    ＣＰＵ
２    マスクＲＯＭ
３    フラッシュメモリ
４    ＥＦＭエンコードデコード回路
５    インターフェイス
６    ホストコンピュータ
７    バッファＲＡＭ
Ｄ１    光ディスクドライブ
１０１    マスクＲＯＭ
１０２    フラッシュメモリ
１０３    マッピング固定エリア
【図１】
2005202525.tif 000003
【図２】
2005202525.tif 000004
【図３】
2005202525.tif 000005
【図４】
2005202525.tif 000006
【図５】
2005202525.tif 000007