JP2008084291A - 記憶装置、制御方法及び制御装置 - Google Patents

記憶装置、制御方法及び制御装置 Download PDF

Info

Publication number
JP2008084291A
JP2008084291A JP2007090976A JP2007090976A JP2008084291A JP 2008084291 A JP2008084291 A JP 2008084291A JP 2007090976 A JP2007090976 A JP 2007090976A JP 2007090976 A JP2007090976 A JP 2007090976A JP 2008084291 A JP2008084291 A JP 2008084291A
Authority
JP
Japan
Prior art keywords
firmware
disk medium
nonvolatile memory
stored
volatile memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2007090976A
Other languages
English (en)
Inventor
Hiroo Iima
博生 飯間
Koji Tsurumi
浩司 鶴見
Masataka Shidara
昌孝 設楽
Katsushi Ota
克志 太田
Tadaaki Tamura
匡章 田村
Yasuyuki Nagashima
康之 長嶋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2007090976A priority Critical patent/JP2008084291A/ja
Priority to US11/881,002 priority patent/US7818556B2/en
Publication of JP2008084291A publication Critical patent/JP2008084291A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1433Saving, restoring, recovering or retrying at system level during software upgrading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1417Boot up procedures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space

Abstract

【課題】ファームウェア更新中にエラーがあっても、その後の電源投入時に確実に起動できるようにして信頼性の高める。
【解決手段】ファームウェアFW1,FW2を、起動用のブートコード74及び復旧コード76を格納した不揮発メモリ32と第1磁気ディスク20−1に分けて格納する。不揮発メモリ32に格納したファームウェアFW1のコピーを第1磁気ディスク20−1に格納し、更に、第1ディスク媒体に格納したファームウェアFW1,FW2全体のコピーを第2磁気ディスク20−2に格納する。ファームウェア更新中にエラーが発生した場合、次の電源投入時に、揮発メモリ30、第1磁気ディスク20−1、及び第2磁気ディスク20−2が正常か異常かを判定し、判定内容に応じた起動モードにより揮発メモリ30に有効なファームウェアを読出し配置して起動させる。
【選択図】 図10

Description

