如何共享FAT32文件系统的访问权限

时间:2011-12-05 13:18:46

标签: embedded usb fat32 fat

我正在开发一种使用SD卡进行存储的嵌入式设备,需要允许PC通过USB访问该SD卡。

我能想到的最好方法是虚拟化磁盘并将虚拟化图片呈现给PC。这将允许PC读取和写入文件,而我的设备也在读写。

当您考虑到PC可能已缓存读取时出现问题,因此PC用户无法在设备创建时看到新文件 - PC只会看到当时存在的文件连接。

另一个缺点是,在PC断开连接之前移除闪存卡是不安全的。

这有什么变通方法吗?现代相机如何处理它?我认为媒体传输协议是为此目的而创建的,但它并没有以透明的方式得到广泛支持。而且我不是在处理“媒体”文件,虽然我认为这无关紧要。

我缺少一些常用的巧妙解决方法吗?

谢谢

2 个答案:

答案 0 :(得分:6)

据我所知,两台设备无法使用FAT等通用文件系统协同共享块设备。 (除非它可能是只读文件系统)

解决方案仅适用于一个设备(即摄像头)拥有低级别(块级别)的文件系统。然后,该设备可以使用更高级别的协议共享文件(高于原始块操作)。如你所说,USB Media Transfer Protocol就是一个例子。更高级文件共享协议的其他示例是NFS和SMB,但我不认为这些适用于这种情况。

引自Media Transfer Protocol on Wikipedia

  

使用MTP而不是USB大容量存储设备类(MSC)的一个主要原因是后者以大容量存储设备块(通常在实践中,FAT块)的粒度运行,而不是在逻辑文件级别。换句话说,USB海量存储类旨在为主机提供对大容量存储的无差别访问,例如紧凑型闪存,而不是文件系统,可以安全地与目标设备共享(特定文件除外)主机可能正在修改/访问)。因此,在实践中,当USB主机安装了MSC分区时,它假定存储的绝对控制,然后设备可能无法安全地修改,而没有数据损坏的风险,直到主机断开连接为止。

答案 1 :(得分:1)

在同一张SD卡上构建两个不同的分区 - 让您的设备使用一个并将一个分区暴露给PC。由于不会同时访问同一个文件系统,因此问题就解决了。