4

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

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

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

另一个缺点是在断开 PC 之前取出闪存卡是不安全的。

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

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

谢谢

4

2 回答 2

6

据我所知,没有办法让两个设备使用常见的文件系统(如 FAT)协同共享一个块设备。(除非它是只读文件系统)

解决方案是只有一个设备(即相机)拥有低级别(块级别)的文件系统。然后该设备可以使用更高级别的协议(高于原始块操作)共享文件。正如您所说,USB媒体传输协议就是一个例子。更高级别的文件共享协议的其他示例是 NFS 和 SMB,尽管我认为这些在这种情况下不适用。

引用维基百科上的媒体传输协议

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

于 2011-12-06T02:07:13.073 回答
1

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

于 2011-12-05T14:38:53.347 回答