2011-12-05 77 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

相關問題