本発明は、ホストからの更新要求によりデータを記録再生するドライブ制御ソフトウェアであるファームウェアをダウンロードして更新する記憶装置、制御方法、及び制御装置に関し、特に、装置の稼動状態でホストからの新ファームウェアをダウンロードして装置側の旧ファームウェアを更新する記憶装置、制御方法、及び制御装置に関する。
従来、ドライブ制御ソフトウェアとして磁気ディスク装置のコントローラに実装されたファームウェアについては、ユーザに装置を出荷した後の運用中にあっても、その後に発生した様々な要因に対する対応策を講ずることでバージョンアップされており、逐次、新バージョンのファームウェアをダウンロードして更新するようにしている。
このような磁気ディスク装置におけるファームウェアの更新は、磁気ディスク装置1台ごとに行う必要があり、例えばホストに対しサブシステムとして接続されたディスクアレイシステムにあっては、ディスクアレイに実装されている多数の磁気ディスク装置に対し、ホストから新バージョンのファームウェアを装置側に転送してダウンロードし、装置内部でファームウェアの更新を実行させている。
従来の磁気ディスク装置にあっては、装置内に設けた不揮発メモリであるフラッシュメモリと磁気ディスクとに分けてファームウェアを格納しており、装置を起動すると、フラッシュメモリの先頭位置に記憶されたブートコードを実行してフラッシュメモリ内のファームウェア及び磁気ディスク媒体のファームウェアを読み出して揮発メモリであるバッファメモリとSRAMに書き込み、CPUにより実行して磁気ディスク媒体に対するデータの記録再生を実行している。
このような磁気ディスク装置に対する従来のファームウェアの更新処理は次の手順で行っている。
(1)ホストから磁気ディスク装置に新バージョンの新ファームウェアを転送し、バッファメモリに格納する(ファームウェアダウンロード)。
(2)SRAMに展開している旧バージョンの旧ファームウェアを、バッファメモリに格納した新ファームウェアで上書きし、新バージョンのファームウェアに切り替える。
(3)切替え後に、新バージョンのファームウェアの対応する部分をフラッシュメモリ及び磁気ディスク媒体のファームウェア格納領域に書き込んで更新する。
(4)更新終了をホストに通知し、ホストとの接続を切離す。
特許第2972742号公報 特開2006−072761号公報 特開2001−100987号公報
しかしながら、このような従来のファームウェア更新方法にあっては、フラッシュROM及び磁気ディスク媒体に対するファームウェアの更新中にエラーが発生してデータが破壊された場合や、フラッシュROMの更新直後にエラーにより処理が中断して磁気ディスク媒体のファームウェアが更新できなかった場合、次に電源を再投入した際にフラッシュROMの診断エラーが発生し、ファームウェアが起動できず、装置が使用不能となる問題がある。
本発明は、ファームウェア更新中にエラーがあっても、その後の電源投入時に確実に起動できるようにした信頼性の高い記憶装置、制御方法及び制御装置を提供することを目的とする。
(装置)
本発明はディスク媒体に対しデータを記録再生する記憶装置を提供する。本発明の記憶装置は、
ディスク媒体に対しデータを記録再生するドライブ制御ソフトウェアであるファームウェアを、起動コード及び復旧コードを格納した不揮発メモリと第1ディスク媒体に分けて格納すると共に、不揮発メモリに格納したファームウェアのコピーを第1ディスク媒体に格納し、更に、第1ディスク媒体に格納したファームウェア全体のコピーを第2ディスク媒体に格納するファームウェア格納処理部と、
電源投入時に、不揮発メモリが正常な場合に起動コードに基づいて不揮発メモリと第1ディスク媒体のファームウェアを揮発メモリに読出し配置して起動する第1起動モード、第1起動モードで第1ディスク媒体が異常な場合に不揮発メモリと第2ディスク媒体のファームウェアを揮発メモリに読出し配置して起動する第2起動モード、不揮発メモリが異常な場合に復旧コードに基づいて第1ディスク媒体からファームウェア全体を揮発メモリに読出し配置して起動する第3起動モード、又は第3起動モードで第1ディスク媒体が異常な場合に第2ディスク媒体からファームウェア全体を揮発メモリに読出し配置して起動する第4起動モードのいずれかを実行する起動処理部と、
を備えたことを特徴とする。
更に本発明の記憶装置は、上位装置から前記ファームウェアの更新要求を受けた際に、揮発メモリに配置されている旧ファームウェアを上位装置から転送された新ファームウェアに切り替えて実行した後に、揮発メモリの新ファームウェアを第1ディスク媒体、不揮発メモリ及び第2ディスク媒体の順番に書き込んで更新するファームウェア更新処理部を備えたことを特徴とする。
本発明の記憶装置は、更に、バックグラウンド処理により動作するリカバリー処理部を設け、リカバリー処理部は、起動処理部が第1起動モードで起動した場合に第1ディスク媒体のファームウェアを第2ディスク媒体にコピーし、起動処理部が第2起動モードで起動した場合は第2ディスク媒体のファームウェアを第1ディスク媒体にコピーすることを特徴とする。
リカバリー処理部は、更に、起動処理部が第3起動モードで起動した場合に第1ディスク媒体のファームウェアを第2ディスク媒体にコピーし、起動処理部が第4起動モードで起動した場合は第2ディスク媒体のファームウェアを第1ディスク媒体にコピーする。
起動処理部は、
第1乃至第4起動モードでは、不揮発メモリについて、格納したファームウェアの正当性の確認を行ない正常と判断し、そうでない場合は異常と判断し、
第1又は第2起動モードでは、第1ディスク媒体及び第2ディスク媒体について、格納したファームウェアが読出し可能で、正当であり、更にバージョンが不揮発メモリのファームウェアと同一な場合に正常と判断し、そうでない場合は異常と判断し、
第3又は第4起動モードでは、第1ディスク媒体及び第2ディスク媒体について、格納したファームウェアが読出し可能で、且つ正当性の確認を行ない正常と判断し、そうでない場合は異常と判断する。
ファームウェア更新処理部は、
バッファメモリに格納した新ファームウェアを揮発メモリに配置されている旧ファームウェアに上書きして更新した後に装置を起動して新ファームウェアの処理に切り替え、
切り替え後の新ファームウェアの実行により前記上位装置に更新終了を通知し、
揮発メモリの新ファームウェアをバックグラウンド処理により第1ディスク媒体、不揮発メモリ及び第2ディスク媒体の順番に書き込んで更新する。
(方法)
本発明はデータを記録再生する記憶装置の制御方法を提供する。本発明による記憶装置の制御方法は、
ディスク媒体に対しデータを記録再生するドライブ制御ソフトウェアであるファームウェアを、起動コード及び復旧コードを格納した不揮発メモリと第1ディスク媒体に分けて格納すると共に、不揮発メモリに格納したファームウェアのコピーを前記第1ディスク媒体に格納し、更に、第1ディスク媒体に格納したファームウェア全体のコピーを第2ディスク媒体に格納するファームウェア格納処理ステップと、
電源投入時に、不揮発メモリが正常な場合に起動コードに基づいて不揮発メモリと第1ディスク媒体のファームウェアを揮発メモリに読出し配置して起動する第1起動モード、第1起動モードで第1ディスク媒体が異常な場合に不揮発メモリと第2ディスク媒体のファームウェアを揮発メモリに読出し配置して起動する第2起動モード、不揮発メモリが異常な場合に復旧コードに基づいて第1ディスク媒体からファームウェア全体を揮発メモリに読出し配置して起動する第3起動モード、又は第3起動モードで第1ディスク媒体が異常な場合に第2ディスク媒体からファームウェア全体を揮発メモリに読出し配置して起動する第4起動モードのいずれかを実行する起動処理ステップと、
を備えたことを特徴とする。
本発明による記憶装置の制御方法は、更に、上位装置からファームウェアの更新要求を受けた際に、揮発メモリに配置されている旧ファームウェアを上位装置から転送された新ファームウェアに切り替えて実行した後に、揮発メモリの新ファームウェアを第1ディスク媒体、不揮発メモリ及び第2ディスク媒体の順番に書き込んで更新するファームウェア更新処理ステップを備えたことを特徴とする。
(制御装置)
本発明はデータを記録再生する記憶装置の制御装置を提供する。本発明による記憶装置の制御装置は、
ディスク媒体に対しデータを記録再生するドライブ制御ソフトウェアであるファームウェアを、起動コード及び復旧コードを格納した不揮発メモリと第1ディスク媒体に分けて格納すると共に、不揮発メモリに格納したファームウェアのコピーを第1ディスク媒体に格納し、更に、第1ディスク媒体に格納したファームウェア全体のコピーを第2ディスク媒体に格納するファームウェア格納処理部と、
電源投入時に、不揮発メモリが正常な場合に起動コードに基づいて不揮発メモリと第1ディスク媒体のファームウェアを揮発メモリに読出し配置して起動する第1起動モード、第1起動モードで第1ディスク媒体が異常な場合に不揮発メモリと第2ディスク媒体のファームウェアを揮発メモリに読出し配置して起動する第2起動モード、不揮発メモリが異常な場合に復旧コードに基づいて第1ディスク媒体からファームウェア全体を揮発メモリに読出し配置して起動する第3起動モード、又は第3起動モードで第1ディスク媒体が異常な場合に第2ディスク媒体からファームウェア全体を揮発メモリに読出し配置して起動する第4起動モードのいずれかを実行する起動処理部と、
を備えたことを特徴とする。
本発明による記憶装置の制御装置は、更に、上位装置からファームウェアの更新要求を受けた際に、揮発メモリに配置されている旧ファームウェアを上位装置から転送された新ファームウェアに切り替えて実行した後に、揮発メモリの新ファームウェアを第1ディスク媒体、不揮発メモリ及び第2ディスク媒体の順番に書き込んで更新するファームウェア更新処理部を備えたことを特徴とする。
(不揮発メモリなしの装置)
本発明は、ファームウェアを格納する不揮発メモリを持たない記憶装置を提供する。本発明の記憶装置は、
ディスク媒体に対しデータを記録再生するドライブ制御ソフトウェアであるファームウェアを、起動コード及び復旧コードを格納した第1ディスク媒体に格納すると共に、第1ディスク媒体に格納したファームウェアのコピーを第2ディスク媒体及び第3ディスク媒体の各々に格納するファームウェア格納処理部と、
電源投入時に、
第1ディスク媒体が正常な場合に起動コードに基づいて第1ディスク媒体と第2ディスク媒体のファームウェアを揮発メモリに読出し配置して起動する第1起動モード、
第1起動モードで第2ディスク媒体が異常な場合に第1ディスク媒体と第2ディスク媒体のファームウェアを揮発メモリに読出し配置して起動する第2起動モード、又は
第2起動モードで第2ディスク媒体が異常な場合に第3ディスク媒体からファームウェア全体を揮発メモリに読出し配置して起動する第3起動モードのいずれかを実行する起動処理部と、
上位装置からファームウェアの更新要求を受けた際に、揮発メモリに配置されている旧ファームウェアを上位装置から転送された新ファームウェアに切り替えて実行した後に、揮発メモリの新ファームウェアを第1ディスク媒体、第2ディスク媒体及び第3ディスク媒体の順番に書き込んで更新するファームウェア更新処理部と、
を備えたことを特徴とする。
更に本発明の記憶装置は、更に、バックグラウンド処理により動作するリカバリー処理部を設け、リカバリー処理部は、
起動処理部が第1起動モードで起動した場合は第1ディスク媒体のファームウェアを第2ディスク媒体及び第3ディスク媒体にコピーし、
起動処理部が第2起動モードで起動した場合は第2ディスク媒体のファームウェアを第3ディスク媒体及び第1ディスク媒体にコピーし、
起動処理部が第3起動モードで起動した場合は第3ディスク媒体のファームウェアを第1ディスク媒体及び第1ディスク媒体にコピーする。
(磁気ディスクの初期更新)
本発明の別の形態にあっては、不揮発メモリとディスク媒体にファームウェアを格納し、新ファームウェアの更新について、ディスク媒体を更新してからバックグランドで不揮発メモリを更新するようにした記憶装置を提供する。
本発明の記憶装置は、
ディスク媒体に対しデータを記録再生するドライブ制御ソフトウェアであるファームウェアを、起動コード及び復旧コードを格納した不揮発メモリとディスク媒体に分けて格納すると共に、不揮発メモリに格納したファームウェアのコピーを前記ディスク媒体に格納するファームウェア格納処理部と、
電源投入時に、不揮発メモリが正常な場合に起動コードに基づいて不揮発メモリとディスク媒体のファームウェアを揮発メモリに読出し配置して起動する第1起動モード、又は第1起動モードで不揮発メモリが異常な場合に復旧コードに基づいてディスク媒体からファームウェア全体を揮発メモリに読出し配置して起動する第2起動モードのいずれかを実行する起動処理部と、
上位装置からファームウェアの更新要求を受けた際に、バッファメモリに格納した新ファームウェアをディスク媒体に書き込んで更新した後に不揮発メモリの旧ファームウェアを破壊し、揮発メモリに配置されている旧ファームウェアを新ファームウェアに切り替えて実行した後に上位装置内に更新終了を通知し、その後、揮発メモリの新ファームウェアをバックグラウンド処理により不揮発メモリに書き込んで更新するファームウェア更新部と、
を備えたことを特徴とする。
本発明の別の形態にあっては、不揮発メモリ、第1ディスク媒体及び第2ディスク媒体にファームウェアを格納し、新ファームウェアの更新について、第1ディスク媒体を更新してからバックグランドで不揮発メモリ及び第2ディスク媒体を更新するようにした記憶装置を提供する。
本発明の記憶装置は、
ディスク媒体に対しデータを記録再生するドライブ制御ソフトウェアであるファームウェアを、起動コード及び復旧コードを格納した不揮発メモリと第1ディスク媒体に分けて格納すると共に、不揮発メモリに格納したファームウェアのコピーを第1ディスク媒体に格納し、更に、前記第1ディスク媒体に格納したファームウェア全体のコピーを第2ディスク媒体に格納するファームウェア格納処理部と、
電源投入時に、
不揮発メモリが正常な場合に起動コードに基づいて不揮発メモリとディスク媒体のファームウェアを揮発メモリに読出し配置して起動する第1起動モード、
第1起動モードで不揮発メモリが異常な場合に復旧コードに基づいて第1ディスク媒体からファームウェア全体を揮発メモリに読出し配置して起動する第2起動モード、又は、
第2起動モードで第1ディスク媒体が異常な場合に第2ディスク媒体からファームウェア全体を揮発メモリに読出し配置して起動する第3起動モード、
のいずれかを実行する起動処理部と、
上位装置からファームウェアの更新要求を受けた際に、バッファメモリに格納した新ファームウェアを第1ディスク媒体に書き込んで更新した後に不揮発メモリの旧ファームウェアを破壊し、揮発メモリに配置されている旧ファームウェアを新ファームウェアに切り替えて実行した後に上位装置に更新終了を通知し、その後、第1ディスク媒体の新ファームウェアをバックグラウンド処理により不揮発メモリ及び第2ディスク媒体の順番に書き込んで更新するファームウェア更新部と、
を備えたことを特徴とする。
本発明によれば、フラッシュROMなどの不揮発メモリと第1ディスク媒体とに分けて格納したファームウェアに加え、第1ディスク媒体と第2ディスク媒体の各々にファームウェア全体のコピーを格納し、上位装置から新ファームウェアがダウンロードされた際に、第1ディスク媒体、不揮発メモリ及び第2ディスク媒体の順番に更新し、この更新中にエラーが発生していたとしても、起動コードに基づく不揮発メモリと第1ディスク媒体又は第2ディスク媒体との組合せによるファームウェアの読出し配置、或いは不揮発メモリに診断エラーがあったときの復旧コードに基づく第1ディスク媒体又は第2ディスク媒体からのファームウェア全体の読出し配置により、不揮発メモリ、第1ディスク媒体及び第2ディスク媒体に格納している一部のファームウェアにデータ破壊や未更新部分があっても、確実に更新済みのファームウェアにより装置を起動することができ、ファームウェア更新中のエラーにより、それ以降の電源投入時に起動ができずに使用不可となってしまうことを確実に防止し、信頼性を高めることができる。
本発明の別の実施形態にあっては、上位装置からファームウェア更新コマンドを受けた際に、まずディスク媒体を新ファームウェアに更新した後に不揮発メモリの旧ファームウェアの一部を破壊し、新ファームウェアの実行に切替えた後にコマンド終了を上位装置に通知し、その後、バックグラウンドで不揮発メモリを新ファームウェアに更新するようにしたことで、更新コマンドが正常に終了した直後に、装置の電源が切られて不揮発メモリが更新されていなくても、次の電源投入時には、不揮発メモリの旧ファームウェアは更新処理に伴う一部破壊で必ず異常となり、そのため復旧コードの実行によりディスク媒体の新ファームウェアが揮発メモリに読出し配置され、新ファームウェアで起動することができる。
また本発明の別の形態にあっては、ファームウェア更新コマンドによりディスク媒体への書込みが失敗した場合、コマンドを異常終了できるため、上位装置は記憶装置の異常を早期に検出し、必要な対応措置をとることができる。
図1は本発明が適用される磁気ディスク装置のブロック図である。図1において、ハードディスクドライブ(HDD)として知られた磁気ディスク装置10は、ディスクエンクロージャ12と制御ボード14で構成される。ディスクエンクロージャ12にはスピンドルモータ16が設けられ、スピンドルモータ16の回転軸にディスク媒体として磁気ディスク20−1,20−2を装着し、一定時間例えば4200rpmで回転させる。
またディスクエンクロージャ12にはボイスコイルモータ18が設けられ、ボイスコイルモータ18はロータリアクチュエータ25のアーム先端にヘッド22−1〜22−4を搭載しており、磁気ディスク20−1,20−2の記録面に対するヘッドの位置決めを行う。
ヘッド22−1〜22−2にはライトヘッド素子とリードヘッド素子が一体化されて搭載されている。また磁気ディスク20−1,20−2に対するヘッド22−1〜22−4による磁気記録方式としては、長手磁気記録方式または垂直磁気記録方式にいずれであっても良い。
ヘッド22−1,22−2はヘッドIC24に対し信号線接続されており、ヘッドIC24は上位装置となるホストからのライトコマンドまたはリードコマンドに基づくヘッドセレクト信号で1つのヘッドを選択して書込みまたは読出しを行う。またヘッドIC24には、ライト系についてはライトドライバが設けられ、リード系についてはプリアンプが設けられている。
制御ボード14にはMPU26が設けられ、MPU26のバス28に対し、装置の起動時に、制御コードと変数を含むドライブ制御ソフトウェアであるファームウェアが展開されるSRAMなどを用いた揮発メモリ30、起動コードであるブートコード及び揮発メモリ30に展開するファームウェアを格納するフラッシュROM等を用いた不揮発メモリ32が設けられている。なお、本実施形態にあっては、ファームウェアは不揮発メモリ32と例えば磁気ディスク20−1とに分けて格納されている。
またMPU26のバス28には、ホストインタフェース制御部34、SDRAMなどを用いたバッファメモリ38を制御するバッファメモリ制御部36、フォーマットとして機能するハードディスクコントローラ40、ライト変調部及びリード復調部として機能するリードチャネル42、ボイスコイルモータ18及びスピンドルモータ16を制御するモータ駆動制御部44が設けられている。
更に、制御ボード12に設けたMPU26、メモリ30、不揮発メモリ32、ホストインタフェース制御部34、バッファメモリ制御部36、ハードディスクコントローラ40及びリードチャネル42は制御回路15を構成しており、制御回路15は1つのLSI回路として実現されている。
本実施形態において、バッファメモリ38の一部の領域はMPU26のダイレクトアクセス領域に割当られており、装置の起動時に、ダイレクトアクセス領域に不揮発メモリ30及び磁気ディスク20−1から読み出したファームウェアの一部を書き込んで配置する。
磁気ディスク装置10は、ホストからのコマンドに基づきファームウェアの制御コードの実行により書込処理及び読出処理を行う。ここで、磁気ディスク装置における通常の動作を説明すると次のようになる。
ホストからのライトコマンドとライトデータをホストインタフェース制御部34で受けると、ライトコマンドをMPU26で解読し、受信したライトデータを必要に応じてバッファメモリ38に格納した後、ハードディスクコントローラ40で所定のデータ形式に変換すると共にECC符号化処理によりECC符号を付加し、リードチャネル42におけるライト変調系でスクランブル、RLL符号変換、更に書込補償を行った後、ライトアンプからヘッドIC24を介して選択した例えばヘッド22−1のライトヘッドからディスク媒体20−1に書き込む。
このときMPU26からDSPなどを用いたモータ駆動制御部44にヘッド位置決め信号が与えられており、ボイスコイルモータ18によりヘッドをコマンドで指示された目標トラックにシークした後にオントラックしてトラック追従制御を行っている。
一方、ホストからのリードコマンドをホストインタフェース制御部34で受けると、リードコマンドをMPU26で解読し、ヘッドIC24のヘッドセレクトで選択されたリードヘッドから読み出された読出信号をプリアンプで増幅した後に、リードチャネル42のリード復調系に入力し、パーシャルレスポンス最尤検出(PRML)などによりリードデータを復調し、ハードディスクコントローラ40でECC復号処理を行ってエラーを訂正した後、バッフメモリ38にバッファリングし、ホストインタフェース制御部34からリードデータをホストに転送する。
図2は本実施形態の磁気ディスク装置を複数設けたディスクアレイ装置のブロック図である。図2において、ディスクアレイ装置56には、2系統に分けてチャネルアダプタ58−11,58−12とチャネルアダプタ58−21,58−22が設けられており、サーバなどのホスト55−1,55−2を接続している。
またディスクアレイ装置56には二重化された制御モジュール60−1,60−2が設けられている。制御モジュール60−1,60−2に対してはディスクエンクロージャ62−1,62−2が設けられ、それぞれ図1に示したと同じ磁気ディスク装置10−11〜10−15及び10−21〜10−25を設けている。
ディスクエンクロージャ62−1,62−2の各5台の磁気ディスク装置10−11〜10−15,10−21〜10−25は、所定のRAIDレベル例えばRAID1あるいはRAID5といったRAID構成によるディスクアレイを構成している。
制御モジュール60−1,60−2には、CPU66−1,66−2、DMAコントローラ64−1,64−2、メモリ68−1,68−2、デバイスインタフェース70−11,70−12,70−21,70−22が設けられている。
ディスクアレイ装置56はホスト55−1,55−2からの入出力要求に応じてディスクエンクロージャ62−1,62−2に設けている磁気ディスク装置10−11〜10−15,10−21〜10−25に対するリード処理およびライト処理を実行する。
再び図1を参照するに、制御ボード14上のMPU26には、プログラム制御により実現される機能として、ファームウェア格納処理部46、起動処理部48、ファームウェア更新処理部50、及びリカバリー処理部52の機能が設けられている。
ファームウェア格納処理部46は、本実施形態の磁気ディスク装置10の製造工程で不揮発メモリ32にダウンロードしたプログラムの実行により実現される機能であり、格納処理が済めば、そのプログラムは不揮発メモリ32から削除される。
ファームウェア格納処理部46は、本実施形態の磁気ディスク装置10において、磁気ディスク20−1〜20−2に対しデータを記録再生するためのドライブ制御ソフトであるファームウェアを、フラッシュROMを使用した不揮発メモリ32と例えば第1磁気ディスク20−1に分けて格納すると共に、不揮発メモリ32に格納したファームウェアのコピーを第1磁気ディスク20−1に格納し、更に第1磁気ディスク20−1に格納したファームウェア全体のコピーを別の第2磁気ディスク20−2に格納する。以下、磁気ディスク20−1を第1磁気ディスクといい、磁気ディスク20−2を第2磁気ディスクという。
図3は図1のファームウェア格納処理部46によるファームウェアの格納状態であり、図1の実施形態におけるバッファメモリ38、揮発メモリ30、不揮発メモリ32及び第1磁気ディスク20−1,第2磁気ディスク20−2を取り出して示している。
不揮発メモリ32の先頭位置には起動用のブートコード74が格納され、その後ろのファームウェア格納領域72−1にファームウェアの一部分であるファームウェアFW1を格納している。更に不揮発メモリ32には、電源投入時の不揮発メモリ32の診断エラーが発生してブートコード74により起動できなくなった際に起動処理を行う復旧コード76を格納している。
第1磁気ディスク20−1のファームウェア格納領域72−2には、不揮発メモリ32のファームウェアFW1と組み合わせて1つのファームウェアを構成する部分となるファームウェアFW2が格納されている。
ここで、ファームウェアFW1は装置を起動してからドライブレディ状態になるまでに必要な処理とし、ファームウェアFW2はドライブレディ後の動作可能になる処理としている。
これに加え本実施形態にあっては、第1磁気ディスク20−1のファームウェア格納領域72−3に不揮発メモリ32のファームウェアFW1のコピーを格納している。このため、第1磁気ディスク20−1のファームウェア格納領域72−2,72−3には部分的なファームウェアFW1,FW2が格納されることで、ファームウェア全体を格納している。
更に第2磁気ディスク20−2にはファームウェア格納領域72−4,72−5が設けられ、ここに第1磁気ディスク20−1のファームウェアFW2,FW1のコピーを格納している。
磁気ディスク装置の電源投入時にあっては、不揮発メモリ32の先頭のブートコード74がMPU26により読み出されて実行されることで、不揮発メモリ32のファームウェアFW1と第1磁気ディスク20−1のファームウェアFW2が読み出されて、バッファメモリ38及び揮発メモリ30に配置される。
本実施形態にあっては、揮発メモリ30にファームウェア配置領域78−1を設けると同時に、バッファメモリ38側にMPU26のダイレクトアクセス領域を確保して、ここをファームウェア配置領域78−1として使用しており、揮発メモリ30の容量不足をバッファメモリ38の一部を使用することで補っている。
この例では不揮発メモリ32のファームウェアFW1はファームウェアFW11〜FW16に分割されており、分割したファームウェアFW11,FW12がバッファメモリ38に読出し配置され、残りの分割したファームウェアFW13〜FW16が揮発メモリ30に読出し配置され、更に第1磁気ディスク20−1のファームウェアFW2が不揮発メモリ32に読出し配置されている。
本実施形態のドライブ制御ソフトウェアであるファームウェアFW1,FW2は、図1のホストインタフェース制御部34、バッファメモリ制御部36、ハードディスクコントローラ40、リードチャネル42、モータ駆動制御部44及びヘッドIC24のそれぞれを制御するための制御コード及び変数で構成されている。
またファームウェアFW1,FW2の内、揮発メモリ30のファームウェア格納領域78−1には、処理時間を短くする必要のある制御コード及び参照頻度の高い変数を配置し、バッファメモリ38のファームウェア格納領域78−1には、性能確保には直接関係しない試験用コードやセルフテストコード、及び参照頻度の低い変数、更にはバッファに置かなくてはならないデータを配置している。
図4は説明の都合上、図3のファームウェアFW1,FW2の読出し配置を揮発メモリ30に対してのみ行うようにした説明図であり、実際の装置にあってはファームウェアの一部を図3のようにバッファメモリ38に配置するが、以下の説明にあっては説明を簡単にするため、図4のようにファームウェアは全て揮発メモリ30に読出し配置するものとして説明する。
再び図1を参照するに、MPU26に設けた起動処理部48は、電源投入時に、第1起動モード、第2起動モード、第3起動モード又は第4起動モードのいずれかで起動する。
第1起動モードは、不揮発メモリ30が正常な場合にブートコード74に基づいて不揮発メモリ32と第1磁気ディスク20−1のファームウェアを揮発メモリ30に読出し配置して起動する。
第2起動モードは、第1起動モードで第1磁気ディスク20−1が異常な場合に不揮発メモリ32と第2磁気ディスク20−2のファームウェアを揮発メモリ30に読出し配置して起動する。
第3起動モードは、不揮発メモリ32が異常な場合に復旧コード76に基づいて第1磁気ディスク20−1からファームウェア全体を揮発メモリ30に読出し配置して起動する。
第4起動モードは、第3起動モードで第1磁気ディスク20−1が異常な場合に第2磁気2ディスク20−2からファームウェア全体を揮発メモリ30に読出し配置して起動する。
更に起動処理部48を詳細に説明すると次のようになる。電源投入時には、不揮発メモリ32に格納されているBIOS相当の機能をもつ起動プログラムによる各デバイスの初期化と診断が行われ、不揮発メモリ32についても、格納したファームウェアの例えばチェックサムを診断する。
不揮発メモリ32の診断で診断エラーとならずに正常な場合、起動処理部48は第1起動モードとなり、ブートコード74の実行により図4のように不揮発メモリ32のファームウェアFW1と第1磁気ディスク20−1のファームウェアFW2を読み出して揮発メモリ30のファームウェア格納領域78に配置し、MPU26により実行する。
ここ第1磁気ディスク20−1からのファームウェアFW2の読出し配置は、磁気ディスク20−1のファームウェアが正常であることを条件に行う。このためファームウェアFW2を読出し配置する前に、第1磁気ディスク20−1について次のチェックを行う。
(1)格納したファームウェアが読出し可能か。
(2)チェックサムが正しいか。
(3)格納しているファームウェアのバージョンが不揮発メモリ32のファームウェアと同一か。
この(1)〜(3)の全てクリアできれば正常と判断し、ひとつでもクリアできない場合は異常と判断する。
図4の第1起動モードで第1磁気ディスク20−1につき異常を判定した場合は、図5に示す第2起動モードとする。第2起動モードは、第1磁気ディスク20−1にエラーがあって異常と判定されていることから、この場合には、第2磁気ディスク20−2が正常であることを条件に、不揮発メモリ32と第2磁気ディスク20−2の組合わせでファームウェアFW1,FW2を読み出して揮発メモリ30に配置して実行する。
電源投入時に、図6に示すように、不揮発メモリ32のファームウェアFW1のチェックサムがエラー81となった場合、起動処理部48は第3起動モードで起動する。第3起動モードは、不揮発メモリ32が診断エラーにより異常と判定されたことから、ブートコード74による起動処理ができず、この場合は、本実施形態で新たに設けている復旧コード76を実行することによる復旧処理82を行う。
復旧コード76に基づく復旧処理82は、第1磁気ディスク20−1が正常であることを条件に、第1磁気ディスク20−1からファームウェアFW1,FW2を読み出して揮発メモリ30に配置して実行する。
この第3起動モードにおける磁気ディスクのチェックは、
(1)格納したファームウェアが読出し可能か。
(2)チェックサムが正しいか。
をクリアすれば正常、そうでなければ異常と判定する。
第3起動モードにおける第1磁気ディスク20−1のチェックで図5に示すようにエラー80が存在して異常と判定された場合、起動処理部48は第4起動モードで起動する。第4起動モードは、第2磁気ディスク20−2が正常であることを条件に、復旧コード76に基づく復旧処理82により磁気ディスク20−2のファームウェアFW1,FW2を読み出して揮発メモリ30に展開する。
次に図1のMPU26に設けたリカバリー処理部52を説明する。リカバリー処理部52は、起動処理部48が図4の第1起動モードで起動した場合、図8に示すように、起動に使用した第1磁気ディスク20−1のファームウェアを第2磁気ディスク20−1にコピーし、二重化して保存している第1磁気ディスク20−1,第2磁気ディスク20−2のファームウェアの同一性を保証する。
またリカバリー処理部52は、起動処理部48が図5の第2起動モードで起動した場合には、図9に示すように、起動に使用した第2磁気ディスク20−2のファームウェアを第1磁気ディスク20−2にコピーし、二重化して保存している第1磁気ディスク20−1,第2磁気ディスク20−2のファームウェアの同一性を保証する。
更に、リカバリー処理部52は、起動処理部48が図6の第3起動モードで起動した場合、第1起動モードと同様に、図8に示すように、起動に使用した第1磁気ディスク20−1のファームウェアを第2磁気ディスク20−2にコピーし、また、起動処理部48が図7の第4起動モードで起動した場合には、図9に示すように、起動に使用した第2磁気ディスク20−2のファームウェアを第1磁気ディスク20−1にコピーするようにしても良い。
次に図1のMPU26に設けたファームウェア更新処理部50の機能を説明する。ファームウェア更新処理部50は、上位装置としてのホストからファームウェアの更新要求を受けた際に、図10に示すように、バッファメモリ38のファームウェア格納領域90に新ファームウェアNFW1,NFW2をダウンロードした後、揮発メモリ30に読出し配置されて実行されている旧ファームウェアFW1,FW2に上書きして新ファームウェアに切り替えた後に、電源投入(パワーオンスタート)によるリブート処理を行うことで、新ファームウェアの実行に切り替える。
ここで、揮発メモリ30の旧ファームウェアを新ファームウェアに切り替えた後の起動(パワーオンスタートのリブート)は、ブートコード74の実行によるファームウェアの読出し配置は行わず、単に揮発メモリ30の新ファームウェアの先頭コードから実行を開始する起動処理である。
このようにしてダウンロードされた新ファームウェアを揮発メモリ30に配置して実行する切り替えが済むと、本実施形態にあっては、ホストに対しファームウェアの更新終了を通知する。
ここで新ファームウェアNFW1,NFW2は、先頭位置に更新終了通知コードを配置しており、揮発メモリ30上に書き込まれて切り替え実行した時に、更新終了通知コードが最初に実行され、ホストに対し更新終了通知を送信させる。更新終了通知コードは一回だけ実行されるコードであり、実行後は消去または無効化され、不揮発メモリ32側には格納されない。
このため上位装置にあっては、本実施形態の磁気ディスク装置10側で実際に不揮発メモリ32や第1磁気ディスク20−1,20−2に対するファームウェア更新の終了を待つことなく、ファームウェア更新終了通知が得られ、このため図2のように、ディスクアレイ装置56のディスクエンクロージャ62−1,62−2に複数の磁気ディスク装置10−11〜10−25を配置し、それぞれについてファームウェアの更新要求を制御モジュール60−1側から行う場合、ディスクアレイ装置56から見た磁気ディスク装置それぞれのファームウェア更新処理時間を短くすることができ、システム全体としてのファームウェア更新時の処理性能の低下を抑えることができる。
図10において、揮発メモリ30に新ファームウェアNFW1,NFW2が書き込まれて実行されると、その後、動作中のバックグラウンド処理により、不揮発メモリ32、第1磁気ディスク20−1,第2磁気ディスク20−2に対する新ファームウェアの更新処理が実行される。
このファームウェアの更新処理は、
(1) 第1磁気ディスク20−1
(2) 不揮発メモリ32
(3) 第2磁気ディスク20−2
の順番に行われる。この順番は、図10については「更新1番」、「更新2番」、「更新3番」として表記している。
次に図1のMPU26に設けたファームウェア更新処理部50による図10に示したファームウェア更新中にエラーが発生した後の起動処理部48の処理動作を説明する。
図11は揮発メモリ30の新ファームウェアNFW1,NFW2を最初に第1磁気ディスク20−1に書き込んで更新する際に、不具合が発生してエラー92が発生した場合であり、この場合には、第1磁気ディスク20−1のファームウェアはエラー92の発生でデータ破壊96−1を起こしている。
このようなファームウェア更新エラーが発生した後の電源投入時は、図12に示すように、起動処理部48はまず第1起動モードで起動する。即ち、不揮発メモリ32は正常であることからブートコード74を実行して不揮発メモリ32のファームウェアNFW1を揮発メモリ30に読出し配置した後、第1磁気ディスク20−1をチェックする。しかし、第1磁気ディスク20−1のファームウェアNFW2は更新時にエラーを起しデータ破壊96−1となっているか、または中断96−2により読出し不可となっており、異常が判定される。
このため起動処理部48は第2起動モードに移行し、第2磁気ディスク20−2をチェックし、この場合は正常であることから、第2磁気ディスク20−2からファームウェアNFW2を揮発メモリ32に読出し配置することができ、ファームウェアNFW1,NFW2を実行して正常に起動することができる。
図12のように、起動処理部48により不揮発メモリ32と第2磁気ディスク20−2の組合せによるファームウェアFW1,FW2の読出し配置で正常に起動した場合には、起動後の動作中のバックグラウンド処理として、図13に示すリカバリー処理部52によるリカバリー処理が行われる。
このリカバリー処理は図9に示したリカバリー処理と同等であり、第2磁気ディスク20−2のファームウェアFW1,FW2を、エラー92を起こしている第1磁気ディスク20−1に書き込んで、データ破壊を解消して正しいファームウェアFW1,FW2の格納状態を作り出す。
図14はファームウェア更新処理部50により第1磁気ディスク20−1に対する新ファームウェアNFW2,NFW1の更新が正常更新102として終了した後、不揮発メモリ32に対し2番目の更新となる新ファームウェアNFW1の更新中にエラー104が発生してデータ破壊106となった場合である。
図15は図14の不揮発メモリ32の更新中のエラーにより第2エラーステータスが保存された後に装置の電源を投入した場合の起動処理部48による起動処理の説明図である。この場合の電源投入による起動処理にあっては、電源投入に伴う不揮発メモリ32に格納しているファームウェアFW1のチェックサムの検査を行う診断処理の際に、エラー104によるデータ破壊によるチェックサムが異常となって診断エラーが検出される。
このため診断エラーにより不揮発メモリ32が異常と判定され、起動処理部48は復旧コード76の実行により第3起動モードによる復旧処理110を行う。第3起動モードの復旧処理110は、第1磁気ディスク20−1のファームウェアNFW1,NFW2を読み出して揮発メモリ30に配置して実行することで、正常に起動することができる。
図16は図1のファームウェア更新処理部50により更新2番となる不揮発メモリ32に対するファームウェア更新の直後に処理の中断116が発生した場合であり、この場合には第2磁気ディスク20−2のファームウェアFW1,FW2が未更新となる。
また不揮発メモリ32の更新が正常に行われ、中断も起きなかったが、更新3番となる第2磁気ディスク20−2の更新中にエラー118が発生してデータ破壊122を生じた場合にも、不揮発メモリ32の更新終了直後の中断116によるエラーの場合と同様、第2磁気ディスク20−2のファームウェアFW1,FW2が未更新となる。
このように図16の更新中のエラー発生後の電源投入時には、図17に示すように、起動処理が起動処理部48により行われる。図17において、電源投入時の診断により不揮発メモリ32は正常であることから、第1起動モードとしてブートコード74を実行して不揮発メモリ32のファームウェアNFW1を揮発メモリ30に読出し配置する。次に、第1磁気ディスク20−1をチェックして正常であることから、そのファームウェアNFW2を揮発メモリ30に読出し配置し、配置済みのファームウェアNFW1,NFW2を実行することで正常に起動できる。
図17のファームウェアの読出し配置で正常に動作した後については、図18に示すリカバリー処理部52によるリカバリー処理が行われる。即ち、装置動作中のバックグラウンド処理として、リカバリー処理部52が起動に使用した第1磁気ディスク20−1のファームウェアNFW1,NFW2をコピー処理124により第2磁気ディスク20−2に書き込む。
これによって図16の第2磁気ディスク20−2のファームウェア更新中に生じたエラー118によるデータ破壊122が解消する。同時に、このコピー処理124は、第2磁気ディスク20−2の旧ファームウェアFW1,FW2を第1磁気ディスク20−1の新ファームウェアNFW1,NFW2により上書きするファームウェア更新処理を実質的に行うことになる。
図19は図1のMPU26に設けたファームウェア格納処理部46により磁気ディスク装置10の製造段階で行うファームウェア格納処理のフローチャートである。図19において、ファームウェア格納処理は、ステップS1でファームウェアをダウンロード設備もしくはホストからバッファメモリ38にダウンロードした後、ステップS2でバッファ上のファームウェアを例えば図4に示したように不揮発メモリ32と第1磁気ディスク20−1に分けてファームウェアFW1,FW2として格納する。
次にステップS3で、不揮発メモリ32に格納したファームウェアFW1を第1磁気ディスク20−1のファームウェア格納領域72−3にコピーして二重化する。もちろん、このファームウェア格納領域72−3に対する書込みは、バッファメモリ38上から対応するファームウェアFW1をコピーして二重化してもよい。
更にステップS4で、第1磁気ディスク20−1のファームウェアFW1,FW2を第2磁気ディスク20−2にコピーして二重化する。この場合にも、バッファメモリ38上のファームウェアFW1,FW2を第2磁気ディスク20−2にコピーして二重化するようにしてもよいことはもちろんである。
このような図19のファームウェア格納処理が終了したならば、図1のファームウェア格納処理部46の機能は不要であることから、この機能を実現する不揮発メモリ32にダウンロードしたファームウェア格納処理プログラムは消去する。
図20はファームウェアを格納した後の図1の磁気ディスク装置10の実施形態の処理動作を示したフローチャートである。まず磁気ディスク装置10の電源を投入すると、ステップS1で起動処理を起動処理部48により実行する。この起動処理は第1起動モード乃至第4起動モードのいずれかの起動処理となる。
ステップS2の起動処理により正常に起動して動作状態となると、ステップS2でホストからのコマンドの有無をチェックし、コマンドを受信すると、ステップS3でコマンドを実行する。このコマンドはホストからのリードコマンドあるいはライトコマンドであり、具体的にはホストからのコマンドはキューに格納された後に実行されることになる。
またステップS4で動作中にホストからファームウェア更新要求があると、ステップS5に進み、ファームウェア更新処理部50によるファームウェア更新処理を信号する。一方、ステップS2でコマンドがないアイドルが判別されるとステップS7に進み、リカバリー処理部52によるリカバリー処理がバックグランド処理として実行される。
またステップS8でステップS5のファームウェア更新処理による更新フラグがセットされていることを判別すると、ステップS9でファームウェアを第1磁気ディスク20−1、不揮発メモリ32及び第2磁気ディスク20−2の順番に書込んで更新する内部更新処理をバックグラウンド処理として実行する。このようなステップS2〜S5,S7〜S9の処理を、ステップS6で停止指示があるまで繰り返す。
図21は図20のステップS1の起動処理の詳細を示した説明図である。図21において、起動処理は、ステップS1で不揮発メモリ32のファームウェアは正常か否か判定し、正常であればステップS2に進み第1磁気ディスク20−1が正常か否か判定する。不揮発メモリ32及び第1磁気ディスク20−1が共に正常な場合はステップS3に進み、第1起動モードにより不揮発メモリ32及び第1磁気ディスク20−1からファームウェアを読み出して揮発メモリ30に配置して実行する。
ステップS2で第1磁気ディスク20−1の異常を判定した場合は、ステップS4に進み、第2磁気ディスク20−2が正常か否か判定する。第2磁気ディスク20−2が正常であればステップS5に進み、第2起動モードにより不揮発メモリ32及び第2磁気ディスク20−2からファームウェアを読み出して揮発メモリ30に配置して実行する。
ステップS1で不揮発メモリ32の異常を判定した場合にはステップS6進み、第1磁気ディスク20−1が正常か否か判定する。第1磁気ディスク20−1が正常であればステップS7に進み、第3起動モードにより第1磁気ディスク20−1からファームウェア全体を読み出して揮発メモリ30に配置して実行する。
ステップS6で第1磁気ディスク20−1の異常を判定した場合にはステップS8進み、第2磁気ディスク20−2が正常か否か判定する。第2磁気ディスク20−2が正常であればステップS9に進み、第4起動モードにより第2磁気ディスク20−2からファームウェア全体を読み出して揮発メモリ30に配置して実行する。ステップS8で第2磁気ディスク20−2の異常を判定した場合は異常終了となる。
図22は図20のステップS7のリカバリー処理の詳細を示したフローチャートである。図22において、先ずステップS1で第1磁気ディスク20−1を使用して起動したか否か判定し、第1磁気ディスク20−1を使用して起動していた場合にはステップS2に進み、第1磁気ディスク20−1のファームウェアを第2磁気ディスク20−2にコピーする処理を実行する。
ステップS1で第1磁気ディスク20−1を使用した起動でないことを判別した場合は、ステップS3に進み、第2磁気ディスク20−2を使用して起動したか否か判定する。第2磁気ディスク20−2を使用して起動したことを判別した場合はステップS4に進み、第2磁気ディスク20−2のファームウェアを第1磁気ディスク20−1にコピーする処理を実行する。
図23は図20のステップS5のファームウェア更新処理の詳細を示したフローチャートである。図23において、ステップS1でホストインターフェース制御部34がホストからファームウェア更新要求コマンドを受信すると、ホストインターフェース応答処理を行うことでホストとのインターフェース接続を確立し、ステップS2でホストから送信された新ファームウェアを受信してバッファメモリ38に図10に示したように格納する。
続いてステップS3でバッファメモリ38に格納した受信済みの新ファームウェアに対し、チェックサムなどにより正当性を確認し、正当性が確認できるとステップS4でバックグラウンド処理として内部的な更新処理を行うために更新フラグをセットする。
次にステップS5でバッファメモリ38に格納した新ファームウェアを揮発メモリ30のの旧ファームウェアに上書きし、これによって旧ファームウェアを新ファームウェアに切り替える。
続いてステップS6でパワーオンスタートとして知られた起動処理を行うことで、切替済みの新ファームウェアを実行し、ステップS7で新ファームウェアの実行によりホストに対しファームウェア更新要求に対する更新終了を通知し、一連のファームウェアダウンロード処理を終了する。
図24は図20のステップS9のファームウェア内部更新処理の詳細を示したフローチャートである。まずステップS1で、図11に示したように、揮発メモリ30に配置している新ファームウェアNFW1,NFW2を第1磁気ディスク20−1に書き込んで更新する。続いてステップ2で第1磁気ディスク20−1の更新直後に中断が発生したか否か判定する。
中断がなければステップS3に進み揮発メモリ30に配置している新ファームウェアNFW1を不揮発メモリ32に分割して書き込んで更新する。続いてステップS4で不揮発メモリ32の更新直後に中断が発生したか否か判定する。
ステップS4で中断がないことが判別された場合はステップS5に進み、揮発メモリ30に配置している新ファームウェアNFW1,NFW2を第2磁気ディスク20−2に書き込んで更新する。これで内部的な更新が全て終了したことから、ステップS6で更新フラグをリセットして図20のメインルーチンにリターンする。
ステップS2またはステップS4で中断を判別した場合は、更新未終了であるが、ステップS6で更新フラグをリセットして図20のメインルーチンにリターンする。
一方、ステップS2で中断を判別した場合は、その後の電源投入時の起動処理として、不揮発メモリ32が正常であれば、不揮発メモリ32と第2磁気ディスク20−1の組み合せで旧ファームウェアを揮発メモリ30に読出し配置して起動する第1起動モードの実行となる。
また不揮発メモリ32の異常が判定されれば、第1磁気ディスク20−1から新ファームウェア全体を揮発メモリ30に読出し配置して実行する第3起動モード、或いは第1磁気ディスク20−2に異常があれば第2磁気ディスク20−2から旧ファームウェア全体を揮発メモリ30に読出し配置して実行する第4起動モードとなり、その後の電源投入時に確実に起動することができる。
また、ステップS4で中断が判別された場合は、不揮発メモリ32及び第1磁気ディスク20−1には新ファームウェアが格納され、第2磁気ディスク20−2には旧ファームウェアが保存されているため、その後の電源投入時に、第1乃至第4起動モードのいずれかで確実に起動できる。更に、第1磁気ディスク20−1を使用して起動した場合は、図22のリカバリー処理におけるステップS2のコピー処理により、第1磁気ディスク20−1の更新済みの新ファームウェアが未更新となっている第2磁気ディスク20−2の旧ファームウェアに書き込まれるリカバリー処理がバックグラウンドで行われ、この段階で第2磁気ディスク20−2のファームウェア更新が実質的に行われることになる。
図25はフラッシュROMなどのコスト的に高価な不揮発メモリを持たない磁気ディスク装置を対象とした本発明の他の実施形態のファームウェア格納状態の実施形態である。この図25の実施形態が対象とする磁気ディスク装置は、図1の磁気ディスク装置10における不揮発メモリ32が設けられておらず、不揮発メモリ32の機能は全て磁気ディスク20−1,20−2に対する書込みで対応している。
この実施形態におけるファームウェアの格納は、第1磁気ディスク20−11、第2磁気ディスク20−12及び第3磁気ディスク20−21を使用して行う。なお第1磁気ディスク20−11、第2磁気ディスク20−12及び第3磁気ディスク20−21は、1枚の磁気ディスクでもよいし、磁気ディスクは両面に記録面を持つことから、各記録面がこれに対応している。
第1磁気ディスク20−11には先頭にブートコード74が格納され、これに続くファームウェア格納領域128−1にファームウェアFW1を格納し、更に復旧コード126を格納している。第2磁気ディスク20−12及び第3磁気ディスク20−21のファームウェア格納領域128−2,128−3には、第1磁気ディスク20−11のファームウェアFWのコピーが格納されている。
この図25のファームウェアの格納配置を持つ実施形態にあっても、図1のMPU26には同様にファームウェア格納処理部46、起動処理部48、ファームウェア更新処理部50、及びリカバリー処理部52の機能が設けられている。
即ち図25の実施形態において、ファームウェア格納処理部46は、ファームウェアFW1を起動コードであるブートコード74及び復旧コード126を格納した第1磁気ディスク20−11に格納すると共に、第1磁気ディスク20−11に格納したファームウェアFWのコピーを第2磁気ディスク20−12及び第3磁気ディスク20−21の各々に格納している。
起動処理部48は電源投入時に第1起動モード乃至第3起動モードのいずれかで起動する。第1起動モードは、第1磁気ディスク20−11が正常な場合に起動コード74に基づいて第1磁気ディスク20−11のファームウェアFWを揮発メモリ30に読出し配置して実行する。
第2起動モードは、第1起動モードで第1磁気ディスク20−11が異常な場合に第2磁気ディスク20−12のファームウェアFWを揮発メモリ30に読出し配置して実行する。
第3起動モードは、第2起動モードで第2磁気ディスク20−12が異常な場合に第3磁気ディスク20−21のファームウェアFWを揮発メモリ30に読出し配置して実行する。
ファームウェア更新処理部50は、ホストからファームウェア更新要求を受けた際に、図26に示すように、バッファメモリ38のファームウェア格納領域132に新ファームウェアNFWを格納した後、揮発メモリ30に格納されている旧ファームウェアFWを上書きした後に、パワーオンスタートによる起動処理(リブート)で新ファームウェアの実行に切り替え、この状態でホスト側にファームウェア更新の終了通知を行った後、揮発メモリ30の新ファームウェアNFWを第1磁気ディスク20−11、第2磁気ディスク20−12及び第3磁気ディスク20−21の順番に書き込んで更新する。
更に、リカバリー処理部52は、次のコピー処理をバックグラウンドで行う。
(1)起動処理部48が第1起動モードで起動した場合は、第1磁気ディスク20−11のファームウェアを第2磁気ディスク20−12及び第3磁気ディスク20−21にコピーする。
(2)起動処理部48が第2起動モードで起動した場合は、第2磁気ディスク20−12のファームウェアを第3磁気ディスク20−21及び第1磁気ディスク20−11にコピーする。
(3)起動処理部48が第3起動モードで起動した場合は、第3磁気ディスク20−21のファームウェアを第1磁気ディスク20−11及び第2磁気ディスク20−12にコピーする。
図27は本発明の他の実施形態におけるファームウェアの格納配置と更新処理の説明図である。図27の実施形態にあっては、製造段階において不揮発メモリ32にファームウェアの一部であるファームウェアFW1を格納し、残りのファームウェアFW2を第1磁気ディスク20−1に格納している。また第1磁気ディスク20−1には不揮発メモリ32と同じファームウェアFW1が格納されている。即ち第1磁気ディスク20−1には、ファームウェアFW1,FW2のファームウェア全体が格納されている。
このような不揮発メモリ32及び第1磁気ディスク20−1に対するファームウェアの格納は、図1のMPU26に示したファームウェア格納処理部46により行われる。即ちファームウェア格納処理部46は、図27の実施形態の場合、起動コードであるブートコード74と復旧コード76を格納した不揮発メモリ32と、第1磁気ディスク20−1とに分けて、ファームウェアFW1,FW2を格納すると共に、不揮発メモリ32に記憶したファームウェアFW1のコピーをファームウェアFW1として第1磁気ディスク20−1に格納している。
次に図27の実施形態における図1のMPU26に示したファームウェア更新処理部50による処理を説明する。ファームウェア更新処理部50は、上位装置としてのホストからファームウェアの更新要求であるファームウェア更新コマンドを受信すると、バッファメモリ38のファームウェア格納領域90に新ファームウェアNFW1,NFW2をダウンロードした後、まず更新1番として第1磁気ディスク20−1に新ファームウェアNFW1,NFW2を書き込む。続いて不揮発メモリ32の旧ファームウェアFW1の一部を破壊する破壊処理130を行う。
次にバッファメモリ38の新ファームウェアNFW1,NFW2を、揮発メモリ30に読出し配置して実行されている旧ファームウェアFW1,FW2に上書きした後、電源投入(パワーオンスタート)によるリブート処理を行うことで、新ファームウェアの実行に切り替える。
このようにしてダウンロードされた新ファームウェアを揮発メモリ30に配置して実行する切替えが済むと、ホストに対しファームウェア更新コマンドの正常終了を報告する。
その後、バックグランドにおいて、揮発メモリ30の新ファームウェアNFW1を分割しながら不揮発メモリ32の旧ファームウェアFW1に書き込む内部更新処理を行う。
図28は図27のファームウェア更新直後に電源が切られた場合の、その後の電源投入による第2起動モードによる起動処理を示した説明図である。
図27に示したように、ファームウェア更新処理が正常終了して、ホストに対しコマンド正常終了を報告した直後に電源が切られた場合、第1磁気ディスク20−1は図28に示すように新ファームウェアNFW1,NFW2の更新状態にあるが、不揮発メモリ32は更新処理による破壊処理130により旧ファームウェアFW1が部分的に破壊された状態にある。
このような状態で電源を投入すると、図1のMPU26に示した起動処理部48による起動処理が行われる。起動処理部48は電源投入時に不揮発メモリ32に格納されているBIOS相当の機能を持つ起動プログラムによる各デバイスの初期化と診断を行った後、不揮発メモリ32についても、格納したファームウェアの例えばチェックサムを診断する。
ここで不揮発メモリ32の旧ファームウェアFW1は、ファームウェア更新時の破壊処理130により部分的に破壊されているため、例えばチェックサムの診断で診断エラーとなる。不揮発メモリ32のファームウェアFW1のチェックサムがエラーとなった場合、起動処理部48は第2起動モードで起動する。
第2起動モードは、不揮発メモリ32が診断エラーにより異常と判定されたことから、ブートコード74による起動処理ができず、この場合は復旧コード76を実行することによる復旧処理132を行う。
復旧コード76による復旧処理132は、第1磁気ディスク20−1が正常であることを条件に、第1磁気ディスク20−1から新ファームウェアNFW1,NFW2を読み出して、揮発メモリ30に配置して実行する。
この結果、図27のファームウェア配置を持つ実施形態にあっては、ファームウェア更新コマンドの正常終了直後に電源が切られた場合、図28に示す第2起動モードで起動し、第1磁気ディスク20−1の新ファームウェアNFW1,NFW2により立ち上げることができる。
図29は図27のファームウェア更新の正常終了後、電源が切られることなく、動作を継続した場合のバックグランドで実行する不揮発メモリの内部更新処理を示した説明図である。
図29にあっては、ファームウェア更新コマンドの実行により、図27に示したように不揮発メモリ32の旧ファームウェアFW1は破壊処理130を受けていることから、現在実行中の揮発メモリ30に配置されている不揮発メモリ32のファームウェアNFW1を最小アクセス単位となる新ファームウェアNFW11〜NFW15に分割し、ホストからのコマンド実行の空き時間のタイミングで不揮発メモリ32のファームウェア領域に対して新ファームウェアNFW11〜NFW15を順次書き込む内部更新処理を行う。
このような分割したファームウェアNFW11〜NFW15の内部更新処理にあっては、1回の更新が終了するごとに、もしそのときホストからのリードコマンドもしくはライトコマンドがコマンドキューに格納されて実行待ちにあった場合には、分割した新ファームウェアの更新終了でコマンドキューからの処理待ちのリードコマンドまたはライトコマンドを取り出して実行する。
このため、不揮発メモリ32に対する新ファームウェアのすべての更新が済むまで、コマンドキューに格納されているホストからのアクセスコマンドの処理が待たされることがなく、新ファームウェアの更新処理と上位装置のアクセスコマンドの並列的な実行を可能とし、ファームウェア内部更新処理におけるホスト側のシステム処理性能の低下を最小限に抑えることができる。
図30は図29のバックグランドによる内部更新処理で不揮発メモリ32のファームウェアが更新された後の電源投入による第1起動モードによる起動処理を示した説明図である。
図27のファームウェア配置を対象とした図1のMPU26に設けた起動処理部48にあっては、電源投入時に不揮発メモリ32のファームウェアが正常な場合には、第1起動モードによる起動処理として、ブートコード74に基づいて不揮発メモリ32の新ファームウェアNFW1と第1磁気ディスク20−1の新ファームウェアNFW2を揮発メモリ30に読出し配置して実行する。
図31は図27の実施形態について製造段階で行うファームウェア格納処理のフローチャートであり、図1のMPU26に設けたファームウェア格納処理部46により実行される。図31において、ファームウェア格納処理は、ステップS1でファームウェアをダウンロードもしくはホストからバッファメモリ38にダウンロードした後、ステップS2でバッファ上のファームウェアを不揮発メモリ32と第1磁気ディスク20−1に分けてファームウェアFW1,FW2として格納する。
続いてステップS3で不揮発メモリ32のファームウェアFW1を第1磁気ディスク20−1にコピーして2重化する。これによって、図27に示した不揮発メモリ32に対するファームウェアFW1の格納状態、及び第1磁気ディスク20−1に対するファームウェアFW1,FW2の格納状態が得られる。
図32は図27のファームウェア配置をもつ実施形態の処理動作を示したフローチャートである。図1の磁気ディスク装置10の電源を投入すると、ステップS1で起動処理を起動処理部48により実行する。この起動処理は第1起動モードまたは第2起動モードのいずれかの起動処理となる。
ステップS1の起動処理により正常に起動して動作状態になると、ステップS2でホストからのコマンドの有無をチェックし、コマンドを受信すると、ステップS3でコマンドを実行する。このコマンドはホストからのリードコマンドあるいはライトコマンドであり、具体的にはホストからのコマンドはキューに格納された後に実行されることになる。
またステップS4で動作中にホストからファームウェア更新要求(ファームウェア更新コマンド)があると、ステップS5に進み、ファームウェア更新処理部50によるファームウェア更新処理を実行する。
一方、ステップS2でコマンドがないアイドルが判別されると、ステップS7に進み、ファームウェア更新処理による更新フラグがセットされているか否か判別する。更新フラグがセットされている場合にはステップS8に進み、ファームウェアを不揮発メモリ32に書き込んで更新する内部更新処理をバックグランドで実行する。このようなステップS2〜S5,S7,S8の処理を、ステップS6で停止指示があるまで繰り返す。
図33は図32のステップS1の起動処理の詳細を示した説明図である。図33において、起動処理は、ステップS1で不揮発メモリ32のファームウェアが正常か否か判定し、正常であればステップS2に進み、第1磁気ディスク20−1が正常か否か判定する。
不揮発メモリ32及び第1磁気ディスク20−1が共に正常な場合は、ステップS3に進み、第1起動モードにより、図30に示したように、不揮発メモリ32及び第1磁気ディスクからファームウェアを読み出し、揮発メモリ30に配置して実行する。なお、ステップS2で第1磁気ディスクが異常な場合は異常終了となる。
一方、ステップS1で不揮発メモリの異常を判定した場合は、ステップS4に進み、第1磁気ディスク20−1が正常か否か判定する。第1磁気ディスク20−1が正常であれば、ステップS5に進み、第2起動モードにより第1磁気ディスク20−1から図28に示したようにファームウェア全体を読み出して、揮発メモリ30に配置して実行する。ステップS2で第1磁気ディスクに異常があれば異常終了となる。
図34は図32のステップS5のファームウェア更新処理の詳細を示したフローチャートである。図34において、ステップS1でホストインタフェース制御部34がホストからのファームウェア更新要求コマンドを受信すると、ホストインタフェース応答処理を行うことでホストとのインタフェース接続を確立し、ステップS2でホストから送信された新ファームウェアを受信し、バッファメモリ38に格納する。
続いてステップS3で、バッファメモリ38に格納した受信済み新ファームウェアに対しチェックサムなどにより正当性を確認し、正当性が確認できると、ステップS4でバックグランド処理として内部的な更新処理を行うために更新フラグをセットする。
次にステップS5で、バッファメモリ38に格納した新ファームウェアを第1磁気ディスクの旧ファームウェアに上書きする。続いてステップS6で第1磁気ディスク20−1に対するファームウェアの書込みにつき書込み失敗か否かチェックしており、万一、書込み失敗となった場合には異常終了となり、ホストに対しファームウェア更新コマンドの異常終了を応答する。これを受けてホスト側で記憶装置に対する新ファームウェア更新について適切な対応措置を迅速にとることができる。
ステップS6で書込みに失敗がなければ、ステップS7に進み、不揮発メモリ32の旧ファームウェアの一部を破壊する破壊処理130を行う。続いてステップS8に進み、バッファメモリ38に格納した新ファームウェアを揮発メモリ30の旧ファームウェアに上書きし、これによって旧ファームウェアを新ファームウェアに切り替える。
続いてステップS9でパワーオンスタートとして知られた起動処理を行うことで新ファームウェアの実行に切替え、ステップS10で実行した新ファームウェアによりホストに対しファンアウト更新コマンドに対する更新終了を通知し、一連のファームウェアダウンロード処理を終了する。
図35は図32のステップS8のファームウェア内部更新処理の詳細を示したフローチャートである。図35において、ステップS1で、図29に示したように、揮発メモリ30のファームウェアを分割し、アイドル状態でのバックグランド処理により不揮発メモリ32に分割単位で順次書き込んで更新する。更新が済むと、ステップS2で更新フラグをリセットする。
このように図27に示した第1磁気ディスク20−1と不揮発メモリ32にファームウェアを配置する実施形態にあっては、ホストからのファームウェア更新コマンドが正常に終了した直後に装置の電源が切られて不揮発メモリ32が更新されていなくとも、更新処理の際に不揮発メモリのファームウェアを一部破壊していることで、次の電源投入時には不揮発メモリの旧ファームウェアが必ず異常となり、そのため、復旧コードの実行により第1磁気ディスク20−1の新ファームウェアを揮発メモリ30にメモリ配置して実行することで、必ず新ファームウェアで立ち上げることができる。
またファームウェア更新コマンドにより第1磁気ディスク20−1への書込みが万一、失敗した場合であっても、コマンド実行中のエラーであることから、コマンドの異常終了をホストに通知することができ、ホストは記憶装置側の異常を早期に検出し、必要な対応措置を適切にとることができる。
図36は本発明の他の実施形態におけるファームウェアの配置と更新処理の説明図である。図36の実施形態にあっては、図27の実施形態に更に第2磁気ディスク20−2を追加し、第2磁気ディスク20−2にもファームウェアFW1,FW2を格納するようにしたことを特徴とする。
この第2磁気ディスク20−2をファームウェア格納のために追加した図36の実施形態におけるファームウェア更新処理は、ファームウェア更新コマンドの受信で、バッファメモリ38に格納した新ファームウェアNFW1,NFW2を更新1番として、まず第1磁気ディスク20−1に格納し、続いて不揮発メモリ32の旧ファームウェアFW1の一部を破壊する破壊処理130を行った後に揮発メモリ30に新ファームウェアNFW1,NFW2を上書きして実行することで、コマンド終了をホストに通知する。
ファームウェア更新要求コマンドを正常終了してホストに終了応答をした直後に電源が切られた場合については、図37のように第2起動モードによる起動処理を行う。この点は、図27の実施形態でファームウェア更新コマンドの終了応答直後に電源が切られて、図28で第2起動モードによる起動処理を行う場合と同じである。
図37の第2起動モードによる起動処理は、不揮発メモリ32の旧ファームウェアFW1の破壊処理130による異常を検出して復旧コード76により復旧処理132を実行し、第1磁気ディスク20−1のファームウェアNFW1,NFW2を揮発メモリ30に読出し配置して実行することで、新ファームウェアで立ち上がることができる。
図36のファームウェア更新処理により正常終了してコマンド終了応答を行った後、装置の電源が切られることなく継続動作している場合には、図38に示すように、バックグランドで不揮発メモリ32及び第2磁気ディスク20−2に対する内部更新処理を行う。
このバックグランドで行う内部更新処理が、図27の実施形態に対し、この実施形態にあっては新たに第2磁気ディスク20−2を設けていることから、バックグランド処理の内部更新処理で第1磁気ディスク20−1から第2磁気ディスク20−2にコピー処理134を行って、更新3番として第2磁気ディスク20−2を新ファームウェアNFW1,NFW2に更新する。
またバックグランド処理で行う不揮発メモリ32の新ファームウェアNFW1の更新については、図27の実施形態における図29の場合と同様、揮発メモリ30の新ファームウェアNFW1を新ファームウェアNFW11〜NFW15に分割し、ホストからのコマンド空き時間を利用して分割単位に不揮発メモリ32に順次書き込むことになる。
なお、図38にあっては、第2ディスク20−2に第1磁気ディスク20−1からのコピー処理134により新ファームウェアNFW1,NFW2を書き込んでいるが、揮発メモリ30から第2ディスク20−2に新ファームウェアNFW1,NFW2を書き込むようにしても良い。
図39は、図38のようにファームウェア更新後のバックグランドによる内部更新処理で、不揮発メモリ32及び第2磁気ディスク20−2についても新ファームウェアへの正常な更新が行われた後の電源投入時における第1起動モードによる起動処理を示している。
第1起動モードによる起動処理は、図27の実施形態について示した図30の第1起動モードによる起動処理と同じであり、不揮発メモリ32と第1磁気ディスク20−1から新ファームウェアNFW1,NFW2を読み出して揮発メモリ30に配置して実行することで立ち上げることができる。
図40は図36のファームウェア更新処理において、ファームウェア更新コマンドの実行中に電源が切られた場合の、その後の電源投入に伴う第3起動モードによる起動処理を示した説明図である。
図36に示したファームウェア更新処理のコマンド実行中に電源が切られると、コマンド異常終了による応答ができず、またコマンド実行中にあるため第1磁気ディスク20−1及び不揮発メモリ32のそれぞれのファームウェアを保証することができず、図40に示すように、不揮発メモリ32のファームウェアFW1及び第2磁気ディスク20−2のファームウェアNFW2が共に異常な状態にあることが想定される。
このようなファームウェア更新コマンド実行中に電源が切られた場合の起動処理にあっては、まず不揮発メモリ32のファームウェアFW1をチェックして、チェックサムなどの診断エラーが出ることから第2起動モードによる起動処理となり、復旧コード76により復旧処理138を行い、第1磁気ディスク20−1のファームウェアNFW2をチェックする。
しかし、第1磁気ディスク20−1のファームウェアNFW2についてもエラー136が発生した場合、第3起動モードによる起動処理となり、復旧処理138として第2磁気ディスク20−2のファームウェアNFW1,NFW2を揮発メモリ30に読出し配置して実行することにより立ち上げる。
この第3起動モードによる起動処理にあっては、図39に示した第1起動モードによる起動処理及び図37に示した第2起動モードによる起動処理が新ファームウェアで立ち上がるのに対し、第3起動モードによる起動処理は旧ファームウェアで立ち上がることになる。
図41は図40の第3起動モードによる起動処理で立ち上がった後のバックグランドで実行されるリカバリ処理の説明図である。図41のリカバリ処理にあっては、不揮発メモリ32のファームウェアFW1に異常があることから、揮発メモリ30のファームウェアFW1をファームウェアFW11〜FW15に分割し、分割単位に順次揮発メモリ30に書き込む。
また第1磁気ディスク20−1については、第2磁気ディスク20−2からのコピー処理140により旧ファームウェアFW1,FW2を全体としてコピーする。このリカバリ処理により、ファームウェア更新コマンドの実行中の電源断により異常となった不揮発メモリ32及び第1磁気ディスク20−1のファームウェアを更新前の旧ファームウェアに回復させることができる。
このような図36乃至図41に示した処理は、図1のMPU26に示したファームウェア格納処理部46、起動処理部48、ファームウェア更新処理部50及びリカバリ処理部52の機能として実行される。
図42は図36のファームウェア配置をもつ実施形態について、製造段階で行うファームウェア格納処理のフローチャートである。図42において、ステップS1〜S3の処理は図31と同じであり、更に本実施形態にあっては、ファームウェアの格納場所として第2磁気ディスク20−2を設け、ステップS4で第1磁気ディスク20−1のファームウェア全体を第2磁気ディスク20−2にコピーして2重化している。
図43は図36の実施形態の処理動作を示したフローチャートである。図43において、図1に示した磁気ディスク装置10の電源を投入すると、ステップS1で起動処理を起動処理部48により実行する。この起動処理は、第1起動モード、第2起動モード及び第3起動モードのいずれかの起動処理となる。
続いてステップS2でホストからのライトコマンドまたはリードコマンドの有無をチェックし、コマンドを受信した場合には、ステップS3で受信したコマンドを実行する。続いてステップS4でファームウェア更新要求コマンドを判別すると、ステップS5に進み、ファームウェア更新処理部50によるファームウェア更新処理を実行する。
一方、ステップS2でコマンドがないアイドル状態が判別されると、ステップS7に進み、リカバリー処理部52によるリカバリ処理がバックグランドで実行される。
またステップS8でステップS5のファームウェア更新処理による更新フラグがセットされていることを判別すると、ステップS9でファームウェアを不揮発メモリ32及び第2磁気ディスク20−2の順番に書き込んで更新するバックグランドでの内部更新処理を実行する。そして、このようなステップS2〜S5,S7〜S9の処理を、ステップS6で停止指示があるまで繰り返す。
図44は図43のステップS5のファームウェア更新処理の詳細を示したフローチャートである。図44において、ステップS1〜S3の第1モードの起動処理、及びステップS4,S5の第2モードの起動処理は、図33に示した図27の実施形態と同じである。
ステップS6,S7は第3起動モードによる起動処理である。第3起動モードによる起動処理にあっては、ステップS1で不揮発メモリ32の異常が判別され、更にステップS4で第1磁気ディスク20−1の異常が判別された場合に、ステップS6に進み、第2磁気ディスク20−2が正常であることを条件に、ステップS7で第2磁気ディスク20−2から全ファームウェアを揮発メモリ30に読出し配置して実行する。
図45は図43のステップS5のファームウェア更新処理の詳細を示したフローチャートであり、処理手順は図34のフローチャートと同じである。
図46は図43のステップS7のリカバリー処理の詳細を示したフローチャートである。リカバリー処理は、図40に示したように、第2磁気ディスク20−2のファームウェアを揮発メモリ30に読出し配置して実行する第2起動モードで起動した後に、図41に示すようにバックグランドで実行される処理である。
即ちステップS1で第2磁気ディスク20−2を使用して起動したか否かチェックし、第2磁気ディスク20−2を使用して起動したことを判別すると、ステップS2に進み、図41に示したように揮発メモリ30のファームウェアFW1をハードウェアFW11〜FW15に分割し、アイドル状態のバックグランド処理として分割単位に不揮発メモリ32に順次書き込んで更新する。続いてステップS3で、第2磁気ディスク20−2からファームウェア全体を第1磁気ディスク20−1にコピーする。
図47は図43のステップS9のファームウェア内部更新処理の詳細を示した説明図である。ファームウェア内部更新処理は、ステップS1で図38に示したように、不揮発メモリ32に新ファームウェアを分割し、アイドル状態のバックグランド処理として分割単位に不揮発メモリ32に順次書き込んで更新する。続いて、ステップS2で第2磁気ディスク20−2に第1磁気ディスク20−1からファームウェア全体をコピーする。そしてステップS3で更新フラグをリセットする。
この図36〜図47に示した不揮発メモリ32及び第1磁気ディスク20−1に加えて更に第2磁気ディスク20−2にファームウェアを格納するようにした実施形態にあっては、ファームウェア更新コマンドのコマンド実行中の電源切断に対し、第3起動モードによる起動処理により旧ファームウェアで立ち上がることができ、この点で図27の実施形態に示した第2磁気ディスクにファームウェアを格納していない場合に比べメリットが得られる。
しかしながら、ファームウェア更新コマンドの実行中に電源を切断する可能性はごく低いことから、実用上は第2磁気ディスク20−2にファームウェアを格納しない図27〜図35の実施形態の方が装置構成及び処理が簡単であることから、有利ということもできる。
また本発明は図1の磁気ディスク装置10に設けたMPU26で実行する制御プログラムを提供するものであり、この制御プログラムは図19〜図24、図31〜図35、図42〜図47のフローチャートに示した内容となる。
また本発明はMPU26で実行されるプログラムを格納したコンピュータ読取り可能な記憶媒体を提供するものである。この記憶媒体としてはCD−ROM、フロッピィディスク(R)、DVDディスク、光磁気ディスク、ICカードなどの可搬型記憶媒体や、コンピュータシステムの内外に備えられたハードディスクドライブなどの記憶装置の他、回線を介してプログラムを保持するデータベース、更には他のコンピュータシステム並びにそのデータベースや、更に回線上の伝送媒体を含むものである。
更に本発明は、図1の磁気ディスク装置10の制御ボード14で実現される制御装置を提供するものである。
なお本発明は上記の条件に限定されず、その目的と利点を損なうことのない適宜の変形を含む。更に本発明は上記の実施形態に示した数値による限定は受けない。

