2011-12-05 14 views
4

私は、ストレージ用にSDカードを使用する組み込みデバイスで作業しており、USB経由でそのSDカードにアクセスできるようにする必要があります。FAT32ファイルシステムへのアクセスを共有する方法

私が思いつく最も良いアプローチは、ディスクを仮想化し、その仮想化された画像をPCに提示することです。それは、私のデバイスが読み書きしている間に、PCがファイルを読み書きできるようにするでしょう。

PCに読み取りがキャッシュされていると考えると、問題が発生します。そのため、PCユーザーは、新しいファイルをデバイスが作成するのを見ることができなくなります.PCは、その時点で存在していたファイル接続されました。

もう1つの欠点は、PCを取り外すまでフラッシュカードを取り外すことが安全でないことです。

これに対応する回避策はありますか?現代のカメラはどのようにそれを扱うのですか?私は、メディア転送プロトコルはこの目的のために作られたものだと考えていますが、透過的に広くサポートされているわけではありません。私は「メディア」ファイルを扱っていませんが、それは問題ではないと私は想定しています。

私が紛失している一般的に巧妙な回避策がありますか?お使いのデバイスのいずれかを使用しており、PCに1を公開 -

答えて

6

私が知る限り、2つのデバイスがFATなどの共通ファイルシステムを使用してブロックデバイスを共同で共有する方法はありません。 (おそらくそれが読み取り専用ファイルシステムでない限り)

解決策は、1つのデバイス(カメラ)が低レベル(ブロックレベル)でファイルシステムを所有することだけです。その後、そのデバイスは、より高いレベルのプロトコル(生のブロック操作よりも高い)を使用してファイルを共有することができます。あなたが言ったように、USBのMedia Transfer Protocolがその例です。上位レベルのファイル共有プロトコルの他の例としては、NFSやSMBがありますが、このシナリオでは該当しないと思います。

Media Transfer Protocol on Wikipediaから引用:

なく、例えばよりMTPを使用する主な理由は、USBマスストレージデバイスクラス(MSC)後者は、通常、(大容量記憶装置のブロックの粒度で動作することです実際には、論理ファイルレベルではなくFATブロック)を使用します。言い換えれば、USBマスストレージクラスは、ターゲットデバイスと安全に共有できるファイルシステムではなく、コンパクトフラッシュなどのバルク大容量ストレージへの未分化アクセスをホストコンピュータに与えるように設計されています(ただし、ホストが変更/アクセスしている可能性があります)。したがって、実際には、USBホストコンピュータがMSCパーティションをマウントしている場合、ストレージの絶対的な制御を前提としています。ホストコンピュータが接続を切断するまで、デバイスによってデータが破損する危険はありません。

+0

これは、Androidが同じ問題を解決した方法です。これまでは、USBストレージ(大容量ストレージ)経由でSDストレージにアクセスするには、AndroidデバイスからSDストレージを取り外す必要がありましたが、MTPではこの問題は解決されています。しかし、MTPは依然として十分サポートされていない(この回答が掲載されてから3年が経過しても)、新たな問題が生じています。 – rjp

1

が同じSDカード上の2つの異なるパーティションを作成していただきありがとうございます。同じファイルシステムに同時にアクセスすることはないので、問題は解決されます。

+0

良い点ですが、全体的なポイントは、PCがデバイスによって生成されているファイルで動作することです。 – NXT

+0

FATを使用したブロックファイルシステム指向のアプローチでは実現できないと思います。 USBを使用してNDIS接続を渡し、CIFSネットワーク共有を使用する – gby

関連する問題