2011-12-05 3 views
4

저는 저장 용으로 SD 카드를 사용하고 PC가 USB를 통해 해당 SD 카드에 액세스 할 수있게해야하는 임베디드 장치에서 작업하고 있습니다.FAT32 파일 시스템에 대한 액세스를 공유하는 방법

내가 생각할 수있는 최선의 방법은 디스크를 가상화하고 가상화 된 그림을 PC에 표시하는 것입니다. 그러면 PC가 파일을 읽고 쓸 수 있으며 내 장치도 읽고 쓰고 있습니다.

PC에 캐쉬 읽기가있을 수 있다고 생각하면 문제가 발생하므로 PC 사용자가 새 파일을 볼 때 해당 파일을 볼 수 없게됩니다. - PC는 해당 시점에 있던 파일 만 볼 수 있습니다 연결되었습니다.

또 다른 단점은 PC가 분리 될 때까지 플래시 카드를 제거하는 것이 안전하지 않다는 것입니다.

해결 방법이 있습니까? 현대 카메라는 어떻게 처리합니까? 미디어 전송 프로토콜은 이러한 목적으로 만 만들어졌지만 투명하게 지원되는 것은 아니라고 생각합니다. 그리고 "미디어"파일을 다루지는 않겠지 만 그건 중요하지 않다고 생각합니다.

제가 누락 된 몇 가지 일반적으로 사용되는 임시 해결 방법이 있습니까?

당신에게

답변

6

내가 아는 한, 두 장치가 FAT와 같은 공통 파일 시스템을 사용하여 블록 장치를 공동으로 공유하는 방법은 없습니다. (아마도 읽기 전용 파일 시스템이 아니면)

해결책은 낮은 레벨 (블록 수준)에서 파일 시스템을 소유 할 수있는 하나의 장치 (카메라)에 대한 것입니다. 그런 다음 해당 장치는 상위 수준 프로토콜 (원시 블록 작업보다 높음)을 사용하여 파일을 공유 할 수 있습니다. 당신이 말했듯이, USB Media Transfer Protocol 그 예입니다. 상위 수준의 파일 공유 프로토콜의 다른 예로는 NFS와 SMB가 있지만이 시나리오에서는 해당 파일 공유 프로토콜이 적합하지 않다고 생각합니다.

Media Transfer Protocol on Wikipedia 인용 :

아니라, 예를 들면보다 MTP를 사용하는 주된 이유는 USB 대용량 저장 장치 클래스 (MSC), 후자는 보통 (대용량 저장 장치의 블록의 단위로 동작한다는 것이다 실제로는 논리적 파일 수준이 아니라 FAT 블록). 즉, USB 대용량 저장 클래스는 호스트 컴퓨터가 대상 장치와 안전하게 공유 할 수있는 파일 시스템보다는 컴팩트 플래시와 같은 대량 대용량 저장 장치에 대해 차별화되지 않은 액세스를 제공하도록 설계되었습니다 (단, 특정 파일은 제외). 호스트가 수정/액세스 중일 수 있음). 따라서 실제로 USB 호스트 컴퓨터가 MSC 파티션을 마운트 한 경우 저장소의 절대적인 제어를 가정합니다. 호스트 컴퓨터가 연결을 끊을 때까지 데이터 손상 위험없이 장치에서 안전하게 수정할 수 없습니다.

+0

이것은 Android가 동일한 문제를 해결 한 방법입니다. 이전에는 USB (대용량 저장 장치)를 통해 SD 저장 장치를 안드로이드 장치에서 분리해야했지만 MTP를 사용하면이 문제가 해결되었습니다. 그러나 MTP가 여전히 잘 지원되지 않는 새로운 문제가 제기됩니다 (이 답변이 게시 된 지 3 년 후). – rjp

1

빌드 같은 SD 카드에 두 개의 서로 다른 파티션 감사 - 장치 사용을 가지고 있고 PC에 하나를 노출합니다. 동일한 파일 시스템에 대한 동시 액세스가 없으므로 문제가 해결됩니다.

+0

좋은 지적이지만, 요점은 PC가 장치에서 생성되는 파일로 작업 할 수 있도록하는 것입니다. – NXT

+0

FAT를 사용하는 블록 파일 시스템 지향 접근법으로는 실현 가능하지 않다고 생각합니다. USB를 사용하여 NDIS 연결을 통과하고 CIFS 네트워크 공유를 사용하십시오. – gby

관련 문제