4

ストレージにSDカードを使用する組み込みデバイスで作業しており、PCがUSB経由でそのSDカードにアクセスできるようにする必要があります。

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

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

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

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

私が見逃している一般的に使用される巧妙な回避策はありますか?

ありがとうございました

4

2 に答える 2

6

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

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

ウィキペディアの Media Transfer Protocolからの引用:

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

于 2011-12-06T02:07:13.073 に答える
1

同じ SD カードに 2 つの異なるパーティションを作成します。デバイスで 1 つを使用し、1 つを PC に公開します。同じファイルシステムへの同時アクセスがないため、問題は解決されます。

于 2011-12-05T14:38:53.347 に答える