質問

私は、SDカードを保存に使用する埋め込みデバイスに取り組んでおり、PCがUSBを介してそのSDカードにアクセスできるようにする必要があります。

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

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

別の欠点は、PCが切断されるまでフラッシュカードを削除することは安全ではないことです。

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

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

ありがとうございました

役に立ちましたか?

解決

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

ソリューションは、1つのデバイス(カメラ)のみが低レベル(ブロックレベル)でファイルシステムを所有することです。その場合、そのデバイスは、高レベルのプロトコル(生のブロック操作よりも高い)を使用してファイルを共有できます。あなたが言ったように、USB メディア転送プロトコル その例です。高レベルのファイル共有プロトコルの他の例はNFSとSMBですが、これらがこのシナリオに適用できるとは思わない。

から引用 ウィキペディアのメディア転送プロトコル:

たとえば、USB Mass-Storage Deviceクラス(MSC)ではなくMTPを使用する主な理由は、後者が論理ファイルではなく、大量貯蔵デバイスブロック(通常は脂肪ブロック)の粒度で動作することです。レベル。言い換えれば、USB大容量ストレージクラスは、ホストコンピューターがファイルシステムではなく、コンパクトフラッシュなどのバルク大量ストレージへの固定化されていないアクセスを提供するように設計されています。ホストは変更/アクセスしている可能性があります)。したがって、実際には、USBホストコンピューターがMSCパーティションをマウントした場合、ホストコンピューターが接続を切断するまで、データが破損するリスクなしにデバイスによって安全に変更されない場合があります。

他のヒント

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top