コンパクトフラッシュ

  • 名刺の半分以下のサイズのカードのインターフェース規格。
  • PCMCIAと電気的な互換性を多く持ち、500円程度のアダプタをつければ、PCカードになる。 → CardAdapter
  • コンパクトフラッシュメモリカードをUSB接続するための外付けアダプタも999円で買えました(秋葉原で。しかもスマートメディアも対応のやつ)。-- K
  • したがって多くのパソコンで安価に利用できる。Kのイチオシデバイス。 その安価ぶりはこちらをどうぞ。→ memcard
  • なお、CompactFlashという名前からフラッシュメモリカードと思うかもしれないが、れっきとした一般カード規格であり、I/Oカードも存在している。

基礎知識

  • PCMCIAからアドレス線を14本削って、サイズを小さくしただけのもの
    • したがってコモンメモリ空間、属性メモリ空間とも2KBしかない
  • フラッシュメモリが入っているデバイスは、PCカードATAとしてアクセスする
    • ただし、普通のPCカードATAよりも仕様がより細かく規定されているため、その分扱いやすい
  • もともとメモリカードとして規格ができて、その後I/Oカードとしても使えるようになった(CompactFlash仕様のI/Oカードは、"CF+"と呼ぶ)
  • I/Oアドレスにレジスタをマップする場合、0x0000~0x07ffの範囲しか使えない点に注意
    • アドレス線が11bitしかないから
    • でもこれって単に2KBの内容が繰り返されるだけということかな じゃあ問題なしかも

フラッシュメモリカードでの仕様

  • PCMCIAでの内容に加えて、以下が規定されている
  • CCORのアドレスが0x200に固定
    • bit7:SRESET、bit6=LevIREQ、bit5-0=INDEX。
    • コンフィギュレーションインデックス(INDEX)に0を書くとメモリマップトI/Oモード
    • コンフィギュレーションインデックスに1を書くとI/Oアドレスマップト16バイトモード
      • この16バイト構造がI/O空間全体で繰り返されるので、PCMCIAコントローラのほうで好きなところをあけてやればOKということになる
    • コンフィギュレーションインデックスに2を書くとI/Oアドレス0x1f0~1f7、0x3f6にマップ
    • コンフィギュレーションインデックスに3を書くとI/Oアドレス0x170~177、0x376にマップ
  • 0x206はマスタ/スレーブ設定バイト
    • 0x00を書き込むとマスタモード
    • 0x10を書き込むとスレーブモード
  • CISタプルに21 02 04 01を見付けたら、CFのフラッシュメモリカードだと認識してもいいのかな?
    • 手持ちの3枚のCFで調べただけなので確信なし
      • このいい加減な予想は悪くなさそう。[21 02 04 01]の意味はこんな感じらしい。21というタプルはカードの大まかな種類を表わすもので、04は固定ディスク(=PCカードATA)を表わしているらしい。最後の01は他の値にもなりうるかもしれない。
      • これでCFかそうじゃないかを判定できるぞー!うれしいなあ。
    • CISタプルについてはこちらを参照。→ (PCMCIA)CIS
  • フラッシュメモリカードでは、TrueIDEというモードのサポートがあり、これはATAのバスに直結してHDDとして使うことができるという仕様です。
    • でも中にはこの対応をサボっているメディアもあるらしいです。
    • これを接続するアダプタとして、IDE-CFアダプタがあります。3,000円くらいかな?
      • 実は回路的にはコネクタ以外に抵抗一個以下でできます。でも自作モノは勇気が…
    • このモードを使うと、HDDをCFに交換することができて、これでHDDなしでブートできるぜ!なんていうことができるんですが、TrueIDEモードがあるのにうまく起動できないメディアもあります。今までこの手の問題は「相性」の一言で片づけられていました。
    • 調査の結果、これはMBRがオール0x00だったからでした。ということで、MBRを適当に書いてやったら起動するようになりました。この情報が何かの参考になれば幸いです。
  • どうやら多くのカードでは、PCカード接続した場合にリセット信号を送らなくても、接続時のパワーオンだけで、正常にアクセスできるようである(確認済み)。またこれは十分に確認していないのだが、属性メモリ空間を通じて初期化しなくても、メモリマップトI/Oモードのマスターモードとして動きそうな感じである。TOWNSのメモリカードスロットでも、初代機をふくめて全機種対応が可能かもしれない。

CF+での仕様

  • 特に決まっていないが、CCORのアドレスが固定ではないことに注意。CISを調べるとCCORのアドレスが分かります。
  • CF+では、非ストレージデバイスが主な対象なので、もちろんTrueIDEのサポートも必須ではない。
  • eさんによると、Micro Driveなどの磁気ディスクもCF+規格だとのことですが、どの辺がCF規格を逸脱しているのか分かりません。
    • TrueIDEをサポートしないかもしれないから?
    • もしかしてtype2(厚さ:5.0mm)はCFじゃなくてCF+なのかな?
    • ↑どちらもはずれで、正解は最大消費電流らしいです。こめんと欄参照。

Kの考える、うまいCompactFlashフラッシュメモリカードの使い方

  • USB接続の場合はまだよくわかっていないのでコメントできません。ここでは、PCカード接続の場合に限定して話を進めます。
  • PCカードではカードの電源のON/OFFが簡単に制御できるので、1秒以上アクセスしないことが見込まれるなら、カードの電源をOFFにしたらいいんじゃないか、というただそれだけのことです。OFFからONに切り替える際に要する時間はHDDなどとは違ってごくわずかです(起動に要する時間のほとんどはカードリセットで、それが50ms~100msくらいかな)。だから積極的に電源OFFを活用できます。
  • まあ多分CompactFlash側もidle時は省電力モードになっているじゃないかと思われますが、それでもカード側から電源を絶てば、たぶんより一層省電力でしょう(たとえカードが自前で省電力モードに落ちてくれたとしても、カードは自分へのアクセスが来るんじゃないかとはらはらしているわけで、その待機電力をケチろうというわけです)。
  • 試験的に1セクタアクセスするたびに電源制御してみました。さすがに速度が落ちますね。やっぱり1秒間くらいアクセスされていないときに電源を落とすくらいがいいらしいです。

