JP5289003B2 - ディスク・ドライブ及びそのプログラムの変更方法 - Google Patents

ディスク・ドライブ及びそのプログラムの変更方法 Download PDF

Info

Publication number
JP5289003B2
JP5289003B2 JP2008293950A JP2008293950A JP5289003B2 JP 5289003 B2 JP5289003 B2 JP 5289003B2 JP 2008293950 A JP2008293950 A JP 2008293950A JP 2008293950 A JP2008293950 A JP 2008293950A JP 5289003 B2 JP5289003 B2 JP 5289003B2
Authority
JP
Japan
Prior art keywords
area
program
eeprom
new
disk
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.)
Expired - Fee Related
Application number
JP2008293950A
Other languages
English (en)
Other versions
JP2010122771A (ja
JP2010122771A5 (ja
Inventor
亨 相田
Original Assignee
エイチジーエスティーネザーランドビーブイ
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 エイチジーエスティーネザーランドビーブイ filed Critical エイチジーエスティーネザーランドビーブイ
Priority to JP2008293950A priority Critical patent/JP5289003B2/ja
Priority to US12/620,497 priority patent/US8429336B2/en
Publication of JP2010122771A publication Critical patent/JP2010122771A/ja
Publication of JP2010122771A5 publication Critical patent/JP2010122771A5/ja
Application granted granted Critical
Publication of JP5289003B2 publication Critical patent/JP5289003B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/654Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories

Description

本発明はディスク・ドライブ及びそのプログラムの変更方法に関し、特に、ディスク・ドライブに実装されているEEPROMに格納されているプログラムの更新に関する。
記録可能な記憶ディスクとして、光ディスク、光磁気ディスク、そして磁気ディスクといった様々な記録方式のディスクが知られている。この中で、固定された磁気ディスクを記憶媒体とするハードディスク・ドライブ(HDD)は、高速で大容量を実現できるディスク・ドライブとして多くの分野で利用されている。このようなHDDの大容量化・高機能化に伴い、HDDの出荷後に、HDDに新たな機能の追加あるいはHDDの設定パラメータ変更のために、HDDのファームウェアの更新を行うことの必要性が増している。
しかし、完成品との一部品としてエンド・ユーザの手元に届いたHDDのファームウェアを更新するために、サービスセンタや工場で回収することは、時間、コスト、そして効率の点から望ましくはない。そのため、ファームウェアの更新が必要な場合は、新しいファームウェアが配布される。HDDが接続されているホスト・コンピュータは、ファームウェアをHDDにダウンロードすることで、ファームウェアを更新することができる。ファームウェア更新のためのHDDとホスト・コンピュータとの間におけるプロトコルが一般に存在し、HDDとホストとは、このプロトコルに従ってファームウェア更新のためのデータを送受信する。
ファームウェアの更新は、エンド・ユーザのもとであっても、安全かつ確実に行わなければならない。電源遮断によりファームウェアの更新が中断された場合でも、HDDの機能が失われることがあってはならない。ファームウェアの更新がいかなる瞬間に中断したとしても、更新前あるいは更新完了後のいずれのかの状態で機能し続けることができる更新方法は、トランザクション・アップデートと呼ばれ、ハードウェア及びソフトウェアの資源に冗長性をもつ余裕があるアプリケーションでは、比較的一般的な技術となっている(例えば、特許文献1を参照)。
特開2006−189973号公報
しかし、HDDのように、ハードウェア及びソフトウェアの両面での制約が非常に厳しい製品では、従来のトランザクション・アップデートをそのまま実装できるほどの冗長性を持たせることは難しい。ファームウェアの更新をファームウェアの一部に限定するアプローチも考えられるが、非更新部分の割合が大きければ大きいほど、ファームウェア更新そのものの有用性が失われてしまう。従って、HDDのように、ハードウェア資源及びソフトウェア資源の限られた環境下においても、トランザクション・アップデートを実行することができる技術が望まれる。
本発明の一態様は、EEPROMを有するディスク・ドライブにおいて、そのディスク・ドライブを制御するプログラムを変更する方法である。この方法は、ディスク領域からのリードに不要なプログラム・ブロックを格納する第2領域に対応するプログラム・ブロックを、前記ディスク領域に格納する。前記ディスク領域からのリードに必要なプログラム・ブロックを第1領域に格納する前記EEPROMにおいて、前記第2領域の少なくとも一部を含む領域に、前記第1領域に対応するプログラム・ブロックを格納する。前記第2領域への格納の後、前記第1領域のプログラム・ブロックを変更する。前記第1領域の変更後、前記第2領域に前記ディスク領域からのリードに不要なプログラム・ブロックを格納する。これにより、容量の限られたEEPROMを有するディスク・ドライブにおいて、そのEEPROMに記憶されているプログラムの変更を安全に行うことができる。
好ましくは、前記第1領域に格納する新しい第1プログラム・ブロックと前記第2領域に格納する新しい第2プログラム・ブロックとを含む新しいプログラムを取得して前記ディスク領域に格納し、前記第2領域に対応するプログラム・ブロックは、前記新しい第2プログラム・ブロックであり、前記第1領域に対応するプログラム・ブロックは、前記新しい第1プログラム・ブロックであり、前記第1領域の変更後に前記第2領域へ格納するプログラム・ブロックは、前記新しい第2プログラム・ブロックである。これにより、シンプルな処理によりプログラムの更新を安全に行うことができる。
さらに、前記新しいプログラムに含まれる新しいブート・コードを、前記EEPROMの空き領域に格納し、前記EEPROMにすでに格納されているブート・コードと前記新しいブート・コードの双方を維持する。これにより、その後の起動に支障が生じることなくブート・コードを変更することができる。
好ましくは、前記ディスク・ドライブを制御するプログラムの一部のプログラム・ブロックは前記ディスク領域に格納されており、前記ディスク領域の前記一部のプログラム・ブロックを、前記ディスク領域内の異なる領域にバックアップした後に、前記ディスク領域に格納されている前記新しいプログラムにより前記ディスク領域内の前記一部のプログラム・ブロックを変更する。これにより、プログラム全体に対して容量の小さいEEPROMが実装されたディスク・ドライブにおいて、プログラムの変更を安全に行うことができる。
好ましくは、前記EEPROMと異なる第2EEPROMの領域内に格納されている前記ディスク領域からのリードに必要な第3プログラム・ブロックを前記EEPROMにバックアップした後に、前記ディスク領域に格納されている前記新しいプログラム内の新しい第3プログラム・ブロックを前記第2EEPROMの前記領域に格納する。これにより、プログラム・ブロックの特性に応じた適切なメモリ領域への格納を行いながら、安全にプログラムの変更を行うことができる。
前記プログラムの変更処理において変化する現在の状態を特定するデータを前記EEPROM及び/もしくはそれと異なるEEPROMの専用領域に格納していく。これにより、変更途中における電源遮断が発生してもより容易かつ確実に回復することができる。
本発明の他の態様はディスク・ドライブであり、そのディスク・ドライブは、データを記憶するディスク領域と、EEPROMと、コントローラとを有する。前記EEPROMは、前記ディスク領域からのリードに必要なブロックを第1領域に格納し、さらに、前記ディスク領域からのリードに不要なプログラム・ブロックを第2領域に格納する。前記コントローラは、前記第2領域に対応するプログラム・ブロックを前記ディスク領域に格納した後に、前記EEPROMにおいて前記第2領域の少なくとも一部を含む領域に前記第1領域に対応するプログラム・ブロックを格納し、その後、前記第1領域のプログラム・ブロックを変更した後に、前記第2領域に前記ディスク領域からのリードに不要なプログラム・ブロックを格納する。これにより、容量の限られたEEPROMを有するディスク・ドライブにおいて、そのEEPROMに記憶されているプログラムの変更を安全に行うことができる。
本発明によれは、容量の限られたEEPROMを有するディスク・ドライブにおいて、そのEEPROMに記憶されているプログラムの変更を安全に行うことができる。
以下に、本発明を適用可能な実施の形態を説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略及び簡略化がなされている。又、各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略されている。以下においては、ディスク・ドライブの一例であるハードディスク・ドライブ(HDD)を例として、本発明の実施形態を説明する。
本形態は、HDDの動作を制御するプログラムであるファームウェアの変更にその特徴を有している。HDDは、ファームウェアを記憶する書換え可能な複数の不揮発性メモリのデバイスを有している。一つは磁気ディスク、他の一つはEEPROMである。好適には、HDDは二つのEEPROMを有し、第1EEPROMは、消去単位と書き込み/読み出しの単位が異なるフラッシュ・メモリであり、第2EEPROMは消去と書き込み/読み出しの単位が同一であるEEPROMである。本形態のファームウェア変更は、変更前のファームウェアのプログラム・ブロックをバックアップするメモリ領域とタイミング、あるいは、新しいファームウェアを構成するプログラム・ブロックの格納エリアと格納タイミングとを適切に選択することで、EEPROMのメモリ容量が小さい場合であっても、安全にファームウェアの更新を行うことができる。
図1は、本形態のファームウェア更新のためのシステムの例を模式的に示すブロック図である。図1(a)に示すように、新たなファームウェアは、メーカのサーバ52から、ネットワーク54を介して、HDD1が実装されているコンピュータ51に転送される。コンピュータ51は、HDD1にサーバ52から受信した新たなファームウェアを転送する。図1(b)のシーケンス図に示すように、サーバ52は、新たなファームウェアをコンピュータ51に送信する。コンピュータ51は、受信した新ファームウェアをHDD1に転送する。HDD1は受信した新ファームウェアを磁気ディスクに格納し、その後、旧ファームウェアを新ファームウェアに書き換える。
HDD1におけるファームウェアの更新について具体的に説明する前に、HDD1の全体構成を説明する。図2に示すように、HDD1は、エンクロージャ10の外側に固定された回路基板20を有している。回路基板20上に、リード・ライト・チャネル(RWチャネル)21、モータ・ドライバ・ユニット22、ロジック回路であるハードディスク・コントローラ(HDC)とMPUの集積回路(HDC/MPU)23、RAM24、第2EEPROM、第1EEPROMなどの各回路が実装されている。エンクロージャ10内において、スピンドル・モータ(SPM)14は所定の角速度で磁気ディスク11を回転する。
ヘッド・スライダ12は、磁気ディスク11上を浮上するスライダと、スライダに固定され磁気信号と電気信号との間の変換(データの読み書き)を行うヘッド素子部とを備えている。ヘッド・スライダ12はアクチュエータ16の先端部に固定されている。アクチュエータ16はボイス・コイル・モータ(VCM)15に連結され、回動軸を中心に回動することによって、ヘッド・スライダ12を回転する磁気ディスク11上においてその半径方向に移動する。モータ・ドライバ・ユニット22は、HDC/MPU23からの制御データに従ってSPM14、VCM15を駆動する。
アーム電子回路(AE:Arm Electronics)13は、HDC/MPU23からの制御データに従って複数のヘッド・スライダ12の中から磁気ディスク11にアクセスするヘッド・スライダ12を選択し、リード/ライト信号の増幅を行う。RWチャネル21は、リード処理において、AE13から供給されたリード信号からデータを抽出してデコード処理を行い、HDC/MPU23に転送する。また、ライト処理において、HDC/MPU23から転送されたライト・データをコード変調し、コード変調したデータをライト信号に変換してAE13に供給する。
HDC/MPU23において、プロセッサであるMPUは、第1EEPROM25、第2EEPROM26、そして磁気ディスク11からロードされたファームウェアに従って動作する。好ましい構成において、第2EEPROM26は消去と書き込み/読み出しの単位が同一であるEEPROMであり、第1EEPROMはフラッシュ・メモリである。第1EEPROM25は、第2EEPROM26よりも大きい容量を有している。このように、異なるタイプの二つのEEPROMを実装することで、頻繁に更新する必要がある固体毎のデータを、小容量でも書き換え単位が小さく、かつ書き換え可能回数がフラッシュ・メモリより多い第2EEPROM26に格納することができる。
ファームウェアは、HDC/MPU23内のSRAM、RAM24、あるいはそれら両方にロードされる。HDC/MPU23は、リード/ライト処理制御、コマンド実行順序の管理、サーボ信号を使用したヘッド・ポジショニング制御(サーボ制御)、コンピュータ51との間のインターフェース制御、ディフェクト管理、エラー対応処理など、データ処理に関する必要な処理及びHDD1の全体制御を実行する。
本形態のHDC/MPU23は、ファームウェアの更新処理を行う。HDC/MPU23内のインターフェースがコンピュータ51からファームウェア更新のためのデータを受信する。MPUはファームウェア更新プログラムに従って動作し、HDD1の動作を制御するファームウェアの更新処理を行う。
本構成において、ファームウェアは、磁気ディスク11、第2EEPROM26そして第1EEPROM25に分散して格納されている。そのため、HDC/MPU23は、コンピュータ51から取得した新ファームウェアによって、三つの不揮発性メモリのコードを更新する。HDD1は、一もしくは複数の磁気ディスク11を有している。ファームウェアは、磁気ディスク11の一つの記録面のみに格納しても、複数の記録面あるいは複数の磁気ディスク11に分散して格納してもよい。以下において、ファームウェアが一つの記録面の管理領域上に格納される例を説明するが、実装された磁気ディスク11全体の領域であるディスク領域のいずれの領域に格納してもよい。
図3のフローチャートは、ファームウェア更新の全体の流れを示している。HDC/MPU23は、新ファームウェアをホスト・コンピュータ51から取得すると(S11)、それを磁気ディスク11の管理領域に格納する(S12)。その後、HDC/MPU23は、磁気ディスク11の管理領域に格納されている旧ファームウェアを、管理領域内の他の領域にバックアップする(S13)。さらに、HDC/MPU23は、第2EEPROM26に格納されている旧ファームウェアを第1EEPROM25にバックアップする(S14)。その後、HDC/MPU23は、磁気ディスク11に格納されているファームウェアの更新処理を行う(S15)。さらに、HDC/MPU23は、第2EEPROM26の更新処理を行う(S16)。最後に、HDC/MPU23は、第1EEPROM25の更新処理を行う(S17)。
図4は、三つの不揮発性メモリに分散して格納されているファームウェアを模式的に示すブロック図である。各コードの名前は主なコードを示しており、それ以外のコードも含んでいる。第2EEPROM26には、チャネル・パラメータなどの、HDDごとに異なるデータが格納されている。第1EEPROM25は、ブート・コード、ディスク・アクセス・コード、そしてインターフェース・コードを格納している。ブート・コードは、MPUが初期化処理を行うためのコードであり、MPUは起動すると、最初にこのブート・モードが格納されているアドレスにアクセスする。
ディスク・アクセス・コードは、HDC/MPU23が磁気ディスク11に格納されているデータを読み出すための処理を実行するコードであり、サーボ制御やリード処理に必要なコードから構成されている。また、本構成において、ディスク・アクセス・コードは、ファームウェア更新プログラムと更新が中断したときの回復処理プログラムを含む。HDC/MPU23が磁気ディスク11からデータを読み出すためには、このディスク・アクセス・コードと第2EEPROM26のパラメータが必要である。インターフェース・コードは、ホスト・コンピュータ51とのインターフェース処理(コマンド処理)を実行するコードの他、磁気ディスク11へのアクセスには不要なコードを含む。
磁気ディスク11には、第2EEPROM26及び第1EEPROM25に格納されているコード以外のファームウェアの残りのコードを、その管理領域に格納している。管理領域は、ユーザ・データ以外の管理データを格納するための領域である。本明細書において、これをRAMコードと呼ぶ。図を参照して説明したように、ホスト・コンピュータ51から転送された新ファームウェアは、磁気ディスク11の管理領域に保存される。
HDC/MPU23は、磁気ディスク11上の新ファームウェアにより、三つの不揮発性メモリに分散しているファームウェアを書き換える。また、この書換え(更新)の途中おいて不測の電源遮断が発生した場合にも、回復することができるように、所定の手順に従って、各メモリのコードを更新する。なお、本明細書においては、命令、パラメータを問わず、プロセッサ(MPU)の動作に使用されるデータをプログラムと呼ぶ。上記ディスク・アクセス・コード、インターフェース・コード、ブート・コード、パラメータは、全てプログラム・ブロックである。また、不揮発性メモリの各領域に格納するプログラム・ブロックは、更新前の旧プログラム・ブロックも更新後の新プログラム・ブロックも、その領域に対応するプログラム・ブロックである。
まず、磁気ディスク11のファームウェアの更新について説明する。磁気ディスク11のファームウェア更新(S15)において、HDC/MPU23は、磁気ディスク11から新RAMコードをRAM24あるいはSRAMにロードし、さらに、その新RAMコードを、旧RAMコードが格納されている磁気ディスク11の領域に書き込む。これにより、磁気ディスク11上のRAMコードが更新される。
次に、第2EEPROM26のファームウェア更新処理について説明する。図5に示すように、HDC/MPU23は、第2EEPROM26の旧パラメータを第1EEPROM25にバックアップ(S14)した後に、第2EEPROM26のファームウェア更新(S16)を開始する。HDC/MPU23は、第2EEPROM26の旧パラメータをRAM24もしくはSRAMにロードし、それを第1EEPROM25の空き領域に格納する。図5の例において、旧パラメータの格納に必要な容量は2Kとしてある。なお、以下の説明におけるデータの記憶容量の数字は一例である。
さらに、HDC/MPU23は、磁気ディスク11から新パラメータをRAM24もしくはSRAMにロードし、その新パラメータを第2EEPROM26の旧パラメータが格納されている領域に格納する(書換え)。これにより、第2EEPROM26の更新処理が終了する。第1EEPROM25に旧パラメータをバックアップすることで、第2EEPROM26の更新において電源遮断が起きた場合にも、バックアップをした旧パラメータにより回復することができる。
次に、第1EEPROM25のファームウェア更新処理(S17)について、具体的に説明する。第1EEPROM25のファームウェア更新処理を開始する前、第1EEPROM25が格納しているファームウェアは、図5に示す通りである。つまり、旧ブート・コード、旧ディスク・アクセス・コード、旧インターフェース・コード、そして旧パラメータである。第2EEPROM26の更新は完了しているため、旧パラメータを格納する領域は空き領域と考えることができる。
図6のフローチャートに示すように、HDC/MPU23は、まず、新ブート・コードを第1EEPROM25の空き領域に格納する(S21)。図7Aは、この処理を模式的に示している。図7Aにおいては、旧パラメータを格納していた領域を含む領域ROM3に、新ブート・コードが格納されている。HDC/MPU23は、磁気ディスク11から新ブート・コードを読み出し、それを第1EEPROM25の領域ROM3に格納する。
図6に示すように、HDC/MPU23は、次に、新ディスク・アクセス・コードを第1EEPROM25の領域ROM2、ROM4に格納する(S22)。図7Bの上部は、この処理を模式的に示している。図7Aに示すように、領域ROM2には、旧インターフェース・コードを格納している領域であり、領域ROM4は空き領域である。これらの領域の合計容量は60KBであり、旧ディスク・アクセス・コードを格納する領域ROM1と同じである。HDC/MPU23は、磁気ディスク11から新ディスク・アクセス・コードを読み出し、それを第1EEPROM25の領域ROM2、ROM4に格納する。なお、新ディスク・アクセス・コード(領域ROM1)の容量がより小さい場合、新ディスク・アクセス・コードの格納に領域ROM2の一部のみ、あるいはROM4の一部のみを使用してもよい。
後に説明するが、新インターフェース・コードが磁気ディスク11に格納されており、また、旧インターフェース・コードが磁気ディスク11からのリードに不要であることから、更新が中断しても、適切な回復処理が可能である。また、新ディスク・アクセス・コードの格納に領域ROM2を使用することで、第1EEPROM25の領域を効率的に使用することでき、第1EEPROM25の容量が小さい場合も、安全にファームウェア更新を行うことができる。
次に、HDC/MPU23は、旧ディスク・アクセス・コードを新ディスク・アクセス・コードに書き換える(S23)。図7Bの下部は、この処理を模式的に示している。HDC/MPU23は、第1EEPROM25の領域ROM2、ROM4から新ディスク・アクセス・コードを読み出し(RAM24もしくはSRAMにロード)、それを第1EEPROM25の領域ROM1に書き込む。これにより、領域ROM1の旧ディスク・アクセス・コードが、新ディスク・アクセス・コードに書き換えられる。
最後に、HDC/MPU23は、第1EEPROM25の領域ROM2に、新インターフェース・コードを書き込む(S24)。図7Cは、この処理を模式的に示している。HDC/MPU23は、磁気ディスク11から新インターフェース・コードを読み出し(RAM24もしくはSRAMにロード)、それを第1EEPROM25の領域ROM2に格納する。領域ROM2には新ディスク・アクセス・コードが格納されていたが、新インターフェース・コードにより上書きされる。
以上の処理により、HDD1のファームウェア更新処理が完了する。旧ブート・コードは、第1EEPROM25の領域ROM0に残される。領域ROM0は、MPUが最初にアクセスする領域であり、そのアドレスは固定されている。そのため、領域ROM0の更新が中断すると、その後に回復を行うことができない。従って、領域ROM0に旧ブート・コードを維持し、実際の処理においては、MPUは、領域ROM3の新ブート・コードに従って動作する。具体的には、MPUは、最初に旧ブート・コードをロードしてそれに従って動作し、その後、新ブート・コードをロードする。新ブート・コードのロード後は、その新ブート・コードに従って動作する。
上述の処理により三つの不揮発性メモリに分散しているファームウェアを更新することで、いずれのタイミングで電源遮断が発生しても回復処理を行うことができる。つまり、本形態のファームウェア更新は、トランザクショナルアップデートとして実現可能である。HDC/MPU23は、回復処理により、ファームウェアの更新前の状態あるいは更新後の状態に移行することができる。これにより、更新前あるいは更新後においてHDD1が機能し続けることができることを保障する。以下においては、上記処理に各タイミングにおいて電源遮断が発生した場合の回復処理について説明を行う。
HDC/MPU23は、チェックポイントと呼ぶ更新状況を管理することで更新中断からの回復処理を制御する。チェックポイントを示すデータは、第2EEPROM26内に専用に確保したアドレス領域に格納し、ファームウェアそのものの更新とは独立に管理する。チェックポイントは小さいデータであり、最小書き換え単位の小さい第2EEPROM26を使うことが記憶容量有効活用につながる。なお、第1EEPROM25の同様の領域を確保できるのであれば、そこにチェックポイントを示すデータを格納してもよい。電源遮断によりファームウェア更新が中断された場合、次回の電源投入時にHDC/MPU23はチェックポイントに応じた回復処理を実施する。これにより、ファームウェア更新前あるいは更新後の状態でHDD1が機能し続けることを保障する。
図8は、磁気ディスク11、第2EEPROM26そして第1EEPROM25での更新処理の各工程に対応するチェックポイントを示す図である。チェックポイントは、0〜6まで存在している。三つの不揮発性メモリにファームウェアが全て更新前の旧ファームウェアである、あるいは更新後の新ファームウェアである状態が、チェックポイント0である。
磁気ディスク11上のファームウェアであるRAMコードを更新している途中(図3におけるS15)の状態がチェックポイント1である。RAMコードの更新が終了し、第2EEPROM26のコードを更新している途中(S16)の状態がチェックポイント2である。そして、チェックポイント3〜6は、第1EEPROM25のコードを更新している途中(S17)の、いずれかの状態である。HDC/MPU23は、ファームウェア更新処理の各工程を開始するときに、チェックポイントを示す管理情報を更新していく。
図9は、第1EEPROM25での更新処理の各状態に対応するチェックポイント3〜6を示している。チェックポイント3は、領域ROM3に新ブート・コードを書き込む途中にある状態である(図6のS21、図7Aを参照)。チェックポイント4は、新ブート・コードを書き込んだ後に、新ディスク・アクセス・コードを領域ROM2、ROM4に書き込む途中の状態である(S22、図7Bを参照)。チェックポイント5は、領域ROM2、ROM4の新ディスク・アクセス・コードを領域ROM1に書き込む途中の状態である(S23、図7Bを参照)。最後に、チェックポイント6は、領域ROM2に新インターフェース・コードを書き込む途中の状態である(S24、図7Cを参照)。
以下に、上記各チェックポイントにおいて電源遮断が起きた後、次の起動処理においてHDC/MPU23が行う回復処理の方法を順次説明する。第2EEPROM26内の管理データチェックポイント0であるとき、三つの不揮発性メモリのファームウェアは、全て更新前あるいは更新後であるので、回復処理は不要である。
管理データがチェックポイント1を示すとき、更新処理は磁気ディスク11上のRAMコードの更新途中で中断している。そのため、HDC/MPU23は、磁気ディスク11の管理領域内の他の領域に格納してある旧RAMコードにより、本来のアドレス領域の旧RAMコードをリストアする。これにより、回復処理は完了する。回復後の状態は、ファームウェア更新前の状態である。
管理データがチェックポイント2を示すとき、更新処理は第2EEPROM26上のパラメータの更新途中で中断している。そのため、HDC/MPU23は、第1EEPROM25にバックアップしてある旧パラメータ(図5を参照)により、第2EEPROM26の旧パラメータをリストアする。これにより、HDC/MPU23は、第2EEPROM26の旧パラメータと第1EEPROM25の旧ディスク・アクセス・コードとにより、磁気ディスク11の管理領域にアクセスすることができる。HDC/MPU23は、チェックポイント1における回復処理を行い、磁気ディスク11のRAMコードを旧RAMコードに戻す。これにより、回復処理は完了する。回復後の状態は、ファームウェア更新前の状態である。
管理データがチェックポイント3を示すとき、更新処理は第1EEPROM25上の新ブート・コードの書き込み途中(領域ROM3の更新途中)で中断している。HDC/MPU23は、第1EEPROM25の領域ROM0にある旧ブート・コード、第2EEPROM26の新パラメータ、そして第1EEPROM25の領域ROM1の旧ディスク・アクセス・コードにより、磁気ディスク11の管理領域にアクセスすることができる。従って、HDC/MPU23は、磁気ディスク11に格納してある新ブート・コードを読み出して、領域ROM3の更新から更新処理を再開する。回復後の状態は、ファームウェア更新後の状態である。
管理データがチェックポイント4を示すとき、更新処理は第1EEPROM25上の新ディスク・アクセス・コードの書き込み途中で中断している。HDC/MPU23は、第1EEPROM25の領域ROM3にある新ブート・コード、第2EEPROM26の新パラメータ、そして第1EEPROM25の領域ROM1の旧ディスク・アクセス・コードにより、磁気ディスク11の管理領域にアクセスすることができる。従って、HDC/MPU23は、磁気ディスク11に格納してある新ディスク・アクセス・コードを読み出して、新ディスク・アクセス・コードの書込みから更新処理を再開する。回復後の状態は、ファームウェア更新後の状態である。
管理データがチェックポイント5を示すとき、更新処理は第1EEPROM25上の領域ROM1への新ディスク・アクセス・コードの書き込み途中(領域ROM1の更新途中)で中断している。HDC/MPU23は、第1EEPROM25の領域ROM2、4の新ディスク・アクセス・コードを、領域ROM1に書き込む工程から更新処理を再開する。回復後の状態は、ファームウェア更新後の状態である。
管理データがチェックポイント6を示すとき、更新処理は第1EEPROM25上の新インテーフェース・コードの書き込み途中で中断している。HDC/MPU23は、第1EEPROM25の領域ROM3にある新ブート・コード、第2EEPROM26の新パラメータ、そして第1EEPROM25の領域ROM1の新ディスク・アクセス・コードにより、磁気ディスク11の管理領域にアクセスすることができる。従って、HDC/MPU23は、磁気ディスク11に格納してある新インテーフェース・コードを読み出して、領域ROM2への新インテーフェース・コードの書込みから更新処理を再開する。回復後の状態は、ファームウェア更新後の状態である。
以上説明したファームウェアの更新により、HDDのファームウェアを安全かつ効率的に更新することができる。上記方法は、新たな全体のファームウェアをホストから取得し、それを現在のファームウェア(更新前の旧ファームウェア)と入れ替える。ファームウェアの更新をシンプルに行うためには、新ファームウェア全体をホストから受信して、旧ファームウェアと入れ替えることが好ましい。しかし、ファームウェア全体を新しいファームウェアに入れ替えるものと異なり、現在のファームウェアの一部を変更する処理に本発明を適用することができる。
ファームウェアの一部の変更する処理の一つとして、ファームウェアを構成する複数のプログラム・ブロックの一部のプログラム・ブロックを入れ替える処理がある。また、ファームウェアの一部の変更する処理の他の一つとしては、一つもしくは複数プログラム・ブロックのそれぞれの一部を書き換える処理がある。本発明は、いずれの処理にも適用することができる。
一部のプログラム・ブロックを入れ替える処理の例として、新ディスク・アクセス・コードのみをホスト51から受信し、それによりファームウェアの更新を行う処理を説明する。2つのEEPROM25、26において各プログラム・ブロックを格納する領域は上述の構成と同じである。上記構成と異なる構成についてのみ説明する。
まず、HDC/MPU23は、ホスト51から新ディスク・アクセス・コードを受信して、磁気ディスク11に保存する。さらに、領域ROM2のインターフェース・コードを、磁気ディスク11にバックアップする。その後、領域ROM1の旧ディスク・アクセス・コードを領域ROM2、ROM4に書き込む。
次に、HDC/MPU23は、磁気ディスク11に格納している新ディスク・アクセス・コードを領域ROM1に書き込む。最後に、HDC/MPU23は、磁気ディスク11にバックアップしたインターフェース・コードを領域ROM2に書き戻す。他のプログラム・ブロックは、この処理においては参照されない。この処理の流れにより、いずれのタイミングで電源遮断が発生した場合も、回復処理を行うことができる。
ディスク・アクセス・コードに加え、インターフェース・コードも新しいものに入れ替える場合は、磁気ディスク11へ旧インターフェース・コードの代わりに新インターフェース・コードを格納すればよい。この処理では、新旧のディスク・アクセス・コードは領域ROM1に対応するプログラム・コードであり、新旧のインターフェース・コードは領域ROM2に対応するプログラム・コードである。
次に、一つもしくは複数プログラム・ブロックのそれぞれの一部を書き換える処理の例として、ディスク・アクセス・コードの一部のみを変更する処理を説明する。HDC/MPU23は、ディスク・アクセス・コードの一部を変更するためのプログラムをホストから受信し、それを磁気ディスク11に格納する。HDC/MPU23は、領域ROM2のインターフェース・コードを磁気ディスク11に格納(バックアップ)した後、領域ROM1のディスク・アクセス・コードを領域ROM2、ROM4に書き込む。
HDC/MPU23は、ホストから受信したプログラムにより、ディスク・アクセス・コードをRAM24あるいはSRAM上で変更し、それを領域ROM1に書き込む。最後に、HDC/MPU23は、領域ROM2に磁気ディスク11上のインターフェース・コードを書き込む。インターフェース・コードも変更する場合は、HDC/MPU23は、RAM24あるいはSRAM上で磁気ディスク11から読み出したインターフェース・コードを変更した後に、領域ROM2に書き込む。この処理では、変更前後のディスク・アクセス・コードの双方が領域ROM1に対応するプログラム・ブロックであり、変更前後のインターフェース・コードの双方が領域ROM2に対応するプログラム・ブロックである。この処理の流れにより、いずれのタイミングで電源遮断が発生した場合も、回復処理を行うことができる。
以上、本発明を好ましい実施形態を例として説明したが、本発明が上記の実施形態に限定されるものではない。当業者であれば、上記の実施形態の各要素を、本発明の範囲において容易に変更、追加、変換することが可能である。例えば、本発明は、不揮発性半導体メモリとして第1EEPROMのみを有し、パラメータもそこに格納されているHDDに適用することができる。
磁気ディスク及び第1、第2EEPROMのプログラム・ブロックの変更順序は、設計により適切な順序とすることができる。本発明は、ファームウェアの更新以外のファームウェア変更に適用することができる。例えば、ファームウェアを更新した後、元のファームウェアに戻すというファームウェア変更にも本発明を適用することができる。ホストから受信した新しいプログラムは、磁気ディスクに格納することが好ましい。これにより、HDD内の処理で回復処理を行うことができるからである。しかし、設計によっては、電源遮断が生じた場合に新たにホストから受信するようにしてもよい。
本実施形態に係るファームウェア更新のためのシステムの例を模式的に示すブロック図である。 本実施形態に係るHDDの全体構成を模式的に示すブロック図である。 本実施形態に係るファームウェア更新の全体処理の流れを示すフローチャートである。 本実施形態において、各不揮発性メモリに分散して格納されているファームウェアのプログラム・ブロックを模式的に示す図である。 本実施形態おいて、第2EEPROMのファームウェアの更新処理を模式的に示す図である。 本実施形態おいて、第1EEPROMのファームウェアの更新処理の流れを示すフローチャートである。 本実施形態の第1EEPROMのファームウェアの更新処理において、第1EEPROMの格納データ(状態)の変化を模式的に示す図である。 本実施形態の第1EEPROMのファームウェアの更新処理において、第1EEPROMの格納データ(状態)の変化を模式的に示す図である。 本実施形態の第1EEPROMのファームウェアの更新処理において、第1EEPROMの格納データ(状態)の変化を模式的に示す図である。 本実施形態において、磁気ディスク、第1EEPROM、第2EEPROMでの更新処理の各工程に対応するチェックポイントを示す図である。 本実施形態において、第1EEPROMでの更新処理の各状態に対応するチェックポイントを示す図である。
符号の説明
1 ハード・ディスク・ドライブ、10 エンクロージャ、11 磁気ディスク
12 ヘッド・スライダ、13 アーム・エレクトロニクス(AE)、
14 スピンドル・モータ、15 ボイス・コイル・モータ、16 アクチュエータ
20 回路基板、21 RWチャネル、22 モータ・ドライバ・ユニット
23 HDC/MPU、24 RAM、25 第1EEPROM
26 第2EEPROM、51 コンピュータ、52 サーバ

Claims (12)

  1. EEPROMを有するディスク・ドライブにおいて、そのディスク・ドライブを制御するプログラムを変更する方法であって、
    ディスク領域からのリードに不要なプログラム・ブロックを格納する第2領域に対応するプログラム・ブロックを、前記ディスク領域に格納し、
    前記ディスク領域からのリードに必要なプログラム・ブロックを第1領域に格納する前記EEPROMにおいて、前記第2領域の少なくとも一部を含む領域に、前記第1領域に対応するプログラム・ブロックを格納し、
    前記第2領域への格納の後、前記第1領域のプログラム・ブロックを変更し、
    前記第1領域の変更後、前記第2領域に前記ディスク領域からのリードに不要なプログラム・ブロックを格納する、
    プログラム変更方法。
  2. 前記第1領域に格納する新しい第1プログラム・ブロックと前記第2領域に格納する新しい第2プログラム・ブロックとを含む新しいプログラムを取得して前記ディスク領域に格納し、
    前記第2領域に対応するプログラム・ブロックは、前記新しい第2プログラム・ブロックであり、
    前記第1領域に対応するプログラム・ブロックは、前記新しい第1プログラム・ブロックであり、
    前記第1領域の変更後に前記第2領域へ格納するプログラム・ブロックは、前記新しい第2プログラム・ブロックである、
    請求項1に記載のプログラム変更方法。
  3. さらに、前記新しいプログラムに含まれる新しいブート・コードを、前記EEPROMの空き領域に格納し、
    前記EEPROMにすでに格納されているブート・コードと前記新しいブート・コードの双方を維持する、
    請求項2に記載のプログラム変更方法。
  4. 前記ディスク・ドライブを制御するプログラムの一部のプログラム・ブロックは前記ディスク領域に格納されており、
    前記ディスク領域の前記一部のプログラム・ブロックを、前記ディスク領域内の異なる領域にバックアップした後に、前記ディスク領域に格納されている前記新しいプログラムにより前記ディスク領域内の前記一部のプログラム・ブロックを変更する、
    請求項2に記載のプログラム変更方法。
  5. 前記EEPROMと異なる第2EEPROMの領域内に格納されている前記ディスク領域からのリードに必要な第3プログラム・ブロックを前記EEPROMにバックアップした後に、前記ディスク領域に格納されている前記新しいプログラム内の新しい第3プログラム・ブロックを前記第2EEPROMの前記領域に格納する、
    請求項2に記載のプログラム変更方法。
  6. 前記プログラムの変更処理において変化する現在の状態を特定するデータを前記EEPROM及び/もしくはそれと異なるEEPROMの専用領域に格納していく、
    請求項2に記載のプログラム変更方法。
  7. データを記憶するディスク領域と、
    前記ディスク領域からのリードに必要なブロックを第1領域に格納し、さらに、前記ディスク領域からのリードに不要なプログラム・ブロックを第2領域に格納する、EEPROMと、
    前記第2領域に対応するプログラム・ブロックを前記ディスク領域に格納した後に、前記EEPROMにおいて前記第2領域の少なくとも一部を含む領域に前記第1領域に対応するプログラム・ブロックを格納し、その後、前記第1領域のプログラム・ブロックを変更した後に、前記第2領域に前記ディスク領域からのリードに不要なプログラム・ブロックを格納する、コントローラと、
    を有するディスク・ドライブ。
  8. 前記コントローラは、前記第1領域に格納する新しい第1プログラム・ブロックと前記第2領域に格納する新しい第2プログラム・ブロックとを含む新しいプログラムを取得して前記ディスク領域に格納し、
    前記第2領域に対応するプログラム・ブロックは、前記新しい第2プログラム・ブロックであり、
    前記第1領域に対応するプログラム・ブロックは、前記新しい第1プログラム・ブロックであり、
    前記第1領域の変更後に前記第2領域へ格納するプログラム・ブロックは、前記新しい第2プログラム・ブロックである、
    請求項7に記載のディスク・ドライブ。
  9. 前記コントローラは、
    前記新しいプログラムに含まれる新しいブート・コードを、前記EEPROMの空き領域に格納し、
    前記EEPROMにすでに格納されているブート・コードと前記新しいブート・コードの双方を維持する、
    請求項8に記載のディスク・ドライブ。
  10. 前記ディスク・ドライブを制御するプログラムの一部のプログラム・ブロックは前記ディスク領域に格納されており、
    前記コントローラは、前記ディスク領域の前記一部のプログラム・ブロックを、前記ディスク領域内の異なる領域にバックアップした後に、前記ディスク領域に記憶されている前記新しいプログラムにより前記ディスク領域内の前記一部のプログラム・ブロックを変更する、
    請求項8に記載のディスク・ドライブ。
  11. 前記ディスク領域からのリードに必要な第3プログラム・ブロックを格納する前記EEPROMと処理単位が異なる第2EEPROMをさらに有し、
    前記コントローラは、前記第3プログラム・ブロックを前記EEPROMにバックアップした後に、前記ディスク領域に記憶されている新しいプログラム内の新しい第3プログラム・ブロックを前記第2EEPROMの前記領域に格納する、
    請求項8に記載のディスク・ドライブ。
  12. 前記コントローラは、前記プログラムの変更処理において変化する現在の状態を特定するデータを前記EEPROMあるいはそれと異なるEEPROMの専用領域に格納していく、
    請求項8に記載のディスク・ドライブ。
JP2008293950A 2008-11-17 2008-11-17 ディスク・ドライブ及びそのプログラムの変更方法 Expired - Fee Related JP5289003B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008293950A JP5289003B2 (ja) 2008-11-17 2008-11-17 ディスク・ドライブ及びそのプログラムの変更方法
US12/620,497 US8429336B2 (en) 2008-11-17 2009-11-17 Disk drive and method of changing a program therefor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008293950A JP5289003B2 (ja) 2008-11-17 2008-11-17 ディスク・ドライブ及びそのプログラムの変更方法

Publications (3)

Publication Number Publication Date
JP2010122771A JP2010122771A (ja) 2010-06-03
JP2010122771A5 JP2010122771A5 (ja) 2011-11-24
JP5289003B2 true JP5289003B2 (ja) 2013-09-11

Family

ID=42172873

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008293950A Expired - Fee Related JP5289003B2 (ja) 2008-11-17 2008-11-17 ディスク・ドライブ及びそのプログラムの変更方法

Country Status (2)

Country Link
US (1) US8429336B2 (ja)
JP (1) JP5289003B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130050588A (ko) * 2011-11-08 2013-05-16 주식회사 히타치엘지 데이터 스토리지 코리아 나스 서버의 임베디드 시스템 펌웨어 복원 장치 및 방법
US9275697B2 (en) 2013-10-03 2016-03-01 Western Digital Technologies, Inc. Utilizing destructive features as RAM code for a storage device
EP2955629B1 (en) * 2014-06-11 2021-10-27 Home Control Singapore Pte. Ltd. System for installing new firmware on a small-memory device
US11733924B1 (en) * 2021-08-03 2023-08-22 Kioxia Corporation Method for discarding garbage collection data during power loss

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0449530A3 (en) * 1990-03-23 1993-09-01 Canon Kabushiki Kaisha A memory medium having a control program memorized therein and an information processing method and an information processing apparatus using the same medium
JPH0869376A (ja) 1994-08-31 1996-03-12 Hitachi Ltd Biosの書き換え制御回路
JPH10161881A (ja) * 1996-12-02 1998-06-19 Toshiba Corp 制御用プログラムのダウンロードが可能なデータ記録再生装置
JP2003316595A (ja) * 2002-04-23 2003-11-07 Casio Comput Co Ltd インストール方法、ファイル更新方法、プログラム及びコンピュータシステム
JP2004199491A (ja) * 2002-12-19 2004-07-15 Komatsu Ltd 車載プログラムの書き換え制御装置
US7197634B2 (en) 2004-01-16 2007-03-27 Dell Products L.P. System and method for updating device firmware
JP2006189973A (ja) 2004-12-28 2006-07-20 Sony Corp 電子機器及びそのプログラムアップデート方法
JP2007148553A (ja) 2005-11-24 2007-06-14 Canon Inc 画像形成コントローラ装置
JP2008084291A (ja) 2006-08-28 2008-04-10 Fujitsu Ltd 記憶装置、制御方法及び制御装置

Also Published As

Publication number Publication date
US20100125700A1 (en) 2010-05-20
US8429336B2 (en) 2013-04-23
JP2010122771A (ja) 2010-06-03

Similar Documents

Publication Publication Date Title
US7774540B2 (en) Storage system and method for opportunistic write-verify
US9201783B2 (en) Method for managing address mapping information and storage device applying the same
JP5339817B2 (ja) 異なるサイズのデータ・セクタによるインターフェースをサポートするディスク・ドライブ装置及びそのデータ・ライト方法
US8694984B2 (en) Memory apparatus and method of updating firmware of the memory apparatus
US8285965B2 (en) Aligning data storage device partition to boundary of physical data sector
JP2009020986A (ja) ディスク・ドライブ装置及びディスク・ドライブ装置において不揮発性半導体メモリ領域上のデータを管理するテーブルを保存する方法
JP4810172B2 (ja) 制御装置及びバージョンアップ方法並びにプログラム
JP2005011317A (ja) ストレージシステムを初期化する方法と装置
JP2007193441A (ja) 不揮発性キャッシュメモリを用いる記憶装置とその制御方法
JP2006134217A (ja) ライブラリシステム,仮想ライブラリ装置,及びキャッシュ復元方法
JP6753257B2 (ja) 情報処理装置、情報処理システム、情報処理装置の制御方法および情報処理装置の制御プログラム
JP2010186341A (ja) メモリシステム
JP2016505180A (ja) 不揮発性メモリ書込み機構
JP5289003B2 (ja) ディスク・ドライブ及びそのプログラムの変更方法
JP2009237939A (ja) ハイブリッド記録装置
KR101627322B1 (ko) 비-휘발성 버퍼를 이용한 데이터 저장 장치 및 방법
JP2008140459A (ja) ハイブリッドディスク記憶装置及び同装置に適用されるディスクライト方法
JPH11282765A (ja) フラッシュメモリを使用した外部記憶装置
JP2002100126A (ja) 記録再生装置、記憶装置、コンピュータ装置、データ処理方法、プログラム伝送装置
JP3708914B2 (ja) ディスク記憶装置において実行されるプログラムを書き換えるための方法及び装置
JP4919983B2 (ja) データ記憶装置及びデータ記憶装置におけるデータ管理方法
US20140068178A1 (en) Write performance optimized format for a hybrid drive
JP2015135620A (ja) 記憶装置、及びデータの記憶方法
JP4575112B2 (ja) ファームウェアの書換方法、ディスクドライブ装置、及び情報処理システム
JP5601053B2 (ja) 制御装置、制御モジュールおよび制御方法

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20100510

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111006

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20111006

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130425

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130514

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130604

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees