Pregunta

Estoy trabajando en un dispositivo integrado que utiliza una tarjeta SD para el almacenamiento y necesita permitir que una PC acceda a esa tarjeta SD a través de USB.

El mejor enfoque que podría encontrar es virtualizar el disco y presentar esa imagen virtualizada a la PC. Eso permitiría que la PC lea y escriba archivos, mientras que mi dispositivo también está leyendo y escribiendo.

El problema surge cuando considera que la PC puede haber almacenado en caché las lecturas, por lo que se vuelve imposible para el usuario de la PC ver nuevos archivos a medida que el dispositivo los crea: la PC solo verá archivos que existían en el momento en que estaba conectado.

Otro inconveniente es que no es seguro eliminar la tarjeta flash hasta que la PC se haya desconectado.

¿Hay alguna solución para esto? ¿Cómo lo manejan las cámaras modernas? Creo que el protocolo de transferencia de medios se creó para este propósito, sin embargo, no es ampliamente compatible de manera transparente. Y no estoy tratando con archivos de "medios", aunque supongo que eso no importa.

¿Hay alguna solución inteligente de uso común que me falte?

Gracias

¿Fue útil?

Solución

Hasta donde yo sé, no hay forma de que dos dispositivos compartan cooperativamente un dispositivo de bloque utilizando sistemas de archivos comunes como la grasa. (A menos que tal vez sea un sistema de archivos de solo lectura)

La solución es para un solo dispositivo (es decir, la cámara) para poseer el sistema de archivos en el nivel bajo (nivel de bloque). Entonces ese dispositivo puede compartir archivos utilizando un protocolo de nivel superior (más altas que las operaciones de bloqueo en bruto). Como dijiste, el USB Protocolo de transferencia de medios es un ejemplo de eso. Otros ejemplos de un protocolo de intercambio de archivos de nivel superior son NFS y SMB, aunque no creo que sean aplicables en este escenario.

Cotizando de Protocolo de transferencia de medios en Wikipedia:

Una razón principal para usar MTP en lugar de, por ejemplo, la clase de dispositivo de almacenamiento de masa USB (MSC) es que este último funciona con la granularidad de un bloque de dispositivo de almacenamiento masivo (generalmente en la práctica, un bloque de grasa), en lugar de en el archivo lógico nivel. En otras palabras, la clase de almacenamiento de masa USB está diseñada para brindar un acceso indiferenciado a una computadora host al almacenamiento de masa a granel, como flash compacto, en lugar de un sistema de archivos, que podría compartirse de forma segura con el dispositivo de destino (excepto los archivos específicos que El host puede estar modificando/accediendo). En la práctica, por lo tanto, cuando una computadora host USB ha montado una partición de MSC, asume un control absoluto del almacenamiento, que luego no puede ser modificado de manera segura por el dispositivo sin riesgo de corrupción de datos hasta que la computadora host haya cortado la conexión.

Otros consejos

Cree dos particiones diferentes en la misma tarjeta SD: haga que su dispositivo use una y exponga una a la PC. Dado que no habrá acceso concurrente al mismo sistema de archivos, el problema está resuelto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top