(57)【特許請求の範囲】
【請求項１】
メモリ領域を有する記憶装置をホストコンピュータのＡＴＡ規格インタフェースに接続する記憶装置用アダプタにおいて、
前記記憶装置がＣＨＳモードに対応していない場合、前記記憶装置から前記記憶装置の固有情報であるデバイスサイズ（Ｃ＿ＳＩＺＥ）、デバイスサイズ乗数（Ｃ＿ＳＩＺＥ＿ＭＵＬＴ）、最大読出データブロック長（ＲＥＡＤ＿ＢＬ＿ＬＥＮ）とを読み取り、前記デバイスサイズ（Ｃ＿ＳＩＺＥ）と前記最大読出データブロック長（ＲＥＡＤ＿ＢＬ＿ＬＥＮ）と前記デバイスサイズ乗数（Ｃ＿ＳＩＺＥ＿ＭＵＬＴ）とに基づいてＣＨＳモードの総セクタ数とシリンダ数を決定し、前記最大読出データブロック長（ＲＥＡＤ＿ＢＬ＿ＬＥＮ）と前記デバイスサイズ乗数（Ｃ＿ＳＩＺＥ＿ＭＵＬＴ）とに基づいてトラック当たりのセクタ数とシリンダ数を決定して保持し、ＣＨＳモードでのアクセスを可能にすることを特徴とする記憶装置用アダプタ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、記憶装置をホストコンピュータで用いるための記憶装置用アダプタの技術に関するものであり、詳細にはＰＣカードよりも小型の記憶装置をホストコンピュータのＰＣカードＡＴＡ規格インタフェースに接続するための着脱可能なＰＣカードアダプタに関する。
【０００２】
【従来の技術】
近年、様々な携帯機器が急速に浸透しており、それらの携帯機器には一般に他の機器とのデータのやりとりを可能にするために、何らかの着脱可能な外部記憶装置が用いられている場合が大多数である。その代表的なものがＰＣカードであり、ＰＣカードはパーソナルコンピュータやデジタルカメラ、ＰＤＡ、ハンディーターミナルなどに利用されている。また、デジタルカメラでは、ＡＴＡ規格インタフェースに準拠しないスマートメディアカードなどの小型の記憶装置が画像データを保存するためによく利用されており、小型の記憶装置に保存された画像データをパソコンで読み書きできるようにＰＣカードＡＴＡ規格インタフェースに接続するためのＰＣカードアダプタも良く利用されている。以下、記憶装置用アダプタの代表例としてＰＣカードアダプタについて説明する。
【０００３】
ＰＣカードのインタフェースとしては、前述のＰＣカードＡＴＡ規格インタフェースが用いられ、メモリ領域の先頭からセクタ番号を割り当ててアクセスを行うＬＢＡ（論理ブロックアドレス）モードと、シリンダ、ヘッド、セクタの位置を指定してデータの読み書きを行うＣＨＳ（シリンダ・ヘッド・セクタ）モードの２つでメモリ領域のデータにアクセス可能である。ＣＨＳモードでデータの読み書きを行うためには、更にヘッド数（指定できるヘッド番号の最大値）及びトラック当たりのセクタ数（指定するセクタ番号の最大値）の値が必要となる。
【０００４】
従来のＰＣカードアダプタでは、記憶装置のメモリ領域にＣＨＳモードでデータを読み書きするために必要なヘッド数及びトラック当たりのセクタ数と、ＰＣカードアダプタが保有するヘッド数及びトラック当たりのセクタ数が同一になるように、特定のメモリ容量についてのみ事前に取り決めがされているため、ホストコンピュータは、ＰＣカードアダプタが保有するヘッド数及びトラック当たりのセクタ数を使用するか、記憶装置のメモリ領域にあるヘッド数及びトラック当たりのセクタ数を使用するかは自由に選択でき、どちらを選択しても同一のヘッド数及びトラック当たりのセクタ数となるためＣＨＳモードで読み書きができていた。また、ヘッド数及びトラック当たりのセクタ数に対する事前の取り決めを実現するために従来のＰＣカードアダプタでは、メモリ容量に応じたヘッド数及びトラック当たりのセクタ数をテーブルとしてＲＯＭに格納して保持していた。
【０００５】
しかしながら、上記従来のＰＣカードアダプタを含む記憶装置用アダプタでは、記憶装置との間で事前にヘッド数及びトラック当たりのセクタ数の取り決めがない場合、記憶装置のメモリ領域にあるヘッド数及びトラック当たりのセクタ数は、ＰＣカードアダプタが保有するヘッド数及びトラック当たりのセクタ数と異なる場合がある。そして、この異なった場合には、正常にＣＨＳモードで記憶装置にアクセスができなくなるという課題を有していた。
【０００６】
本発明者らは、特願平１１−２８２７４８号に示すように、ヘッド数及びトラック当たりのセクタ数の値を変更し、総セクタ数をヘッド数及びトラック当たりのセクタ数の値で割り、余りが０になるまでヘッド数及びトラック当たりのセクタ数を変更して、ヘッド数及びトラック当たりのセクタ数を算出することで、この課題を解決し、記憶装置用アダプタと記憶装置との間で事前にヘッド数及びトラック当たりのセクタ数の取り決めがなくとも、ＣＨＳモードでアクセスできるようにする技術を示していた。
【０００７】
【発明が解決しようとする課題】
しかしながら、上記特願平１１−２８２７４８号に示すように、ＰＣカードアダプタを含む記憶装置用アダプタの機能であるヘッド数及びトラック当たりのセクタ数の算出をＡＳＩＣ等の回路で算出させようとすると、除算、余り算、乗算回路などが必要となり、回路規模が非常に大きくなり記憶装置用アダプタのＡＳＩＣのコストが高くなるという課題を有していた。
【０００８】
本発明は、このような従来の課題を解決するものであり、乗算や除算及び余り算を用いず、簡単な回路でヘッド数及びトラックあたりのセクタ数を算出することにより、ＡＳＩＣのコストを下げ、ＣＨＳモードでアクセスできるようにする記憶装置用アダプタを提供することを目的とするものである。
【０００９】
【課題を解決するための手段】
上記目的を達成するために、本発明の記憶装置用アダプタは、記憶装置を接続する第１の接続手段と、ホストコンピュータのＡＴＡ規格インタフェースに接続する第２の接続手段と、記憶装置のメモリ領域に記憶されているデータを読み書きする記憶装置アクセス手段と、ホストコンピュータのＡＴＡ規格インタフェースを通して、ホストコンピュータへデータの受け渡しを行うＡＴＡ規格インタフェース制御手段と、記憶装置のメモリ領域に記憶されているデータに、ファイルフォーマット情報が存在しているか否かを判断するファイルフォーマット検出手段とを備え、ファイルフォーマット検出手段は、記憶装置のメモリ領域に記憶されているデータに、認識可能なファイルフォーマット情報が存在せず、ヘッド数情報及びトラック当たりのセクタ数情報を記憶装置から取り出すことができない際に、ヘッド数及びトラック当たりのセクタ数を計算して保持しておく機能を備えたものである。
【００１０】
本願発明は、ヘッド数及びトラック当たりのセクタ数を計算するアルゴリズムに関するものであり、記憶装置の固有情報からＣ＿ＳＩＺＥ、Ｃ＿ＳＩＺＥ＿ＭＵＬＴ、ＲＥＡＤ＿ＢＬ＿ＬＥＮを読み取り総セクタ数を算出し、ＣＨＳモードの総セクタ数とするステップＳ２０と、前記Ｃ＿ＳＩＺＥから新しいｎＣｙｌｉｎｄｅｒを算出し、前記ＲＥＡＤ＿ＢＬ＿ＬＥＮと前記Ｃ＿Ｓｉｚｅ＿Ｍｕｌｔとから変数Ａを算出するステップＳ２１と、前記変数Ａの値によって分岐するステップＳ２２と、前記ステップＳ２２の分岐により、ＣｕｒｒｅｎｔＨｅａｄ、ＳｅｃｔｏｒＰｅｒＴｒａｃｋ、ｎＣｙｌｉｎｄｅｒの値を決定するステップと、ステップＳ５２により前記ＣｕｒｒｅｎｔＨｅａｄと前記ＳｅｃｔｏｒＰｅｒＴｒａｃｋ、前記ｎＣｙｌｉｎｄｅｒの値を各々ヘッド数、トラック当たりのセクタ数、シリンダ数を決定するものである。
【００１１】
これにより、記憶装置用アダプタは、記憶装置のメモリ領域内のヘッド数及びトラック当たりのセクタ数を検索し、ヘッド数及びトラック当たりのセクタ数が存在しない場合に、ヘッド数及びトラック当たりのセクタ数を適切な値となるように計算して保持するので、記憶装置のメモリ領域内にヘッド数及びトラック当たりのセクタ数が存在しない場合でもＣＨＳモードで正常にアクセスができ、尚且つ、回路規模が大きくなるのを防ぎ、ＡＳＩＣのコストを下げることができる。
【００１２】
また本発明を、ＡＴＡ規格はＰＣカードＡＴＡ規格であり、サイズはＰＣカードサイズであるいわゆるＰＣカードアダプタに用いると、ＰＣカードＡＴＡ規格インタフェースに接続することができるので好適である。
【００１３】
【発明の実施の形態】
以下、本発明の実施の形態について、図面を参照しながら説明する。本実施の形態においては、記憶装置用アダプタとして、ＰＣカードよりも小型のマルチメディアカードなどを記憶装置として用い、ＰＣカードＡＴＡ規格インタフェースに接続・着脱可能で、ノートパソコン等のホストコンピュータと情報のやりとりをするＰＣカードアダプタを用いて説明する。
【００１４】
図１は、実施の形態１におけるＰＣカードアダプタを示すものである。図１において、ＰＣカードアダプタ１２は、主に１０、１１、１３、１４、１５の部品で構成される。１１はホストコンピュータと接続するための第２の接続手段であるＡＴＡ規格インタフェース用のコネクタ、１３は第１の接続手段であるＰＣカードアダプタと記憶装置とを接続するためのコネクタ、１５はＰＣカードアダプタと記憶装置との接続をスムーズに行うためのガイド、１０はコントローラＩＣで、コネクタ１３に接続された記憶装置とコネクタ１１に接続されたホストコンピュータとＡＴＡ規格インタフェースを制御するためのものである。１４はコントローラＩＣを動作させるための周辺回路部品である。
【００１５】
図２は、第１の実施の形態における記憶装置Ａを示すものである。２１は、記憶装置Ａの固有情報領域で、ＣＨＳモードでアクセスするためのヘッド数及びトラック当たりのセクタ数の情報はないが、固有情報の中にＲＥＡＤ＿ＢＬ＿ＬＥＮ、Ｃ＿ＳＩＺＥ、Ｃ＿ＳＩＺＥ＿ＭＵＬＴと呼ばれる情報があり、その３つの値を用いて、図１３で示される算出式からメモリ容量と総セクタ数を求めることができるようになっている。２２は、記憶装置Ａのメモリ領域で、ホストコンピュータが自由に書き換えができる領域で、そのメモリ領域が特定のフォーマット（例えばＤＯＳのフォーマット）がされておりヘッド数及びトラック当たりのセクタ数の情報を含んでいる。
【００１６】
図３は、本発明の第２の実施の形態における記憶装置Ｂを示すものである。３１は、記憶装置Ｂの固有情報領域で、ＣＨＳモードでアクセスするためのヘッド数及びトラック当たりのセクタ数の情報はないが、固有情報の中にＲＥＡＤ＿ＢＬ＿ＬＥＮ、Ｃ＿ＳＩＺＥ、Ｃ＿ＳＩＺＥ＿ＭＵＬＴと呼ばれる情報があり、その３つの値を用いて、図１３で示される算出式からメモリ容量と総セクタ数を求めることができるようになっている。３２は、記憶装置Ｂのメモリ領域でホストコンピュータが自由に書き換えができる領域で、そのメモリ領域には特定のフォーマット（例えばＤＯＳのフォーマット）がなく、ヘッド数及びトラック当たりのセクタ数の情報もない。
【００１７】
図２と図３の記憶装置Ａ、Ｂの違いは、メモリ領域のフォーマットがされているかされていないかの違いだけで、同一種類の記憶装置である。
【００１８】
図４は、記憶装置が挿入される前の状態のＰＣカードアダプタを示すものである。図５は、記憶装置が挿入された状態のＰＣカードアダプタを示すものである。図７は、ホストコンピュータからのアクセスに対して、ＣＨＳモードでアクセスがきた場合とＬＢＡモードでアクセスがきた場合のＰＣカードアダプタの処理の違いを示すフローチャートである。
【００１９】
図８は、本発明のＰＣカードアダプタがＣＨＳモードの論理アドレスからＬＢＡ（論理ブロックアドレス）モードの論理アドレスでアクセスするための変換式である。
【００２０】
図９は、記憶装置にＤＯＳフォーマットがされている場合のメモリ領域のデータ配置図である。パーティションテーブル９１にブートセクタの格納位置を示す情報等が含まれており、それを参考にブートセクタ９２の内容を確認できる。９３はＦＡＴ（ＦｉｌｅＡｌｏｃａｔｉｏｎＴａｂｌｅ）、９４はルートディレクトリ（階層構造）、９５は、ファイルを格納する領域である。
【００２１】
ブートセクタ９２は、メモリ領域にアクセスするために必要な種々の係数などを含み、具体的には図１０に示す情報が含まれている。オフセット値１８ｈにトラックあたりのセクタ数が、オフセット値１Ａｈにヘッド数の情報が存在する。つまり、ＤＯＳのフォーマットであれば、ヘッド数及びトラックあたりのセクタ数の情報が存在する。
【００２２】
図１１は、ホストコンピュータがＰＣカードにＩｄｅｎｔｉｆｙＤｒｉｖｅコマンドを発行した時に読み出される５１２バイトのデータである。オフセット値６と５６にトラックあたりのセクタ数が、オフセット値３と５５にヘッド数の情報が存在する。更に、オフセット値５７に総セクタ数が格納されている。
【００２３】
（実施の形態１）
次に、図６に示すＰＣカードアダプタのコントローラＩＣ１０のプログラムを表すフローチャートに基づいて説明する。
【００２４】
まず、図２に示す記憶装置ＡがＰＣカードアダプタに挿入された場合の処理ステップについて説明する。
【００２５】
ステップＳ１で本発明のＰＣカードアダプタに記憶装置Ａが挿入される。挿入後は、上記図５の形態となる。次にステップＳ２で本発明のＰＣカードアダプタをＡＴＡ規格インタフェースを持つホストコンピュータに挿入する。
【００２６】
次にステップＳ３でファイルフォーマット認識手段が記憶装置アクセス手段を通じて記憶装置Ａのメモリ容量を読み取る。
【００２７】
次にステップＳ４でファイルフォーマット認識手段が記憶装置Ａのメモリ領域２２を読み込み特定のフォーマットが存在するか調査を行う。記憶装置Ａのメモリ領域２２には特定のフォーマット（例えばＤＯＳのフォーマット図９、図１０参照）が存在するのでステップＳ５に進む。
【００２８】
次にステップＳ５で記憶装置Ａのメモリ領域２２の特定のフォーマット（例えばＤＯＳのフォーマット）の中にヘッド数及びトラック当たりのセクタ数が存在するか調べる。記憶装置Ａのメモリ領域２２には特定のフォーマット（例えばＤＯＳのフォーマット）がされており、ヘッド数及びトラック当たりのセクタ数が存在するのでステップＳ７に進む。
【００２９】
次にステップＳ７で、ＰＣカードアダプタは、記憶装置Ａのメモリ領域２２のヘッド数及びトラック当たりのセクタ数を保持してＡＴＡ規格インタフェース制御手段を通じてホストコンピュータに情報の伝達を行い、これ以後のホストコンピュータからのＣＨＳモードでのアクセスに対し、このヘッド数及びトラック当たりのセクタ数の値を用いて、図７のフロー及び図８の計算式にてＬＢＡモードへのアドレス変換を行い、更にＬＢＡモードの論理アドレスから記憶装置Ａの論理アドレスに変換して記憶装置Ａにアクセスをする。
【００３０】
以上のようにすることで、ＰＣカードアダプタ自体が保持するヘッド数及びトラック当たりのセクタ数と、記憶装置Ａのメモリ領域にあるヘッド数及びトラック当たりのセクタ数が同一となり、ＣＨＳモードで正常にアクセスできない問題を解決でき、また将来全く新しいヘッド数及びトラック当たりのセクタ数を持つ記憶装置Ａが開発されたとしても、本実施の形態のＰＣカードアダプタに挿入すれば正常に使用することができる。
【００３１】
（実施の形態２）
次に、記憶装置Ｂが本発明のＰＣカードアダプタに挿入された場合の処理ステップについて説明する。
【００３２】
ステップＳ１で本発明のＰＣカードアダプタに記憶装置Ｂが挿入される。挿入後は、上記図５の形態となる。次にステップＳ２で本発明のＰＣカードアダプタをＡＴＡ規格インタフェースを持つホストコンピュータに挿入する。
【００３３】
次にステップＳ３でファイルフォーマット検出手段が記憶装置アクセス手段を通じて記憶装置Ｂのメモリ容量を読み取る。
【００３４】
次にステップＳ４でファイルフォーマット検出手段が記憶装置Ｂのメモリ領域３２を読み込み特定のフォーマットが存在するか調査を行う。記憶装置Ｂのメモリ領域３２には特定のフォーマット（例えばＤＯＳのフォーマット）が存在しないのでステップＳ６に進む。
【００３５】
次にステップＳ６でヘッド数及びトラック当たりのセクタ数を、ステップＳ３で読み取ったメモリ容量に対して最適になるように、ヘッド数及びトラック当たりのセクタ数を算出する。ステップＳ６の算出方法としては、図１２の方法で算出することが可能である。
【００３６】
図１２で算出する方法は、ステップＳ２０にて、記憶装置の固有情報からＣ＿ＳＩＺＥ、Ｃ＿ＳＩＺＥ＿ＭＵＬＴ、ＲＥＡＤ＿ＢＬ＿ＬＥＮを読み取り、総セクタ数を図１３の算出式に基づき算出し、ＣＨＳモードの総セクタ数とする。次にステップＳ２１に進み、Ｃ＿ＳＩＺＥに１を加えたものを新しいｎＣｙｌｉｎｄｅｒとする。また、ＲＥＡＤ＿ＢＬ＿ＬＥＮにＣ＿ＳＩＺＥ＿ＭＵＬＴを加算し、７減算した値を変数Ａに代入する。ここで、Ｃ＿ＳＩＺＥに１を加えてｎＣｙｌｉｎｄｅｒとしたり、変数Ａを求める課程で７減算しているのは、プログラム作成のうえで効率が良いと思われる数値を用いているだけであり、他の数値を用いたり、全く加減算をしないフローも成り立つことは言うまでもない。
【００３７】
次にステップＳ２２に進み、変数Ａの値によって、ステップＳ２３、Ｓ２７、Ｓ３１、Ｓ３５、Ｓ３９、Ｓ４１、Ｓ４３、Ｓ４５、Ｓ４７、Ｓ４９に分岐する。
【００３８】
変数Ａが２の場合は、ステップＳ２４に進み、ステップＳ２４においてｎＣｙｌｉｎｄｅｒの下位４ビットが０の場合はステップＳ２６に進む。ステップＳ２６において、ＣｕｒｒｅｎｔＨｅａｄを２、ＳｅｃｔｏｒＰｅｒＴｒａｃｋを３２、ｎＣｙｌｉｎｄｅｒを右に４ビットシフトした値を新たなｎＣｙｌｉｎｄｅｒとしてステップＳ５２に進む。
【００３９】
ステップＳ２４にて、ｎＣｙｌｉｎｄｅｒの下位４ビットが０でない場合は、ステップＳ２５に進み、ＣｕｒｒｅｎｔＨｅａｄを２、ＳｅｃｔｏｒＰｅｒＴｒａｃｋを２とし、ステップＳ５２に進む。
【００４０】
変数Ａが３の場合は、ステップＳ２８に進み、ステップＳ２８においてｎＣｙｌｉｎｄｅｒの下位３ビットが０の場合はステップＳ３０に進む。ステップＳ３０において、ＣｕｒｒｅｎｔＨｅａｄを２、ＳｅｃｔｏｒＰｅｒＴｒａｃｋを３２、ｎＣｙｌｉｎｄｅｒを右に３ビットシフトした値を新たなｎＣｙｌｉｎｄｅｒとしステップＳ５２に進む。
【００４１】
ステップＳ２８にて、ｎＣｙｌｉｎｄｅｒの下位３ビットが０でない場合は、ステップＳ２９に進み、ＣｕｒｒｅｎｔＨｅａｄを２、ＳｅｃｔｏｒＰｅｒＴｒａｃｋを４とし、ステップＳ５２に進む。
【００４２】
変数Ａが４の場合は、ステップＳ３２に進み、ステップＳ３２においてｎＣｙｌｉｎｄｅｒの下位３ビットが０の場合はステップＳ３４に進む。ステップＳ３４において、ＣｕｒｒｅｎｔＨｅａｄを４、ＳｅｃｔｏｒＰｅｒＴｒａｃｋを３２、ｎＣｙｌｉｎｄｅｒを右に３ビットシフトした値を新たなｎＣｙｌｉｎｄｅｒとしステップＳ５２に進む。
【００４３】
ステップＳ３２にて、ｎＣｙｌｉｎｄｅｒの下位３ビットが０でない場合は、ステップＳ３３に進み、ＣｕｒｒｅｎｔＨｅａｄを２、ＳｅｃｔｏｒＰｅｒＴｒａｃｋを８とし、ステップＳ５２に進む。
【００４４】
変数Ａが５の場合は、ステップＳ３６に進み、ステップＳ３６においてｎＣｙｌｉｎｄｅｒの下位２ビットが０の場合はステップＳ３８に進む。ステップＳ３８において、ＣｕｒｒｅｎｔＨｅａｄを４、ＳｅｃｔｏｒＰｅｒＴｒａｃｋを３２、ｎＣｙｌｉｎｄｅｒを右に２ビットシフトした値を新たなｎＣｙｌｉｎｄｅｒとしステップＳ５２に進む。
【００４５】
ステップＳ３６にて、ｎＣｙｌｉｎｄｅｒの下位２ビットが０でない場合は、ステップＳ３７に進み、ＣｕｒｒｅｎｔＨｅａｄを４、ＳｅｃｔｏｒＰｅｒＴｒａｃｋを８とし、ステップＳ５２に進む。
【００４６】
変数Ａが６の場合は、ステップＳ４０に進み、ＣｕｒｒｅｎｔＨｅａｄを２、ＳｅｃｔｏｒＰｅｒＴｒａｃｋを３２としステップＳ５２に進む。変数Ａが７の場合は、ステップＳ４２に進み、ＣｕｒｒｅｎｔＨｅａｄを４、ＳｅｃｔｏｒＰｅｒＴｒａｃｋを３２としステップＳ５２に進む。変数Ａが８の場合は、ステップＳ４４に進み、ＣｕｒｒｅｎｔＨｅａｄを８、ＳｅｃｔｏｒＰｅｒＴｒａｃｋを３２としステップＳ５２に進む。変数Ａが９の場合は、ステップＳ４６に進み、ＣｕｒｒｅｎｔＨｅａｄを１６、ＳｅｃｔｏｒＰｅｒＴｒａｃｋを３２としステップＳ５２に進む。
【００４７】
変数Ａが１０の場合は、ステップＳ４８に進み、ＣｕｒｒｅｎｔＨｅａｄを１６、ＳｅｃｔｏｒＰｅｒＴｒａｃｋを３２、ｎＣｙｌｉｎｄｅｒを左に１ビットシフトし、下位１ビットを０にしたものを新たなｎＣｙｌｉｎｄｅｒとしステップＳ５２に進む。
【００４８】
変数Ａが１１の場合は、ステップＳ５０に進み、ＣｕｒｒｅｎｔＨｅａｄを１６、ＳｅｃｔｏｒＰｅｒＴｒａｃｋを３２、ｎＣｙｌｉｎｄｅｒを左に２ビットシフトし、下位２ビットを０にしたものを新たなｎＣｙｌｉｎｄｅｒとしステップＳ５２に進む。
【００４９】
ステップＳ５２でＣｕｒｒｅｎｔＨｅａｄの値をヘッド数、ｎＣｙｌｉｎｄｅｒの値をシリンダ数、ＳｅｃｔｏｒＰｅｒＴｒａｃｋの値をトラック当たりのセクタ数とし終了する。
【００５０】
ステップＳ２５、ステップＳ２６、ステップＳ２９、ステップＳ３０、ステップＳ３３、ステップＳ３４、ステップＳ３７、ステップＳ３８、ステップＳ４０、ステップＳ４２、ステップＳ４４、ステップＳ４６、ステップＳ４８、ステップＳ５０においてＳｅｃｔｏｒＰｅｒＴｒａｃｋ、ＣｕｒｒｅｎｔＨｅａｄ、ｎＣｙｌｉｎｄｅｒを特定の値に決めているが、これらの値は、ＳｅｃｔｏｒＰｅｒＴｒａｃｋとＣｕｒｒｅｎｔＨｅａｄとｎＣｙｌｉｎｄｅｒを掛け合わせた値がステップＳ２０で算出したＣＨＳモードの総セクタ数と同じで、尚且つＡＴＡインターフェースの規格で定められている制限以下（トラック当たりのセクタ数は６３、ヘッド数は１６、シリンダ数は６５５３５）となる値であれば、どんな値でも良い。
【００５１】
尚、ステップＳ２８においては、ｎＣｙｌｉｎｄｅｒの下位３ビットを０と比較して、下位３ビットが０の場合にステップＳ３０に進んでいるが、これはメモリ容量４ＭＢ、８ＭＢ、１６ＭＢのＳａｎｄｉｓｋ社製マルチメディアカードが初期出荷時にＤＯＳフォーマットがされており、そのメモリ領域にトラック当たりのセクタ数が３２、ヘッド数が２と書かれていることに対応するため、このステップＳ２８とステップＳ３０を追加している。
【００５２】
同様に、ステップＳ３２においてもｎＣｙｌｉｎｄｅｒの下位３ビットを０と比較して、下位３ビットが０の場合にステップＳ３４に進んでいるが、これはメモリ容量が３２ＭＢのＳａｎｄｉｓｋ社製マルチメディアカードが初期出荷時にＤＯＳフォーマットがされており、そのメモリ領域に書かれているトラック当たりのセクタ数が３２、ヘッド数が４であることに対応するため、このステップＳ３２とステップＳ３４を追加している。
【００５３】
ステップＳ２４、ステップＳ３６においても、下位ビットと比較するステップがあるが、これに関しては実例となる記憶装置はないが、このようにステップを追加しても回路規模の大きさは微々たるものしか増えず、ＣＨＳモードでアクセスできることには変わりはなく、この ステップを追加する追加しないは、特に厳密に規定するものではなく、今後出荷されるマルチメディアカードなどに適宜対応させれば良い。
【００５４】
図１２で算出したトラック当たりのセクタ数、ヘッド数、シリンダ数、ＣＨＳモードの総セクタ数の値は、図１１で示すＩｄｅｎｔｉｆｙＤｒｉｖｅＤａｔａの所定の位置にも格納され、ホストコンピュータからのＩｄｅｎｔｉｆｙＤｒｉｖｅコマンドによってホストコンピュータにトラック当たりのセクタ数、ヘッド数、シリンダ数、ＣＨＳモードの総セクタ数の値を含んだＩｄｅｎｔｉｆｙＤｒｉｖｅＤａｔａが転送されるようになる。
【００５５】
上述のように図６のステップＳ６でヘッド数及びトラック当たりのセクタ数が算出できたら、次にステップＳ７に進み、ステップＳ７で算出したヘッド数及びトラック当たりのセクタ数を本発明のＰＣカードアダプタ内部で保持してＡＴＡ規格インタフェース制御手段を通じてホストコンピュータに情報の伝達を行い、これ以後のホストコンピュータからのＣＨＳモードでのアクセスに対し、このヘッド数及びトラック当たりのセクタ数の値を用いて、図７のフロー及び図８の計算式にてＬＢＡモードへのアドレス変換を行い、更にＬＢＡモードの論理アドレスから記憶装置Ｂの論理アドレスに変換して記憶装置Ｂにアクセスをする。
【００５６】
以上のようにすることで、記憶装置Ｂのメモリ領域内にヘッド数及びトラック当たりのセクタ数が存在しない場合でもＣＨＳモードで正常にアクセスができる。
【００５７】
本実施の形態において、記憶装置アクセス手段・ＡＴＡ規格インタフェース制御手段・ファイルフォーマット認識手段・ファイルフォーマット検出手段はそれぞれコントローラＩＣ１０の一機能であり、どの動作をどの手段により行うかと言うことを厳密に定めることには何ら意味を有しない。
【００５８】
また本実施の形態においては、記憶装置としてマルチメディアカードなどをイメージして記載しているが、記憶装置として磁気ディスクを用いた場合においても、ホストコンピュータと磁気ディスクとの仲立ちとしての役割を担う記憶装置用アダプタに本発明の技術を用いても同様の効果が得られることは言うまでもないので、本発明の効力はＰＣカードアダプタのみに限定されるものではなく、記憶装置用アダプタ全般に及ぶものである。
【００５９】
さらに、本実施の形態においては、Ｓ１でＰＣカードアダプタに記憶装置を挿入し、次にステップＳ２でＡＴＡ規格インタフェースを持つホストコンピュータに挿入するようにしているが、記憶装置用アダプタの機能・形状によっては、先にホストコンピュータと接続して、次に記憶装置を接続しても良いことは言うまでもない。
【００６０】
さらに、本発明においては、図示したステップ順にヘッド数及びトラック当たりのセクタ数を算出し、ＣＨＳモードで正常にアクセスできるようにする説明を行っているが、本発明の技術的範囲はこれに拘束されるものではなく、ただ単に順序を変更したもの等も含まれることは言うまでもない。
【００６１】
【発明の効果】
上記発明の実施の形態で詳細に説明したように、本発明によると、記憶装置のメモリ領域に記憶されているデータにファイルフォーマット情報が存在せず、ヘッド数情報及びトラック当たりのセクタ数情報を取り出すことができない場合に、ヘッド数及びトラック当たりのセクタ数を計算して保持しておく機能を備えたことにより、記憶装置のメモリ領域内にヘッド数及び該トラック当たりのセクタ数が存在しない場合でもＣＨＳモードで正常にアクセスができ、ヘッド数及びトラック当たりのセクタ数を算出する回路規模を小さくすることができるのでＡＳＩＣのコストを下げることができるという効果を有する。
【図面の簡単な説明】
【図１】ＰＣカードアダプタ主要部品構成を示す図
【図２】メモリ領域にフォーマットが存在する記憶装置Ａを示す図
【図３】メモリ領域にフォーマットが存在しない記憶装置Ｂを示す図
【図４】記憶装置が挿入される前の状態のＰＣカードアダプタを示す図
【図５】記憶装置が挿入された状態のＰＣカードアダプタを示す図
【図６】挿入時の動作を説明するフローチャート
【図７】ＰＣカードアダプタと記憶装置間のアドレス変換を説明するフローチャート
【図８】ＬＢＡ⇔ＣＨＳ変換の公式を示す図
【図９】記憶装置にＤＯＳフォーマットがされている場合のメモリのデータ配置図
【図１０】ブートセクタの構造図
【図１１】ＰＣカードのＩｄｅｎｔｉｆｙＤｒｉｖｅＤａｔａの内容を示す図
【図１２】ヘッド数及びトラック当たりのセクタ数を算出するフローチャート
【図１３】メモリ容量と総セクタ数の算出式を示す図
【符号の説明】
１０  コントローラＩＣ
１１  ＡＴＡ規格インタフェース用のコネクタ（第２の接続手段）
１２  ＰＣカードアダプタ
１３  ＰＣカードアダプタと記憶装置とを接続するコネクタ（第１の接続手段）
１４  周辺回路部品
１５  ガイド
２１、３１  記憶装置固有情報
２２、３２  メモリ領域
【図１】
0004465777.tif 000002
【図２】
0004465777.tif 000003
【図３】
0004465777.tif 000004
【図４】
0004465777.tif 000005
【図５】
0004465777.tif 000006
【図６】
0004465777.tif 000007
【図７】
0004465777.tif 000008
【図８】
0004465777.tif 000009
【図９】
0004465777.tif 000010
【図１０】
0004465777.tif 000011
【図１１】
0004465777.tif 000012
【図１２】
0004465777.tif 000013
【図１３】
0004465777.tif 000014