(57)【要約】【課題】磁気ディスク装置のＦＷ（ファームウェア）の書き換えを安全且つ確実に行う。【解決手段】磁気ディスク装置２０は、書換用のＦＷコードを、ホストシステム１７をブート可能なＦＷ書換プログラムとともに磁気ディスク９上に記憶させる。また、磁気ディスク装置２０は、ホストシステム１７への次回の電源投入時に、磁気ディスク装置２０のドライブ情報の取得要求をホストシステム１７側から受信した場合、これを返信する。この後、磁気ディスク装置２０は、ＦＷ書換プログラムを取得したホストシステム１７側から特定のライトコマンドを受信した場合、磁気ディスク９上に記憶させておいた書換用のＦＷコードの内容にフラッシュＲＯＭ１５内のＦＷコード２３を更新する。これにより、磁気ディスク装置２０が立ち上がる過程でなく、磁気ディスク装置本体がシステム側に認識された後、ＦＷを書き換えることができる。【選択図】図１
2006127140.tif 000002
【特許請求の範囲】
【請求項１】
ディスク媒体へのアクセスが可能なディスクドライブ装置とホストシステムとの間でのコマンドのやり取りを通じて、該ディスクドライブ装置が備える不揮発性メモリ内のファームウェアを書き換えるファームウェアの書換方法であって、
書換用のファームウェアを、前記ホストシステムのブート及び前記不揮発性メモリ内のファームウェアの書き換えを実行可能な書換実行プログラムとともに前記ディスク媒体上に記憶させる書換準備ステップと、
前記書換準備ステップの実行後の前記ホストシステムへの電源投入時に前記ディスクドライブ装置の仕様を含むドライブ情報の取得要求を該ホストシステム側から受信した場合、該ディスクドライブ装置が該ドライブ情報を返信するドライブ情報返信ステップと、
前記ドライブ情報返信ステップの実行後、前記書換実行プログラムを取得した前記ホストシステム側から特定のコマンドが受信された場合、前記ディスクドライブ装置が、前記ディスク媒体上に記憶させておいた前記書換用のファームウェアの内容に前記不揮発性メモリ内のファームウェアを更新するステップと、
を有することを特徴とするファームウェアの書換方法。
【請求項２】
前記ディスク媒体上に設けられたブートプログラム格納領域内のブートプログラムの返信要求を、前記ホストシステム側から前記ディスクドライブ装置が受信した場合、該ブートプログラム格納領域とは異なるプログラム置換領域に格納された前記書換実行プログラムを前記返信要求の応答データとして返信するステップをさらに有することを特徴とする請求項１記載のファームウェアの書換方法。
【請求項３】
前記ディスク媒体上の全記憶領域のうち、所定の記憶単位で区画されたブロックの非存在領域に該当するアドレスへのリードコマンド又はライトコマンドが、前記特定のコマンドとして前記ホストシステム側から受信された場合、前記ディスクドライブ装置が、前記書換用のファームウェアと前記書換実行プログラムとの前記ディスク媒体への書込処理、及び／又は前記不揮発性メモリ内のファームウェアの更新処理を実行することを特徴とする請求項１又は２記載のファームウェアの書換方法。
【請求項４】
前記書換準備ステップは、前記不揮発性メモリに格納されたファームウェアの書き換えを実行させるための書換処理モードで前記ホストシステムを起動させる書換要求フラグを前記不揮発性メモリにセットするステップをさらに有し、
前記ホストシステムの起動時に、前記不揮発性メモリ内に記憶された前記書換要求フラグが検出された場合、該ホストシステムの起動過程で該書換要求フラグの解除を行うことを特徴とする請求項１ないし３のいずれか１項に記載のファームウェアの書換方法。
【請求項５】
前記書換処理モードで前記ホストシステムが起動した場合、前記ファームウェアの書換処理に関連する前記特定のコマンドに対して非該当のライトコマンドを無効にすることを特徴とする請求項４記載のファームウェアの書換方法。
【請求項６】
ファームウェアが格納された不揮発性メモリを備えホストシステムとの間でのコマンドのやり取りを行う、ディスク媒体へのアクセスが可能なディスクドライブ装置であって、
書換用のファームウェアを、前記ホストシステムのブート及び前記不揮発性メモリ内のファームウェアの書き換えを実行可能な書換実行プログラムとともに前記ディスク媒体上に記憶させる書換準備手段と、
前記書換準備手段による記憶処理を経て前記ホストシステムへの電源投入時に、前記ディスクドライブ装置の仕様を含むドライブ情報の取得要求を該ホストシステム側から受信した場合、該ドライブ情報を返信するドライブ情報返信手段と、
前記ドライブ情報返信手段による返信処理を経て前記書換実行プログラムを取得した前記ホストシステム側から特定のコマンドが受信された場合、前記ディスク媒体上に記憶させておいた前記書換用のファームウェアの内容に前記不揮発性メモリ内のファームウェアを更新する手段と、
を具備することを特徴とするディスクドライブ装置。
【請求項７】
前記ディスク媒体上に設けられたブートプログラム格納領域と、
前記ブートプログラム格納領域とは異なる領域として前記ディスク媒体上に設けられ、前記書換実行プログラムが格納されたプログラム置換領域と、
前記ブートプログラム格納領域内の前記ブートプログラムの返信要求を、前記ホストシステム側から受信した場合、前記プログラム置換領域に格納された前記書換実行プログラムを前記返信要求の応答データとして返信するブートプログラム置換手段と、
をさらに具備することを特徴とすることを特徴とする請求項６記載のディスクドライブ装置。
【請求項８】
前記ディスク媒体上の全記憶領域のうち、所定の記憶単位で区画されたブロックの非存在領域に該当するアドレスへのリードコマンド又はライトコマンドが、前記特定のコマンドとして前記ホストシステム側から受信された場合、前記書換用のファームウェアと前記書換実行プログラムとの前記ディスク媒体への書込処理、及び／又は前記不揮発性メモリ内のファームウェアの更新処理を実行する手段、
をさらに具備することを特徴とする請求項６又は７記載のディスクドライブ装置。
【請求項９】
前記書換準備手段は、前記不揮発性メモリに格納されたファームウェアの書き換えを実行させるための書換処理モードで前記ホストシステムを起動させる書換要求フラグを前記不揮発性メモリにセットする手段を備え、
前記ホストシステムの起動時に、前記不揮発性メモリ内に記憶された前記書換要求フラグが検出された場合、該ホストシステムの起動過程で該書換要求フラグの解除を行う手段をさらに具備することを特徴とする請求項６ないし８のいずれか１項に記載のディスクドライブ装置。
【請求項１０】
前記書換処理モードで前記ホストシステムが起動した場合、前記ファームウェアの書換処理に関連する前記特定のコマンドに対して非該当のライトコマンドを無効にする手段をさらに具備することを特徴とする請求項９記載のディスクドライブ装置。
【請求項１１】
ファームウェアが格納された不揮発性メモリを備えディスク媒体へのアクセスが可能なディスクドライブ装置と、該ディスクドライブ装置との間でコマンドのやり取りを行うホストシステムとを有する情報処理システムであって、
書換用のファームウェアを、前記ホストシステムのブート及び前記不揮発性メモリ内のファームウェアの書き換えを実行可能な書換実行プログラムとともに前記ディスク媒体上に記憶させる書換準備手段と、
前記書換準備手段による記憶処理を経て前記ホストシステムへの電源投入時に、前記ディスクドライブ装置の仕様を含むドライブ情報の取得要求を該ホストシステム側から該ディスクドライブ装置が受信した場合、該ドライブ情報を返信するドライブ情報返信手段と、
前記ドライブ情報返信手段による返信処理を経て前記書換実行プログラムを取得した前記ホストシステム側から特定のコマンドが前記ディスクドライブ装置により受信された場合、前記ディスク媒体上に記憶させておいた前記書換用のファームウェアの内容に前記不揮発性メモリ内のファームウェアを更新する手段と、
を具備することを特徴とする情報処理システム。
【請求項１２】
前記ディスク媒体上に設けられたブートプログラム格納領域と、
前記ブートプログラム格納領域とは異なる領域として前記ディスク媒体上に設けられ、前記書換実行プログラムが格納されたプログラム置換領域と、
前記ブートプログラム格納領域内の前記ブートプログラムの返信要求を、前記ホストシステム側から前記ディスクドライブ装置が受信した場合、前記プログラム置換領域に格納された前記書換実行プログラムを前記返信要求の応答データとして返信するブートプログラム置換手段と、
をさらに具備することを特徴とする請求項１１記載の情報処理システム。
【請求項１３】
前記ディスク媒体上の全記憶領域のうち、所定の記憶単位で区画されたブロックの非存在領域に該当するアドレスへのリードコマンド又はライトコマンドが、前記特定のコマンドとして前記ホストシステム側から前記ディスクドライブ装置により受信された場合、前記書換用のファームウェアと前記書換実行プログラムとの前記ディスク媒体への書込処理、及び／又は前記不揮発性メモリ内のファームウェアの更新処理を実行する手段、
をさらに具備することを特徴とする請求項１１又は１２記載の情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば磁気ディスク装置などのディスクドライブ装置に搭載されるファームウェアの書換方法、ディスクドライブ装置、及びこのディスクドライブ装置を備えて構成される情報処理システムに関する。
【背景技術】
【０００２】
一般に、磁気ディスク装置は、その装置内部の制御がファームウェア（以下「ＦＷ」と称する）によって行われており、仕様変更や性能向上のためにＦＷに改良を加えることがある。このＦＷがフラッシュＲＯＭなどの書き換え可能な記憶素子に格納される構成の磁気ディスク装置であれば、ＦＷの書き換えのためのコマンドを設け、それを実行することでＦＷを新しいものに書き換えることが可能である。したがって、磁気ディスク装置を内蔵した情報処理装置などでは、ＦＷの書き換えのためのコマンドを実行することで、磁気ディスク装置を取り外すことなくＦＷの書き換えを行うことができる。
【０００３】
ここで、ホストシステムの稼動中、すなわちＯＳ（Operating System）の制御下では、一般に、ＦＷの書換コマンドなどの特殊コマンドの実行が難しい、コマンド実行のタイムアウトが短くこの時間内にＦＷの書き換えを完了させることが難しい、さらには複数のタスクが並行して実行される環境下ではＦＷの書換処理を行うことが難しい、などといった様々な制約がある。
【０００４】
そこで、従来では、これらの制約を回避するためにＦＷの書換プログラムを記憶させたフロッピー（登録商標）ディスクを用いてホストシステムを起動させることで、ホストシステムが持つＯＳを起動させることなくＦＷの書き換えのためのコマンドを実行させる方法などが適用されていた。しかしながら、最近では、フロッピー（登録商標）ディスクを搭載していない情報処理装置などが増えてきていることもあり、ＯＳを起動させずにＦＷの書き換えのためのコマンドを実行させることが困難なケースが多くなっている。
【０００５】
したがって、ＯＳの制御下で、ＦＷの書き換えのためのオペレーションを行えるようにすることへの要請が高まり、そこで、ホストシステムの通常処理中に（ＯＳの制御下で）、更新すべきＦＷデータを受け取って磁気ディスクに書き込んでおき、次回の電源投入時に磁気ディスク装置の起動シーケンスの一環としてＦＷの書換処理を行う方法が提案されている（例えば、特許文献１参照）。
【特許文献１】特開２００４−６２６６３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記文献の手法では、システム起動時のシーケンスにおいて、磁気ディスク装置本体が立ち上がる過程、つまり、磁気ディスク装置がシステム側に認識される前のビジー状態でＦＷの書き換えを実行するようにしているので、システムに電源が投入されてから磁気ディスク装置がレディ状態（ビジー状態が解除されてスタンバイ状態）になるまでに多くの時間を要することになる。このため、特に、ＢＩＯＳによる上記磁気ディスク装置認識時などに、タイムアウトエラーが起こりシステムが正常に起動しない可能性などが懸念される。
【０００７】
そこで本発明は、上記課題を解決するためになされたもので、ＢＩＯＳ変更などの特殊な操作を必要とすることなく、ファームウェアの書き換えを安全且つ確実に行うことができるファームウェアの書換方法、ディスクドライブ装置、及び情報処理システムの提供を目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、本発明に係るファームウェアの書換方法は、ディスク媒体へのアクセスが可能なディスクドライブ装置とホストシステムとの間でのコマンドのやり取りを通じて、該ディスクドライブ装置が備える不揮発性メモリ内のファームウェアを書き換えるファームウェアの書換方法であって、書換用のファームウェアを、前記ホストシステムのブート及び前記不揮発性メモリ内のファームウェアの書き換えを実行可能な書換実行プログラムとともに前記ディスク媒体上に記憶させる書換準備ステップと、前記書換準備ステップの実行後の前記ホストシステムへの電源投入時に前記ディスクドライブ装置の仕様を含むドライブ情報の取得要求を該ホストシステム側から受信した場合、該ディスクドライブ装置が該ドライブ情報を返信するドライブ情報返信ステップと、前記ドライブ情報返信ステップの実行後、前記書換実行プログラムを取得した前記ホストシステム側から特定のコマンドが受信された場合、前記ディスクドライブ装置が、前記ディスク媒体上に記憶させておいた前記書換用のファームウェアの内容に前記不揮発性メモリ内のファームウェアを更新するステップと、を有することを特徴とする。
【０００９】
すなわち、この発明によれば、システム起動時のシーケンスにおいて、例えば、ディスクドライブ装置本体が立ち上がる過程で、ファームウェアの書き換えが実行されるのではなく、ディスクドライブ装置がシステム側に認識された後（ＢＩＯＳから制御を移行された後）、書換実行プログラムが単独でファームウェアの書換処理を実行するので、ＢＩＯＳ変更などの特殊な操作を伴わずに、ファームウェアの書換処理を安全且つ確実に行うことができる。
【００１０】
また、本発明のファームウェアの書換方法は、前記ディスク媒体上に設けられたブートプログラム格納領域内のブートプログラムの返信要求を、前記ホストシステム側から前記ディスクドライブ装置が受信した場合、該ブートプログラム格納領域とは異なるプログラム置換領域に格納された前記書換実行プログラムを前記返信要求の応答データとして返信するステップをさらに有することを特徴とする。
【００１１】
さらに、本発明のファームウェアの書換方法は、前記ディスク媒体上の全記憶領域のうち、所定の記憶単位で区画されたブロックの非存在領域に該当するアドレスへのリードコマンド又はライトコマンドが、前記特定のコマンドとして前記ホストシステム側から受信された場合、前記ディスクドライブ装置が、前記書換用のファームウェアと前記書換実行プログラムとの前記ディスク媒体への書込処理、及び／又は前記不揮発性メモリ内のファームウェアの更新処理を実行することを特徴とする。
【００１２】
つまり、これらの発明では、ディスク媒体の物理容量の異なる複数の種類のディスクドライブ装置に対してのファームウェアの書換処理を考慮した場合、例えばプログラム置換領域などのアドレスが変わってしまうような状況が発生するが、このような状況にも容易に対応することが可能となる。また、これらの発明では、ディスク媒体上におけるブロックの非存在領域に属するアドレスへの特定のコマンド（リード／ライトコマンド）で、ファームウェアの書換処理のための一連のコマンドを実行させることができるので、ホストシステム側からのコマンドの発行を容易に行うことができる。
【００１３】
また、本発明のファームウェアの書換方法は、前記書換準備ステップが、前記不揮発性メモリに格納されたファームウェアの書き換えを実行させるための書換処理モードで前記ホストシステムを起動させる書換要求フラグを前記不揮発性メモリにセットするステップをさらに有し、前記ホストシステムの起動時に、前記不揮発性メモリ内に記憶された前記書換要求フラグが検出された場合、該ホストシステムの起動過程で該書換要求フラグの解除を行うことを特徴とする。
【００１４】
この発明は、書換処理モードでのシステム起動後にファームウェアの書き換えが行われなかった場合でも、その次のシステムの起動においてファームウェアの書換処理を伴わない通常のモードでシステムを確実に起動させるためのものである。これにより、ホストシステムが全く起動しなくなってしまうという危険性を低減することができる。
【００１５】
さらに、本発明のファームウェアの書換方法は、前記書換処理モードで前記ホストシステムが起動した場合、前記ファームウェアの書換処理に関連する前記特定のコマンドに対して非該当のライトコマンドを無効にすることを特徴とする。
この発明によれば、ファームウェアの書換処理と関係のない誤った書込処理の発生を防止することができる。
【００１６】
また、本発明のディスクドライブ装置は、ファームウェアが格納された不揮発性メモリを備えホストシステムとの間でのコマンドのやり取りを行う、ディスク媒体へのアクセスが可能なディスクドライブ装置であって、書換用のファームウェアを、前記ホストシステムのブート及び前記不揮発性メモリ内のファームウェアの書き換えを実行可能な書換実行プログラムとともに前記ディスク媒体上に記憶させる書換準備手段と、前記書換準備手段による記憶処理を経て前記ホストシステムへの電源投入時に、前記ディスクドライブ装置の仕様を含むドライブ情報の取得要求を該ホストシステム側から受信した場合、該ドライブ情報を返信するドライブ情報返信手段と、前記ドライブ情報返信手段による返信処理を経て前記書換実行プログラムを取得した前記ホストシステム側から特定のコマンドが受信された場合、前記ディスク媒体上に記憶させておいた前記書換用のファームウェアの内容に前記不揮発性メモリ内のファームウェアを更新する手段と、を具備することを特徴とする。
【００１７】
さらに、本発明のディスクドライブ装置は、前記ディスク媒体上に設けられたブートプログラム格納領域と、前記ブートプログラム格納領域とは異なる領域として前記ディスク媒体上に設けられ、前記書換実行プログラムが格納されたプログラム置換領域と、前記ブートプログラム格納領域内の前記ブートプログラムの返信要求を、前記ホストシステム側から受信した場合、前記プログラム置換領域に格納された前記書換実行プログラムを前記返信要求の応答データとして返信するブートプログラム置換手段と、をさらに具備することを特徴とすることを特徴とする。
【００１８】
また、本発明のディスクドライブ装置は、前記ディスク媒体上の全記憶領域のうち、所定の記憶単位で区画されたブロックの非存在領域に該当するアドレスへのリードコマンド又はライトコマンドが、前記特定のコマンドとして前記ホストシステム側から受信された場合、前記書換用のファームウェアと前記書換実行プログラムとの前記ディスク媒体への書込処理、及び／又は前記不揮発性メモリ内のファームウェアの更新処理を実行する手段、をさらに具備することを特徴とする。
【００１９】
さらに、本発明のディスクドライブ装置は、前記書換準備手段が、前記不揮発性メモリに格納されたファームウェアの書き換えを実行させるための書換処理モードで前記ホストシステムを起動させる書換要求フラグを前記不揮発性メモリにセットする手段を備え、前記ホストシステムの起動時に、前記不揮発性メモリ内に記憶された前記書換要求フラグが検出された場合、該ホストシステムの起動過程で該書換要求フラグの解除を行う手段をさらに具備することを特徴とする。
また、本発明のディスクドライブ装置は、前記書換処理モードで前記ホストシステムが起動した場合、前記ファームウェアの書換処理に関連する前記特定のコマンドに対して非該当のライトコマンドを無効にする手段をさらに具備することを特徴とする。
【００２０】
さらに、本発明の情報処理システムは、ファームウェアが格納された不揮発性メモリを備えディスク媒体へのアクセスが可能なディスクドライブ装置と、該ディスクドライブ装置との間でコマンドのやり取りを行うホストシステムとを有する情報処理システムであって、書換用のファームウェアを、前記ホストシステムのブート及び前記不揮発性メモリ内のファームウェアの書き換えを実行可能な書換実行プログラムとともに前記ディスク媒体上に記憶させる書換準備手段と、前記書換準備手段による記憶処理を経て前記ホストシステムへの電源投入時に、前記ディスクドライブ装置の仕様を含むドライブ情報の取得要求を該ホストシステム側から該ディスクドライブ装置が受信した場合、該ドライブ情報を返信するドライブ情報返信手段と、前記ドライブ情報返信手段による返信処理を経て前記書換実行プログラムを取得した前記ホストシステム側から特定のコマンドが前記ディスクドライブ装置により受信された場合、前記ディスク媒体上に記憶させておいた前記書換用のファームウェアの内容に前記不揮発性メモリ内のファームウェアを更新する手段と、を具備することを特徴とする。
【００２１】
また、本発明の情報処理システムは、前記ディスク媒体上に設けられたブートプログラム格納領域と、前記ブートプログラム格納領域とは異なる領域として前記ディスク媒体上に設けられ、前記書換実行プログラムが格納されたプログラム置換領域と、前記ブートプログラム格納領域内の前記ブートプログラムの返信要求を、前記ホストシステム側から前記ディスクドライブ装置が受信した場合、前記プログラム置換領域に格納された前記書換実行プログラムを前記返信要求の応答データとして返信するブートプログラム置換手段と、をさらに具備することを特徴とする。
さらに、本発明の情報処理システムは、前記ディスク媒体上の全記憶領域のうち、所定の記憶単位で区画されたブロックの非存在領域に該当するアドレスへのリードコマンド又はライトコマンドが、前記特定のコマンドとして前記ホストシステム側から前記ディスクドライブ装置により受信された場合、前記書換用のファームウェアと前記書換実行プログラムとの前記ディスク媒体への書込処理、及び／又は前記不揮発性メモリ内のファームウェアの更新処理を実行する手段、をさらに具備することを特徴とする。
【発明の効果】
【００２２】
このように本発明によれば、ＢＩＯＳ変更などの特殊な操作を必要とすることなく、ファームウェアの書き換えを安全且つ確実に行うことが可能なファームウェアの書換方法、ディスクドライブ装置、及び情報処理システムを提供することができる。
【発明を実施するための最良の形態】
【００２３】
以下、本発明を実施するための最良の形態を図面に基づき説明する。
図１は、本発明の一実施形態に係る磁気ディスク装置を含む情報処理システムを機能的に示すブロック図である。
【００２４】
同図に示すように、本実施形態の情報処理システム１８は、ＣＰＵ、メインメモリ、及びＢＩＯＳなどを有するホストシステム１７と、このホストシステム１７にホストインタフェース１９を通じて接続された磁気ディスク装置（ＨＤＤ）２０とを、少なくとも備える例えばＰＣ（Personal Computer）などよって実現されている。
ディスクドライブ装置としての磁気ディスク装置２０は、図１に示すように、ＣＰＵ１、磁気ディスク９、磁気ヘッド１３、ボイスコイルモータ（以下「ＶＣＭ」と称する）７、スピンドルモータ（以下「ＳＰＭ」と称する）８、モータドライバ６、フラッシュＲＯＭ１５、ヘッドＩＣ１６、及びリード・ライトＩＣ５などを主に備える。
【００２５】
ＣＰＵ１は、この磁気ディスク装置全体の制御及びモータドライバ６の制御を時分割で行う。不揮発性メモリであるフラッシュＲＯＭ１５には、当該磁気ディスク装置本体を制御するためのＦＷ（ファームウェア）が記憶されている。ＣＰＵ１が接続されるＣＰＵバス１２には、電源投入時にＣＰＵ１がファームウェアをフラッシュＲＯＭ１５からＣＰＵ−ＲＡＭ１０へコピーする（イニシャルロード）プログラムが記憶されているマスクＲＯＭ１１、装置本体の制御を行うためのプログラム及び変数等を格納するための上記ＣＰＵ−ＲＡＭ１０、ハードディスクコントローラ（以下「ＨＤＣ」と称する）３、並びに制御に必要な諸信号の生成を行うゲートアレイ２が接続されている。
【００２６】
ＨＤＣ３及びゲートアレイ２の制御用レジスタは、それぞれＣＰＵ１のメモリ空間の一部に割り当てられており、ＣＰＵ１がこの領域に対して読み出し及び書き込みを行うことで、ＨＤＣ３及びゲートアレイ２の制御を行う。
また、リード・ライトＩＣ５の内部構成は、主として磁気ヘッド１３の位置決め処理に必要な信号処理を行うサーボブロックと、データの読み出し・書き込みのための信号処理を行うリード・ライトブロックとに大別される。
【００２７】
モータドライバ６は、ＣＰＵ１からの制御により磁気ディスク９を定常回転させるためのＳＰＭ８の駆動電流、及び磁気ヘッド１３を目的の位置に移動させるためのＶＣＭ７の駆動電流を、当該ＳＰＭ８並びにＶＣＭ７にそれぞれ供給する。
【００２８】
ディスク媒体としての磁気ディスク９には、磁気ヘッド１３の位置決めのためのサーボデータ信号が記録されている領域（サーボ領域）と、ホストシステム１７から転送されるデータを記録するための領域（データ領域）とが、交互にかつ等間隔に配置されている。さらに、磁気ディスク９上には、その回転軸を中心とした同心円状にデータトラック（以下、単に「トラック」と称する）が配置されている。トラック上に磁気ヘッド１３を追従させるための位置決めは、上記のサーボデータ信号から得られる情報を基に行われる。
【００２９】
具体的には、磁気ヘッド１３の位置決め実施時に磁気ヘッド１３から読み出され且つヘッドＩＣ１６で増幅されたアナログ信号は、リード・ライトＩＣ５に送られ、このリード・ライトＩＣ５のサーボブロックによりサーボデータとして抽出される。サーボデータは、さらにゲートアレイ２によって処理され、ＣＰＵ１は、このデータを基にモータドライバ６を制御して、磁気ヘッド１３の位置決めのための電流をＶＣＭ７に供給する。
【００３０】
ＨＤＣ３は、ＣＰＵバス１２以外にゲートアレイ２、バッファＲＡＭ４、リード・ライトＩＣ５に接続されている。また、ＨＤＣ３は、機能ごとにホストシステム１７とのインタフェース制御を行うホストブロックと、バッファＲＡＭの制御を行うバッファブロックと、リード・ライトＩＣ５及びゲートアレイ２と接続され、読み出し・書き込み処理を行うリード・ライトブロックなどとに分かれる。
【００３１】
データの読み出し時において、磁気ディスク９に記憶されているデータは、磁気ヘッド１３によって読み出されて、さらにヘッドＩＣ１６によって増幅され、この増幅されたアナログ信号は、リード・ライトＩＣ５によって復号化される。ＨＤＣ３は、これをゲートアレイ２からの制御用の各信号にしたがって処理することで、ホストシステム１７に転送すべきデータを生成する。生成されたこのデータは、一旦バッファＲＡＭ４に格納されてからホストシステム１７に転送される。
【００３２】
データの書き込み時において、ホストシステム１７からＨＤＣ３に転送されたデータは、一旦バッファＲＡＭ４に格納された後、ゲートアレイ２からの制御用の各信号にしたがってＨＤＣ３からリード・ライトＩＣ５へ送られる。リード・ライトＩＣ５によって符号化された書き込みデータは、ヘッドＩＣ１６を経由して磁気ヘッド１３によって磁気ディスク９に書き込まれる。
【００３３】
次に、本実施形態の情報処理システム１８が有する磁気ディスク装置２０のＦＷの書換機能を実現するための構成を図２ないし図４に基づきその説明を行う。
ここで、図２は、フラッシュＲＯＭ１５の内部構成を示すメモリマップ、図３は、このメモリマップを構成するイニシャル・プログラム・ローダ（以下「ＩＰＬ」と称する）置換要求フラグの内容を示す図である。また、図４は、磁気ディスク装置２０が搭載する磁気ディスク９の記憶領域を示す図である。
【００３４】
まず、フラッシュＲＯＭ１５内のメモリマップについて説明する。
すなわち、このメモリマップは、図２に示すように、最適化パラメータ・設定データ２１、書換要求フラグであるＩＰＬ置換要求フラグ２２、及びＦＷコード２３とで構成される。ＦＷコード２３は、磁気ディスク装置２０全体の制御を行うための、ＣＰＵ１で実行可能なプログラムであって、磁気ディスク装置２０の電源投入直後に、マスクＲＯＭ１１内のイニシャルロードプログラムによって読み出され、ＣＰＵ−ＲＡＭ１０にコピーされた後に実行される。
【００３５】
ＩＰＬ置換要求フラグ２２は、磁気ディスク装置２０の起動直後に１度だけ参照されるフラグである。そのフラグの値によって、ＩＰＬ領域４１へのリード及びライト要求をホストシステム１７から受けた場合の動作が決定される。詳細については後述するが、ＩＰＬ置換モード（磁気ディスク９上のＩＰＬ領域４１へのリード及びライト時に、そのアクセス対象範囲をＦＷ書換プログラム領域４３に置換する書換処理モード）と、通常モード（ＩＰＬ領域４１へのリード及びライト時に、要求どおりＩＰＬ領域４１へのアクセスを行うモード）との２つのモードが存在し、以後は磁気ディスク２０が再度起動されるまでモードの変更は行われない。
【００３６】
また、ＩＰＬ置換要求フラグ２２は、その使用形態から「真」「偽」を表せればよいので最低限必要なデータ長は１ビットであるが、ビットを落とす方向での値の変更しかできないというフラッシュＲＯＭの特性を考慮し、複数回の値の再設定が行えるようにする目的で実際には数十バイト程度の領域を確保している。具体的には、図３に示すように、Ｋ番目の内容がそれぞれフラグＫａ、フラグＫｂと表される値の組が複数組（この場合はＮ組）存在する構成である。フラグＫａ及びフラグＫｂは、それぞれ１バイトのデータであって、常に同じ値が設定され、また、次の意味を持つ何れかの値が書き込まれている。
【００３７】
ＦＦＨ：未使用
５５Ｈ：ＩＰＬ置換要求あり
００Ｈ：使用済み
【００３８】
ここで、値の設定時には、先頭（フラグ１ａ及びフラグ１ｂ）からＮ番目（フラグＮａおよびフラグＮｂ）まで順に値を検査し、ＦＦＨが初めて現れる位置を検索し、その位置のデータを書き換える。例えば、Ｓ番目のデータが該当位置である場合には、フラグＳａとフラグＳｂとに設定値（５５Ｈなど）を書き込み、フラグ１ａ〜フラグ（Ｓ−１）ａ、およびフラグ１ｂ〜フラグ（Ｓ−１）ｂに対しては００Ｈを書き込む。
【００３９】
値の読み出し時には、先頭（フラグ１ａ及びフラグ１ｂ）からＮ番目（フラグＮａ及びフラグＮｂ）まで順に値を検査し、００Ｈ以外の値が初めて現れる位置を検索し、そのデータを読み出し値とする。また、読み出しデータが正しいことを確認するために、ＩＰＬ置換要求フラグ２２内の全バイト（フラグ１ａ〜フラグＮｂまで）の排他的論理和をとり、０になることを確認する。値が正しく設定されていれば、各組とも互いに同じ値を保持しており、組ごとの排他的論理和が０になるからである。また、００Ｈ／５５Ｈ／ＦＦＨ以外の値が現れた場合もデータが正しくないと判定する。データが正しくないと判定された場合、安全のため通常モードで動作させる。また、Ｆ番目に不正な値が検出された場合、フラグ１ａからフラグＦｂまでを０に設定し、次回以降値の設定が行えるようにする。
【００４０】
最適化パラメータ・最適化データ２１は、磁気ディスク２０のリード・ライト用の個別調整値や製造番号などの出荷設定内容が記録されており、装置出荷後には、通常、書き換えを行わない領域である。したがって、ＦＷの書き換え前後でその値が保持される。これに対し、ＦＷコード２３及びＩＰＬ置換要求フラグ２２は、ＦＷの書き換えに伴い更新される。これらの領域の情報は、ファームウェアの書き換え手順中で消去（全てのビットを１とする）される。磁気ディスク９上のＦＷコード領域４４には（図４参照）、その後、新しいファームウェア（書換用のファームウェア）が書き込まれる。ＩＰＬ置換要求フラグ２２は、消去されたままとしておき、このことにより、以前の使用状況によらず再度先頭（フラグ１ａ／フラグ１ｂ）から使用することが可能となる。
【００４１】
次に、磁気ディスク装置２０が備える磁気ディスク９の記憶領域について説明する。
すなわち、図４は、磁気ディスク９上のＬＢＡ（Logical Block Addressing）のアドレス空間を含む全アドレス領域を示すものである。同図４に示すように、ユーザ領域３１は、ライト、リードなどの通常のコマンドでアクセス可能な領域であり、この長さ（範囲）が、ユーザに開放されているＨＤＤ本体の記憶容量のスペックとなる、いわゆる装置容量（ユーザ容量）である。また、ユーザ領域３１は、さらに、ブートプログラム格納領域であるＩＰＬ領域４１と通常領域４２とに区別される。ＩＰＬ領域４１は、ホストシステム１７がシステムの起動時にブートアップのためにＩＰＬを読み出すための固定的な位置に配置される必要がある。このため、ＩＰＬ領域４１は、ホストシステム１７に合わせて配置されている（本実施形態ではユーザ領域３１の先頭である）。また、ＩＰＬ領域４１には、システムの起動時にＯＳを立ち上げるための情報なども記憶されている。一方、通常領域４２には、ＯＳ本体、各種アプリケーションプログラム、及びそのアプリケーションプログラムなどで扱われる種々のファイルなどが記憶されている。
【００４２】
なお、通常の使用形態（上記通常モードでのシステム起動時）では、ＩＰＬ領域４１と通常領域４２との差異はないが、磁気ディスク装置２０が上記ＩＰＬ置換モードで起動した場合には、ＩＰＬ領域４１内の各ブロックにアクセス（ライト、リードなど）を行うと、その対象アドレスがＦＷ書換プログラム領域４３内の対応するブロックに置換される。つまり、ＩＰＬ置換モードで起動された場合には、ホストシステム１７がＩＰＬを読み出そうとすると、本来のＩＰＬに代わって、プログラム置換領域としてのＦＷ書換プログラム領域４３に書き込まれている書換実行プログラム（ＦＷ書換プログラム）が読み出されることになる。
【００４３】
ＦＷデータ領域３２は、磁気ディスク装置の個体情報、各種パラメータ、スマート情報などを含む製造情報など記録する、例えばベンダー側が内部的に使用するシステム領域内に確保されている。つまり、ＦＷデータ領域３２は、ユーザ領域３１とは異なる位置に配置され、通常のリード・ライトではアクセス不可能な領域である。また、ＦＷデータ領域３２は、さらにＦＷ書換プログラム領域４３とＦＷコード領域４４とに区別される。ＦＷ書換プログラム領域４３は、前述のＦＷ書換プログラムを格納するための領域であり、ＦＷコード領域４４は、ＦＷ書換プログラムによってフラッシュＲＯＭ１５に書き込まれる新しいＦＷコード２３を格納するための領域である。
【００４４】
ＦＷデータ領域３２へのアクセスは、前述したＩＰＬ置換モード時のＩＰＬ領域４１へのアクセスの他に、範囲Ａ３３内の各アドレスへのアクセスによって行うことができる。範囲Ａ３３は、対応する物理的なブロックが存在しないアドレスに配置され、その長さ（容量）は、ＦＷデータ領域３２の長さと等しく、範囲Ａ３３内の各アドレスに対するアクセスが発生した場合には、アドレスがＦＷデータ領域３２内の対応する値に置換された上でアクセスが行われる。つまり、ホストシステム１７は、ＦＷデータ領域３２へのアクセスを行うために範囲Ａ３３を指定する。
【００４５】
ここで、ＦＷデータ領域３２へのアクセスは、同領域内のアドレスをそのまま指定することでアクセスを可能にする方法も考えられるが、装置容量が変わるとＦＷデータ領域３２の位置も変わり、複数機種で同一の仕様とならず、運用面で煩雑になるという課題がある。これを回避するために、本実施形態では、範囲Ａ３３などのアドレスを装置容量に対して十分大きい値としている。
【００４６】
詳細には、セクタが実際に存在するユーザ領域３１及びＦＷデータ領域３２に対し、アドレスＢ３４、アドレスＣ３５は、図４に示すように、範囲Ａ３３と同様に、磁気ディスク９上の全記憶領域のうち、対応する物理的なブロックが存在しないアドレス領域（所定の記憶単位で区画されたブロックの非存在領域）、つまりセクタが割り当てられていないアドレス空間（磁気ディスク上の物理容量を超える領域［非物理領域］）に配置され、領域長は１ブロック分である。これらは、ホストシステム１７からＦＷの書き換えに必要な特定のコマンドを実行するために設けられており、本実施形態では、アドレスＢ３４に対するライトコマンドを受信すると、磁気ディスク２０は、ライトコマンドではなく、ＦＷデータのチェックを行うとともに、フラッシュＲＯＭ１５内にＩＰＬ置換要求フラグ２２をセットする。また、アドレスＣ３５へのライトコマンドを受信すると、磁気ディスク２０は、磁気ディスク９上のＦＷコード領域から４４から更新すべきＦＷコードを読み出すとともに、読み出したＦＷコード２３を実際にフラッシュＲＯＭ１５に書き込む処理を行う。これらの場合、ライトコマンドを利用するので実際にデータ転送が行われるが、その内容には意味がないので磁気ディスク２０が受信したデータは捨てられる。
【００４７】
このように物理的なブロックが存在しないアドレスに対するライトコマンドで、ＦＷの書き換えの一連のコマンドを実行するのはホストシステム１７からのコマンド発行を容易にすることを目的としている。本実施形態では、ＦＷの書き換え自体は通常のＯＳ（オペレーティングシステム）の制御下では行わないが、ＦＷデータを磁気ディスク装置２０に転送するなどのＦＷの書換準備処理は、ＯＳの制御下で行うことになる。この際、これらの処理を行うためのコマンドは、一般にベンダユニークコマンドとなり、ＯＳの制御下でこれらを発行するのが難しいケースが存在する。そこで、コマンドコードに一般的なリードやライトのものを利用することで、ＯＳの仕組みに基づくコマンドの実行を容易に実現させることが可能となる。
【００４８】
次に、本実施形態の情報処理システム１８によって行われる磁気ディスク装置２０のＦＷの書換処理を図５ないし図７に基づきその説明を行う。ここで、図５は、 磁気ディスク装置２０本体のＦＷの書換処理を示すフローチャート、図６は、ホストシステムと磁気ディスク装置との間でコマンドを送受して行われるＦＷの書換準備処理を示すフローチャート、図７は、ホストシステムと磁気ディスク装置との間でコマンドを送受して行われるＦＷの書換実行時の処理を示すフローチャートである。
【００４９】
まず、磁気ディスク装置２０自身が行う処理について説明する。
図５に示すように、磁気ディスク装置２０の電源が投入されると（ステップ１［Ｓ１］）、初期化処理が行われる（Ｓ２）。この初期化処理は、マスクＲＯＭ１１がフラッシュＲＯＭ１５の内容（ＦＷコード２３、ＩＰＬ置換要求フラグ２２、最適化パラメタ・設定データ２１）を読み出して、ＣＰＵ−ＲＡＭ１０に格納し、そこに格納されたＦＷコード２３に制御を移す処理が含まれ、以後、ＦＷコード２３のプログラム内容に応じた処理が行われる。
【００５０】
すなわち、ＣＰＵ−ＲＡＭ１０にコピーされたＩＰＬ置換要求フラグ２２がチェックされ（Ｓ３）、このフラグがセットされていれば（Ｓ３のＹＥＳ）、装置本体がＩＰＬ置換モードとされ、ＩＰＬ置換要求フラグがクリアされる（Ｓ４）。この場合、上で述べたように、今後、磁気ディスク９上のＩＰＬ領域４１内のブロックに対するアクセスが生じた場合（図４参照）、その対象がＦＷ書換プログラム領域４３内の対応するブロックに置換される。一方、ＩＰＬ置換要求フラグがセットされていなければ（Ｓ３のＮＯ）、装置本体が通常モードとされる（Ｓ５）。
【００５１】
ここで、上記Ｓ４（ステップ４）では、フラッシュＲＯＭ１５内のＩＰＬ置換要求フラグ２２のクリアも行うが、これはＩＰＬ置換モードで起動後にＦＷの書き換えを行わなかった場合に、その次の起動で確実に通常モードで起動させるためである。これにより、システムが通常モードで起動できなくなることが防止される。ＦＷの書き換えが行われれば、前述のとおり、ＩＰＬ置換要求フラグ２２がクリアされるので、その次の起動では通常の動作となる。
【００５２】
起動時の処理が完了すると、ホストシステム１７からのコマンドを受信するためのアイドル処理に移る（Ｓ６）。アイドル処理では、ホストシステム１７から一定時間以上コマンドが来なかった場合に、省電力のための処理（磁気ヘッド１３のアンロードやＳＰＭ８の停止）や、磁気ディスク装置２０の自己診断などを行うが、ホストシステム１７からのコマンドを検出すると、直ちにそれらの処理を中断し、アイドル処理を抜けてコマンドを実行するための処理に移る。
【００５３】
ホストシステム１７側からコマンドを受信した場合、そのコマンドがライトコマンドであるか否かを調べ（Ｓ７）、ライトコマンドであれば（Ｓ７のＹＥＳ）、ＦＷ書換プログラム領域４３へのライトを行うか否かを判定する（Ｓ８）。前述したように、このＦＷ書換プログラム領域４３にライトを行うのは、ＩＰＬ置換モードでのＩＰＬ領域４１のライト（アドレスの置換によってＦＷ書換プログラム領域４３へのライト）と、範囲Ａへのライト（アドレスの置換によりＦＷ書換プログラム領域４３を含むＦＷデータ領域３２へのライト）との２つの場合である。
【００５４】
ここで、上記Ｓ８で判定しているのは、前者の条件であるＩＰＬ領域４１へのライトコマンドであるか否かであり、これが成立していれば、ＦＷ書換プログラム領域４３内の該当アドレスへの書き込み処理を行い（Ｓ９）、これが完了したら次のコマンドを待つために上記アイドル処理（Ｓ６）に移る。
なお、ＦＷ書換プログラム領域４３への書き込みは、本実施形態では後者の条件で行うため、前者の条件成立時の書き込みは本来不要である。したがって、上記Ｓ９の処理を行う代わりにホストシステム１７に対してエラーを報告するようにしてもよいし、ＩＰＬ置換モードでは、安全のために全てのアドレスに対するライトコマンド（実際の書き込み処理）を禁止（無効に）するという構成を採ってもよい。
【００５５】
また、上記Ｓ８の条件が成立していなければ、通常のライトを行うか否かの判定が行われる（Ｓ１０）が、この時点では、対象アドレスが通常領域４２内のものであることがその条件となるので、これが成立していれば（Ｓ１０のＹＥＳ）、通常のライト処理を行って（Ｓ１１）、アイドル処理（Ｓ６）に戻り、非成立ならば（Ｓ１０のＮＯ）、Ｓ１２、Ｓ１３、Ｓ１４で、順次、ＦＷ書き換え関連の各コマンドであるか否かを判定し、該当すれば次に述べる処理に対応するものを実行した後、アイドル処理（Ｓ６）に移る。いずれにも該当しなければ、ホストシステム１７にエラーを報告し（Ｓ１５）、アイドル処理（Ｓ６）に移行する。
【００５６】
前記Ｓ１２において、対象アドレスが範囲Ａ３３内の値であれば（Ｓ１２のＹＥＳ）、アドレス置換により、ＦＷデータ領域３２へのライト処理となる（Ｓ１６）。これは、上記のＦＷ書換プログラム領域４３へライトを行う場合の後者の条件である。
【００５７】
また、Ｓ１３において、対象アドレスがアドレスＢ３４に一致していれば（Ｓ１３のＹＥＳ）、磁気ディスク９上のＦＷデータ領域３２の内容を読み出してこれが正しいＦＷデータ（ＦＷ書換プログラム及びＦＷコード）であるかのチェックを行い、正しい場合にのみ、次回の起動時にＦＷの書き換えを行うためにフラッシュＲＯＭ１５内のＩＰＬ置換要求フラグ２２をセットする（Ｓ１７）。
【００５８】
さらに、Ｓ１４において、対象アドレスがアドレスＣ３５に一致していれば（Ｓ１４のＹＥＳ）、磁気ディスク９上のＦＷデータ領域３２の内容を読み出してこれが正しいＦＷデータ（ＦＷ書換プログラムおよびＦＷコード）であるかのチェックを行い、正しい場合にのみＦＷコード２３をフラッシュＲＯＭ１５に実際に書き込み（Ｓ１８）、新しいＦＷで磁気ディスク装置２０を再起動させる。このコマンドは、通常、ＩＰＬ置換モードで起動したときに、ＦＷ書換プログラム領域４３から読み出されたＦＷ書換プログラムにより実行されるが、それ以外の場合にも実行は可能である。
【００５９】
一方、上記したＳ７のコマンド判定において、受信したコマンドがライトコマンドでなかった場合には（Ｓ７のＮＯ）、リードコマンドであるか否かの判定が行われる（Ｓ１９）。リードコマンドに該当すれば（Ｓ１９のＹＥＳ）、モードがＩＰＬ置換モードであって、なおかつ対象アドレスがＩＰＬ領域４１内の値であるか否かが判定される（Ｓ２０）。この条件が成立すると（Ｓ２０のＹＥＳ）、ＩＰＬ領域４１内に存在するホストシステム１７のＯＳを起動するための本来のＩＰＬに代わり、ＦＷ書換プログラム領域４３内に存在するＦＷ書換プログラムを読み出すための処理が行われ（Ｓ２１）、さらにアイドル処理（Ｓ６）に移行する。ＦＷ書換プログラム領域４３が読み出されるのは、通常、ホストシステム１７の起動時であり、この場合には通常のＯＳに代わりＦＷ書換プログラムによってホストシステム１７が起動することになる。
【００６０】
また、上記Ｓ２０において、その条件が成立しなければ（Ｓ２０のＮＯ）、通常のリードコマンドであるので、対象アドレスのチェックを行い（Ｓ２２）、アドレスがユーザ領域３１内の値であれば（Ｓ２２のＹＥＳ）、正しい値と判定し、通常の読み出し処理を行って（Ｓ２３）、アイドル処理（Ｓ６）に移行する。アドレスが、ユーザ領域３１内のものでなければ（Ｓ２２のＮＯ）、コマンドエラーをホストシステム１７に報告し（Ｓ２４）、アイドル処理（Ｓ６）に移行する。なお、本実施形態では、上記したようにＳ２２において、アドレスがユーザ領域３１内の値でないと判定されたら、無条件にコマンドエラーとしているが、ライトコマンド処理の場合と同様に、対象アドレスが範囲Ａ３３内のものであれば、それに対応するＦＷデータ領域３２内のブロックのリードを行うようにしてもよい。
【００６１】
また、Ｓ１９において、ホストシステム１７から受信したコマンドがリードコマンドでないと判定された場合には（Ｓ１９のＮＯ）、受信したコマンドに応じた処理を行った後（Ｓ２５）、アイドル処理（Ｓ６）に移行する。
【００６２】
さらに、本実施形態では、上述したように、ＯＳの制御下でのコマンド実行を容易にするために、ＦＷの書き換えに使用する各コマンドをライトコマンドに割り当てたが、これをライト以外の各コマンド（リードを含む）に割り当てたり、また、ベンダユニークのコマンドとして実装することも可能である。この場合、割り当てられたコマンドがリード以外であれば、そのための処理は上記Ｓ２５に含まれることになり、また、コマンドがリードコマンドであれば、Ｓ２２の後にさらに条件判断を追加されることになる。
【００６３】
次に、ホストシステム１７と磁気ディスク装置２０との間でコマンドを送受して行われるＦＷの書換準備処理について説明を行う。
図６に示すように、ホストシステム１７及び磁気ディスク装置２０の電源が投入されると（Ｓ３１、Ｓ６１）、磁気ディスク装置２０は、まず、ＩＰＬ置換要求があるかのチェックを行い（上記図５のＳ３、Ｓ４、Ｓ５参照）、この時点では、まだＦＷデータを受け取っていない状態なので通常モードに設定される（Ｓ６２）。
【００６４】
一方、ホストシステム１７は、電源投入直後、ＢＩＯＳによるシステム起動処理が行われ、その１つとして磁気ディスク装置２０の認識処理を行う（Ｓ３２）。磁気ディスク装置２０がレディ状態となり、コマンドを受け付けられるようになると、ホストシステム１７は、ドライブ情報取得コマンドを磁気ディスク装置２０に対して発行し（Ｓ４１）、それを受けて磁気ディスク装置２０は、ホストシステム１７への返信データを作成し（Ｓ６３）、それをドライブ情報としてホストシステム１７に転送する（Ｓ４２）。
【００６５】
次に、ホストシステム１７は、システムのブートアップのため、ＩＰＬ領域４１へのリードコマンドを発行して（Ｓ４３）、磁気ディスク装置２０の特定のアドレス（ＩＰＬ領域４１）を読み出し要求を行う（Ｓ３３）。磁気ディスク装置２０は、通常モードで起動しているので、このコマンドに対し指定されたアドレスをそのまま読み出し（Ｓ６４）、読み出したデータ、すなわち、通常のＩＰＬデータをホストシステム１７に転送する（Ｓ４４）。
【００６６】
ＩＰＬデータを受け取ったホストシステム１７は、それをプログラム実行可能なメモリに転送して実行することでＯＳの起動を行う（Ｓ３４）。この間には、ＯＳ本体の読み出し、ＯＳ起動処理に伴う読み出し及び書き込みなど、多数のコマンドが磁気ディスク装置２０に対して発行される（Ｓ４５）。磁気ディスク装置２０は、それらのコマンドを実行し（Ｓ６５）、その要求に応じたデータをホストシステム１７に返す（Ｓ４６）。
【００６７】
ＯＳの起動が完了し、ホストシステム１７において、通常のオペレーションが実行され（Ｓ３５）、磁気ディスク装置２０がそれに伴って発行されるコマンドを実行する（Ｓ６５）、という一般の処理が行われる。この後、ＯＳ上で動作するアプリケーションプログラムとして予め用意されているＦＷ書換準備プログラムがユーザからの入力操作を伴って実行される（Ｓ３６）。ここで、ＯＳ上で動作する上記ＦＷ書換準備プログラムの実行ファイルを含む当該プログラム本体は、磁気ディスク装置２０の磁気ディスク９上の通常領域３２に予め記憶されていてもよいし、また、ＣＤ−ＲＯＭやフロッピー（登録商標）ディスクなどの可搬型の外部記憶装置として提供されるものであってもよいし、さらには、Ｗｅｂ上から提供されるものであってもよい。
【００６８】
また、ＦＷ書換準備プログラムを実行する目的は、磁気ディスク装置２０のＦＷをＯＳの実行中に書き換えることではなく、ホストシステム１７及び磁気ディスク装置２０の次回の電源投入時に磁気ディスク装置１７のＦＷを書き換えるための手順が実行されるように準備を行うことである。これは、ＯＳの制御下では、一般に、コマンド実行のタイムアウトが短い、他のタスク実行に伴うコマンドが非同期で実行される、などといった制約があり、この条件下でＦＷの書き換えを行うのが難しいからである。
【００６９】
詳細には、フラッシュＲＯＭに対するデータの書き換え時には、一般に、デバイスの消去、データの書き込みといった処理が行われ、ある程度の時間を要することから、磁気ディスク装置２０のＦＷ書き換え処理においてもコマンド実行のタイムアウトが短いという前者の制約条件を満たせないことがある。また、後者の制約条件に関しては、ＦＷの書き換えが複数回のコマンド発行によって実現する構成において、それらの実行中に他のタスクによるＦＷの書き換えに無関係なコマンドを受信することによる磁気ディスク装置２０の誤動作が生じるおそれがある。
【００７０】
これに対応するために、ＦＷ書換準備プログラムでは、短時間で完了する処理のみが行われる。すなわち、Ｓ３６において、ＦＷ書換準備プログラムが実行されると、まず書換用のＦＷデータが磁気ディスク装置２０に転送される（Ｓ３６ａ）。書換用のＦＷデータは、ホストシステム１７におけるブートアップが可能なＦＷ書換プログラムとＦＷコードから構成される。ホストシステム１７は、当該書換用のＦＷデータの転送を、範囲Ａ３３へのライトコマンドという形で実行する（Ｓ４７）。これを受信した磁気ディスク装置２０は、書換用のＦＷデータを構成するＦＷ書換プログラム及びＦＷコードを、それぞれＦＷ書換プログラム領域４３及びＦＷコード領域４４に書き込み（Ｓ６７）、その結果（成否）をホストシステム１７に返す（Ｓ４８）。
【００７１】
なお、書換用のＦＷデータの転送、すなわち範囲Ａ３３へのライト処理は、単一のコマンドで行う必要はなく、複数回に分けて実行してもよい。また、この場合には、コマンドの実行順序や１コマンドあたりの転送データ量についても最終的に全データが揃えば特に制限はない。
【００７２】
上記Ｓ３６ａの実行後には、完全な書換ＦＷデータが磁気ディスク９上のＦＷデータ領域３２に存在していることになるが、これだけではまだ次回の電源投入時にはＦＷの書き換えは行われない。ＦＷの書き換えが行われるようにするには、磁気ディスク装置２０がＩＰＬ置換モードで起動しなければならないので、Ｓ３６ａに続けて書換用のＦＷデータのチェック処理を行う（Ｓ３６ｂ）。これはアドレスＢ３４へのライトコマンド（Ｓ４９）という形で実装されており、これを受信した磁気ディスク装置２０は、ＦＷデータ領域のデータを読み出してチェックし、これが正しいデータであれば次の電源投入時にＩＰＬ置換モードで起動させるためにフラッシュＲＯＭ１５内にＩＰＬ置換要求フラグ２２をセットする（Ｓ６８）。
【００７３】
なお、ＩＰＬ置換要求フラグ２２がフラッシュＲＯＭ１５内に存在すること、及びフラッシュＲＯＭの１５データ更新には時間がかかることは前述したが、ＩＰＬ置換要求フラグ２２の更新は、フラッシュＲＯＭ１５のビットを落とすことのみで実現していることからデバイスの消去処理を伴わず、書き込みデータ量も少ないことから処理のための時間はＯＳのタイムアウト時間に比べて十分に短くできる。また、本実施形態では、ＩＰＬ置換要求フラグ２２が、フラッシュＲＯＭ１５内に配置されているが、これを磁気ディスク９に記録する構成としてもよい。
【００７４】
上記Ｓ６８の処理が完了すると、その実行結果はホストシステム１７に報告され（Ｓ５０）、Ｓ３６のＦＷ書換準備プログラムによる処理は終了する。この時点では既にＩＰＬ置換要求フラグ２２は、セットされた状態であるが、これは電源投入直後にのみ参照されるものであることから、磁気ディスク装置２０は、通常モードを維持し、以後も通常のオペレーションが可能である。
【００７５】
Ｓ３６のＦＷ書換準備プログラムによって行われる処理は、ＯＳから見れば複数のタスクのうちの１つであるに過ぎず、この終了後は、ホストシステム１７は、通常のオペレーションに戻り（Ｓ３７）、一方、磁気ディスク装置２０は、必要に応じて発行されるホストシステム１７からのコマンドを実行する（Ｓ６９）。そして、ＯＳの終了処理も通常のオペレーションの一環として行われ、この後にホストシステム１７、及び磁気ディスク装置２０の電源が遮断されることで（Ｓ３８、Ｓ７０）、ＦＷ書換準備処理は完了となる。
【００７６】
次に、ホストシステム１７と磁気ディスク装置２０との間でコマンドを送受して行われるＦＷの書換実行時の処理について説明を行う。
すなわち、図７に示すように、ＦＷ書換準備処理の完了後にホストシステム１７及び磁気ディスク装置２０の電源が投入されると（Ｓ７１、Ｓ９１）、磁気ディスク装置２０は、まずＩＰＬ置換要求があるか否かのチェックを行い（上記図５のＳ３、Ｓ４、Ｓ５参照）、ＩＰＬ置換要求フラグがセットされていることによりＩＰＬ置換モードに設定される（Ｓ９２）。
【００７７】
一方、ホストシステム１７では、電源投入直後、ＦＷ書換準備処理で述べたのと同様にＢＩＯＳによるシステム起動処理が行われているが、その１つとして磁気ディスク装置２０の認識処理を行う（Ｓ７２）。磁気ディスク装置２０がレディ状態となり、コマンドを受け付けられるようになると、ホストシステム１７は、磁気ディスク装置２０の仕様を含むドライブ情報の取得コマンド（ドライブ情報の返信要求）を磁気ディスク装置２０に対して発行し（Ｓ８１）、それを受けた磁気ディスク装置２０は、ホストシステム１７への返信データを作成し（Ｓ９３）、それをドライブ情報としてホストシステム１７に転送する（Ｓ８２）。
【００７８】
次に、ホストシステム１７は、システムのブートアップのため、Ｓ７２において、ＦＷ書換準備処理の場合と同様に（通常の動作として）ＩＰＬ領域４１へのリードコマンドを発行する（Ｓ８３）が、磁気ディスク装置２０は、ＩＰＬ置換モードに設定されているので、ＩＰＬ領域４１のデータに代わり、ＦＷ書換プログラム領域４３のデータを読み出して（Ｓ９４）、それをホストシステム１７に転送する（Ｓ８４）。
【００７９】
本来のＩＰＬデータに代わりＦＷ書換プログラムを受け取ったホストシステム１７は、それを本来のＩＰＬに対して行うのと同様にプログラム実行可能なメモリに転送して、実行する（Ｓ７４）。これにより、ＢＩＯＳの設定変更など特殊な操作を伴わずに、ＦＷ書換準備の次のシステム起動で自動的にＦＷ書換プログラムが実行される。
【００８０】
ＦＷの書き換えは、前述のとおり、アドレスＣ３５に対するライトコマンドとして実装されているので、磁気ディスク装置２０に対してはこのコマンドが発行され（Ｓ８５）、それを受けて、磁気ディスク装置２０は、ＦＷコード領域４４の内容を読み出して正しいＦＷコードであることを確認後、これをフラッシュＲＯＭ１５に書き込み、新しいＦＷで再起動（マスクＲＯＭ１１内のイニシャルロードプログラムの先頭からの実行）を行う（Ｓ９５）。
【００８１】
この際、ＦＷの書き換え処理には、ある程度の時間を要することになるが、ＦＷの書き換えコマンドは、ＯＳではなく専用のＦＷ書き換えプログラムにより実行されているので、コマンド実行のタイムアウトが十分長く設定されており、タイムアウトエラーなどが生じるおそれがない。
【００８２】
また、本実施形態では、ＦＷ書き換えのための動作（ＦＷコードの読み出しとチェック、フラッシュＲＯＭへの書き込み、新しいＦＷでの再起動）をアドレスＣ３５へのライトコマンドという形で単一のコマンドとして実装しているが、ＦＷ書換プログラムの実行時には、磁気ディスク装置２０に対して処理を要求する他のタスクは存在しないので、これらを別々のコマンドとして実装し、ＦＷ書換プログラムが各動作に対応したコマンドを順次実行していくという構成をとることも可能である。
【００８３】
上記Ｓ７４の最後の処理として、ホストシステム１７は、ＦＷ書き換えが正常に完了したか否かを磁気ディスク装置２０の実行結果を取得して（Ｓ８６）、確認し、さらにＦＷが目的のものに更新されているかをドライブ情報取得コマンドの発行（Ｓ８７）により確認する（Ｓ７５）。これを受けた磁気ディスク装置２０は、Ｓ９３での処理と同様にホストシステム１７に転送するデータを作成し（Ｓ９６）、ホストシステム１７に転送する（Ｓ８８）が、この時点では既に新しいＦＷでの制御が行われているので、ドライブ情報に含まれるＦＷバージョンは新しいＦＷのものとなっているはずである。したがって、Ｓ７５ではこれを確認することで、ＦＷの書換処理が正しく行われたと判断し、以ってＦＷの書換処理は完了となる。
【００８４】
この後、ホストシステム１７及び磁気ディスク装置２０の電源が例えば遮断（Ｓ７６、Ｓ９７）（又はシステムがリブート）されるが、ＦＷの書き換えに伴いＩＰＬ置換要求フラグ２２がクリアされているので、次回電源が投入されれば、磁気ディスク装置２０は、通常モードで起動し、ホストシステム全体においても通常どおりＯＳが起動する。
【００８５】
このように構成された本実施形態の情報処理システム１８によれば、システム起動時のシーケンスにおいて、例えば、磁気ディスク装置２０本体が立ち上がる過程で、ファームウェアの書き換えが実行されるのではなく、磁気ディスク装置２０がホストシステム１７側に認識された後（ＢＩＯＳから制御を移行された後）、ＦＷ書換プログラムが単独でファームウェアの書換処理を実行するので、ＢＩＯＳ変更などの特殊な操作を伴わずに、ファームウェアの書換処理を安全且つ確実に行うことができる。
【００８６】
以上、本発明を実施の形態により具体的に説明したが、本発明は前記実施形態にのみ限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。例えば、上述した実施形態では、ディスクドライブ装置として磁気ディスク装置を適用したが、ＭＯなどの光磁気ディスク装置や、また例えば光ディスク装置などを本発明に適用することも可能である。また、上記磁気ディスク装置２０及びホストシステム１７を備える情報処理システム１８がＰＣを想定したものであったが、これに代えて、ＰＣよりも大規模なＰＣサーバや、また例えばカーナビゲーションシステムなど、ホスト装置を有するあらゆる情報処理システムに対して本発明を適用することができる。
【図面の簡単な説明】
【００８７】
【図１】本発明の一実施形態に係る磁気ディスク装置を含む情報処理システムを機能的に示すブロック図。
【図２】図１の磁気ディスク装置が備えるフラッシュＲＯＭの内部構成を示すメモリマップ。
【図３】図２のメモリマップを構成するＩＰＬ置換要求フラグの内容を示す図。
【図４】図１の磁気ディスク装置が搭載する磁気ディスクの記憶領域を示す図。
【図５】図１の磁気ディスク装置本体のファームウェアの書換処理を示すフローチャート。
【図６】図１の情報処理システムにおいて、磁気ディスク装置のファームウェアの書き換え準備時の処理を示すフローチャート。
【図７】図１の情報処理システムにおいて、ホストシステムと磁気ディスク装置との間でコマンドを送受して行われるＦＷの書換実行時の処理を示すフローチャート。
【符号の説明】
【００８８】
１…ＣＰＵ、９…磁気ディスク、１０…ＣＰＵ−ＲＡＭ、１１…マスクＲＯＭ、１５…フラッシュＲＯＭ、１７…ホストシステム、１８…情報処理システム、２０…磁気ディスク装置、２２…ＩＰＬ置換要フラグ、２３…ＦＷコード、３１…ユーザ領域、３２…ＦＷデータ領域、４１…ＩＰＬ領域、４３…ＦＷ書換プログラム領域、４４…ＦＷコード領域。
【図１】
2006127140.tif 000003
【図２】
2006127140.tif 000004
【図３】
2006127140.tif 000005
【図４】
2006127140.tif 000006
【図５】
2006127140.tif 000007
【図６】
2006127140.tif 000008
【図７】
2006127140.tif 000009