2011-12-05 80 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解决同样问题的方式。以前,人们不得不从Android设备上卸下SD存储设备,以便通过USB(大容量存储设备)访问SD存储设备,但通过MTP解决此问题。然而,这引发了一个新问题,即中期计划仍然得不到很好的支持(仍然是在发布这个答案后的三年)。 – rjp

1

构建相同的SD卡上有两个不同的分区 - 让您的设备使用一个和揭露一到PC。由于不会对同一文件系统进行并发访问,因此问题得以解决。

+0

好点,但重点是允许PC使用设备生成的文件。 – NXT

+0

我不认为它是可行的使用FAT的面向块文件系统的方法。使用USB传递NDIS连接并使用CIFS网络共享 – gby