¿Qué consideraciones debo tener al seleccionar un microcontrolador para una lectura y un rendimiento rápidos?

0

Para un proyecto en el trabajo, tengo la tarea de seleccionar un microcontrolador para facilitar la transmisión de video.

El microcontrolador leerá los archivos de video codificados H.264 1080p30, 30 a 40 segundos (~ 500 MB) de un almacenamiento externo FAT32 (actualmente una MicroSD UHS-1 / Clase 10) y los enviará a un componente de comunicación. Con un módulo WiFi como candidato más destacado. Es imposible utilizar una conexión por cable en el contexto de este proyecto. Los datos se envían a corta distancia y, durante la transmisión, el microcontrolador está completamente dedicado a la transmisión. No tendrá otras tareas ejecutándose en paralelo.

La transmisión oportuna de datos de video es el atributo de calidad más importante y nuestro objetivo es un período de tiempo de aproximadamente 1 minuto o menos.

Vi muchas preguntas sobre el procesamiento de video que se referían a señales en bruto o salidas de módulos de cámara, pero no encontré un caso en el que solo haya un sistema de archivos microSD para leer video codificado y cómo esto se relaciona con la capacidad necesaria.

¿Cuál debería ser mi consideración más importante al seleccionar un microcontrolador para lograr una velocidad de lectura de datos óptima desde un dispositivo de almacenamiento como MicroSD, para enrutar estos datos a través del microcontrolador y enviarlo al componente de comunicación para su transmisión? ¿Debo tener en cuenta el poder de procesamiento, los pines, la RAM u otras especificaciones?

    
pregunta Zimano

3 respuestas

2

No necesitas mucha RAM o pines para hacer esto, pero necesitas periféricos rápidos y reloj del sistema. Usted está mirando a cerca de 70 Mbps de rendimiento. Si adopta un enfoque básico de leer un fragmento y escribir un fragmento, deberá poder leer y escribir con al menos el doble de esa velocidad (ya que solo se hace un lado a la vez).

Si obtienes una MCU con DMA, deberías poder vincular ambas para que puedas copiar directamente. Pero creo que esto puede no ser tan simple cuando se involucra WiFi. Es posible que deba lidiar con colisiones, errores de envío, conexiones caídas, etc.

Por lo tanto, es probable que su tarjeta SD sea SDIO de 4 u 8 bits, y la MCU que seleccione debería admitirlo de forma nativa (es decir, preferiblemente sin bangos). Y luego el módulo WiFi debería tener una interfaz similar si es posible. Puede obtener módulos con interfaces USB, pero asegúrese de que pueda manejar el rendimiento que necesita. UART obviamente no es una opción.

Comenzaría con la selección del módulo WiFi antes de la MCU, si aún no lo ha hecho.

    
respondido por el AngeloQ
3

Argumentaría que lo que estás buscando es muy probable que no sea lo que la mayoría de las personas consideraría un microcontrolador ¹, sino un procesador de aplicaciones adecuado, que ejecuta un sistema operativo de uso general un tanto utilizable.

La ca. El rendimiento de 70 MBit / s (= 500MB / 60s) es, en cualquier caso, no manejable por una CPU sin un uso intensivo de DMA. Tenga en cuenta que es probable que no pueda poner tanta velocidad de datos a través de WiFi, por lo que ahí es donde se rompe toda la aplicación. Necesitarás al menos Fast ethernet para hacer eso. Dado que WiFi se realiza en un medio compartido en una banda sin licencia, no estará disponible de manera confiable para esa tarifa, por lo que creo que debería descartarlo. Incluso Fast Ethernet es un poco delgado, así que me gustaría utilizar Gigabit Ethernet directamente desde el principio (después de todo, esto es 2017, no 1997).

Hay procesadores integrados que tienen interfaces GMII2 para PHY de Gigabit, pero normalmente no son MCU, sino CPU con RAM externa.

No hay absolutamente ninguna razón para diseñar un dispositivo de este tipo: elija una de las muchas computadoras de una sola placa que tienen Gigabit Ethernet adecuada. Me gustan los Odroids.

El punto que señalo con respecto a los sistemas operativos "correctos" es que quieres cosas que son típicas de sistemas operativos totalmente desarrollados:

  • una pila de sistema de archivos flexible (observe que FAT32 no puede hacer archivos > 4GB, por lo que podría ser una mala elección comenzar a restringirse)
  • Una pila de redes de alto rendimiento que admite interfaces de red con DMA y interrumpe la fusión (realmente no es divertido si su procesador se atasca con el manejo de interrupciones de hardware que sabe que ocurrirán, de todos modos).
  • multitarea fácil (la transmisión de datos debe ser independiente de la lectura del almacenamiento)
  • almacenamiento en búfer flexible
  • Definición muy restringida de restricciones de latencia: no necesita lo que cualquiera consideraría en tiempo real.

Por lo tanto, vaya a una computadora de placa única integrada barata que ejecute un Linux de propósito general, si me pregunta.

¹ las definiciones varían, pero en general se acepta que un microcontrolador se diferencia de un microprocesador al menos en la integración de la RAM en el mismo paquete)     
respondido por el Marcus Müller
0

No se moleste en intentar resolver esto con un microcontrolador, necesita una computadora con un sistema operativo para que esto funcione. Mi sugerencia es que compre un teléfono o tableta Android con capacidad para USB OTG y 802.11ac. El Nexus 5X es un candidato ideal. Luego, escriba una aplicación que transfiera sus archivos a través de FTP y desmonte la tarjeta SD.

Hay otras opciones (como usar una Raspberry Pi 3 con un puente de red capaz de 802.11ac) pero dudo que puedas construir algo más pequeño o más eficiente que un teléfono. Rodar su propia solución desde cero con un "microcontrolador" podría (teóricamente) ser eficiente en el uso de la energía, pero le costará mucho en I + D.

    
respondido por el user1890202

Lea otras preguntas en las etiquetas