ここで本発明の特徴をまとめて列挙すると次の付記のようになる。
(付記)
(付記1)(装置)
ディスク媒体に対しデータを記録再生するドライブ制御ソフトウェアであるファームウェアを、起動コード及び復旧コードを格納した不揮発メモリと第1ディスク媒体に分けて格納すると共に、前記不揮発メモリに格納したファームウェアのコピーを前記第1ディスク媒体に格納し、更に、前記第1ディスク媒体に格納したファームウェア全体のコピーを第2ディスク媒体に格納するファームウェア格納処理部と、
電源投入時に、前記不揮発メモリが正常な場合に前記起動コードに基づいて前記不揮発メモリと前記第1ディスク媒体のファームウェアを揮発メモリに読出し配置して起動する第1起動モード、前記第1起動モードで前記第1ディスク媒体が異常な場合に前記不揮発メモリと第2ディスク媒体のファームウェアを揮発メモリに読出し配置して起動する第2起動モード、前記不揮発メモリが異常な場合に前記復旧コードに基づいて前記第1ディスク媒体からファームウェア全体を揮発メモリに読出し配置して起動する第3起動モード、又は前記第3起動モードで前記第1ディスク媒体が異常な場合に前記第2ディスク媒体からファームウェア全体を前記揮発メモリに読出し配置して起動する第4起動モードのいずれかを実行する起動処理部と、
を備えたことを特徴とする記憶装置。(1)
(付記2)
付記1記載の記憶装置に於いて、
上位装置から前記ファームウェアの更新要求を受けた際に、前記揮発メモリに配置されている旧ファームウェアを前記上位装置から転送された新ファームウェアに切り替えて実行した後に、前記揮発メモリの新ファームウェアを前記第1ディスク媒体、前記不揮発メモリ及び前記第2ディスク媒体の順番に書き込んで更新するファームウェア更新処理部を備えたことを特徴とする記憶装置。(2)
(付記3)
付記1記載の記憶装置に於いて、更に、バックグラウンド処理により動作するリカバリー処理部を設け、
前記リカバリー処理部は、前記起動処理部が前記第1起動モードで起動した場合に第1ディスク媒体のファームウェアを第2ディスク媒体にコピーし、前記起動処理部が前記第2起動モードで起動した場合は第2ディスク媒体のファームウェアを第1ディスク媒体にコピーすることを特徴とする記憶装置。(3)
(付記4)
付記3記載の記憶装置に於いて、前記リカバリー処理部は、更に、前記起動処理部が前記第3起動モードで起動した場合に第1ディスク媒体のファームウェアを第2ディスク媒体にコピーし、前記起動処理部が前記第4起動モードで起動した場合は第2ディスク媒体のファームウェアを第1ディスク媒体にコピーすることを特徴とする記憶装置。(4)
(付記5)
付記1記載の記憶装置に於いて、前記起動処理部は、
前記第1乃至第4起動モードでは、前記不揮発メモリについて、格納したファームウェアの正当性の確認を行ない正常と判断し、そうでない場合は異常と判断し、
前記第1又は第2起動モードでは、前記第1ディスク媒体及び前記第2ディスク媒体について、格納したファームウェアが読出し可能で、正当であり、更にバージョンが前記不揮発メモリのファームウェアと同一な場合に正常と判断し、そうでない場合は異常と判断し、
前記第3又は第4起動モードでは、前記第1ディスク媒体及び第2ディスク媒体について、格納したファームウェアが読出し可能で、且つ正当性の確認を行ない正常と判断し、そうでない場合は異常と判断することを特徴とする記憶装置。(5)
(付記6)
付記2記載の記憶装置に於いて、前記ファームウェア更新処理部は、
前記バッファメモリに格納した新ファームウェアを前記揮発メモリに配置されている旧ファームウェアに上書きして更新した後に装置を起動して新ファームウェアの処理に切り替え、
切り替え後の新ファームウェアの実行により前記上位装置に更新終了を通知し、
前記揮発メモリの新ファームウェアをバックグラウンド処理により前記第1ディスク媒体、前記不揮発メモリ及び前記第2ディスク媒体の順番に書き込んで更新することを特徴とする記憶装置。(6)
(付記7)
ディスク媒体に対しデータを記録再生するドライブ制御ソフトウェアであるファームウェアを、起動コード及び復旧コードを格納した不揮発メモリと第1ディスク媒体に分けて格納すると共に、前記不揮発メモリに格納したファームウェアのコピーを前記第1ディスク媒体に格納し、更に、前記第1ディスク媒体に格納したファームウェア全体のコピーを第2ディスク媒体に格納するファームウェア格納処理ステップと、
電源投入時に、前記不揮発メモリが正常な場合に前記起動コードに基づいて前記不揮発メモリと前記第1ディスク媒体のファームウェアを揮発メモリに読出し配置して起動する第1起動モード、前記第1起動モードで前記第1ディスク媒体が異常な場合に前記不揮発メモリと第2ディスク媒体のファームウェアを揮発メモリに読出し配置して起動する第2起動モード、前記不揮発メモリが異常な場合に前記復旧コードに基づいて前記第1ディスク媒体からファームウェア全体を揮発メモリに読出し配置して起動する第3起動モード、又は前記第3起動モードで前記第1ディスク媒体が異常な場合に前記第2ディスク媒体からファームウェア全体を前記揮発メモリに読出し配置して起動する第4起動モードのいずれかを実行する起動処理ステップと、
を備えたことを特徴とする記憶装置の制御方法。(7)
(付記8)
付記7記載の記憶装置の制御方法に於いて、上位装置から前記ファームウェアの更新要求を受けた際に、前記揮発メモリに配置されている旧ファームウェアを前記上位装置から転送された新ファームウェアに切り替えて実行した後に、前記揮発メモリの新ファームウェアを前記第1ディスク媒体、前記不揮発メモリ及び前記第2ディスク媒体の順番に書き込んで更新するファームウェア更新処理ステップを備えたことを特徴とする記憶装置の制御方法。(8)
(付記9)
付記7記載の記憶装置の制御方法に於いて、更に、バックグラウンド処理により動作するリカバリー処理ステップを設け、
前記リカバリー処理ステップは、前記起動処理ステップが前記第1起動モードで起動した場合に第1ディスク媒体のファームウェアを第2ディスク媒体にコピーし、前記起動処理ステップが前記第2起動モードで起動した場合は第2ディスク媒体のファームウェアを第1ディスク媒体にコピーすることを特徴とする記憶装置の制御方法。
(付記10)
付記9記載の記憶装置の制御方法に於いて、前記リカバリー処理ステップは、更に、前記起動処理ステップが前記第3起動モードで起動した場合に第1ディスク媒体のファームウェアを第2ディスク媒体にコピーし、前記起動処理ステップが前記第4起動モードで起動した場合は第2ディスク媒体のファームウェアを第1ディスク媒体にコピーすることを特徴とする記憶装置の制御方法。
(付記11)
付記8記載の記憶装置の制御方法に於いて、前記ファームウェア更新処理ステップは、
前記バッファメモリに格納した新ファームウェアを前記揮発メモリに配置されている旧ファームウェアに上書きして更新した後に装置を起動して新ファームウェアの処理に切り替え、
切り替え後の新ファームウェアの実行により前記上位装置に更新終了を通知し、
前記揮発メモリの新ファームウェアをバックグラウンド処理により前記第1ディスク媒体、前記不揮発メモリ及び前記第2ディスク媒体の順番に書き込んで更新することを特徴とする記憶装置の制御方法。
(付記12)
ディスク媒体に対しデータを記録再生するドライブ制御ソフトウェアであるファームウェアを、起動コード及び復旧コードを格納した不揮発メモリと第1ディスク媒体に分けて格納すると共に、前記不揮発メモリに格納したファームウェアのコピーを前記第1ディスク媒体に格納し、更に、前記第1ディスク媒体に格納したファームウェア全体のコピーを第2ディスク媒体に格納するファームウェア格納処理部と、
電源投入時に、前記不揮発メモリが正常な場合に前記起動コードに基づいて前記不揮発メモリと前記第1ディスク媒体のファームウェアを揮発メモリに読出し配置して起動する第1起動モード、前記第1起動モードで前記第1ディスク媒体が異常な場合に前記不揮発メモリと第2ディスク媒体のファームウェアを揮発メモリに読出し配置して起動する第2起動モード、前記不揮発メモリが異常な場合に前記復旧コードに基づいて前記第1ディスク媒体からファームウェア全体を揮発メモリに読出し配置して起動する第3起動モード、又は前記第3起動モードで前記第1ディスク媒体が異常な場合に前記第2ディスク媒体からファームウェア全体を前記揮発メモリに読出し配置して起動する第4起動モードのいずれかを実行する起動処理部と、
を備えたことを特徴とする記憶装置の制御装置。(9)
(付記13)
付記12記載の記憶装置の制御装置に於いて、上位装置から前記ファームウェアの更新要求を受けた際に、前記揮発メモリに配置されている旧ファームウェアを前記上位装置から転送された新ファームウェアに切り替えて実行した後に、前記揮発メモリの新ファームウェアを前記第1ディスク媒体、前記不揮発メモリ及び前記第2ディスク媒体の順番に書き込んで更新するファームウェア更新処理部を備えたことを特徴とする記憶装置の制御装置。
(付記14)
付記12記載の記憶装置の制御装置に於いて、更に、バックグラウンド処理により動作するリカバリー処理部を設け、
前記リカバリー処理部は、前記起動処理部が前記第1起動モードで起動した場合に第1ディスク媒体のファームウェアを第2ディスク媒体にコピーし、前記起動処理部が前記第2起動モードで起動した場合は第2ディスク媒体のファームウェアを第1ディスク媒体にコピーすることを特徴とする記憶装置の制御装置。
(付記15)
付記13記載の記憶装置の制御装置に於いて、前記リカバリー処理部は、更に、前記起動処理部が前記第3起動モードで起動した場合に第1ディスク媒体のファームウェアを第2ディスク媒体にコピーし、前記起動処理部が前記第4起動モードで起動した場合は第2ディスク媒体のファームウェアを第1ディスク媒体にコピーすることを特徴とする記憶装置の制御装置。
(付記16)
付記13記載の記憶装置の制御装置に於いて、前記起動処理部は、
前記第1乃至第4起動モードでは、前記不揮発メモリについて、格納したファームウェアの正当性の確認を行い正常と判断し、そうでない場合は異常と判定し、
前記第1又は第2起動モードでは、前記第1ディスク媒体及び前記第2ディスク媒体について、格納したファームウェアが読出し可能で、正当であり、更にバージョンが前記不揮発メモリのファームウェアと同一な場合に正常と判断し、そうでない場合は異常と判断し、
前記第3又は第4起動モードでは、前記第1ディスク媒体及び第2ディスク媒体について、格納したファームウェアが読出し可能で、且つ正当性の確認を行い正常と判断し、そうでない場合は異常と判断することを特徴とする記憶装置の制御装置。
(付記17)
付記13記載の記憶装置の制御装置に於いて、前記ファームウェア更新処理部は、
前記バッファメモリに格納した新ファームウェアを前記揮発メモリに配置されている旧ファームウェアに上書きして更新した後に装置を起動して新ファームウェアの処理に切り替え、
切り替え後の新ファームウェアの実行により前記上位装置に更新終了を通知し、
前記揮発メモリの新ファームウェアをバックグラウンド処理により前記第1ディスク媒体、前記不揮発メモリ及び前記第2ディスク媒体の順番に書き込んで更新することを特徴とする記憶装置の制御装置。
(付記18)
付記1記載の記憶装置に於いて、更に、バックグラウンド処理により動作するリカバリー処理部を設け、
前記リカバリー処理部は、
前記起動処理部が前記第1起動モードで起動した場合は第1ディスク媒体のファームウェアを第2ディスク媒体及び第3ディスク媒体にコピーし、
前記起動処理部が前記第2起動モードで起動した場合は第2ディスク媒体のファームウェアを第3ディスク媒体及び第1ディスク媒体にコピーし、更に
前記起動処理部が前記第3起動モードで起動した場合は第3ディスク媒体のファームウェアを第1ディスク媒体及び第2ディスク媒体にコピーすることを特徴とする記憶装置。
(付記19)
ディスク媒体に対しデータを記録再生するドライブ制御ソフトウェアであるファームウェアを、起動コード及び復旧コードを格納した不揮発メモリとディスク媒体に分けて格納すると共に、前記不揮発メモリに格納したファームウェアのコピーを前記ディスク媒体に格納するファームウェア格納処理部と、
電源投入時に、前記不揮発メモリが正常な場合に前記起動コードに基づいて前記不揮発メモリと前記ディスク媒体のファームウェアを揮発メモリに読出し配置して起動する第1起動モード、又は前記第1起動モードで前記不揮発メモリが異常な場合に前記復旧コードに基づいて前記ディスク媒体からファームウェア全体を揮発メモリに読出し配置して起動する第2起動モードのいずれかを実行する起動処理部と、
上位装置から前記ファームウェアの更新要求を受けた際に、バッファメモリに格納した新ファームウェアを前記ディスク媒体に書き込んで更新した後に前記不揮発メモリの旧ファームウェアを破壊し、前記揮発メモリに配置されている旧ファームウェアを前記新ファームウェアに切り替えて実行した後に前記上位装置に更新終了を通知し、その後、前記揮発メモリの新ファームウェアをバックグラウンド処理により前記不揮発メモリに書き込んで更新するファームウェア更新部と、
を備えたことを特徴とする記憶装置。(10)
(付記20)
ディスク媒体に対しデータを記録再生するドライブ制御ソフトウェアであるファームウェアを、起動コード及び復旧コードを格納した不揮発メモリと第1ディスク媒体に分けて格納すると共に、前記不揮発メモリに格納したファームウェアのコピーを前記第1ディスク媒体に格納し、更に、前記第1ディスク媒体に格納したファームウェア全体のコピーを第2ディスク媒体に格納するファームウェア格納処理部と、
電源投入時に、前記不揮発メモリが正常な場合に前記起動コードに基づいて前記不揮発メモリと前記ディスク媒体のファームウェアを揮発メモリに読出し配置して起動する第1起動モード、前記第1起動モードで前記第1ディスク媒体が異常な場合に前記不揮発メモリと前記第2ディスク媒体のファームウェアを揮発メモリに読出し配置して起動する第2起動モード、前記第1起動モードで前記不揮発メモリが異常な場合に前記復旧コードに基づいて前記第1ディスク媒体からファームウェア全体を揮発メモリに読出し配置して起動する第3起動モード、又は、前記第3起動モードで前記第1ディスク媒体が異常な場合に前記第2ディスク媒体からファームウェア全体を揮発メモリに読出し配置して起動する第4起動モードのいずれかを実行する起動処理部と、
上位装置から前記ファームウェアの更新要求を受けた際に、バッファメモリに格納した新ファームウェアを前記第1ディスク媒体に書き込んで更新した後に前記不揮発メモリの旧ファームウェアを破壊し、前記第1ディスク媒体に配置されている旧ファームウェアを前記新ファームウェアに切り替えて実行した後に前記上位装置に更新終了を通知し、その後、前記揮発メモリの新ファームウェアをバックグラウンド処理により前記不揮発メモリ及び前記第2ディスク媒体の順番に書き込んで更新するファームウェア更新部と、
を備えたことを特徴とする記憶装置。(11)
(付記21)
ディスク媒体に対しデータを記録再生するドライブ制御ソフトウェアであるファームウェアを、起動コード及び復旧コードを格納した不揮発メモリとディスク媒体に分けて格納すると共に、前記不揮発メモリに格納したファームウェアのコピーを前記ディスク媒体に格納するファームウェア格納処理ステップと、
電源投入時に、前記不揮発メモリが正常な場合に前記起動コードに基づいて前記不揮発メモリと前記ディスク媒体のファームウェアを揮発メモリに読出し配置して起動する第1起動モード、又は前記第1起動モードで前記不揮発メモリが異常な場合に前記復旧コードに基づいて前記ディスク媒体からファームウェア全体を揮発メモリに読出し配置して起動する第2起動モードのいずれかを実行する起動処理ステップと、
上位装置から前記ファームウェアの更新要求を受けた際に、バッファメモリに格納した新ファームウェアを前記ディスク媒体に書き込んで更新した後に前記不揮発メモリの旧ファームウェアを破壊し、前記揮発メモリに配置されている旧ファームウェアを前記新ファームウェアに切り替えて実行した後に前記上位装置に更新終了を通知し、その後、前記揮発メモリの新ファームウェアをバックグラウンド処理により前記不揮発メモリに書き込んで更新するファームウェア更新ステップと、
を備えたことを特徴とする記憶方法。
(付記22)
ディスク媒体に対しデータを記録再生するドライブ制御ソフトウェアであるファームウェアを、起動コード及び復旧コードを格納した不揮発メモリと第1ディスク媒体に分けて格納すると共に、前記不揮発メモリに格納したファームウェアのコピーを前記第1ディスク媒体に格納し、更に、前記第1ディスク媒体に格納したファームウェア全体のコピーを第2ディスク媒体に格納するファームウェア格納処理ステップと、
電源投入時に、前記不揮発メモリが正常な場合に前記起動コードに基づいて前記不揮発メモリと前記ディスク媒体のファームウェアを揮発メモリに読出し配置して起動する第1起動モード、前記第1起動モードで前記第1ディスク媒体が異常な場合に前記不揮発メモリと前記第2ディスク媒体のファームウェアを揮発メモリに読出し配置して起動する第2起動モード、前記第1起動モードで前記不揮発メモリが異常な場合に前記復旧コードに基づいて前記第1ディスク媒体からファームウェア全体を揮発メモリに読出し配置して起動する第3起動モード、又は、前記第3起動モードで前記第1ディスク媒体が異常な場合に前記第2ディスク媒体からファームウェア全体を揮発メモリに読出し配置して起動する第4起動モードのいずれかを実行する起動処理ステップと、
上位装置から前記ファームウェアの更新要求を受けた際に、バッファメモリに格納した新ファームウェアを前記第1ディスク媒体に書き込んで更新した後に前記不揮発メモリの旧ファームウェアを破壊し、前記揮発メモリに配置されている旧ファームウェアを前記新ファームウェアに切り替えて実行した後に前記上位装置に更新終了を通知し、その後、前記第1ディスク媒体の新ファームウェアをバックグラウンド処理により前記不揮発メモリ及び前記第2ディスク媒体の順番に書き込んで更新するファームウェア更新ステップと、
を備えたことを特徴とする記憶方法。
(付記23)
ディスク媒体に対しデータを記録再生するドライブ制御ソフトウェアであるファームウェアを、起動コード及び復旧コードを格納した不揮発メモリとディスク媒体に分けて格納すると共に、前記不揮発メモリに格納したファームウェアのコピーを前記ディスク媒体に格納するファームウェア格納処理ステップと、
電源投入時に、前記不揮発メモリが正常な場合に前記起動コードに基づいて前記不揮発メモリと前記ディスク媒体のファームウェアを揮発メモリに読出し配置して起動する第1起動モード、又は前記第1起動モードで前記不揮発メモリが異常な場合に前記復旧コードに基づいて前記ディスク媒体からファームウェア全体を揮発メモリに読出し配置して起動する第2起動モードのいずれかを実行する起動処理ステップと、
上位装置から前記ファームウェアの更新要求を受けた際に、バッファメモリに格納した新ファームウェアを前記ディスク媒体に書き込んで更新した後に前記不揮発メモリの旧ファームウェアを破壊し、前記揮発メモリに配置されている旧ファームウェアを前記新ファームウェアに切り替えて実行した後に前記上位装置に更新終了を通知し、その後、前記揮発メモリの新ファームウェアをバックグラウンド処理により前記不揮発メモリに書き込んで更新するファームウェア更新ステップと、
を備えたことを特徴とする記憶装置の制御装置。
(付記24)
ディスク媒体に対しデータを記録再生するドライブ制御ソフトウェアであるファームウェアを、起動コード及び復旧コードを格納した不揮発メモリと第1ディスク媒体に分けて格納すると共に、前記不揮発メモリに格納したファームウェアのコピーを前記第1ディスク媒体に格納し、更に、前記第1ディスク媒体に格納したファームウェア全体のコピーを第2ディスク媒体に格納するファームウェア格納処理ステップと、
電源投入時に、前記不揮発メモリが正常な場合に前記起動コードに基づいて前記不揮発メモリと前記ディスク媒体のファームウェアを揮発メモリに読出し配置して起動する第1起動モード、前記第1起動モードで前記第1ディスク媒体が異常な場合に前記不揮発メモリと前記第2ディスク媒体のファームウェアを揮発メモリに読出し配置して起動する第2起動モード、前記第1起動モードで前記不揮発メモリが異常な場合に前記復旧コードに基づいて前記第1ディスク媒体からファームウェア全体を揮発メモリに読出し配置して起動する第3起動モード、又は、前記第3起動モードで前記第1ディスク媒体が異常な場合に前記第2ディスク媒体からファームウェア全体を揮発メモリに読出し配置して起動する第4起動モードのいずれかを実行する起動処理ステップと、
上位装置から前記ファームウェアの更新要求を受けた際に、バッファメモリに格納した新ファームウェアを前記第1ディスク媒体に書き込んで更新した後に前記不揮発メモリの旧ファームウェアを破壊し、前記揮発メモリに配置されている旧ファームウェアを前記新ファームウェアに切り替えて実行した後に前記上位装置に更新終了を通知し、その後、前記揮発メモリ又は前記第1ディスク媒体の新ファームウェアをバックグラウンド処理により前記不揮発メモリ及び前記第2ディスク媒体の順番に書き込んで更新するファームウェア更新ステップと、
を備えたことを特徴とする記憶装置の制御装置。
本発明の一実施形態を示した磁気ディスク装置のブロック図 本実施形態の磁気ディスク装置を備えたディスクアレイ装置のブロック図 本実施形態におけるファームウェアの格納と起動時の読出し配置を示した説明図 本実施形態の起動処理部による第1起動モードの起動処理の説明図 本実施形態の起動処理部による第2起動モードの起動処理の説明図 本実施形態の起動処理部による第3起動モードの起動処理の説明図 本実施形態の起動処理部による第4起動モードの起動処理の説明図 第1磁気ディスクを使用して起動した際の運用中におけるリカバリー処理の説明図 第2磁気ディスクを使用して起動した際の運用中におけるリカバリー処理の説明図 ファームウェア更新処理の説明図 第1磁気ディスクの更新中又は更新直後にエラーが発生した場合の説明図 図11の更新中にエラーが発生した後の電源投入による起動処理の説明図 図12の起動処理により起動した後の動作中に行われるリカバリー処理の説明図 不揮発メモリの更新中にエラーが発生した場合の説明図 図14の更新中エラーが発生した後の電源投入による起動処理の説明図 不揮発メモリの更新直後又は第2磁気ディスクの更新中にエラーが発生した場合の説明図 図16の更新中エラーが発生した後の電源投入による起動処理の説明図 図17の起動処理で起動した後の動作中に行われるリカバリー処理の説明図 製造段階で行う本実施形態によるファームウェア格納処理のフローチャート 本実施形態の処理動作を示したフローチャート 図20のステップS1の起動処理の詳細を示したフローチャート 図20のステップS7のリカバリー処理の詳細を示したフローチャート 図20のステップS5のファームウェア更新処理の詳細を示したフローチャート 図20のステップS9のファームウェア内部更新処理の詳細を示したフローチャート 不揮発メモリを持たない装置を対象とした本発明の他の実施形態におけるファームウェアの格納状態の説明図 図25の実施形態におけるファームウェア更新処理の説明図 本発明の他の実施形態におけるファームウェアの配置と更新処理の説明図 図27のファームウェア更新で更新直後に電源を切った後の電源投入による第2起動モードの起動処理を示した説明図 図27のファームウェア更新後のバックグランドで実行する不揮発メモリの内部更新処理を示した説明図 図29で不揮発メモリが更新された後の電源投入による第1起動モードの起動処理を示した説明図 図27の実施形態について製造段階で行うファームウェア格納処理のフローチャート 図27の実施形態の処理動作を示したフローチャート 図32のステップS1の起動処理の詳細を示したフローチャート 図32のステップS5のファームウェア更新処理の詳細を示したフローチャート 図32のステップS8のファームウェア内部更新処理の詳細を示したフローチャート 本発明の他の実施形態におけるファームウェアの配置と更新処理の説明図 図36のファームウェア更新で更新直後に電源を切った後の電源投入による第2起動モードの起動処理を示した説明図 図36のファームウェア更新後のバックグランドで実行する不揮発メモリの内部更新処理を示した説明図 図36で不揮発メモリが更新された後の電源投入による第1起動モードの起動処理を示した説明図 不揮発メモリ及び第1磁気ディスクのエラーにより第2磁気ディスクのファームウェアを使用する第3起動モードの起動処理を示した説明図 図40の第3起動モードで起動した後のバックグランドで実行されるリカバリ処理の説明図 図36の実施形態について製造段階で行う本実施形態によるファームウェア格納処理のフローチャート 図36の実施形態の処理動作を示したフローチャート 図43のステップS1の起動処理の詳細を示したフローチャート 図43のステップS5のファームウェア更新処理の詳細を示したフローチャート 図43のステップS7のリカバリ−処理の詳細を示したフローチャート 図43のステップS8のファームウェア内部更新処理の詳細を示したフローチャート
符号の説明
10,10−11〜10−25:磁気ディスク装置
12:ディスクエンクロージャ
14:制御ボード
25:ロータリアクチュエータ
16:スピンドルモータ
18:ボイスコイルモータ
20:磁気ディスク
20−1,20−11:第1磁気ディスク
20−2,20−12:第2磁気ディスク
20−21:第3磁気ディスク
22−1〜22−4:ヘッド
24:ヘッドIC
26:MPU
28:バス
30:揮発メモリ
32:不揮発メモリ
34:ホストインタフェース制御部
36:バッファメモリ制御部
38:バッファメモリ
40:ハードディスクコントローラ
42:リードチャネル
44:モータ駆動制御部
46:ファームウェア格納処理部
48:起動処理部
50:ファームウェア更新処理部
52:リカバリー処理部
55−1,55−2:ホスト
56:ディスクアレイ装置
58−11,58−12,58−21,58−22:チャネルアダプタ
60−1,60−2:制御モジュール
62−1,62−2:ディスクエンクロージャ
64−1,64−2:DMAコントローラ
66−1,66−2:CPU
68−1,68−2:メモリ(揮発)
70−11,70−12,70−21,70−22:デバイスインタフェース
72−1〜72−5:ファームウェア格納領域
74:ブートコード
76:復旧コード
78,78−1,78−2:ファームウェア格納領域
130:破壊処理
132,138:復旧処理
134,140:コピー処理
136:エラー

