Domanda

Sto lavorando su un dispositivo incorporato che utilizza una SD-CARD per la memorizzazione e deve consentire a un PC di accedere a quella SD-CARD su USB.

L'approccio migliore che potrei inventare è virtualizzare il disco e presentare quell'immagine virtualizzata sul PC. Ciò consentirebbe al PC di leggere e scrivere file, mentre anche il mio dispositivo sta leggendo e scrivendo.

Il problema si presenta quando si considera che il PC potrebbe avere letture memorizzate nella cache, quindi diventa impossibile per l'utente del PC vedere nuovi file mentre il dispositivo li crea: il PC vedrà solo i file esistenti al momento in cui era collegato.

Un altro svantaggio è che non è sicuro rimuovere la scheda flash fino a quando il PC non è stato disconnesso.

Ci sono soluzioni alternative per questo? In che modo le telecamere moderne lo gestiscono? Credo che il protocollo di trasferimento dei media sia stato creato proprio per questo scopo, tuttavia non è ampiamente supportato in modo trasparente. E non ho a che fare con file "media", anche se presumo che non abbia importanza.

C'è una soluzione intelligente comunemente usata che mi manca?

Grazie

È stato utile?

Soluzione

Per quanto ne so, non c'è modo per due dispositivi di condividere in modo cooperativo un dispositivo a blocchi utilizzando file system comuni come FAT. (a meno che forse non sia un file system di sola lettura)

La soluzione è per un solo dispositivo (cioè la fotocamera) per possedere il file system a basso livello (livello di blocco). Quindi quel dispositivo può condividere file utilizzando un protocollo di livello superiore (superiore alle operazioni di blocco grezzo). Come hai detto, l'USB Protocollo di trasferimento multimediale ne è un esempio. Altri esempi di un protocollo di condivisione di file di livello superiore sono NFS e SMB, anche se non credo che quelli sarebbero applicabili in questo scenario.

Citando da Media Transfer Protocol su Wikipedia:

Un motivo principale per l'utilizzo di MTP anziché, ad esempio, la classe di dispositivo di archiviazione di massa USB (MSC) è che quest'ultimo opera alla granularità di un blocco di dispositivi di archiviazione di massa (di solito in pratica, un blocco grasso), piuttosto che sul file logico livello. In altre parole, la classe di archiviazione di massa USB è progettata per fornire un computer host indifferenziato all'accesso di massa in blocco, come il flash compatto, piuttosto che a un file system, che potrebbe essere condiviso in modo sicuro con il dispositivo target (ad eccezione di file specifici che specifici che specifici sono L'host potrebbe modificare/accedere). In pratica, quindi, quando un computer host USB ha montato una partizione MSC, si assume un controllo assoluto della memoria, che potrebbe non essere modificato in modo sicuro dal dispositivo senza rischi di corruzione dei dati fino a quando il computer host non ha interrotto la connessione.

Altri suggerimenti

Costruisci due diverse partizioni sulla stessa scheda SD: chiedi al tuo dispositivo di usarne una ed esporre una sul PC. Dal momento che non vi sarà alcun accesso simultaneo allo stesso file system, il problema viene risolto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top