(57)【要約】【課題】データ記憶装置のファームウェアの更新を効率的かつ安全に行う。【解決手段】本発明の一実施形態において、ＨＤＤの新たなファームウェアは、更新前のファームウェア２５１によりデータ変換されて後、ＨＤＤに転送される。ファームウェア更新プログラム２５２は、自己のファームウェア２５１を使用して受信したデータ２４１をデータ逆変換し、新ファームウェア２４１を再生する。新ファームウェア２４１は、ファームウェアの一部である。ファームウェア更新プログラム２５２は、新ファームウェア２４１を更新後ファームウェア２５３に組み込む。更新前のファームウェアを使用して転送データを変換することで、ファームウェア転送における安全性を高めると共に、処理を効率的なものとすることができる。【選択図】図４
2009134368.tif 000002
【特許請求の範囲】
【請求項１】
ファームウェアを格納する不揮発性メモリと、
前記ファームウェアを更新するために、データ変換されている新データを受信するインターフェース回路と、
前記ファームウェアに従って動作し、メディアへのアクセスを制御するプロセッサと、を有し、
前記プロセッサは、
前記受信した新データを更新前の前記ファームウェアのデータでデータ逆変換することで、前記新データを再生し、
前記再生した新データを使用して前記ファームウェアを更新する、
データ記憶装置。
【請求項２】
前記新データは、前記ファームウェアの一部のデータであって、前記ファームウェアの更新において変更される部分である、
請求項１に記載のデータ記憶装置。
【請求項３】
前記コントローラは、前記新データが組み込まれるアドレスと異なるアドレスのデータで前記データ逆変換を行う、
請求項２に記載のデータ記憶装置。
【請求項４】
前記データ逆変換に使用されるデータのアドレス範囲は、前記ファームウェアのアドレス範囲の一部に限定されている、
請求項２に記載のデータ記憶装置。
【請求項５】
前記プロセッサは、更新前の前記ファームウェアのアドレス長以下の値による剰余演算を使用して、前記データ逆変換に使用するデータのアドレスを決定する、
請求項２に記載のデータ記憶装置。
【請求項６】
前記プロセッサは、前記新データが組み込まれるアドレスを変換した値に対して、更新前の前記ファームウェアのアドレス長以下の値による剰余演算を行って、前記データ逆変換に使用するデータのアドレスを決定する、
請求項５に記載のデータ記憶装置。
【請求項７】
前記データ逆変換は、前記新データと更新前の前記ファームウェアの一部データとの排他的論理和演算含む、
請求項２に記載のデータ記憶装置。
【請求項８】
データ記憶装置においてファームウェアを更新する方法であって、
ファームウェアを更新するために、データ変換されている新データを受信し、
前記受信した新データを更新前の前記ファームウェアのデータでデータ逆変換することで、前記新データを再生し、
前記再生した新データを使用して前記ファームウェアを更新する、
方法。
【請求項９】
前記新データは、前記ファームウェアの一部のデータであって、前記ファームウェアの更新において変更される部分である、
請求項８に記載の方法。
【請求項１０】
前記新データが組み込まれるアドレスと異なるアドレスのデータで前記データ逆変換を行う、
請求項９に記載の方法。
【請求項１１】
前記データ逆変換に使用されるデータのアドレス範囲は、前記ファームウェアのアドレス範囲の一部に限定されている、
請求項９に記載の方法。
【請求項１２】
更新前の前記ファームウェアのアドレス長以下の値による剰余演算を使用して、前記データ逆変換に使用するデータのアドレスを決定する、
請求項９に記載の方法。
【請求項１３】
前記新データが組み込まれるアドレスを変換した値に対して、更新前の前記ファームウェアのアドレス長以下の値による剰余演算を行って、前記データ逆変換に使用するデータのアドレスを決定する、
請求項１２に記載の方法。
【請求項１４】
前記データ逆変換は、前記新データと更新前の前記ファームウェアの一部データとの排他的論理和演算を含む、
請求項９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ記憶装置及びそのファームウェアの更新方法に関し、特に、データ記憶装置のファームウェアを安全に更新するための手法に関する。
【背景技術】
【０００２】
データ記憶を記憶するメディアとして、光ディスク、光磁気ディスク、磁気ディスクあるいは半導体メモリなどの様々な方式が知られている。これらメディアを使用してデータを記憶するデータ記憶装置において、メディアに保存されるユーザ・データを不正なアクセスから保護するため、そのユーザ・データを暗号化する技術が知られている。例えば、特許文献１は、磁気ディスクをメディアとして使用するハードディスク・ドライブ（ＨＤＤ）において、磁気ディスクに記憶するユーザ・データを暗号化する技術の一例を開示している。
【０００３】
ＨＤＤは、内部に暗号用の鍵を有しており、それを磁気ディスクあるはＲＯＭに格納している。ＨＤＤは、ユーザ・データをホストから取得すると、それを暗号化して磁気ディスクに記録する。また、ＨＤＤは、磁気ディスクから読み出したユーザ・データを復号化してホストに転送する。ＨＤＤ内において、ファームウェアに従って動作するＭＰＵが全体的な制御処理を行う。また、ユーザ・データの暗号処理に使用する暗号鍵の管理も、ＭＰＵがファームウェアの命令列に従って行う。
【０００４】
ＨＤＤの出荷後に、ＨＤＤのファームウェアの更新を行うことがある。例えば、ＨＤＤに新たな機能を追加する、あるいは、ＨＤＤの設定パラメータを変更するために、ＨＤＤのファームウェアを更新する。すでに配布されているＨＤＤをメーカが回収してファームウェアの更新を行うことは非効率であり、ファームウェアの更新が必要な場合は、新しいファームウェアが配布される。ＨＤＤが接続されているホスト・コンピュータは、ファームウェアをＨＤＤにダウンロードすることで、ファームウェアを更新することができる。ファームウェア更新のためのＨＤＤとホスト・コンピュータとの間におけるプロトコルが一般に存在し、ＨＤＤとホストとは、このプロトコルに従ってファームウェア更新のためのデータを送受信する。
【特許文献１】特開２００４−２０１０３８号公報
【特許文献２】特開２００７−２５７１１９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上述のように、ファームウェアは、ＨＤＤの全体的な動作制御を行い、暗号鍵を含む制御データの管理を行う。従って、ファームウェアが知られると、暗号鍵の格納位置を含め、ＨＤＤの実装に関する詳細な情報やノウハウが漏洩してしまう。上述のように、ファームウェアの更新において、新たなファームウェアがネットワークあるいはホスト・コンピュータとＨＤＤとの間を転送される。この転送データが解読されてコード・レベルに還元されると、ファームウェア全体の内容が解読者の手に渡ることが考えられる。ファームウェアを取得した解読者は、改変ファームウェアを得ることができるため、セキュリティ機能を代表とするデータ保護の仕組みが無効にされる危険性がある。
【０００６】
ＡＥＳやＤＥＳなどの広く知られた堅牢な暗号技術を使用してファームウェアを暗号化し、その暗号化したファームウェアを送受信することで、コード・レベルのファームウェアが第三者に渡ることを防ぐことができる（例えば、特許文献２を参照）。しかし、このような暗号処理のためには複雑な処理が必要であり、また、暗号鍵の変更を行うためにはそのための処理が要求される。従って、データ記憶装置のファームウェアの更新を効率的かつ安全に行うための技術が要求される。
【課題を解決するための手段】
【０００７】
本発明の一態様に係るデータ記憶装置は、ファームウェアを格納する不揮発性メモリと、前記ファームウェアを更新するために、データ変換されている新データを受信するインターフェース回路と、前記ファームウェアに従って動作し、メディアへのアクセスを制御するプロセッサとを有する。前記プロセッサは、前記受信した新データを更新前の前記ファームウェアのデータでデータ逆変換することで前記新データを再生し、前記再生した新データを使用して前記ファームウェアを更新する。ファームウェア更新のためのデータを更新前のファームウェアのデータでデータ変換して転送することで、ファームウェアの更新を効率的かつ安全に行うことができる。
【０００８】
好ましくは、前記新データは、前記ファームウェアの一部のデータであって、前記ファームウェアの更新において変更される部分である。これにより、効率性と安全性をより高めることができる。さらに、前記コントローラは、前記新データが組み込まれるアドレスと異なるアドレスのデータで前記データ逆変換を行うことが好ましい。また、前記データ逆変換に使用されるデータのアドレス範囲は、前記ファームウェアのアドレス範囲の一部に限定されていることが好ましい。これらにより、ファームウェア更新における安全性をより高めることができる。
【０００９】
好ましい例において、前記プロセッサは、更新前の前記ファームウェアのアドレス長以下の値による剰余演算を使用して、前記データ逆変換に使用するデータのアドレスを決定する。さらに、前記プロセッサは、前記新データが組み込まれるアドレスを変換した値に対して、更新前の前記ファームウェアのアドレス長以下の値による剰余演算を行って、前記データ逆変換に使用するデータのアドレスを決定することが好ましい。これらにより、効率的かつ的確にアドレスを決定することができる。
【００１０】
好ましい例において、前記データ逆変換は、前記新データと更新前の前記ファームウェアの一部データとの排他的論理和演算含む。これにより、効率的かつ安全に新データを転送することができる。
【００１１】
本発明の他の態様は、データ記憶装置においてファームウェアを更新する方法である。この方法は、ファームウェアを更新するために、データ変換されている新データを受信する。前記受信した新データを更新前の前記ファームウェアのデータでデータ逆変換することで、前記新データを再生する。前記再生した新データを使用して前記ファームウェアを更新する。ファームウェア更新のためのデータを更新前のファームウェアのデータでデータ変換して転送することで、ファームウェアの更新を効率的かつ安全に行うことができる。
【発明の効果】
【００１２】
本発明によれは、データ記憶装置のファームウェアの更新を効率的かつ安全に行うことができる。
【発明を実施するための最良の形態】
【００１３】
以下に、本発明を適用可能な実施の形態を説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略及び簡略化がなされている。又、各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略されている。以下においては、データ記憶装置の一例であるハードディスク・ドライブ（ＨＤＤ）を例として、本発明の実施形態を説明する。
【００１４】
本形態は、ＨＤＤのファームウェアの更新にその特徴を有している。ＨＤＤは、ホスト・コンピュータから新たなファームウェアを受け取り、それによりファームウェアを更新する。新たなファームウェアは、ＨＤＤ内の更新前のファームウェアによりデータ変換されて後、ＨＤＤに転送される。ＨＤＤは、自己のファームウェアを使用して、ホスト・コンピュータから受信したデータをデータ逆変換し、新たなファームウェアを再生する。ＨＤＤ内の更新前のファームウェアを使用して転送データを変換することで、ファームウェア転送における安全性を高めると共に、処理を効率的なものとすることができる。
【００１５】
転送される新たなファームウェアは、好ましくは、更新されるプログラムを含むファームウェアの一部である。ファームウェア全体ではなく、更新される一部のみを転送することで、ファームウェアの転送における安全性をより高めることができる。また、ファームウェアの転送単位のサイズを小さくすることで、さらに安全性を高めることができる。ＨＤＤは、コンピュータからのコマンドに応じて、更新前のファームウェアに新たなファームウェアを組み込み、さらに、必要な部分についてアドレスの変更を行う。
【００１６】
図１は、本形態のファームウェア更新のためのシステムの例を模式的に示すブロック図である。図１（ａ）に示すように、新たなファームウェアは、メーカのサーバ５２から、ネットワーク５４を介して、ＨＤＤ１が実装されているコンピュータ５１に転送される。コンピュータ５１は、ＨＤＤ１にサーバ５２から受信した新たなファームウェアを転送する。図１（ｂ）のシーケンス図に示すように、サーバ５２は、転送する新たなファームウェアをデータ変換して、コンピュータ５１に送信する。コンピュータ５１は、受信したデータをＨＤＤ１に転送する。ＨＤＤ１は受信したデータをデータ逆変換し、新たなファームウェアを再生する。
【００１７】
コンピュータ５１は受信したデータを、所定のプロトコルに従ってＨＤＤ１に転送する。このときコンピュータ５１はデータ転送処理のみを行い、新たなファームウェアに対してデータ処理を行うことはない。このように、ファームウェア更新のためのデータ変換においてコンピュータ５１の処理を不要とすることで、この手法の汎用性を高めると共に、安全性を高めることができる。
【００１８】
図２のフローチャートに示すように、サーバ５２は、ファームウェアの変更部分をデータ変換し（Ｓ１１）、ファームウェア更新のコマンドと上記データ変換したファームウェアの変更部分とを転送する（Ｓ１２）。転送されるのはファームウェアの一部であり、また、ファームウェアの内容（アドレス順序ではなく）に変更が必要な部分のプログラムである。ＨＤＤ１は、サーバ５２から、ネットワーク５３及びコンピュータ５１を介して転送されたデータを受信する（Ｓ１３）。ＨＤＤ１は、データ変換されているファームウェアの一部である変更部分を、データ逆変換する。これにより、ファームウェアの変更部分が再生（復元）される（Ｓ１４）。ＨＤＤ１は、さらに、サーバ５２から受信したファームウェア更新のコマンドに従い、再生した新たなファームウェアの一部を使用して、ファームウェアを更新する。
【００１９】
ＨＤＤ１におけるファームウェアの更新について具体的に説明する前に、ＨＤＤ１の全体構成を説明する。図３に示すように、ＨＤＤ１は、エンクロージャ１０の外側に固定された回路基板２０を有している。回路基板２０上に、リード・ライト・チャネル（ＲＷチャネル）２１、モータ・ドライバ・ユニット２２、ロジック回路であるハードディスク・コントローラ（ＨＤＣ）とＭＰＵの集積回路（ＨＤＣ／ＭＰＵ）２３及びＲＡＭ２４などの各回路が実装されている。エンクロージャ１０内において、スピンドル・モータ（ＳＰＭ）１４は所定の角速度で磁気ディスク１１を回転する。磁気ディスク１１は、データを記憶する不揮発性メモリである。
【００２０】
ＨＤＣ／ＭＰＵ２３からの制御データに従って、モータ・ドライバ・ユニット２２がＳＰＭ１４を駆動する。各ヘッド・スライダ１２は、磁気ディスク上を浮上するスライダと、スライダに固定され磁気信号と電気信号との間の変換（データの読み書き）を行うヘッド素子部とを備えている。各ヘッド・スライダ１２はアクチュエータ１６の先端部に固定されている。アクチュエータ１６はボイス・コイル・モータ（ＶＣＭ）１５に連結され、回動軸を中心に回動することによって、ヘッド・スライダ１２を回転する磁気ディスク１１上においてその半径方向に移動する。
【００２１】
モータ・ドライバ・ユニット２２は、ＨＤＣ／ＭＰＵ２３からの制御データに従ってＶＣＭ１５を駆動する。アーム電子回路（ＡＥ：Arm Electronics）１３は、ＨＤＣ／ＭＰＵ２３からの制御データに従って複数のヘッド素子部１２の中から磁気ディスク１１にアクセス（リードもしくはライト）するヘッド・スライダ１２を選択し、リード／ライト信号の増幅を行う。ＲＷチャネル２１は、リード処理において、ＡＥ１３から供給されたリード信号を一定の振幅となるように増幅し、その後、取得したリード信号からデータを抽出し、デコード処理を行う。デコード処理されたデータは、ＨＤＣ／ＭＰＵ２３に供給される。また、ＲＷチャネル２１は、ライト処理において、ＨＤＣ／ＭＰＵ２３から供給されたライト・データをコード変調し、さらに、コード変調されたデータをライト信号に変換してＡＥ１３に供給する。
【００２２】
ＨＤＣ／ＭＰＵ２３において、プロセッサの一例であるＭＰＵは、不揮発性メモリであるＲＯＭ２５あるいは磁気ディスク１１からＲＡＭ２４にロードされたファームウェアに従って動作する。ＨＤＣ／ＭＰＵ２３は、リード／ライト処理制御、コマンド実行順序の管理、サーボ信号を使用したヘッド・ポジショニング制御（サーボ制御）、コンピュータ５１との間のインターフェース制御、ディフェクト管理、エラー対応処理など、データ処理に関する必要な処理及びＨＤＤ１の全体制御を実行する。
【００２３】
本形態のＨＤＣ／ＭＰＵ２３は、ファームウェアの更新処理を行う。ＨＤＣ／ＭＰＵ２３内のインターフェース回路がコンピュータ５１からファームウェア更新のためのデータを受信する。ＭＰＵはファームウェア更新プログラムに従って動作し、データ記憶装置としてのＨＤＤ１の動作を制御するファームウェアの更新処理を行う。ファームウェア更新プログラムもファームウェアの一種と考えることができるが、本明細書において、ユーザ・データのリード／ライトのためにデータ記憶装置として機能する処理を行うためのプログラムをファームウェアと呼び、ファームウェア更新プログラムと上記ファームウェアとを区別する。
【００２４】
図４は、更新されるファームウェアとファームウェア更新プログラムとの関係を示している。更新前ファームウェア２５１とファームウェア更新プログラム２５２とは、ＲＯＭ２５に保存されている。これらは、磁気ディスク１１に保存されていてもよい。通常動作において、ＲＡＭ２４上にファームウェアが展開されており、ＭＰＵ２３がそのファームウェアに従って動作する。
【００２５】
ファームウェアの更新処理においては、ファームウェア更新プログラム２５２がＲＯＭ２５からＲＡＭ２４にロードされる。コンピュータ５１からファームウェア更新のコマンドを受信すると、ＭＰＵは、ファームウェア更新プログラム２５２を起動する。その後、ＭＰＵは、ファームウェア更新プログラム２５２に従って動作する。ＲＡＭ２４には、ファームウェア更新プログラム２５２と、更新前ファームウェア２５１が格納されている。また、コンピュータ５１から転送された新ファームウェア２４１（ファームウェアの変更部分）がＲＡＭ２４に格納されている。
【００２６】
ＭＰＵは、ファームウェア更新プログラム２５２に従って新ファームウェア２４１のデータ逆変換を行う。この点については後に詳述する。ＭＰＵ２３は、再生した新ファームウェア２４１を更新前ファームウェア２５１に組み込み、ファームウェアを更新する。ＭＰＵは、新ファームウェア２４１の組み込みと、それに伴うコードのアドレス変更を行い、更新後ファームウェア２５３を生成する。その後、ＭＰＵは、更新後ファームウェア２５３をＲＯＭ２５に保存する。以上でファームウェア更新処理が終了する。
【００２７】
以下において、ファームウェアのデータ変換方法及びＨＤＤ１内におけるファームウェア更新処理について、より詳細に説明する。図５（ａ）は、ファームウェアの更新の一例を示している。更新前ファームウェア２５１は「ＡＢＣＤＥ１２３」であり、更新後ファームウェア２５３は「ＡＢＤＥＦＧ１２」である。データ「ＦＧ」が新たに追加されたデータである。矩形で示された各データは、ファームウェア更新におけるデータ処理単位であり、好ましい例において、１バイトのデータである。Ａ〜Ｇ、１〜３はそれぞれデータ単位を指示するための符号であって、特別な意味を有してない。
【００２８】
図５（ａ）において、ＭＰＵは、最初に、更新前ファームウェア２５１から更新後ファームウェア２５３にデータＡ、Ｂをコピーしてする。次に、データＤ、Ｅを、更新前ファームウェア２５１から更新後ファームウェア２５３にコピーする。その後、ＭＰＵは、外部から転送されたデータＦ、Ｇを更新後ファームウェア２５３に追加する。ＭＰＵは、前もって、データＦ、Ｇをデータ逆変換により再生しておく。最後に、ＭＰＵは、データ１、２を、更新前ファームウェア２５１から更新後ファームウェア２５３にコピーする。
【００２９】
図５（ａ）において、ＣＯＰＹ（ｘ、ｙ）は、更新前ファームウェア２５１のオフセットｘから、ｙ個のデータをコピーすることを指示する。また、ＡＰＰＥＮＤ（Ｘ、Ｙ）は、データＸ、Ｙを更新後ファームウェア２５３に追加することを指示する。これらは、サーバ５２からＨＤＤ１に送信される、ファームウェア更新のためのコマンドである。例えば、ＣＯＰＹ（０、２）は、更新前ファームウェア２５１のオフセット０にあるデータＡから２つのデータであるデータＡ、Ｂを更新後ファームウェア２５３にコピーすることを指示する。
【００３０】
あるいは、ＣＯＰＹ（３、２）は、更新前ファームウェア２５１のオフセット３にあるデータＤから２つのデータであるデータＤ、Ｅを更新後ファームウェア２５３にコピーすることを指示する。ＭＰＵ２３は、サーバ５２から、ＣＯＰＹ（０、２）、ＣＯＰＹ（３、２）、ＡＰＰＥＮＤ（Ｆ、Ｇ）、ＣＯＰＹ（５、２）の順序で各コマンドを受信する。そして、各コマンドの受信順序と実行順序は一致している。ＭＰＵは、更新後ファームウェア２５３のアドレス（０）から、順次データを格納していく。ＨＤＤ１は、これらコマンドを一括して受信することもできる。この場合においても、各コマンドの実行順序は上記例と同様である。
【００３１】
図５（ｂ）は、ファームウェア更新処理のコマンドのフォーマットを示している。ファームウェア更新コマンドは、コマンド・タイプ・フィールド、アドレス数フィールド、そしてオフセット／アペンド・データ・フィールドで構成されている。コマンド・タイプ・フィールドは、ＣＯＰＹ、ＡＰＰＥＮＤのコマンドの種類（タイプ）を示す。アドレス数は、ＣＯＰＹあるいはＡＰＰＥＮＤするデータ単位（アドレス）の数である。例えば、ＣＯＰＹ（０、２）であれば、２である。
【００３２】
オフセット／アペンド・データは、コマンド・タイプによって格納されるデータが異なる。ＣＯＰＹコマンドにおいてはオフセットがそこに格納され、ＡＰＰＥＮＤコマンドにおいてはアペンド・データがそこに格納される。図５（ｂ）に示すように、ＣＯＰＹ（０、２）に相当するコマンドは、「ＣＯＰＹ」「２」「０」である。ＡＰＰＥＮＤ（Ｆ、Ｇ）に相当するコマンドは、「ＡＰＰＥＮＤ」「２」「[Ｆ]、[Ｇ]」である。[Ｆ]、[Ｇ]は、それぞれ、データ変換されたデータＦ、Ｇを表している。
【００３３】
上述のように、サーバ５２からＨＤＤ１へ転送されるファームウェアの新しい更新部分は、データ変換される。このデータ変換方法について説明する。サーバ５２は、更新前のファームウェアを使用して、新たなファームウェアをデータ変換する。更新前のファームウェアは、第三者に知られていないため、高い安全性を確保することができる。好ましいデータ変換方法の一つは、排他的論理和演算を使用したスクランブル処理である。
【００３４】
データに、同一データを２回排他的論理和演算すると、元のデータが復元される。従って、ＨＤＤ１は、サーバ５２と同一のデータと、データ変換されたファームウェアとの排他的論理和演算を行うことで、容易に、新たなファームウェア（変更部分）を再生することができる。更新前のファームウェアのいずれの部分を使用するかを示す規則が、サーバ５２とＨＤＤ１とに予め設定されており、これらはその規則に従って、新ファームウェアのデータ変換のためのデータを選択する。
【００３５】
例えば、サーバ５２及びＨＤＤ１は、新たなデータが組み込まれるアドレスと同一アドレスのデータを使用して排他的論理和演算を行うことができる。つまり、図５（ａ）の例において、サーバ５２は、データＦとデータＥとの排他的論理和を計算して、データ変換された[Ｆ]を生成する。また、データＧとデータ１との排他的論理和を計算して、データ変換された[Ｇ]を生成する。
【００３６】
より好ましい方法は、排他的論理和演算の要素として、更新前ファームウェアにおいて、新たな更新部分のデータが組み込まれるアドレスと異なるアドレスのデータを選択する。同一アドレスのデータは類似するデータ列となっている可能性がある。また、新たなデータを更新前ファームウェアに追加する場合、更新前ファームウェアが、そのアドレスに対応するデータを有していないケースも考えられる。あるいは、ファームウェアは、不使用領域を有していることがある。不使用領域におけるデータ列は単純であることが一般的であり、そのようなデータ列をファームウェアのデータ変換に繰り返し用いることは好ましくはない。
【００３７】
ファームウェア変更部分のデータ変換のためのデータを適切に選択することによって、上記問題を解決することができる。スクランブルに使用するデータの好ましい決定方法について、図６を参照して説明する。上記例と同様に、データＦ、Ｇを、更新後ファームウェア２５３の、アドレス４、アドレス５に追加する例を説明する。図６に例示するように、ファームウェア更新のためにサーバ５２からＨＤＤ１に転送されるスクランブルされたデータＳＣＲＡＭＢＬＥＤ  ＤＡＴＡは、新しいファームウェア（変更部分）ＮＥＷ  ＤＡＴＡと、更新前ファームウェアの所定アドレスのデータＯＬＤ  ＤＡＴＡとの排他的論理和演算により与えられる。
【００３８】
更新前ファームウェアのデータＯＬＤ  ＤＡＴＡのアドレスＴＲＡＮＳＦＯＲＭＥＤ  ＡＤＤＲＥＳＳは、転送される新しいデータが組み込まれるアドレスＡＤＤＲＥＳＳをビット反転した値を更新前ファームウェアのアドレス数ＦＩＲＭＷＡＲＥ  ＬＥＮＧＴＨで除した場合の剰余である。更新部分のアドレスをビット反転することで、更新部分とは異なるアドレスのデータを選択することができる。ビット反転は、アドレス順序を逆にすることを意味する。ビット反転は、効率的な処理によりスクランブルのために更新前ファームウェアから選択するデータのアドレスを分散することができる。新たな変更部分のアドレスと異なるアドレスのデータを更新前ファームウェアから選択する好ましい方法は他にもある。例えば、変更部分のアドレスに所定の数値を可算した値を使用して、スクランブルのためのデータを特定するアドレスを決定することができる。
【００３９】
ファームウェアの新たな変更部分は、更新前ファームウェアの最終アドレスよりも後ろのアドレスに追加されることもある。あるいは、新たな更新部分のアドレスに所定値を可算する場合には、その値が更新前ファームウェアの最終アドレスをこえる場合がある。更新前ファームウェアのアドレス長による剰余はそのアドレス長未満である。従って、この剰余演算により、更新前ファームウェアから、スクランブルのためのデータを必ず選択することができる。
【００４０】
図６を参照して、ビット反転と剰余演算によるアドレス変換によりスクランブルのデータのアドレスを決定する方法を使用して、データＦ及びＧをデータ変換する例を説明する。データＦが更新後ファームウェアに組み込まれるアドレスは、アドレス４である。このビット反転はアドレス３である。また、アドレス３を更新前ファームウェアのアドレス長８で除した剰余はアドレス３である。更新前ファームウェアのアドレス３におけるデータは、データＤである。従って、データＦとデータＤの排他的論理和が、転送されるデータ[Ｆ]である。
【００４１】
データＧが更新後ファームウェアに組み込まれるアドレスは、アドレス５である。このビット反転はアドレス２である。また、アドレス２を更新前ファームウェアのアドレス長８で除した剰余はアドレス２である。更新前ファームウェアのアドレス２におけるデータは、データＣである。従って、データＧとデータＣの排他的論理和が、転送されるデータ[Ｇ]である。
【００４２】
上記好ましい方法は、更新前ファームウェアのアドレス長による剰余を計算する。他の好ましい方法は、更新前ファームウェアのアドレス長よりも小さい値による剰余を計算して、新ファームウェアのデータ変換に使用するデータのアドレスを決定する。ファームウェアは、その一部に不使用領域を有することがある。このような不使用領域は単純なデータ列で埋められていることが多く、データ変換に使用することは安全性の点から好ましくはない。
【００４３】
剰余を計算する値を更新前ファームウェアのアドレス長よりも小さくすることで、スクランブルの計算に使用されるデータのアドレス範囲を、更新前ファームウェアの一部の所定範囲内に限定することができる。上記一部のアドレス範囲は、先頭アドレス以下の連続アドレス領域に限定されない。剰余を計算した後に、予め設定されている所定数を加算することで、更新前ファームウェア内において上記所定アドレス範囲をシフトすることができる。このように、剰余を計算する値及びアドレス範囲のシフト量を選択することで、任意の所望領域のデータを、ファームウェアのデータ変換のために選択することができる。これら剰余を計算する値及びアドレス範囲のシフト量は可変数であってもよい。ＨＤＣ／ＭＰＵ２３は、サーバ５２からのコマンドに従ってこれらの値を決定する。
【００４４】
次に、図７のフローチャートを参照して、上記方法によるファームウェアの更新におけるサーバ５２及びＨＤＤ１の処理の流れを説明する。サーバ５２は、通常のパーソナルコンピュータ（ＰＣ）もしくはワークステーションなどを使用することができる。サーバ５２内にはＣＰＵが実装されており、オペレーティングシステム及びファームウェア更新ププログラムに従って動作することで、ファームウェア更新のための各処理を行う。サーバ５２内のファームウェア更新プログラムは、ＨＤＤ１のそれとは異なる。
【００４５】
プログラムはサーバ５２のメインメモリにロードされ、ＣＰＵにより実行される。サーバ５２には、ＣＰＵやメインメモリとバスを介して接続されたコントローラが実装され、これらにデータ入力をするためのマウスやキーボード、あるいは画像出力のためのディスプレイやプリンタを接続する。さらに他のコンピュータと通信を行うために、コンピュータ３を、通信アダプタを介してネットワークに接続する。
【００４６】
サーバ５２はＨＤＤなどの不揮発性メディアを有するデータ記憶装置を有しており、そこに必要なプログラムやデータが格納されている。ＨＤＤ１のファームウェアも、この不揮発メディアに格納されている。外部もしくは上記不揮発性メディアから、ＨＤＤ１のファームウェアの変更部分（新ファームウェア）がメインメモリにロードされる。さらに、更新前ファームウェアもメインメモリにロードされる。
【００４７】
ＣＰＵは、ファームウェア更新における変更部分のアドレスからスクランブルに使用する更新前ファームウェアにおけるデータのアドレスを決定する（Ｓ１１１）。上記例に従えば、サーバ５２のＣＰＵは、変更部分のアドレスのビット反転を行い、さらに、そのビット反転したアドレスを変更前ファームウェアのアドレス長で除した値（アドレス）をメインメモリに格納する。このアドレスのデータが、更新部分のデータ変換に使用されるデータである。
【００４８】
ＣＰＵは、さらに、上記決定したアドレスのデータとファームウェア変更部分をメインメモリから取得し、それらの排他的論理和演算を行い、その値をメインメモリに格納する（Ｓ１１２）。ＣＰＵは、変更部分のアドレス数とデータ変換した変更部分とを含むコマンドを生成、そのコマンドをメインメモリに格納する（Ｓ１１３）。ＣＰＵは、生成したコマンドを不揮発性メディアに保存し、さらに、そのコマンドをＨＤＤ１に向けて送信する（Ｓ１１４）。
【００４９】
サーバ５２からコンピュータ５１を介して上記ファームウェア更新コマンドを受信すると、ＨＤＣ／ＭＰＵ２３はそれをＲＡＭ２４に格納する。ＨＤＣ／ＭＰＵ２３は、そのコマンドに含まれる変更部分のデータ逆変換を行うため、更新前ファームウェア内の対応アドレスを決定する（Ｓ１４１）。上記例に従えば、ＨＤＣ／ＭＰＵ２３は、変更部分が組み込まれるアドレスをビット反転し、さらに、更新前ファームウェアのアドレス長でその値を除算する。除算の剰余がデータ逆変換のデータのアドレスであり、ＲＡＭ２４に格納される。
【００５０】
ＨＤＣ／ＭＰＵ２３は、更新前ファームウェアにおける算出した上記アドレスのデータと、データ変換されている変更部分とをＲＡＭ２４から取得し、それらの排他的論理和演算を行い、変更部分のデータ逆変換を行う（Ｓ１４２）。この排他的論理和演算の結果がファームウェアの新たな変更部分であり、ＲＡＭ２４に格納される。ＨＤＣ／ＭＰＵ２３はその変更部分を、ＲＡＭ２４に格納されている更新後ファームウェア２５３に組み込む（Ｓ１４３）。ＨＤＣ／ＭＰＵ２３は、サーバ５２からの各コマンドに応じてコピー処理とアペンド処理を繰り返して、ＲＡＭ２４で更新後ファームウェア２５３を生成し、それをＲＯＭ２５に保存してファームウェアの更新を完了する。
【００５１】
以上、本発明を好ましい実施形態を例として説明したが、本発明が上記の実施形態に限定されるものではない。当業者であれば、上記の実施形態の各要素を、本発明の範囲において容易に変更、追加、変換することが可能である。例えば、本発明を、磁気ディスクと異なるメディアを有するデータ記憶装置に適用することができる。あるいは、データを記録あるいは再生のみ行うデータ記憶装置に適用することができる。本発明のファームウェア更新方法は、暗号機能を有するデータ記憶装置に好適であるが、それを有していないデータ記憶装置にも適用することができる。
【図面の簡単な説明】
【００５２】
【図１】本実施形態に係るファームウェア更新のためのシステムの例を模式的に示すブロック図である。
【図２】本実施形態に係るファームウェア更新の処理の流れを示すフローチャートである。
【図３】本実施形態に係るＨＤＤの全体構成を模式的に示すブロック図である。
【図４】本実施形態において、更新されるファームウェアとファームウェア更新プログラムとの関係を示す図である。
【図５】本実施形態におけるファームウェアの更新処理及びファームウェア更新コマンドの一例を示す図である。
【図６】本実施形態において、ビット反転と剰余演算によるアドレス変換によりスクランブルのデータのアドレスを決定する方法を示す図である。
【図７】本実施形態のデータ変換方法を使用したファームウェアの更新処理の流れを説明するフローチャートである。
【符号の説明】
【００５３】
１  ハード・ディスク・ドライブ、１０  エンクロージャ、１１  磁気ディスク
１２  ヘッド・スライダ、１３  アーム・エレクトロニクス（ＡＥ）、
１４  スピンドル・モータ、１５  ボイス・コイル・モータ、１６  アクチュエータ
２０  回路基板、２１  ＲＷチャネル、２２  モータ・ドライバ・ユニット
２３  ＨＤＣ／ＭＰＵ、２４  ＲＡＭ、２５  ＲＯＭ、５１  コンピュータ
５２  サーバ、５３  ネットワーク、２４１  新ファームウェア
２５１  更新前ファームウェア、２５２  ファームウェア更新プログラム
２５３  更新後ファームウェア
【図１】
2009134368.tif 000003
【図２】
2009134368.tif 000004
【図３】
2009134368.tif 000005
【図４】
2009134368.tif 000006
【図５】
2009134368.tif 000007
【図６】
2009134368.tif 000008
【図７】
2009134368.tif 000009