Claims (11)

  1. ディスク媒体に対しデータを記録再生するドライブ制御ソフトウェアであるファームウェアを、起動コード及び復旧コードを格納した不揮発メモリと第1ディスク媒体に分けて格納すると共に、前記不揮発メモリに格納したファームウェアのコピーを前記第1ディスク媒体に格納し、更に、前記第1ディスク媒体に格納したファームウェア全体のコピーを第2ディスク媒体に格納するファームウェア格納処理部と、
    電源投入時に、前記不揮発メモリが正常な場合に前記起動コードに基づいて前記不揮発メモリと前記第1ディスク媒体のファームウェアを揮発メモリに読出し配置して起動する第1起動モード、前記第1起動モードで前記第1ディスク媒体が異常な場合に前記不揮発メモリと第2ディスク媒体のファームウェアを揮発メモリに読出し配置して起動する第2起動モード、前記不揮発メモリが異常な場合に前記復旧コードに基づいて前記第1ディスク媒体からファームウェア全体を揮発メモリに読出し配置して起動する第3起動モード、又は前記第3起動モードで前記第1ディスク媒体が異常な場合に前記第2ディスク媒体からファームウェア全体を前記揮発メモリに読出し配置して起動する第4起動モードのいずれかを実行する起動処理部と、
    を備えたことを特徴とする記憶装置。
  2. 請求項1記載の記憶装置に於いて、
    上位装置から前記ファームウェアの更新要求を受けた際に、前記揮発メモリに配置されている旧ファームウェアを前記上位装置から転送された新ファームウェアに切り替えて実行した後に、前記揮発メモリの新ファームウェアを前記第1ディスク媒体、前記不揮発メモリ及び前記第2ディスク媒体の順番に書き込んで更新するファームウェア更新処理部を備えたことを特徴とする記憶装置。
  3. 請求項1記載の記憶装置に於いて、更に、バックグラウンド処理により動作するリカバリー処理部を設け、
    前記リカバリー処理部は、前記起動処理部が前記第1起動モードで起動した場合に第1ディスク媒体のファームウェアを第2ディスク媒体にコピーし、前記起動処理部が前記第2起動モードで起動した場合は第2ディスク媒体のファームウェアを第1ディスク媒体にコピーすることを特徴とする記憶装置。
  4. 請求項3記載の記憶装置に於いて、前記リカバリー処理部は、更に、前記起動処理部が前記第3起動モードで起動した場合に第1ディスク媒体のファームウェアを第2ディスク媒体にコピーし、前記起動処理部が前記第4起動モードで起動した場合は第2ディスク媒体のファームウェアを第1ディスク媒体にコピーすることを特徴とする記憶装置。
  5. 請求項1記載の記憶装置に於いて、前記起動処理部は、
    前記第1乃至第4起動モードでは、前記不揮発メモリについて、格納したファームウェアの正当性の確認を行ない正常と判断し、そうでない場合は異常と判断し、
    前記第1又は第2起動モードでは、前記第1ディスク媒体及び前記第2ディスク媒体について、格納したファームウェアが読出し可能で、正当であり、更にバージョンが前記不揮発メモリのファームウェアと同一な場合に正常と判断し、そうでない場合は異常と判断し、
    前記第3又は第4起動モードでは、前記第1ディスク媒体及び第2ディスク媒体について、格納したファームウェアが読出し可能で、且つ正当性の確認を行ない正常と判断し、そうでない場合は異常と判断することを特徴とする記憶装置。
  6. 請求項2記載の記憶装置に於いて、前記ファームウェア更新処理部は、
    前記バッファメモリに格納した新ファームウェアを前記揮発メモリに配置されている旧ファームウェアに上書きして更新した後に装置を起動して新ファームウェアの処理に切り替え、
    切り替え後の新ファームウェアの実行により前記上位装置に更新終了を通知し、
    前記揮発メモリの新ファームウェアをバックグラウンド処理により前記第1ディスク媒体、前記不揮発メモリ及び前記第2ディスク媒体の順番に書き込んで更新することを特徴とする記憶装置。
  7. ディスク媒体に対しデータを記録再生するドライブ制御ソフトウェアであるファームウェアを、起動コード及び復旧コードを格納した不揮発メモリと第1ディスク媒体に分けて格納すると共に、前記不揮発メモリに格納したファームウェアのコピーを前記第1ディスク媒体に格納し、更に、前記第1ディスク媒体に格納したファームウェア全体のコピーを第2ディスク媒体に格納するファームウェア格納処理ステップと、
    電源投入時に、前記不揮発メモリが正常な場合に前記起動コードに基づいて前記不揮発メモリと前記第1ディスク媒体のファームウェアを揮発メモリに読出し配置して起動する第1起動モード、前記第1起動モードで前記第1ディスク媒体が異常な場合に前記不揮発メモリと第2ディスク媒体のファームウェアを揮発メモリに読出し配置して起動する第2起動モード、前記不揮発メモリが異常な場合に前記復旧コードに基づいて前記第1ディスク媒体からファームウェア全体を揮発メモリに読出し配置して起動する第3起動モード、又は前記第3起動モードで前記第1ディスク媒体が異常な場合に前記第2ディスク媒体からファームウェア全体を前記揮発メモリに読出し配置して起動する第4起動モードのいずれかを実行する起動処理ステップと、
    を備えたことを特徴とする記憶装置の制御方法。
  8. 請求項7記載の記憶装置の制御方法に於いて、上位装置から前記ファームウェアの更新要求を受けた際に、前記揮発メモリに配置されている旧ファームウェアを前記上位装置から転送された新ファームウェアに切り替えて実行した後に、前記揮発メモリの新ファームウェアを前記第1ディスク媒体、前記不揮発メモリ及び前記第2ディスク媒体の順番に書き込んで更新するファームウェア更新処理ステップを備えたことを特徴とする記憶装置の制御方法。
  9. ディスク媒体に対しデータを記録再生するドライブ制御ソフトウェアであるファームウェアを、起動コード及び復旧コードを格納した不揮発メモリと第1ディスク媒体に分けて格納すると共に、前記不揮発メモリに格納したファームウェアのコピーを前記第1ディスク媒体に格納し、更に、前記第1ディスク媒体に格納したファームウェア全体のコピーを第2ディスク媒体に格納するファームウェア格納処理部と、
    電源投入時に、前記不揮発メモリが正常な場合に前記起動コードに基づいて前記不揮発メモリと前記第1ディスク媒体のファームウェアを揮発メモリに読出し配置して起動する第1起動モード、前記第1起動モードで前記第1ディスク媒体が異常な場合に前記不揮発メモリと第2ディスク媒体のファームウェアを揮発メモリに読出し配置して起動する第2起動モード、前記不揮発メモリが異常な場合に前記復旧コードに基づいて前記第1ディスク媒体からファームウェア全体を揮発メモリに読出し配置して起動する第3起動モード、又は前記第3起動モードで前記第1ディスク媒体が異常な場合に前記第2ディスク媒体からファームウェア全体を前記揮発メモリに読出し配置して起動する第4起動モードのいずれかを実行する起動処理部と、
    を備えたことを特徴とする記憶装置の制御装置。
  10. ディスク媒体に対しデータを記録再生するドライブ制御ソフトウェアであるファームウェアを、起動コード及び復旧コードを格納した不揮発メモリとディスク媒体に分けて格納すると共に、前記不揮発メモリに格納したファームウェアのコピーを前記ディスク媒体に格納するファームウェア格納処理部と、
    電源投入時に、前記不揮発メモリが正常な場合に前記起動コードに基づいて前記不揮発メモリと前記ディスク媒体のファームウェアを揮発メモリに読出し配置して起動する第1起動モード、又は前記第1起動モードで前記不揮発メモリが異常な場合に前記復旧コードに基づいて前記ディスク媒体からファームウェア全体を揮発メモリに読出し配置して起動する第2起動モードのいずれかを実行する起動処理部と、
    上位装置から前記ファームウェアの更新要求を受けた際に、バッファメモリに格納した新ファームウェアを前記ディスク媒体に書き込んで更新した後に前記不揮発メモリの旧ファームウェアを破壊し、前記揮発メモリに配置されている旧ファームウェアを前記新ファームウェアに切り替えて実行した後に前記上位装置に更新終了を通知し、その後、前記第1ディスク媒体の新ファームウェアをバックグラウンド処理により前記不揮発メモリに書き込んで更新するファームウェア更新部と、
    を備えたことを特徴とする記憶装置。
  11. ディスク媒体に対しデータを記録再生するドライブ制御ソフトウェアであるファームウェアを、起動コード及び復旧コードを格納した不揮発メモリと第1ディスク媒体に分けて格納すると共に、前記不揮発メモリに格納したファームウェアのコピーを前記第1ディスク媒体に格納し、更に、前記第1ディスク媒体に格納したファームウェア全体のコピーを第2ディスク媒体に格納するファームウェア格納処理部と、
    電源投入時に、前記不揮発メモリが正常な場合に前記起動コードに基づいて前記不揮発メモリと前記ディスク媒体のファームウェアを揮発メモリに読出し配置して起動する第1起動モード、前記第1起動モードで前記不揮発メモリが異常な場合に前記復旧コードに基づいて前記第1ディスク媒体からファームウェア全体を揮発メモリに読出し配置して起動する第2起動モード、又は、前記第2起動モードで前記第1ディスク媒体が異常な場合に前記第2ディスク媒体からファームウェア全体を揮発メモリに読出し配置して起動する第3起動モードのいずれかを実行する起動処理部と、
    上位装置から前記ファームウェアの更新要求を受けた際に、バッファメモリに格納した新ファームウェアを前記第1ディスク媒体に書き込んで更新した後に前記不揮発メモリの旧ファームウェアを破壊し、前記揮発メモリに配置されている旧ファームウェアを前記新ファームウェアに切り替えて実行した後に前記上位装置に更新終了を通知し、その後、前記揮発メモリの新ファームウェアをバックグラウンド処理により前記不揮発メモリ及び前記第2ディスク媒体の順番に書き込んで更新するファームウェア更新部と、
    を備えたことを特徴とする記憶装置。
