Sistema de copia de seguridad automática del dispositivo de almacenamiento masivo USB: ¿cuántos controladores de host USB se requieren?

Estoy planeando un dispositivo que realice una copia de seguridad automática de algunos datos de instrumentación desde una tarjeta SDHC a un HDD portátil (disco duro extraíble USB 3.0 / USB 2.0). La idea es insertar la tarjeta SD en el estuche, presionar un botón y copiar ciertos archivos en la tarjeta SD formateada en FAT32 al disco duro en un conjunto de carpetas predefinidas.

Estoy apuntando a una velocidad de 480 Mbps. Solo tengo un conocimiento limitado del sistema USB. Sé que necesito un controlador de host (algo así como un Vinculum) y un concentrador USB para crear dos puertos USB.

Mi duda es si necesito un controlador de host o dos controladores de host para que la transferencia entre los dos dispositivos de almacenamiento masivo USB conectados funcione en alta velocidad (es decir, 480 Mbps)?

¿Por qué necesita dos hosts USB? Puede leer la tarjeta SD directamente si elige un SoC adecuado para controlar el sistema.
Quiero transferir datos de la tarjeta SD al disco duro externo. El microcontrolador o SoC no necesita leer los datos, solo controlar el sistema para transferir los datos. ¿Podrá un controlador de host (alta velocidad) hacer la transferencia a alta velocidad?
No. Vinculum solo admite velocidad completa, que es de 12 MBit/seg.
Todos los datos tienen que pasar a través del host en USB
@PeterSmith Entonces, ¿1 controlador de host es suficiente entonces? Todos los datos se enrutan a través de él en cualquier caso. ¿Es ese el caso?
@PeterSmith Además, la mayoría de los microcontroladores que tienen controladores de host USB de alta velocidad incorporados funcionan a frecuencias más bajas como 85/100/120 MHz. ¿Cómo pueden pasar 480 Mbps de datos a través del bus si el propio controlador está operando a frecuencias más bajas?
@TurboJ Sí, lo he notado. He tomado el Vinculum solo como ejemplo.
Olvídese de los 480 mbps: la única forma de mantener eso sería tener mucha suerte y usar un sistema de placa prefabricado de mayor rendimiento con una gran cantidad de memoria intermedia mucho más allá del ámbito de lo que un principiante puede construir. Y, de hecho, en un sistema de este tipo, DMA debería pasar por alto el núcleo del procesador. Los pequeños MCU solo tienen sentido si desea un proyecto compacto o de aprendizaje, en lugar de rendimiento.
@chrisstratton Pero muchos fabricantes de circuitos integrados anuncian controladores de host USB con especificación USB 2.0 de alta velocidad. ¿Puedes dar más detalles sobre la parte del búfer? Eso es lo que quiero aprender. ¿O puede indicarme algún recurso que me ayude a construir tales sistemas? Soy nuevo en USB, pero soy ingeniero eléctrico y electrónico, por lo que puedo aprender los temas relevantes y trabajar en mi producto.
Ser capaz de operar el bus a la velocidad de señalización USB 2.0 no significa ser capaz de mantener esa tasa de datos al conectar y desconectar datos; en la práctica, tienden a ser solo sistemas bien configurados que pueden mantener la tubería llena. Eso es un rendimiento de un orden de magnitud más allá de lo que debería esperar en cualquier cosa que construya usted mismo.
Un cuello de botella más importante en su sistema (mucho peor que el controlador host USB) es el bus de la tarjeta SDHC... Si consulta la tabla en: en.wikipedia.org/wiki/Secure_Digital#Speed_class_rating , incluso el más nuevo y rápido (UHS II clase) las tarjetas solo admiten una velocidad de transferencia garantizada de ~ 30 MBPS, y la última vez que verifiqué, esos controladores no eran fáciles de obtener.
Desea algo que ejecute Linux (o Win) si el disco duro tiene un sistema de archivos NTFS.

Respuestas (2)

Las tarjetas SD usan su propio protocolo, no USB. No necesita un controlador de host USB para hablar con ellos. Puede usar SPI (aunque esto no le dará mucho rendimiento de datos) o su modo de interfaz paralela. Hay muchos microcontroladores que admiten USB HS y tienen una interfaz paralela de tarjeta SD incorporada (busque los que tienen SDHC).

Lo que está proponiendo no es realmente tan difícil, pero es una placa de alta velocidad que tendrá que diseñar, y tendrá que armar el software de pegamento para realizar la copia, incluido un controlador FAT32 que puede interpretar los datos sin procesar. en cada dispositivo de almacenamiento. A menos que su tiempo sea muy, muy barato, sería mejor comprar una computadora de una sola placa que tenga esta capacidad incorporada, luego puede hacer todo con un script de shell de Linux de una línea.

Quiero diseñar una PCB personalizada, ya que un SBC sería demasiado costoso para el precio al que nos dirigimos. Esa es la razón por la que estoy buscando diseñar mi propia placa. ¿No sería suficiente un chip como TUSB7340 ( ti.com/product/TUSB7340 ) para construir un sistema de este tipo?
Ese chip conecta USB a PCIe. También necesitaría un procesador con PCIe.
@RaghavendraKumar: eche un vistazo a los controladores ARM cortex de ST, NXP, Atmel, etc. Busque los que tienen USB HS y SDHC. Si usa algo de ST, probablemente pueda obtener la mayor parte del software de las bibliotecas proporcionadas por su proveedor (probablemente lo mismo para los demás, solo que tengo menos experiencia con ellos), pero tendrá que ser bastante competente con la programación integrada para traer todo junto correctamente.
@jon Yo también los he visto. Está el LPC4350 ( nxp.com/products/microcontrollers-and-processors/arm-processors/… ) Tiene todos los periféricos y más necesarios para mi proyecto. Pero, ¿será suficiente este IC por sí solo para obtener velocidades de transferencia de 480 Mbps entre dos periféricos? ¿O se requiere algún búfer, como se sugirió anteriormente?
Al revés: la mejor manera de lograr esa velocidad será una solución de un solo chip que tenga USB en un lado y SDIO en el otro. El LPC4350 se ve bien para eso, aunque un poco bajo en RAM.
@pjc50 ¿Será la poca memoria RAM un problema para las tasas de transferencia de datos o para la programación general del chip?
A 480 Mbit, llenará 256 kByte de RAM en aproximadamente 4 milisegundos, por lo que su tiempo de interrupción en el software debe ser rápido. Por otro lado, no tiene nada más que hacer, todo lo que tiene que hacer es programar la próxima lectura o escritura lo antes posible. Como dice Chris Stratton, el rendimiento general será inferior a 480 Mbit sin importar lo que haga. Pero debería poder lograr el 50-75% de eso.

Mencionaste el Vinculum; podría usarlo, ya que tiene la capacidad de ser un maestro SPI (para la tarjeta SD) y un host USB: consulte los dispositivos VNC2.

Ya se explicó exhaustivamente hace dos meses por qué esto no cumpliría su objetivo. Asegúrese de leer lo que ya se ha publicado sobre una pregunta antes de intentar responder.