(57)【要約】【課題】ファームウェアの書換え失敗による起動不能状態をより確実に防止することのできるファームウェア管理プログラム、記憶装置およびファームウェア管理方法の提供。【解決手段】電子機器に格納されたファームウェアの管理を行うファームウェア管理プログラムであって、前記電子機器に格納された複数のファームウェアのうち、実行中のファームウェア以外のファームウェアの少なくとも１つを新たなファームウェアに書換える書換え手順と、前記複数のファームウェアのうち、一のファームウェアを用いて前記電子機器を起動させる起動手順と、前記起動手順により前記電子機器を起動させる際に、当該起動に用いるファームウェアに異常が検出された場合、他の前記ファームウェアを用いて前記電子機器の起動を行う切替え手順を電子機器に実行させる。【選択図】        図４
2010170197.tif 000002
【特許請求の範囲】
【請求項１】
電子機器に格納されたファームウェアの管理を行うファームウェア管理プログラムであって、
前記電子機器に格納された複数のファームウェアのうち、実行中のファームウェア以外のファームウェアの少なくとも１つを新たなファームウェアに書換える書換え手順と、
前記複数のファームウェアのうち、一のファームウェアを用いて前記電子機器を起動させる起動手順と、
前記起動手順により前記電子機器を起動させる際に、当該起動に用いるファームウェアに異常が検出された場合、他の前記ファームウェアを用いて前記電子機器の起動を行う切替え手順と
を電子機器に実行させることを特徴とするファームウェア管理プログラム。
【請求項２】
前記書換え手順は、前記ファームウェアの書換えが完了した際、当該書換えが完了した時点までのファームウェアの書換え回数に関する情報を当該書換えを行ったファームウェアと対応付けて所定の記憶領域に記憶し、
前記起動手順は、前記複数のファームウェアのうち、対応付けられた前記回数に関する情報が最も大きい値を示すファームウェアを用いて前記電子機器を起動させる
ことを特徴とする請求項１に記載のファームウェア管理プログラム。
【請求項３】
前記起動手順は、前記複数のファームウェアのうち、対応付けられた前記回数に関する情報が最も大きい値を示すファームウェアを用いて前記電子機器を起動できることが確認された場合、このファームウェア以外のファームウェアを削除することを特徴とする請求項２に記載のファームウェア管理プログラム。
【請求項４】
ファームウェアを搭載する記憶装置であって、
複数のファームウェアをそれぞれ格納する複数の格納手段と、
前記複数のファームウェアのうち、実行中のファームウェア以外のファームウェアの少なくとも１つを新たなファームウェアに書換える書換え手段と、
前記複数のファームウェアのうち、一のファームウェアを用いて前記記憶装置を起動させる起動手段と、
前記起動手段により前記記憶装置を起動させる際に、当該起動に用いるファームウェアに異常が検出された場合、他の前記ファームウェアを用いて前記記憶装置の起動を行う切替え手段と
を有することを特徴とする記憶装置。
【請求項５】
前記書換え手段は、前記ファームウェアの書換えが完了した際、当該書換えが完了した時点までのファームウェアの書換え回数に関する情報を当該書換えを行ったファームウェアと対応付けて所定の記憶領域に記憶し、
前記起動手段は、前記複数のファームウェアのうち、対応付けられた前記回数に関する情報が最も大きい値を示すファームウェアを用いて前記記憶装置を起動させる
ことを特徴とする請求項４に記載の記憶装置。
【請求項６】
前記起動手段は、前記複数のファームウェアのうち、対応付けられた前記回数に関する情報が最も大きい値を示すファームウェアを用いて前記記憶装置を起動できることが確認された場合、このファームウェア以外のファームウェアを削除することを特徴とする請求項５に記載の記憶装置。
【請求項７】
電子機器に格納されたファームウェアの管理を行うファームウェア管理方法であって、
前記電子機器に格納された複数のファームウェアのうち、実行中のファームウェア以外のファームウェアの少なくとも１つを新たなファームウェアに書換えるステップと、
前記複数のファームウェアのうち、一のファームウェアを用いて前記電子機器を起動させるステップと、
前記電子機器を起動させる際に、当該起動に用いるファームウェアに異常が検出された場合、他の前記ファームウェアを用いて前記電子機器の起動を行うステップと
を含むことを特徴とするファームウェア管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ファームウェア管理プログラム、記憶装置およびファームウェア管理方法に関する。
【背景技術】
【０００２】
従来、ＨＤＤ(Hard Disk Drive)などの記憶装置は、各種の動作を制御するためのファームウェアを搭載する。このファームウェアは、例えば、図１５に示すように、ＰＣＡ(Printed Circuit Assembly)やＳｏＣ(System on a Chip)上に設けられたＦＲＯＭ(Flash Read Only Memory)等の不揮発性メモリ内と記憶媒体上のシステム領域（ＳＡ：System Area)内とに格納される。なお、図１５において、「FROM FW code」はＦＲＯＭに格納されたファームウェアを示し、「SA FW code」はＳＡに格納されたファームウェアを示す。
【０００３】
また、ファームウェアは、当該ファームウェアを搭載する機器のシステム変更等の理由により書換えが行われる場合がある。記憶装置においてファームウェアの書換えを行う際は、主にＦＲＯＭへのイレーズ処理及びライト処理並びにＳＡへのライト処理が行われる。以下に、図１６を参照して、記憶装置におけるファームウェアの書換え処理の手順について説明する。図１６は、従来におけるファームウェアの書換え処理の手順を説明するための図である。
【０００４】
図１６に示すように、記憶装置は、現在記憶装置内に格納されているファームウェア（Current FW）を用いてステップＳ１〜Ｓ７までの処理を行う。先ず、記憶装置は、新しいファームウェアをホスト装置からダウンロードする（ステップＳ１）。そして、ダウンロードが完了すると、記憶装置は、新しいファームウェアを再生してデータの正当性を検証した後（ステップＳ２）、この新しいファームウェアをＳＡに書き込む（ステップＳ３）。このＳＡへの書き込みが終了すると、記憶装置は、ヘッドをアンロードするとともにＳＰＭ（スピンドルモータ）をオフする（ステップＳ４）。その後、記憶装置は、ＦＲＯＭのイレーズ処理を行った後（ステップＳ５）、ＦＲＯＭに新しいファームウェアデータを書き込み（ステップＳ６）、再起動処理を実行する（ステップＳ７）。
【０００５】
続いて、記憶装置は、起動処理として、ＭＲＯＭ(Mask Read Only Memory)を用いてＦＲＯＭに格納された新しいファームウェアをＳＲＡＭへコピーした後、ＭＰＵ(Micro Processing Unit)やＨＤＣ(Hard Disk Controller)の初期化処理等を行う（ステップＳ８）。次に、記憶装置は、ＦＲＯＭやＳＡに新たに格納された新しいファームウェア（New FW）を用いてステップＳ９〜Ｓ１３までの処理を行う。具体的には、記憶装置は、ＳＰＭをオンした後（ステップＳ９）、ＳＡに格納された新しいファームウェアをロードして、データの正当性を検証する（ステップＳ１０）。データの正当性が確認されると、記憶装置は、メインプログラムに移行し（ステップＳ１１）、ＳＡに格納されたシステムデータをロードして、当該システムデータの正当性の検証を行う（ステップＳ１２）。そして、システムデータの正当性が認められると、記憶装置は、新しいファームウェアのダウンロードが完了した旨をホスト装置へ通知する（ステップＳ１３）。これにより、ファームウェアの書換え処理は完了する。
【０００６】
ところで、従来の記憶装置において、ファームウェアは、ＦＲＯＭやＳＡにそれぞれ１つずつしか格納されていなかった。そのため、ファームウェアの書換え処理中に電源が切断されたり振動や衝撃を受けたりして書換え処理に失敗した場合、記憶装置は、ＦＲＯＭやＳＡに正常なファームウェアが格納されていない状態となり、次回以降の起動ができなくなる（Not Ready状態となる）おそれがある。このような状態となると、ユーザは、この記憶装置に対してアクセスすることができないため、この記憶装置に記憶されたデータの復旧が非常に困難となる。
【０００７】
近年、このような問題を解決するため、ファームウェア書換え後も旧ファームウェアを保持しておき、書換えに失敗した場合には、旧ファームウェアを用いて起動処理を行う方法が提案されている。
【０００８】
例えば、特許文献１には、新ファームウェア及び旧ファームウェアをそれぞれ格納する２つの格納領域と、新・旧ファームウェアの切替えを行う切替え回路と、新ファームウェアの起動時の動作の監視時間を計時するタイマとを備えたファームウェア入替え装置が開示されている。具体的には、このファームウェア入替え装置は、新ファームウェアの起動時の動作をタイマにより一定時間監視し、当該動作の異常を検出した場合には、使用するファームウェアを切替え回路により旧ファームウェアに切り換える。これにより、ファームウェアの書換えに失敗した場合でも、旧ファームウェアを用いて装置を起動させることができる。
【０００９】
また、特許文献２には、新旧ファームウェアの各格納領域にファームウェアの書換えが有効に行われたか否かを示すフラグを設け、このフラグによりどのファームウェアを用いて起動処理を行うかを決定するファームウェア切替え方法が開示されている。具体的には、ファームウェアの書換えを行う際に、先ず、新ファームウェアを格納する領域の有効・無効判定フラグを無効化しておき、書換え完了後に当該フラグを有効化する。その後、再起動を行い、新ファームウェアを格納する領域の有効・無効判定フラグが有効化されていれば、新ファームウェアを用いて起動を行う。一方、新ファームウェアを格納する領域の有効・無効判定フラグが無効化されていれば、他方の領域に格納された旧ファームウェアを用いて起動を行う。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２０００−３９９９３号公報
【特許文献２】特開平１１−３２８０４０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかしながら、特許文献１に記載のファームウェア入替え装置は、新ファームウェアと旧ファームウェアとを切替えるためにタイマや切替え回路といったハードウェア的な構成を用いており、製造コストが高くなるという問題がある。また、特許文献１に記載のファームウェア入替え装置は、ファームウェアの書換え中に異常が発生し、他方の格納領域に切替えた後に再度異常が発生すると、結果としていずれの格納領域においてもファームウェアの書換えに失敗したことになり、次回以降起動できなくなるおそれがある。
【００１２】
また、特許文献２に記載のファームウェア切替え方法は、ダウンロードされたファームウェアの書換え開始時及び書換え完了時に有効・無効判定フラグの更新を行う。そのため、ファームウェアの書換え処理中に異常が発生すると、フラグの情報自体が不定値となって異常な値を読み出してしまう可能性があり、場合によっては書換えが失敗したファームウェア側で起動するおそれがある。
【００１３】
開示の技術は、上述した従来技術による問題点を解消するためになされたものであり、ファームウェアの書換え失敗による起動不能状態をより確実に防止することのできるファームウェア管理プログラム、記憶装置およびファームウェア管理方法を提供することを目的とする。
【課題を解決するための手段】
【００１４】
上述した課題を解決し、目的を達成するために、本件に開示するファームウェア管理プログラムは、電子機器に格納されたファームウェアの管理を行うファームウェア管理プログラムであって、前記電子機器に格納された複数のファームウェアのうち、実行中のファームウェア以外のファームウェアの少なくとも１つを新たなファームウェアに書換える書換え手順と、前記複数のファームウェアのうち、一のファームウェアを用いて前記電子機器を起動させる起動手順と、前記起動手順により前記電子機器を起動させる際に、当該起動に用いるファームウェアに異常が検出された場合、他の前記ファームウェアを用いて前記電子機器の起動を行う切替え手順を電子機器に実行させる。
【発明の効果】
【００１５】
本件に開示するファームウェア管理プログラム、記憶装置およびファームウェア管理方法によれば、ファームウェアの書換え失敗による起動不能状態をより確実に防止することのできるという効果を奏する。
【図面の簡単な説明】
【００１６】
【図１−１】図１−１は、ファームウェアの格納領域が複数設けられている様子を説明するための図である。
【図１−２】図１−２は、実行していないファームウェアのみが新たなファームウェアに書き換えられる様子を説明するための図である。
【図１−３】図１−３は、ファームウェアの書換え失敗時にファームウェアが切替えられる様子を説明するための図である。
【図２】図２は、本実施例にかかる記憶装置の構成を示すブロック図である。
【図３】図３は、本実施例にかかる記憶装置におけるファームウェアの格納領域を説明するための図である。
【図４】図４は、本実施例にかかるＭＰＵの具体的な構成を示すブロック図である。
【図５】図５は、ファームウェアが書換えられる様子を説明するための図である。
【図６】図６は、ファームウェアを書換える際の処理手順を説明するための図である。
【図７】図７は、記憶装置を起動させる際の処理手順を説明するための図である。
【図８】図８は、記憶装置の起動時においてファームウェアが切替えられる様子を説明するための図である。
【図９】図９は、記憶装置の起動処理中にファームウェアの切替えが行われる様子を説明するための図である。
【図１０】図１０は、本実施例にかかる起動処理の処理手順を示すフローチャートである。
【図１１】図１１は、本実施例にかかるＦＲＯＭリカバリー処理の処理手順を示すフローチャートである。
【図１２】図１２は、本実施例にかかるＳＡリカバリー処理の処理手順を示すフローチャートである。
【図１３】図１３は、本実施例にかかるファームウェア書換え処理の処理手順を示すフローチャートである。
【図１４】図１４は、ファームウェア管理プログラムを実行する電子機器を示す図である。
【図１５】図１５は、従来におけるファームウェアの格納領域を説明するための図である。
【図１６】図１６は、従来におけるファームウェアの書換え処理の手順を説明するための図である。
【発明を実施するための形態】
【００１７】
以下に添付図面を参照して、本件に開示するファームウェア管理プログラム、記憶装置およびファームウェア管理方法にかかる実施例について詳細に説明する。
【実施例】
【００１８】
まず、本実施例にかかるファームウェア管理方法について、図面を参照して説明する。図１−１はファームウェアの格納領域が複数設けられている様子を説明するための図、図１−２は実行していないファームウェアのみが新たなファームウェアに書き換えられる様子を説明するための図、図１−３はファームウェアの書換え失敗時にファームウェアが切替えられる様子を説明するための図である。
【００１９】
本実施例にかかるファームウェア管理方法を実施する電子機器は、図１−１に示すように、複数のファームウェアを格納する。そして、この電子機器は、これら複数のファームウェアのうちの１つを実行して、起動処理等の制御を行う。
【００２０】
また、本実施例にかかる電子機器は、ホスト装置からの指示等によりファームウェアの更新を行う際、図１−２に示すように、これら複数のファームウェアのうち現在実行中のファームウェア以外のファームウェアの少なくとも１つを新たなファームウェアに書換える。ファームウェアの書換えが完了すると、電子機器は、新たなファームウェアを用いて当該電子機器を起動させる。
【００２１】
この際、電子機器は、新たなファームウェアに異常がないかどうかのチェックを行う。そして、例えばファームウェアの書換えに失敗していた等の理由により新たなファームウェアに異常が検出された場合、電子機器は、ファームウェアの切り替えを行い、最後に行われたファームウェアの書換え処理の際に書換えを行っていないファームウェアを用いて当該電子機器を起動させる。これにより、ファームウェアの書換えに失敗した場合であっても、電子機器が起動不能状態となることを防止できる。
【００２２】
次に、本実施例にかかるファームウェア管理方法を実施する電子機器の一例である記憶装置の構成について図面を参照して説明する。図２は本実施例にかかる記憶装置の構成を示すブロック図、図３は本実施例にかかる記憶装置におけるファームウェアの格納領域を説明するための図である。なお、本件に開示するファームウェア管理方法を実施する電子機器としては、記憶装置以外に、電子レンジや冷蔵庫等の家電製品、パーソナルコンピュータの周辺機器あるいは携帯電話等のように、コンピュータシステムを組み込んだ電子機器であればよい。また、本実施例にかかるファームウェア管理方法に関連のない構成については、図示と説明を省略することとする。
【００２３】
図２に示すように、本実施例にかかる記憶装置１は、ＤＥ(Drive Enclosure)１０とＰＣＡ２０とを有する。ＤＥ１０は、記憶媒体を収容する筐体であり、記憶媒体１１と、磁気ヘッド１２と、ＶＣＭ(Voice Coil Motor)１３と、ＨＤＩＣ(Head Integral Circuit)１４とを有する。
【００２４】
記憶媒体１１は、裏表両面に磁気記録面を有する中空円盤状の基盤であり、各種データを記憶する。特に、記憶媒体１１は、記憶装置の起動に関する情報などを格納する領域であるＳＡ１４０を有する。ＳＡ１４０の具体的な構成については、後述する。磁気ヘッド１２は、記憶媒体１１に対して磁気的にデータのリード／ライトを行う。ＶＣＭ１３は、磁気ヘッド１２を記憶媒体１１上のデータリード／ライト先へ移動させる駆動装置である。ＨＤＩＣ１４は、磁気ヘッド１２から読み出された信号の利得を増幅する。
【００２５】
ＰＣＡ２０は、記憶装置１を制御する各種のＬＳＩ(Large Scale Integration)が配置されたプリント基板である。このＰＣＡ２０は、ＦＲＯＭ２１と、ＳｏＣ２２と、ＤＲＡＭ(Dynamic RAM)２３と、ＳＶＣ(Servo Controller)２４とを有する。
【００２６】
ＦＲＯＭ２１は、記憶装置１の動作を制御するためのファームウェアを格納する不揮発性のメモリである。ここで、本実施例にかかる記憶装置１におけるファームウェアの格納領域について説明する。本実施例にかかる記憶装置１は、ＦＲＯＭ２１およびＳＡ１４０にファームウェアの格納領域をそれぞれ２つずつ有する。
【００２７】
具体的には、図３に示すように、記憶装置１は、ＦＲＯＭ２１に２つの格納領域２１０ａ，２１０ｂを有するとともに、ＳＡ１４０にも２つの格納領域１４１ａ，１４１ｂを有する。そして、ＦＲＯＭ２１側の格納領域２１０ａ，２１０ｂには、それぞれＦＲＯＭ側ファームウェア２１１ａ，２１１ｂが格納され、ＳＡ１４０側の格納領域１４１ａ、１４１ｂには、それぞれＳＡ側ファームウェア１４２ａ，１４２ｂが格納される。なお、図３は、記憶装置１の工場出荷時の状態を表しており、ＦＲＯＭ側ファームウェア２１１ａとＦＲＯＭ側ファームウェア２１１ｂとは同一であり、ＳＡ側ファームウェア１４２ａとＳＡ側ファームウェア１４２ｂとは同一である。
【００２８】
また、ＳＡ１４０側の各格納領域１４１ａ，１４１ｂは、それぞれＦＲＯＭ２１側の格納領域２１０ａ，２１０ｂの１つに対応する。具体的には、ＳＡ１４０側の格納領域１４１ａは、ＦＲＯＭ２１側の格納領域２１０ａに対応し、ＳＡ１４０側の格納領域１４１ｂは、ＦＲＯＭ２１側の格納領域２１０ｂに対応する。ここで、以下において、図３に示すように、格納領域２１０ａ及び格納領域１４１ａの組み合わせをＡｒｅａ１とし、格納領域２１０ｂ及び格納領域１４１ｂの組み合わせをＡｒｅａ２とする。このように、本実施例にかかる記憶装置１は、ＦＲＯＭ２１およびＳＡ１４０それぞれにファームウェアの格納領域を複数有する。ＦＲＯＭ２１側の格納領域２１０ａ，２１０ｂ及びＳＡ１４０側の格納領域１４１ａ，１４１ｂは、複数のファームウェアをそれぞれ格納する格納手段に相当する。
【００２９】
また、ＦＲＯＭ２１側の格納領域２１０ａ，２１０ｂには、各格納領域２１０ａ，２１０ｂに対応する起動情報２１２ａ，２１２ｂがそれぞれ記憶される。起動情報２１２ａ，２１２ｂは、記憶装置１の起動時においてどのＡｒｅａのファームウェアを実行して記憶装置１を起動させるかを決定するための情報である。
【００３０】
ＳｏＣ２２は、記憶装置１の主要な機能を搭載するチップである。このＳｏＣ２２は、ＨＤＣ(Hard Disk Controller)２２０と、ＲＤＣ(Read Channel)２２１と、ＳＲＡＭ(Static RAM)２２２と、ＭＲＯＭ２２３と、ＭＰＵ２２４と、Ｂｕｓ２２５とを有する。
【００３１】
ＨＤＣ２２０は、ＤＲＡＭ２３に格納されたデータを記憶媒体１１に書き込む際の動作や、記憶媒体１１に記録されたデータを読み出してＤＲＡＭ２３に格納する際の動作を制御するコントローラである。ＲＤＣ２２１は、ＤＲＡＭ２３と記憶媒体１１との間を仲介し、データの変調または復調を行うＬＳＩである。ＳＲＡＭ２２２は、ＦＲＯＭ２１に格納されたファームウェアを展開するための揮発性のメモリである。ＭＲＯＭ２２３は、記憶装置１を起動させる際にＭＰＵ２２４により用いられるメモリであり、起動処理に必要な情報を記憶する。
【００３２】
ＭＰＵ２２４は、ＦＲＯＭ２１や記憶媒体１１のＳＡ１４０に格納されたファームウェアを用いて記憶装置１全体の制御を行う。このＭＰＵの具体的な構成については、後述する。Ｂｕｓ２２５は、ＦＲＯＭ２１、ＨＤＣ２２０、ＳＲＡＭ２２２、ＭＲＯＭ２２３およびＭＰＵ２２４を相互に接続するシステムバスである。
【００３３】
ＤＲＡＭ２３は、ホスト装置２とＤＥ１０との間でリードまたはライトされるデータを一時的に格納する。ＳＶＣ２４は、記憶媒体１１に設けられたＳＭＰ（図示せず。）やＶＣＭ１３に対して駆動電流を供給する。
【００３４】
続いて、本実施例にかかる記憶装置１のＭＰＵ２２４の具体的な構成について、図４を参照して説明する。図４は、本実施例にかかるＭＰＵ２２４の具体的な構成を示すブロック図である。図４に示すように、本実施例にかかるＭＰＵ２２４は、書換え処理部２３０と、起動処理部２３１と、切替え処理部２３２とを有する。
【００３５】
書換え処理部２３０は、書換え手段に相当し、複数のファームウェアのうち、現在実行中のファームウェア以外のファームウェアの少なくとも１つを新たなファームウェアに書換える。具体的には、書換え処理部２３０は、ホスト装置２からファームウェアの更新指示を受けると、Ａｒｅａ１またはＡｒｅａ２のうち、現在実行中のＡｒｅａではないＡｒｅａに格納されているＦＲＯＭ側ファームウェア２１１およびＳＡ側ファームウェア１４２を新しいファームウェアに書換える。
【００３６】
また、起動処理部２３１は、起動手段に相当し、複数のファームウェアのうち、書換え処理部２３０によって最後に書換えが行われたファームウェアを用いて記憶装置１を起動させる。具体的には、起動処理部２３１は、ＦＲＯＭ２１側の各格納領域２１０ａ、２１０ｂに記憶される起動情報２１２ａ，２１２ｂに基づいて、Ａｒｅａ１またはＡｒｅａ２のうちのどのＡｒｅａに属するファームウェアを用いて記憶装置１を起動させるかを判定する。ここで、書換え処理部２３０によるファームウェアの書換え処理および起動処理部２３１による記憶装置１の起動処理について、図面を参照して具体的に説明する。図５は、ファームウェアが書換えられる様子を説明するための図である。
【００３７】
例えば、図３に示すようにＡｒｅａ１に属するファームウェア（ＦＲＯＭ側ファームウェア２１１ａおよびＳＡ側ファームウェア１４２ａ）を用いて記憶装置１の制御が行われている状態において、記憶装置１がホスト装置２からファームウェアの更新指示を受けたとする。このような場合、書換え処理部２３０は、図５に示すように、非実行中のＡｒｅａであるＡｒｅａ２に属するファームウェア（ＦＲＯＭ側ファームウェア２１１ｂおよびＳＡ側ファームウェア１４２ｂ）を新たなファームウェアに書換える。すなわち、本実施例にかかる記憶装置１では、ファームウェアの書換えを行う際、実行中のファームウェアについては書換えを行わない。
【００３８】
また、書換え処理部２３０は、ファームウェアの書換えが正常に完了すると、書換えを行ったＡｒｅａの起動情報２１２を更新する。本実施例において、起動情報２１２は、ファームウェアの書換えが行われた回数によって示される。すなわち、工場出荷時において、各Ａｒｅａの起動情報２１２ａ，２１２ｂは、ともに「００」である。そして、この状態において、Ａｒｅａ２に属するファームウェアの書換えが行われると、書換え処理部２３０は、図５に示すように、Ａｒｅａ２の起動情報２１２ｂを「００」から「０１」に更新する。また、次にＡｒｅａ１においてファームウェアの書換えが行われた場合は、書換え処理部２３０は、Ａｒｅａ１の起動情報２１２ａを「００」から「０２」に更新する。
【００３９】
このように、書換え処理部２３０は、ファームウェアの書換えが完了した際、当該書換えが完了した時点までのファームウェアの書換え回数に関する情報である起動情報２１２を、当該書換えを行ったファームウェアの属するＡｒｅａにおけるＦＲＯＭ２１側の格納領域２１０に記憶する。これにより、書換え処理部２３０は、起動情報２１２を更新する際、ファームウェアの書換えを行ったＡｒｅａの起動情報のみを更新するだけでよく、ファームウェアの書換えを行っていないＡｒｅａの起動情報の変更あるいは削除といった処理を行う必要がない。
【００４０】
そして、起動処理部２３１は、記憶装置１を起動する際に、これら起動情報２１２ａ，２１２ｂを比較し、起動情報２１２がより大きい値を示しているＡｒｅａに属するファームウェアを用いて記憶装置１の起動処理を行う。これにより、起動処理部２３１は、より新しいファームウェアを用いて記憶装置１を起動させることができる。なお、図３に示すように、Ａｒｅａ１及びＡｒｅａ２の起動情報２１２ａ，２１２ｂが同じ値であるとき（工場出荷時）、起動処理部２３１は、Ａｒｅａ１側のファームウェアであるＦＲＯＭ側ファームウェア２１１ａおよびＳＡ側ファームウェア１４２ａを用いて起動処理を行う。
【００４１】
ここで、書換え処理部２３０によりファームウェアを書換える際の具体的な処理手順について、図６を用いて説明する。図６はファームウェアを書換える際の処理手順を説明するため図である。
【００４２】
図６に示すように、書換え処理部２３０は、現在実行中のファームウェアを用いてステップＳ２１〜Ｓ２７までの処理を行う。先ず、書換え処理部２３０は、新たなファームウェアをホスト装置２からダウンロードする（ステップＳ２１）。そして、ダウンロードが完了すると、書換え処理部２３０は、新たなファームウェアを再生してデータの正当性を検証した後（ステップＳ２２）、この新しいファームウェアをＡｒｅａ２におけるＳＡ１４０側の格納領域１４１ｂに書き込む（ステップＳ２３）。この書き込みが終了すると、書換え処理部２３０は、Ａｒｅａ２におけるＦＲＯＭ２１側の格納領域２１０ｂのイレーズ処理を行った後（ステップＳ２４）、当該格納領域２１０ｂに新たなファームウェアを書き込む（ステップＳ２５）。そして、書換え処理部２３０は、Ａｒｅａ２の起動情報２１２ｂを「０」から「１」へ更新する（ステップＳ２６）。この処理を終えると、書換え処理部２３０は、再起動処理を実行する（ステップＳ２７）。これにより、現在実行されていないＡｒｅａ２に属するファームウェアが新たなファームウェアに書き換えられる。
【００４３】
続いて、起動処理部２３１により記憶装置１を起動させる際の具体的な処理手順について、図７を用いて説明する。図７は記憶装置１を起動させる際の処理手順を説明するための図である。
【００４４】
図７に示すように、起動処理部２３１は、先ず、ＭＲＯＭ２２３を用いてステップＳ３１およびステップＳ３２の処理を行う。具体的には、起動処理部２３１は、記憶装置１の電源がオンされると（ステップＳ３１）、各Ａｒｅａの起動情報のチェックを行う（ステップＳ３２）。この際、起動処理部２３１は、起動情報の値の大小を判定し、より大きい値を示しているＡｒｅａ２に属するファームウェアを用いて記憶装置１の起動を行うことを決定する。続いて、起動処理部２３１は、Ａｒｅａ２に属するファームウェアを用いてＳ３３〜Ｓ３８までの処理を行う。すなわち、起動処理部２３１は、Ａｒｅａ２におけるＦＲＯＭ２１側の格納領域２１０ｂに格納されたファームウェア２１１ｂをＳＲＡＭ２２２へコピーした後、ＭＰＵ２２４やＨＤＣ２２０の初期化処理等を行う（ステップＳ３３）。
【００４５】
続いて、起動処理部２３１は、ＳＰＭをオンした後（ステップＳ３４）、Ａｒｅａ２におけるＳＡ１４０側の格納領域１４１ｂに格納されたファームウェア１４２ｂをロードして、データの正当性を検証する（ステップＳ３５）。データの正当性が確認されると、起動処理部２３１は、メインプログラムに移行し（ステップＳ３６）、ＳＡ１４０に格納されたシステムデータをロードして、当該システムデータの正当性の検証を行う（ステップＳ３７）。そして、システムデータの正当性が認められると、起動処理部２３１は、起動処理が完了した旨をホスト装置へ通知する（ステップＳ３８）。
【００４６】
切替え処理部２３２は、切替え手段に相当し、起動処理部２３１により記憶装置１を起動させる際に最後に書換えが行われたファームウェアに異常が検出された場合、書換え処理部２３０による書換え前のファームウェアを用いて記憶装置１の起動を行う。ここで、切替え処理部２３２によりファームウェアが切替えられる様子について図８及び図９を用いて説明する。図８は記憶装置１の起動時においてファームウェアが切替えられる様子を説明するための図、図９は記憶装置の起動処理中にファームウェアの切替えが行われる様子を説明するための図である。
【００４７】
図８に示すように、Ａｒｅａ２に最新のファームウェアが格納されている場合において、起動処理部２３１がＡｒｅａ２側で記憶装置１を起動させようとしたが、Ａｒｅａ２側のファームウェアに異常が検出されたとする。このような場合、切替え処理部２３２は、ファームウェアの切替えを行い、Ａｒｅａ１に属するファームウェアを用いて記憶装置１を起動させる。
【００４８】
より具体的には、図９に示すように、起動処理部２３１がステップＳ３５において、Ａｒｅａ２におけるＳＡ側ファームウェア１４２ｂのチェックを行った際、当該ＳＡ側ファームウェア１４２ｂに異常が検出されると、切替え処理部２３２は、Ａｒｅａ１に属するファームウェアに切替える。なお、ファームウェアに異常が検出された場合、起動処理部２３１は、ＳＰＭをオフ状態にする。そして、起動処理部２３１は、Ａｒｅａ１に属するファームウェアを用いてステップＳ４１〜Ｓ４７の処理を行う。
【００４９】
すなわち、起動処理部２３１は、Ａｒｅａ１におけるＦＲＯＭ側ファームウェア２１１ａをＳＲＡＭ２２２へコピーした後、ＭＰＵ２２４やＨＤＣ２２０の初期化処理等を行う（ステップＳ４１）。続いて、起動処理部２３１は、ＳＰＭをオンした後（ステップＳ４２）、Ａｒｅａ１におけるＳＡ側ファームウェア１４２ａをロードして、データの正当性を検証する（ステップＳ４３）。データの正当性が確認されると、起動処理部２３１は、メインプログラムに移行し（ステップＳ４４）、ＳＡ１４０に格納されたシステムデータをロードして、当該システムデータの正当性の検証を行う（ステップＳ４５）。システムデータの正当性が認められると、起動処理部２３１は、Ａｒｅａ２が使用不能であることを示すフラグをセットし（ステップＳ４６）、起動処理が完了した旨をホスト装置へ通知する（ステップＳ４７）。
【００５０】
次に、本実施例にかかる記憶装置１の具体的な動作について図面を参照して説明する。先ず、本実施例にかかる起動処理の処理手順について、図１０を参照して説明する。図１０は、本実施例にかかる起動処理の処理手順を示すフローチャートである。
【００５１】
図１０に示すように、記憶装置１の電源がオンされると、起動処理部２３１は、ＭＲＯＭ２２３を用いて仮初期化を行った後（ステップＳ１０１）、Ａｒｅａ１及びＡｒｅａ２のＦＲＯＭ側ファームウェア２１１ａ、２１１ｂのチェックを行う（ステップＳ１０２）。続いて、起動処理部２３１は、Ａｒｅａ１及びＡｒｅａ２のＦＲＯＭ側ファームウェア２１１ａ、２１１ｂがいずれも正常か否かを判定する（ステップＳ１０３）。この処理において、Ａｒｅａ１及びＡｒｅａ２のＦＲＯＭ側ファームウェア２１１ａ、２１１ｂがいずれも正常であると判定すると（ステップＳ１０３肯定）、起動処理部２３１は、処理をステップＳ１０４に移行する。
【００５２】
ステップＳ１０４において、起動処理部２３１は、新しいファームウェアがＡｒｅａ１に格納されているか否かを判定する。この判定は、各Ａｒｅａの起動情報２１２ａ，２１２ｂを比較し、Ａｒｅａ１の起動情報２１２ａがＡｒｅａ２の起動情報２１２ｂよりも大きな値を示しているか否かにより判定される。この処理において、新しいファームウェアがＡｒｅａ１に格納されていると判定すると（ステップＳ１０４肯定）、起動処理部２３１は、処理をステップＳ１０７へ移行する。一方、新しいファームウェアがＡｒｅａ１に格納されていない場合（ステップＳ１０４否定）、起動処理部２３１は、処理をステップＳ１０８へ移行する。
【００５３】
一方、ステップＳ１０３において、Ａｒｅａ１及びＡｒｅａ２のＦＲＯＭ側ファームウェア２１１ａ、２１１ｂのいずれかが正常ではないとき（ステップＳ１０３否定）、切替え処理部２３２は、ＦＲＯＭリカバリー処理を行う（ステップＳ１０５）。このＦＲＯＭリカバリー処理は、図１１におけるステップＳ２０１〜Ｓ２０６までの処理であり、後述する。
【００５４】
ステップＳ１０５の処理を終えると、切替え処理部２３２は、異常が検出されたのがＡｒｅａ１のＦＲＯＭ側ファームウェア２１１ａであるか否かを判定する（ステップＳ１０６）。この判定は、後述するＦＲＯＭ側の欠陥フラグがＡｒｅａ１にセットされているか否かにより判定される。この処理において、異常が検出されたのがＡｒｅａ１のＦＲＯＭ側ファームウェア２１１ａでないとき（ステップＳ１０６否定）、起動処理部２３１は、処理をステップＳ１０７へ移行する。一方、異常が検出されたのがＡｒｅａ１のＦＲＯＭ側ファームウェア２１１ａであると判定すると（ステップＳ１０６肯定）、起動処理部２３１は、処理をステップＳ１０８へ移行する。
【００５５】
ステップＳ１０７において、起動処理部２３１は、Ａｒｅａ１におけるＦＲＯＭ２１側の格納領域２１０ａに格納されたデータの展開を行う。また、ステップＳ１０８において、起動処理部２３１は、Ａｒｅａ２におけるＦＲＯＭ２１側の格納領域２１０ｂに格納されたデータの展開を行う。そして、ステップＳ１０９において、起動処理部２３１は、ステップＳ１０７またはステップＳ１０８において展開したデータを用いて一次初期化処理を行う。
【００５６】
続いて、起動処理部２３１は、ＳＰＭをオンした後（ステップＳ１１０）、ステップＳ１０９における一次初期化処理がＡｒｅａ１のＦＲＯＭ２１側の格納領域２１０ａを用いて行われたか否かを判定する（ステップＳ１１１）。この処理において、一次初期化処理がＡｒｅａ１のＦＲＯＭ２１側の格納領域２１０ａを用いて行われたと判定すると（ステップＳ１１１肯定）、起動処理部２３１は、Ａｒｅａ１におけるＳＡ１４０側の格納領域１４１ａに格納されたデータの展開を行う（ステップＳ１１２）。一方、一次初期化処理がＡｒｅａ１のＦＲＯＭ２１側の格納領域２１０ａを用いて行われていないとき（ステップＳ１１１否定）、起動処理部２３１は、Ａｒｅａ２におけるＳＡ１４０側の格納領域１４１ｂに格納されたデータの展開を行う（ステップＳ１１３）。
【００５７】
ステップＳ１１２またはステップＳ１１３の処理を終えると、起動処理部２３１は、ＳＡ１４０のデータ展開が正常に終了したか否かを判定する（ステップＳ１１４）。この処理において、ＳＡ１４０のデータ展開が正常に終了していない場合（ステップＳ１１４否定）、切替え処理部２３２は、ＳＡリカバリー処理を行う（ステップＳ１１５）。このＳＡリカバリー処理は、図１２におけるステップＳ３０１〜Ｓ３０９までの処理であり、後述する。
【００５８】
ステップＳ１１５の処理を終えると、切替え処理部２３２は、異常が検出されたのがＡｒｅａ１であるか否かを判定する（ステップＳ１１６）。この判定は、後述するＳＡ側の欠陥フラグがＡｒｅａ１にセットされているか否かにより判定される。この処理において、異常が検出されたのがＡｒｅａ１であると判定すると（ステップＳ１１６肯定）、切替え処理部２３２は、処理をステップＳ１０８へ移行する。一方、異常が検出されたのがＡｒｅａ１ではないとき（ステップＳ１１６否定）、切替え処理部２３２は、処理をステップＳ１０７へ移行する。
【００５９】
一方、ステップＳ１１４において、ＳＡ１４０のデータ展開が正常に終了したと判定すると（ステップＳ１１４肯定）、起動処理部２３１は、ステップＳ１１２またはステップＳ１１３において展開したデータを用いて二次初期化処理を行う（ステップＳ１１７）。そして、起動処理部２３１は、ホスト装置２に対して起動準備が完了した旨を報告し（ステップＳ１１８）、Ｒｅａｄｙ状態となる。
【００６０】
続いて、ステップＳ１０５におけるＦＲＯＭリカバリー処理について、図１１を参照して説明する。図１１は、本実施例にかかるＦＲＯＭリカバリー処理の処理手順を示すフローチャートである。
【００６１】
図１１に示すように、ＦＲＯＭリカバリー処理を開始すると、切替え処理部２３２は、Ａｒｅａ１のＦＲＯＭ側ファームウェア２１１ａが正常であるか否かを判定する（ステップＳ２０１）。この判定は、図１０に示すステップＳ１０２の処理においてＡｒｅａ１のＦＲＯＭ側ファームウェア２１１ａに異常が検出されたか否かにより判定される。この処理において、Ａｒｅａ１のＦＲＯＭ側ファームウェア２１１ａが正常であると判定すると（ステップＳ２０１肯定）、切替え処理部２３２は、Ａｒｅａ２におけるＦＲＯＭ２１側の格納領域２１０ｂの所定領域にＦＲＯＭ側の欠陥フラグをセットする（ステップＳ２０２）。
【００６２】
一方、ステップＳ２０１において、Ａｒｅａ１のＦＲＯＭ側ファームウェア２１１ａが正常でないとき（ステップＳ２０１否定）、切替え処理部２３２は、Ａｒｅａ２のＦＲＯＭ側ファームウェア２１１ｂが正常であるか否かを判定する（ステップＳ２０３）。この判定は、図１０に示すステップＳ１０２の処理においてＡｒｅａ２のＦＲＯＭ側ファームウェア２１１ｂに異常が検出されたか否かにより判定される。この処理において、Ａｒｅａ２のＦＲＯＭ側ファームウェア２１１ｂが正常であると判定すると（ステップＳ２０３肯定）、切替え処理部２３２は、Ａｒｅａ１におけるＦＲＯＭ２１側の格納領域２１０ａの所定領域にＦＲＯＭ側の欠陥フラグをセットする（ステップＳ２０４）。
【００６３】
一方、ステップＳ２０３において、Ａｒｅａ２のＦＲＯＭ側ファームウェア２１１ｂが正常でないとき（ステップＳ２０３否定）、切替え処理部２３２は、内部エラー処理を行い（ステップＳ２０５）、記憶装置１の起動処理においてエラーが発生した旨をホスト装置２に報告した後（ステップＳ２０６）、Ｎｏｔ Ｒｅａｄｙ状態へ移行する。一方、ステップＳ２０２またはステップＳ２０４の処理を終えたとき、切替え処理部２３２は、ＦＲＯＭリカバリー処理を終了する。
【００６４】
続いて、ステップＳ１１５におけるＳＡリカバリー処理について、図１２を参照して説明する。図１２は、本実施例にかかるＳＡリカバリー処理の処理手順を示すフローチャートである。
【００６５】
図１２に示すように、ＳＡ側リカバリー処理を開始すると、切替え処理部２３２は、ＳＡリカバリーモードの実行中であるか否かを判定する（ステップＳ３０１）。この判定は、後述するステップＳ３０７の処理においてＳＡリカバリーモードの開始を示すフラグがセットされているか否かにより判定される。この処理において、ＳＡリカバリーモードの実行中でないとき（ステップＳ３０１否定）、切替え処理部２３２は、処理をステップＳ３０２へ移行する。一方、ＳＡリカバリーモードの実行中であると判定すると、切替え処理部２３２は、処理をステップＳ３０８へ移行する。
【００６６】
ステップＳ３０２において、切替え処理部２３２は、図１０に示すステップＳ１１４において異常が検出されたのがＡｒｅａ１のＳＡ側ファームウェア１４２ａであるか否かを判定する。この処理において、異常が検出されたのがＡｒｅａ１のＳＡ側ファームウェア１４２ａであると判定すると（ステップＳ３０２肯定）、切替え処理部２３２は、Ａｒｅａ１におけるＦＲＯＭ２１側の格納領域２１０ａの所定領域にＳＡ１４０側の欠陥フラグをセットし（ステップＳ３０３）、処理をステップＳ３０５へ移行する。また、異常が検出されたのがＡｒｅａ１のＳＡ側ファームウェア１４２ａでないとき（ステップＳ３０２否定）、切替え処理部２３２は、Ａｒｅａ２におけるＦＲＯＭ２１側の格納領域２１０ｂの所定領域にＳＡ１４０側の欠陥フラグをセットし（ステップＳ３０４）、処理をステップＳ３０６へ移行する。
【００６７】
ステップＳ３０５において、切替え処理部２３２は、Ａｒｅａ２のＦＲＯＭ側ファームウェア２１１ｂが正常であるか否かを判定する。この処理において、Ａｒｅａ２のＦＲＯＭ側ファームウェア２１１ｂが正常であると判定すると（ステップＳ３０５肯定）、切替え処理部２３２は、処理をステップＳ３０７に移行し、Ａｒｅａ２のＦＲＯＭ側ファームウェア２１１ｂが正常でないとき（ステップＳ３０５否定）、処理をステップＳ３０８へ移行する。また、ステップＳ３０６において、切替え処理部２３２は、Ａｒｅａ１のＦＲＯＭ側ファームウェア２１１ａが正常であるか否かを判定する。この処理において、Ａｒｅａ１のＦＲＯＭ側ファームウェア２１１ａが正常であると判定すると（ステップＳ３０６肯定）、切替え処理部２３２は、処理をステップＳ３０７に移行し、Ａｒｅａ１のＦＲＯＭ側ファームウェア２１１ａが正常でないとき（ステップＳ３０６否定）、処理をステップＳ３０８へ移行する。
【００６８】
ステップＳ３０７において、切替え処理部２３２は、ＳＡリカバリーモードの開始を示すフラグをＦＲＯＭ２１における所定の領域にセットし、ＳＡリカバリー処理を終了する。一方、ステップＳ３０８において、切替え処理部２３２は、内部エラー処理を行い、記憶装置１の起動処理においてエラーが発生した旨をホスト装置２に報告した後（ステップＳ３０９）、Ｎｏｔ Ｒｅａｄｙ状態へ移行する。
【００６９】
続いて、本実施例にかかるファームウェア書換え処理について、図１３を参照して説明する。図１３は、本実施例にかかるファームウェア書換え処理の処理手順を示すフローチャートである。
【００７０】
ホスト装置２からファームウェアの更新指示を受けると、書換え処理部２３０は、図１３に示すように、コマンドの初期設定を行い（ステップＳ４０１）、ファームウェアデータのホスト装置２からの転送処理を行う（ステップＳ４０２）。続いて、書換え処理部２３０は、取得したファームウェアデータの正当性を検証した後（ステップＳ４０３）、現在実行中のファームウェアの属するＡｒｅａがＡｒｅａ１であるか否かを判定する（ステップＳ４０４）。この処理において、現在実行中のファームウェアの属するＡｒｅａがＡｒｅａ１であると判定すると（ステップＳ４０４肯定）、書換え処理部２３０は、Ａｒｅａ２のＳＡ側ファームウェア１４１ａの書換えを行う（ステップＳ４０５）。また、現在実行中のファームウェアの属するＡｒｅａがＡｒｅａ２であると判定すると（ステップＳ４０４否定）、書換え処理部２３０は、Ａｒｅａ１のＳＡ側ファームウェア１４１ｂの書換えを行う（ステップＳ４０６）。
【００７１】
続いて、書換え処理部２３０は、ＳＡ側ファームウェアの書換えが成功したか否かを判定する（ステップＳ４０７）。この処理において、ＳＡ側ファームウェアの書換えが成功したと判定すると（ステップＳ４０７肯定）、書換え処理部２３０は、磁気ヘッド１２をアンロードするとともにＳＰＭをオフして（ステップＳ４０８）、処理をステップＳ４０９へ移行する。一方、ＳＡ側ファームウェアの書換えに成功していないとき（ステップＳ４０７否定）、書換え処理部２３０は、処理をステップＳ４１６へ移行する。
【００７２】
ステップＳ４０９において、書換え処理部２３０は、ＳＡ側ファームウェアの書換えが行われたのがＡｒｅａ２であるか否かを判定する。この処理において、ＳＡ側ファームウェアの書換えが行われたのがＡｒｅａ２であると判定すると（ステップＳ４０９肯定）、書換え処理部２３０は、Ａｒｅａ２の起動情報２１２ｂを更新し（ステップＳ４１０）、Ａｒｅａ２のＦＲＯＭ側ファームウェア２１１ｂの書換えを行う（ステップＳ４１１）。一方、ＳＡ側ファームウェアの書換えが行われたのがＡｒｅａ２でないとき（ステップＳ４０９否定）、書換え処理部２３０は、Ａｒｅａ１の起動情報２１２ａを更新し（ステップＳ４１２）、Ａｒｅａ１のＦＲＯＭ側ファームウェア２１１ａの書換えを行う（ステップＳ４１３）。
【００７３】
ステップＳ４１１またはステップＳ４１３の処理を終えると、書換え処理部２３０は、ＦＲＯＭ側ファームウェアの書換えに成功したか否かを判定する（ステップＳ４１４）。この処理において、ＦＲＯＭ側ファームウェアの書換えに成功したと判定すると（ステップＳ４１４肯定）、書換え処理部２３０は、Ｒｅｂｏｏｔ処理を行い（ステップＳ４１５）、ファームウェア書換え処理を終了する。一方、ＦＲＯＭ側ファームウェアの書換えに成功していないとき（ステップＳ４１４否定）、書換え処理部２３０は、内部エラー処理を行い（ステップＳ４１６）、記憶装置１に対してエラー報告をした後（ステップＳ４１７）、ファームウェア書換え処理を終了する。
【００７４】
ところで、上記の実施例で説明した各種の処理は、予め用意されたプログラムを電子機器で実行することによって実現することができる。そこで、以下では、図１４を用いて、上記実施例に示した記憶装置１と同様の機能を有するファームウェア管理プログラムを実行する電子機器の一例を説明する。図１４は、ファームウェア管理プログラムを実行する電子機器を示す図である。
【００７５】
図１４に示すように、電子機器５００は、ＨＤＤ５１０、ＣＰＵ５２０、ＲＯＭ５３０及びＲＡＭ５４０をバス５５０で接続して構成される。
【００７６】
ＲＯＭ５３０には、上記の実施例と同様の機能を発揮するファームウェア管理プログラム、つまり、図１４に示すように、書換えプログラム５３１、起動プログラム５３２、切替えプログラム５３３が予め記憶されている。
【００７７】
そして、ＣＰＵ５２０が、これらのプログラム５３１〜５３３をＲＯＭ５３０から読み出して実行することにより、各プログラム５３１〜５３３は、それぞれ書換えプロセス５２１、起動プロセス５２２及び切替えプロセス５２３として機能する。このように、ＣＰＵ５２０は、図４に示すＭＰＵ２２４に相当する。
【００７８】
なお、ＨＤＤ５１０には、プロセス５２１〜５２３によって利用される各種データが格納されている。ＣＰＵ５２０は、ＨＤＤ５１０に格納された各種データを読み出して、ＲＡＭ５４０に格納し、プロセス５２１〜５２３が、ＲＡＭ５４０に格納された各種データを利用して、ファームウェア書換え処理などの各種処理を実行する。
【００７９】
上述してきたように、本実施例にかかる記憶装置１によれば、ファームウェアの書換えを行う際に、当該書換えの際に実行中のファームウェアに対しては書換えを行わないため、当該書換えに失敗した場合でも、当該書換えを行っていない元のファームウェアに切替えて記憶装置を起動させることができる。また、書換え失敗後に再度書換えを行っても、当該書換えの際に実行中のファームウェアは書換えられないため、複数回の書換え失敗により起動不能になるといった事態が起こることもない。したがって、本実施例にかかる記憶装置１によれば、ファームウェアの書換え失敗による起動不能状態をより確実に防止することができる。
【００８０】
また、本実施例にかかる記憶装置１によれば、ファームウェアの書換え失敗による起動不能状態の防止をタイマや切り替え回路といったハードウェア的な構成を用いることなく実現することができるため、製造コストが高くなるのを防止することができる。
【００８１】
以上、本発明の実施の形態のいくつかを図面に基づいて詳細に説明したが、これらは例示であり、発明の開示の欄に記載の態様を始めとして、当業者の知識に基づいて種々の変形、改良を施した他の形態で本発明を実施することが可能である。
【００８２】
例えば、ファームウェアの書換え後において、新たなファームウェアを実行して記憶装置１を起動できることが確認できた場合（すなわち、ファームウェアの書換えが成功したことが確認できた場合）、起動処理部２３１は、当該新たなファームウェア以外のファームウェアを削除することとしてもよい。これにより、次回のファームウェア書換えの際に、書換え処理部２３０は、ＦＲＯＭ側ファームウェア２１１のイレーズ処理を省略することができるため、ファームウェア書換え処理に要する時間を短縮することができる。なお、新たなファームウェアを実行して記憶装置１を起動できることができるか否かについては、例えば、図１０におけるステップＳ１１４の処理においてＳＡ１４０のデータ展開が正常に終了したと判定することにより確認することができる。
【００８３】
また、本実施例では、最新のファームウェアに異常が検出された場合にも、起動情報２１２の変更等は行わないこととした。そのため、本実施例では、最新のファームウェアに異常が検出された場合、記憶装置１を起動させる度に、最新のファームウェアでの起動→最新のファームウェアの異常検出→旧ファームウェアでの起動といった処理が行われることとなる。そこで、最新のファームウェアに異常が検出された場合は、当該ファームウェアの起動情報２１２を変更することとしてもよい。この起動情報２１２の変更方法としては、例えば、異常が検出された最新のファームウェアの起動情報２１２を切替え処理部２３２により切替えられた旧ファームウェアの起動情報２１２と入れ替えてもよい。また、例えば、起動情報２１２の更新を偶数インクリメントとし（例えば、ファームウェアの書換えを行う毎に「２」→「４」→「６」→「８」と更新していく。）、ファームウェアに異常が検出された場合は、当該ファームウェアの起動情報２１２の値を１だけ減算する。そして、記憶装置１を起動する際、起動処理部２３１は、最も大きい値を示す起動情報２１２が奇数である場合には、その１つ下の値を示す起動情報２１２に対応するファームウェアで記憶装置１を起動させてもよい。
【００８４】
また、本実施例において、起動情報２１２は、ファームウェアの書換えを行った回数で表されることとしたが、最後に書換えが行われたことを示すフラグであってもよい。ただし、この場合、書換え処理部２３０は、起動情報の更新を行う際、ファームウェアの書換えを行ったＡｒｅａの起動情報だけでなく、書換えを行っていないＡｒｅａの起動情報も更新する必要がある。
【００８５】
また、本実施例では、起動情報２１２に基づき記憶装置１の起動に用いるファームウェアを決定することとしたが、記憶装置１の起動に用いるファームウェアをユーザに選択させてもよい。これにより、複数世代のファームウェアについての評価・検証を行う場合であっても、毎回のファームウェア書換え処理が不要となり、書換えに伴うＮｏｔ Ｒｅａｄｙ状態の発生を低下させることができる。
【符号の説明】
【００８６】
１  記憶装置
２  ホスト装置
１０  ＤＥ
１１  記憶媒体
１２  磁気ヘッド
１３  ＶＣＭ
１４  ＨＤＩＣ
２０  ＰＣＡ
２１  ＦＲＯＭ
２２  ＳｏＣ
２３  ＤＲＡＭ
２４  ＳＶＣ
１４０  ＳＡ
１４１ａ，１４１ｂ  格納領域（ＳＡ側）
１４２ａ，１４２ｂ  ＳＡ側ファームウェア
２１０ａ，２１０ｂ  格納領域（ＦＲＯＭ側）
２１１ａ，２１１ｂ  ＦＲＯＭ側ファームウェア
２１２ａ，２１２ｂ  起動情報
２２２  ＳＲＡＭ
２２３  ＭＲＯＭ
２２４  ＭＰＵ
２３０  書換え処理部
２３１  起動処理部
２３２  切替え処理部
【図１−１】
2010170197.tif 000003
【図１−２】
2010170197.tif 000004
【図１−３】
2010170197.tif 000005
【図２】
2010170197.tif 000006
【図３】
2010170197.tif 000007
【図４】
2010170197.tif 000008
【図５】
2010170197.tif 000009
【図６】
2010170197.tif 000010
【図７】
2010170197.tif 000011
【図８】
2010170197.tif 000012
【図９】
2010170197.tif 000013
【図１０】
2010170197.tif 000014
【図１１】
2010170197.tif 000015
【図１２】
2010170197.tif 000016
【図１３】
2010170197.tif 000017
【図１４】
2010170197.tif 000018
【図１５】
2010170197.tif 000019
【図１６】
2010170197.tif 000020