JP2007090976A 2006-08-28 2007-03-30 記憶装置、制御方法及び制御装置 Pending JP2008084291A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2007090976A JP2008084291A (ja) 2006-08-28 2007-03-30 記憶装置、制御方法及び制御装置
US11/881,002 US7818556B2 (en) 2006-08-28 2007-07-25 Storage apparatus, control method, and control device which can be reliably started up when power is turned on even after there is an error during firmware update

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2006230303 2006-08-28
JP2007090976A JP2008084291A (ja) 2006-08-28 2007-03-30 記憶装置、制御方法及び制御装置

Publications (1)

Publication Number Publication Date
JP2008084291A true JP2008084291A (ja) 2008-04-10

Family

ID=39198012

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007090976A Pending JP2008084291A (ja) 2006-08-28 2007-03-30 記憶装置、制御方法及び制御装置

Country Status (2)

Country Link
US (1) US7818556B2 (ja)
JP (1) JP2008084291A (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101571708A (zh) * 2008-04-28 2009-11-04 三星电子株式会社 加工硬盘驱动器的方法
JP2010026650A (ja) * 2008-07-16 2010-02-04 Mitsubishi Electric Corp 制御装置
JP2010122771A (ja) * 2008-11-17 2010-06-03 Hitachi Global Storage Technologies Netherlands Bv ディスク・ドライブ及びそのプログラムの変更方法
JP2011175352A (ja) * 2010-02-23 2011-09-08 Mitsubishi Electric Corp ファームウエア更新装置、通信装置、電子機器、ファームウエア更新システム、ファームウエア更新方法及びプログラム
WO2013103023A1 (ja) * 2012-01-05 2013-07-11 三菱電機株式会社 情報処理装置、情報処理方法、およびコンピュータプログラム
JP2013178733A (ja) * 2011-07-29 2013-09-09 Boeing Co:The ブート前データ検証のための方法及びシステム
US20230393757A1 (en) * 2022-06-02 2023-12-07 Micron Technology, Inc. Storing non-volatile memory initialization failures

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8479189B2 (en) 2000-11-17 2013-07-02 Hewlett-Packard Development Company, L.P. Pattern detection preprocessor in an electronic device update generation system
US7409685B2 (en) 2002-04-12 2008-08-05 Hewlett-Packard Development Company, L.P. Initialization and update of software and/or firmware in electronic devices
US8233893B2 (en) * 2002-08-22 2012-07-31 Hewlett-Packard Development Company, L.P. Mobile handset update package generator that employs nodes technique
US8555273B1 (en) 2003-09-17 2013-10-08 Palm. Inc. Network for updating electronic devices
US7904895B1 (en) 2004-04-21 2011-03-08 Hewlett-Packard Develpment Company, L.P. Firmware update in electronic devices employing update agent in a flash memory card
US8526940B1 (en) 2004-08-17 2013-09-03 Palm, Inc. Centralized rules repository for smart phone customer care
WO2007005790A2 (en) * 2005-06-30 2007-01-11 Sling Media, Inc. Firmware update for consumer electronic device
WO2007146710A2 (en) 2006-06-08 2007-12-21 Hewlett-Packard Development Company, L.P. Device management in a network
US8752044B2 (en) 2006-07-27 2014-06-10 Qualcomm Incorporated User experience and dependency management in a mobile device
JP2008046791A (ja) * 2006-08-14 2008-02-28 Fujitsu Ltd 記憶装置、ファームウェア更新方法、及び制御装置
KR100801014B1 (ko) * 2006-08-21 2008-02-04 삼성전자주식회사 Dos 부트 프로그램을 내장한 디스크를 구비하는 하드 디스크 드라이브와 그를 포함하는 컴퓨터 시스템, 상기 하드 디스크 드라이브의 펌웨어 다운로드 방법 및 그를 포함하는 기록 매체
US8271968B2 (en) * 2006-12-12 2012-09-18 Dell Products L.P. System and method for transparent hard disk drive update
KR100841434B1 (ko) * 2007-09-03 2008-06-25 삼성전자주식회사 영상표시장치 및 그의 edid 정보 변경 방법
US8219595B2 (en) 2008-02-14 2012-07-10 Hewlett-Packard Development Company, L.P. System and method for efficient remote data access for server management
JP2009282834A (ja) * 2008-05-23 2009-12-03 Fujitsu Ltd ディスクアレイ装置,制御ファーム適用方法,及び制御ファーム適用制御部
US9069965B2 (en) * 2008-08-26 2015-06-30 Dell Products L.P. System and method for secure information handling system flash memory access
US8656227B2 (en) * 2008-11-13 2014-02-18 Transcend Information, Inc. On-line client service method for storage apparatus
US8046631B2 (en) * 2009-04-29 2011-10-25 Lsi Corporation Firmware recovery in a raid controller by using a dual firmware configuration
US8966101B2 (en) 2009-08-10 2015-02-24 Sling Media Pvt Ltd Systems and methods for updating firmware over a network
CN102737724B (zh) * 2011-04-07 2016-04-06 北京大家玩科技有限公司 非易失性随机访问存储器测试方法
JP2013052556A (ja) * 2011-09-02 2013-03-21 Canon Inc 画像形成装置、画像形成装置の制御方法、及びプログラム
JP6048020B2 (ja) * 2012-09-13 2016-12-21 株式会社リコー 情報処理装置
US20190087599A1 (en) 2014-04-02 2019-03-21 International Business Machines Corporation Compressing a slice name listing in a dispersed storage network
CN105321534B (zh) * 2015-11-16 2018-07-06 四川效率源信息安全技术股份有限公司 一种修改希捷硬盘磁头位图的方法
US20170168725A1 (en) * 2015-12-10 2017-06-15 Kabushiki Kaisha Toshiba Memory system that updates firmware in response to predetermined events
EP3376391A1 (en) * 2017-03-17 2018-09-19 Ricoh Company Ltd. Information processing apparatus, updating method, and carrier means
JP6812900B2 (ja) * 2017-05-17 2021-01-13 富士通株式会社 ストレージ装置、ストレージ制御装置、およびストレージ制御プログラム
US10642693B2 (en) * 2017-09-06 2020-05-05 Western Digital Technologies, Inc. System and method for switching firmware
CN109542491B (zh) * 2017-09-21 2022-04-05 西部数据技术公司 用于后台固件更新的方法和装置
US20190087174A1 (en) * 2017-09-21 2019-03-21 Western Digital Technologies, Inc. Background firmware update
US10678458B2 (en) * 2018-02-09 2020-06-09 Micron Technology, Inc. Data storage device idle time processing
US10489085B2 (en) * 2018-02-28 2019-11-26 Micron Technology, Inc. Latency-based scheduling of command processing in data storage devices
US20200104118A1 (en) * 2018-09-28 2020-04-02 Bose Corporation Systems and methods for providing staged updates in embedded devices

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09101887A (ja) * 1995-10-06 1997-04-15 Nissin Electric Co Ltd ディスクアレイ装置
JPH09146767A (ja) * 1995-11-27 1997-06-06 Nec Corp プログラム書き換え方法
JP2001331323A (ja) * 2000-05-18 2001-11-30 Canon Inc ダウンロード方法、装置およびシステム
JP2003216435A (ja) * 2002-01-03 2003-07-31 Samsung Electronics Co Ltd コンピュータシステム及びその起動方法
JP2006163714A (ja) * 2004-12-06 2006-06-22 Fuji Photo Film Co Ltd 撮影装置

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2790134B1 (ja) * 1997-03-11 1998-08-27 日本電気株式会社 ディスクアレイシステム
JP2984649B1 (ja) 1998-05-14 1999-11-29 埼玉日本電気株式会社 メモリの読み出し制御方法およびプログラムの読み出し制御方法
US6708231B1 (en) * 1999-08-12 2004-03-16 Mitsumi Electric Co., Ltd. Method and system for performing a peripheral firmware update
JP2003067208A (ja) * 2001-08-23 2003-03-07 Sony Corp 情報処理装置および方法、記録媒体、並びにプログラム
US7028177B2 (en) * 2002-01-31 2006-04-11 Hewlett-Packard Development Company, L.P. Array controller ROM cloning in redundant controllers
US6816950B2 (en) * 2002-05-08 2004-11-09 Lsi Logic Corporation Method and apparatus for upgrading disk drive firmware in a RAID storage system
US6907504B2 (en) * 2002-07-29 2005-06-14 International Business Machines Corporation Method and system for upgrading drive firmware in a non-disruptive manner
US7043664B1 (en) * 2002-10-31 2006-05-09 Microsoft Corporation Firmware recovery
JP2005038716A (ja) 2003-07-15 2005-02-10 Toyota Motor Corp 高耐久性燃料電池用電極、及びその電極を用いた燃料電池
JP4438048B2 (ja) 2003-08-08 2010-03-24 キヤノン株式会社 周辺装置及びその周辺装置のファームウェア更新方法、プログラム
US7594135B2 (en) * 2003-12-31 2009-09-22 Sandisk Corporation Flash memory system startup operation

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09101887A (ja) * 1995-10-06 1997-04-15 Nissin Electric Co Ltd ディスクアレイ装置
JPH09146767A (ja) * 1995-11-27 1997-06-06 Nec Corp プログラム書き換え方法
JP2001331323A (ja) * 2000-05-18 2001-11-30 Canon Inc ダウンロード方法、装置およびシステム
JP2003216435A (ja) * 2002-01-03 2003-07-31 Samsung Electronics Co Ltd コンピュータシステム及びその起動方法
JP2006163714A (ja) * 2004-12-06 2006-06-22 Fuji Photo Film Co Ltd 撮影装置

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101571708B (zh) * 2008-04-28 2014-07-02 三星电子株式会社 加工硬盘驱动器的方法
CN101571708A (zh) * 2008-04-28 2009-11-04 三星电子株式会社 加工硬盘驱动器的方法
JP2010026650A (ja) * 2008-07-16 2010-02-04 Mitsubishi Electric Corp 制御装置
JP2010122771A (ja) * 2008-11-17 2010-06-03 Hitachi Global Storage Technologies Netherlands Bv ディスク・ドライブ及びそのプログラムの変更方法
JP2011175352A (ja) * 2010-02-23 2011-09-08 Mitsubishi Electric Corp ファームウエア更新装置、通信装置、電子機器、ファームウエア更新システム、ファームウエア更新方法及びプログラム
JP2013178733A (ja) * 2011-07-29 2013-09-09 Boeing Co:The ブート前データ検証のための方法及びシステム
WO2013103023A1 (ja) * 2012-01-05 2013-07-11 三菱電機株式会社 情報処理装置、情報処理方法、およびコンピュータプログラム
JP5575338B2 (ja) * 2012-01-05 2014-08-20 三菱電機株式会社 情報処理装置、情報処理方法、およびコンピュータプログラム
CN104025047A (zh) * 2012-01-05 2014-09-03 三菱电机株式会社 信息处理装置、信息处理方法以及计算机程序
JPWO2013103023A1 (ja) * 2012-01-05 2015-05-11 三菱電機株式会社 情報処理装置、情報処理方法、およびコンピュータプログラム
US9471435B2 (en) 2012-01-05 2016-10-18 Mitsubishi Electric Corporation Information processing device, information processing method, and computer program
CN104025047B (zh) * 2012-01-05 2017-06-06 三菱电机株式会社 信息处理装置、信息处理方法以及计算机程序
US20230393757A1 (en) * 2022-06-02 2023-12-07 Micron Technology, Inc. Storing non-volatile memory initialization failures

Also Published As

Publication number Publication date
US20080052506A1 (en) 2008-02-28
US7818556B2 (en) 2010-10-19

Similar Documents

Publication Publication Date Title
JP2008084291A (ja) 記憶装置、制御方法及び制御装置
JP5909264B2 (ja) セキュア・リカバリ装置及び方法
US7765393B1 (en) Method and system of embedding a boot loader as system firmware
US20080126784A1 (en) Storage apparatus, control method, and control device
US7480819B1 (en) Method for boot recovery
JP2008046791A (ja) 記憶装置、ファームウェア更新方法、及び制御装置
US7549020B2 (en) Method and apparatus for raid on memory
JP4486609B2 (ja) ストレージ装置、ストレージ装置のストレージ制御ファームウェアの活性プログラム交換方法及びストレージ制御ファームウェアの活性プログラム交換のためのプログラム
US5623625A (en) Computer network server backup with posted write cache disk controllers
JP6740789B2 (ja) ストレージ制御装置および記憶装置管理プログラム
US6665778B1 (en) System and method for storage of device performance data
TW200414041A (en) Method and system for maintaining firmware versions in a data processing system
JPH10105467A (ja) 冗長キャッシュを備えているraidコントローラにおけるキャッシュのコンシステンシーを維持するための方法および装置
JP2012128643A (ja) メモリシステム
TW201520895A (zh) Bios自動恢復系統及方法
KR20140079285A (ko) 전력 손실 중단 시나리오에서 이벤트 추적 정보의 구조
US20090013167A1 (en) Computer device, method for booting the same, and booting module for the same
JP5314731B2 (ja) データ処理装置間の基本入出力プログラムの同期化方法及びコンピュータシステム
US7457990B2 (en) Information processing apparatus and information processing recovery method
JP2001075741A (ja) ディスク制御システムおよびデータ保全方法
JP2004054616A (ja) ファームウェア自動修復機能を有する情報処理装置
JP5413366B2 (ja) 情報処理装置及び制御方法
TWI826287B (zh) 管理平台系統及其映像檔修復與除錯方法
US20230069169A1 (en) Information processing apparatus and control method of the same
JP2010282645A (ja) Linuxプログラム起動システム

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20091023

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20091117

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20120116

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20120117

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120222

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120228

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120703