より詳細な資料など

  • CFAにpdfでdatasheet
    • 要登録。ただし、名前/会社/メールアドレスだけでもOK。会社はN/Aにするとか。
      • 一年ぐらい前に通知のチェック外して登録したが、今のところメールが来たことはなし。-- e
    • 現物のデータシートはハイテク和文データシートの宝庫(?)ルネサスのところなど

こめんと欄

  • IBMがMicro DriveのためにCF+を公式の規格としてねじ込んだとかいう話があったような -- e? 2007-10-23 03:44:01
  • モノによってはMBRに書き込めないという話も -- e? 2007-10-23 03:44:46
  • Micro DriveはPCカードATAでアクセスするので(=つまりCF規格内におさまっているので)、CF+とは関係ないような気がしますが・・・。CF+ってCFサイズの無線LANカードとかに使われているので、その辺が動機というなら話は分かりやすいんですが・・・。 -- K 2007-10-23 10:57:23
  • eさんへ、書き足してくださるのは非常に助かります。ありがとうございます。書き足すときは、とりあえず別のセクションを作って書き足してもらえると助かります。それをみて既存のセクションの中に組み込んだりするのは、このページを最初に作った僕がやりますので。 -- K 2007-10-23 11:14:23
  • もしMBRに書き込めない具体的なカードのメーカと型番が分かったら教えてください。それを避ければいいと思いますので。>eさん -- K 2007-10-23 14:51:26
  • なるほど。確かにそうすべきでした。申し訳ありません。Micro DriveがCF+なのは消費電力の問題かと。CF+では最大(平均)電流が100mAから500mAに増えています。また、CF/CF+の判断にサイズは参考にはならないようです。それで、MBRに書き込めないカードですが、確かhttp://pc2.2ch.net/test/read.cgi/win/1040277140/46-53nだったかと。 -- e? 2007-10-23 (月) 15:5-:--
  • 情報ありがとうございます。僕もSan Diskを10枚以上、Lexarを1つもっていますが、とりあえず全部OKっぽいです。この辺は実際に書き換えられなかったカードを持っている人からの情報待ちですね。 -- K 2007-10-23 16:27:14
  • メモリマップトI/Oモードっていうのは、ATA以外の通信カードとかにも付いてるんでしょうか? -- 2007-10-24 23:00:47
  • これは各カードの仕様の一つでしかないので、ATA以外の通信カードなどでは付いていないと思います(付いているものもたまにあるかもしれませんが)。 -- K 2007-10-25 (日) 09:24:29
  • やっぱりCF標準機能ってわけではないのか、残念。ただもしそういうカードがあったり、改造できたりすれば、あとはボーリングでドライバがかけるものならメモリカード専用リーダとかでも使えちゃったりするって事だろうか?まあ実際にそんなカードが見つからなきゃ無意味だけど、だれか情報ないかな。 -- 2007-10-24 00:23:43
  • ああなるほど、おっしゃりたい意味が分かってきました。つまり、コマンドパケット方式にして、セクタ1を読み出すとステータス、セクタ2に書き込むとコマンド実行(設定とか送信とか)、セクタ3を読み出すとデータ取得(受信とか)ができちゃったりするようなやつですね。オーバヘッドがでかそうですが、おもしろそうですね。 -- K 2007-10-24 11:43:39
  • CISのエントリタプルのエントリ番号が0であれば、メモリマップトI/Oモードで使えるってことでしょうか? あと、メモリマップトI/Oで使われるメモリって、memory windowもしくはExCAで設定したアドレスが使われるのでしょうか? -- T? 2007-10-28 (火) 21:21:24
  • CISのエントリタプルのエントリ番号が0であれば、メモリマップトI/Oモードで使えるってことでしょうか?>たぶんそうだと思います。  アクセスするためのアドレス空間ですが、おっしゃるとおりmemory-windowで設定した範囲でアクセスします。その場合、CPUでのアドレスとCFに送られるアドレスはズレますのでご注意ください(どのくらいズレさせるか、もしくはズレをなくすなどの設定はPCICでできます。といってもアドレスピンが11本しかないので、4KB単位のズレは関係ない気もしますが)。 -- K 2007-10-25 03:25:14
  • ・TrueIDEモードをサポートしたCFの一覧表ってないですか? -- TK 2008-03-19 (水) 09:20:09
  • CFは、アドレス11bitのみで大容量メモリをリードライトしていますが、これは2KBを何度も繰り返しているのですか?11bitのアドレスでセクタ番号、ドライブ番号、セクタ数の情報を設定しているのでしょうか? -- NN 2011-05-11 (水) 13:24:08
  • CFは、アドレス11bitのみで大容量メモリをリードライトしていますが、これは2KBを何度も繰り返しているのですか?11bitのアドレスでセクタ番号、ドライブ番号、セクタ数の情報を設定しているのでしょうか? -- NN 2011-05-11 (水) 13:40:23
  • CFは、アドレス11bitのみで大容量メモリをリードライトしていますが、これは2KBを何度も繰り返しているのですか?11bitのアドレスでセクタ番号、ドライブ番号、セクタ数の情報を設定しているのでしょうか? -- NN 2011-05-11 (水) 13:40:41

コメントお名前NameLink

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2014-09-08 (月) 13:45:08 (2523d)