Question

Je travaille sur un appareil intégré qui utilise une carte SD pour le stockage et qui doit permettre à un PC d'accéder à cette carte SD via USB.

La meilleure approche que j'ai pu trouver est de virtualiser le disque et de présenter cette image virtualisée au PC. Cela permettrait au PC de lire et d'écrire des fichiers, tandis que mon appareil lit et écrit également.

Le problème survient lorsque l'on considère que le PC peut avoir mis en cache des lectures, il devient donc impossible pour l'utilisateur du PC de voir les nouveaux fichiers au fur et à mesure que l'appareil les crée - Le PC ne verra que les fichiers qui existaient à l'époque connecté.

Un autre inconvénient est qu'il n'est pas sûr de retirer la carte flash tant que le PC n'a pas été déconnecté.

Existe-t-il des solutions de contournement pour cela? Comment les caméras modernes le gèrent-elles? Je crois que le protocole de transfert de média a été créé uniquement dans ce but, mais il n'est pas largement pris en charge de manière transparente. Et je ne m'occupe pas de fichiers "média", même si je suppose que cela n'a pas d'importance.

Y a-t-il une solution de contournement intelligente couramment utilisée qui me manque?

Merci

Était-ce utile?

La solution

Autant que je sache, il n'y a aucun moyen pour deux périphériques de partager en coopération un périphérique bloc en utilisant des systèmes de fichiers communs tels que FAT. (à moins qu'il ne s'agisse d'un système de fichiers en lecture seule)

La solution est qu'un seul appareil (c'est-à-dire la caméra) possède le système de fichiers au niveau bas (niveau bloc). Ensuite, ce périphérique peut partager des fichiers à l'aide d'un protocole de niveau supérieur (supérieur aux opérations de bloc brutes). Comme vous l'avez dit, le protocole de transfert de médias USB en est un exemple. D'autres exemples de protocole de partage de fichiers de plus haut niveau sont NFS et SMB, bien que je ne pense pas que ceux-ci soient applicables dans ce scénario.

Citation de Media Transfer Protocol sur Wikipedia :

Une raison principale pour utiliser MTP plutôt que par exemple la classe de périphérique de stockage de masse USB (MSC) est que cette dernière fonctionne à la granularité d'un bloc de périphérique de stockage de masse (généralement en pratique, un bloc FAT), plutôt qu'à le niveau de fichier logique. En d'autres termes, la classe de stockage de masse USB est conçue pour donner à un ordinateur hôte un accès indifférencié au stockage de masse en vrac, tel que Compact Flash, plutôt qu'à un système de fichiers, qui pourrait être partagé en toute sécurité avec le périphérique cible (à l'exception des fichiers spécifiques qui l'hôte est peut-être en train de modifier / d'accéder). En pratique, par conséquent, lorsqu'un ordinateur hôte USB a monté une partition MSC, il assume le contrôle absolu du stockage, qui ne peut alors pas être modifié en toute sécurité par le périphérique sans risque de corruption des données tant que l'ordinateur hôte n'a pas interrompu la connexion.

Autres conseils

Créez deux partitions différentes sur la même carte SD - demandez à votre appareil d'en utiliser une et exposez-en une au PC.Puisqu'il n'y aura pas d'accès simultané au même système de fichiers, le problème est résolu.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top