Sistema Embebido para una tarea de procesamiento de imágenes

Inicialmente publiqué esto en SuperUser, pero sospecho que este podría ser un mejor lugar para publicar esto (¡perdón por la doble publicación!): Soy bastante principiante en sistemas integrados, pero estoy ansioso por aprender más. He usado un Arduino anteriormente y recientemente compré una Raspberry Pi (pero no la usé tanto). Tengo numerosas preguntas para las que no he encontrado respuestas cuando uso Google, ¡así que la publicación! Agradecería cualquier idea (¡disculpas de antemano si mis preguntas parecen demasiado ingenuas!).

Recientemente, he estado trabajando en un código de procesamiento de imágenes utilizando algunas bibliotecas de procesamiento de imágenes. Mi código está escrito usando C++ en Visual Studio en Windows XP. Mi programa utiliza capacidades de subprocesos múltiples en varias etapas principalmente porque algunas de las tareas de procesamiento consumen bastante tiempo. Mi intención es transferir este código de trabajo e instalar las bibliotecas de back-end (OpenCV, Boost, etc.) en un sistema integrado que simplemente está conectado a una cámara.

  1. Según mi búsqueda, parece que los sistemas integrados de primera línea tienen un máximo de 500 Mhz ( http://microcontrollershop.com/product_info.php?products_id=3790 ). Esto realmente me sorprende, tenemos PC i7 Quadcore que funcionan a 2,5 Ghz disponibles con bastante frecuencia para computadoras portátiles/de escritorio. Entonces, ¿por qué los sistemas integrados no se han puesto al día con este aumento? También la memoria máxima que he visto es de 500 MB. Nuevamente, las PC de escritorio tienen un promedio de al menos 4 a 8 GB comúnmente. ¿Obtenemos sistemas integrados dual/quad-core? ¿Cuál es el sistema de primera línea actualmente disponible?
  2. Para permitir una transición fácil inicial, escuché que XP Embedded o Windows Embedded 7 Standard (variante integrada de Win 7) son alternativas. Aquí hay una tabla de diferencias. Sin embargo, he leído en algunos lugares que Windows Embedded 7 tiene más soporte de RAM y, por lo tanto, me inclino solo por esa razón. ¿Alguien puede agregar a esto por favor? Sé que también podría usar Linux Embedded o VxWorks, pero en este punto creo que me encontraría con numerosos problemas relacionados con el sistema operativo con mi código si continuara y quizás las bibliotecas no sean compatibles...
  3. Me he encontrado con los sistemas PC-104 varias veces en mis búsquedas. Leyendo sobre esto, parece ser estándar. ¿Hay mejores alternativas? Estoy un poco confundido con los procesadores ARM de primera línea que he encontrado, ya que no creo que satisfagan los requisitos mínimos de hardware para ejecutar el sistema operativo (procesador x86 o amd64 de 1 GHz).
  4. Mi razón principal para hacer la transición a esto es aprender algo interesante en el proceso y tener una solución dedicada que no tenga cabeza y esté diseñada para realizar solo una tarea específica (con suerte, en tiempo real).
Si está buscando computadoras integradas de clase i5 o i7, eche un vistazo a cosas como las plataformas AdvancedTCA o CompactPCI. Pero prepárate para precios que están fuera del alcance de la mayoría de los aficionados.
Ya sabes qué tipo de procesamiento de imágenes quieres hacer. ¿Cuánto espacio físico tiene disponible y cuántos vatios es su presupuesto de energía?
Kaz: El poder y las dimensiones físicas no son una preocupación para mí en este momento. En términos de tareas de procesamiento de imágenes: quiero tomar fotografías, realizar un procesamiento estéreo en ellas y generar una nube de puntos 3D.

Respuestas (2)

Básicamente tienes dos posibilidades:

  • Ir por BRAZO
  • Opta por Intel (x86/amd64)

Depende de cómo defina su sistema integrado. Hay módulos ARM disponibles con cuatro núcleos, cada uno funcionando a más de 1 GHz (por ejemplo, la familia Toradex Apalis es un módulo ARM Cortex-A9 de varios núcleos, pero también hay otros disponibles).

Si tiene requisitos altos con respecto a la RAM y la velocidad del procesador, probablemente la mejor opción sea seleccionar un Core-i7 o algo similar (consulte las familias COMExpress de, por ejemplo, Congatec) y construya eso en un sistema más pequeño.

Ahora, ¿cómo decide cuál es el sistema operativo correcto?

  • Windows Embedded solo se ejecutará en la arquitectura x86/amd64; No hay soporte para procesadores ARM. Esto se puede considerar como una versión simplificada de Windows para PC.
  • Windows Embedded Compact también está disponible para ARM, considérelo como la plataforma típica de dispositivos móviles que a menudo está optimizada para reducir el consumo de energía. Además, puede agregar sus propios controladores fácilmente. Entonces, si quieres sumergirte realmente en el fondo, esta podría ser tu opción preferida.
Gracias por la claridad de la clasificación de las dos opciones principales (ARM/ y no ARM) y el sistema operativo compatible respectivamente. También agradezco la recomendación de la familia COMExpress, estos no los había visto antes...

Mire las placas base compatibles x86 industriales / "integradas" que contienen APU AMD. en.wikipedia.org/wiki/AMD_Accelerated_Processing_Unit en.wikipedia.org/wiki/List_of_AMD_Accelerated_Processing_Unit_microprocesadores

Algunas placas base tienen plataformas de GPU NVIDIA como Ions.

en.wikipedia.org/wiki/Nvidia_Ion

www.amd.com/us/products/embedded/apu/Pages/embedded-apu.aspx

Intel tiene algunas placas integradas con GPU Intel y varios procesadores de la serie ATOM.

Para el procesamiento de imágenes "básico", puede usar la CPU x86 y si tiene algo que es muy paralelo, siempre puede ejecutar sombreadores de píxel / computación simples o tal vez OpenCL en la 'GPU'.

Estas placas a menudo están en el rango de $ 150 o menos para los modelos de consumo y menos de $ 600 o menos para las unidades SBC integradas industriales en cantidades bajas, y generalmente tienen mucho más rendimiento de CPU GFLOPS y rendimiento de GPU de precisión única GFLOPS que un DSP de medios de la competencia. / Procesador de medios SOC. El consumo de energía por lo general no es excelente en el rango máximo de 2-6 W, pero eso es completamente suficiente para algo como una PC montada en un automóvil o una unidad móvil grande alimentada por batería o algo así. Lo bueno es que puede programar y probar el software en una PC de escritorio genérica fácilmente sin ningún esfuerzo de portabilidad a un objetivo incrustado radicalmente diferente.

Si realmente necesita un tamaño más pequeño que un factor de forma ITX fraccional o un consumo de energía más pequeño, entonces puede buscar algún tipo de placa de desarrollo orientada a "tableta" que tenga una CPU ARM CORTEX A multinúcleo o similar, tal vez con una GPU y que puede ejecutar Linux, Android, Tizen o algo conveniente. La nueva serie i.MX de Freescale o TI Pandaboard o algo así. Si conecta la cámara a través de un puerto host USB 2 HS que va a una cámara web o una cámara USB personalizada, entonces no necesita muchos puertos de interfaz de cámara/GPIO personalizados en el SBC, lo que amplía las opciones de hardware y reduce la carga del software personalizado. Por supuesto, varias de las unidades también tendrán una interfaz paralela digital para un sensor de imagen CMOS, aunque no todas la tendrán.

www.freescale.com/webapp/sps/site/prod_summary.jsp?code=IMX53QSB#

www.freescale.com/webapp/sps/site/taxonomy.jsp?nodeId=018rH3ZrDR988D

www.omappedia.com/wiki/PandaBoard

Editar: aquí está la buena guía de soluciones integradas de AMD. http://www.amd.com/us/Documents/AMD_Embedded_Solutions_Guide.pdf

Una placa de consumo basada en APU de gama alta más nueva (no sin ventilador o de menor costo) http://www.legitreviews.com/article/2110/1/

Así que puede elegir mini-ITX, nano-ITX, otro factor de forma, menos de 5 W de consumo de energía u opciones de mayor rendimiento/potencia, o algunas de las placas ARM de menor potencia/rendimiento/tamaño. La mayoría tiene GPU que se pueden usar para el procesamiento de imágenes, así como las CPU y, en general, todos tienen una capacidad de 512 MBy a varios GBy de DRAM DDRx de rendimiento razonable para software e imágenes. Algunas de las placas de consumo de tamaño mini ITX cuestan alrededor de $ 79 por placa base/CPU. Puede iniciar desde la red o desde una unidad flash USB para una buena funcionalidad integrada.

También está el leopardboard o el craneboard y otras alternativas al pandaboard si está buscando una plataforma de procesamiento de imágenes más antigua que aún sea razonable.

Gracias por la respuesta lo que sea102904. Conocía el Pandaboard pero no los demás. Por el momento, el tamaño no es un problema. He estado revisando sus enlaces y las especificaciones de rendimiento parecen mejores que las que he encontrado. Desafortunadamente, las últimas máquinas están basadas en ARM y no son compatibles con Windows Embedded, por lo que estoy un poco indeciso en este punto.
Gracias por la edición. La guía de soluciones integradas de AMD fue una lectura extremadamente informativa y también envié algunos correos electrónicos a algunos de los proveedores...