Sistema integrado para una tarea de procesamiento de imágenes

5

Inicialmente publiqué esto en SuperUser, pero sospecho que este podría ser un mejor lugar para publicar esto (perdón por la publicación doble): soy un 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 he usado tanto). Tengo numerosas preguntas a las que no he encontrado respuestas cuando uso Google, ¡por lo tanto, la publicación! Apreciaría cualquier información (¡disculpas por adelantado si mis preguntas parecen demasiado ingenuas!).

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

  1. En mi búsqueda, parece que la parte superior de la línea, el sistema integrado, está a un máximo de 500 Mhz ( enlace ). Esto realmente me sorprende, tenemos i7 Quadcore PCs funcionando a 2.5 Ghz disponibles con bastante frecuencia para computadoras portátiles / computadoras de escritorio. ¿Por qué los sistemas integrados no han alcanzado este aumento entonces? 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 en general. ¿Conseguimos sistemas embebidos dual / quad-core? ¿Cuál es el sistema de línea superior actualmente disponible?
  2. Para permitir una transición inicial fácil, he escuchado que XP Embedded o Windows Embedded 7 Standard (variante incrustada 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 siento inclinado a ello solo por eso. ¿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. He encontrado 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 el mínimo requisitos de hardware para ejecutar el sistema operativo (procesador x86 o amd64 de 1 GHz).
  4. Mi principal razón para pasar a esto es aprender algo interesante en el proceso y tener una solución dedicada que no tenga problemas y esté diseñada para realizar solo una tarea específica (con suerte en tiempo real).
pregunta c0d3rz

2 respuestas

2

Básicamente tienes dos posibilidades:

  • Ir para ARM
  • Ir a Intel (x86 / amd64)

Depende de cómo definas tu sistema embebido. Hay módulos ARM disponibles con cuatro núcleos, cada uno de los cuales funciona a 1 GHz + (por ejemplo, la familia Toradex Apalis es un módulo ARM Cortex-A9 multinúcleo, pero otros también están disponibles).

Si tiene altos requisitos 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 convertirlo en un sistema más pequeño.

Ahora, ¿cómo decide el sistema operativo correcto?

  • Windows Embedded solo se ejecutará en la arquitectura x86 / amd64; No hay soporte para procesadores ARM. Esto puede considerarse como una versión reducida de Windows para PC.
  • Windows Embedded Compact también está disponible para ARM, ya que se trata de la típica plataforma de dispositivos móviles que a menudo se optimiza para reducir el consumo de energía. Además, puedes agregar tus propios controladores fácilmente. Entonces, si quieres bucear muy a fondo, esta podría ser tu opción preferida.
respondido por el Tom L.
1

Observe las placas base industriales / "integradas" compatibles con x86 que contienen APU de AMD. es.wikipedia.org/wiki/AMD_Accelerated_Processing_Unit es.wikipedia.org/wiki/List_of_AMD_Accelerated_Processing_Unit_microprocessors

Algunas placas base tienen plataformas NVIDIA GPU como las 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 en ellas y varios procesadores de la serie ATOM.

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

Estas tarjetas a menudo están en el rango de $ 150 o menos para modelos de consumo y menos de $ 600 o más para las unidades SBC integradas industriales en cantidades bajas, y por lo general tienen más rendimiento de CPU GFLOPS y rendimiento de GPU de precisión simple GFLOPS que un tipo competitivo del procesador de medios DSP / SOC de medios. Por lo general, el consumo de energía no es excelente al estar en el rango máximo de 2 a 6 vatios, pero eso es completamente suficiente para algo como una PC montada en un automóvil o una unidad móvil con batería grande o algo así. Lo bueno es que puede obtener el software programado y probado en una PC de escritorio genérica fácilmente sin ningún esfuerzo doloroso a un objetivo incrustado radicalmente diferente.

Si realmente necesita un tamaño más pequeño que algún factor de forma ITX fraccional o un menor consumo de energía, entonces puede mirar algún tipo de placa de desarrollo orientada a "tableta" que tenga un ARM CORTEX A de cualquier núcleo o una CPU 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 de host USB 2 HS que va a una cámara web o una cámara USB personalizada, no necesita muchos puertos de interfaz GPIO / cámara personalizados en el SBC, lo que aumenta las opciones de hardware y reduce la carga del software personalizado. Por supuesto, varias de las unidades también tendrán una interfaz digital paralela para un sensor de imagen CMOS, aunque no todas lo 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. enlace

Una nueva placa de consumidores de gama alta basada en APU (no sin ventilador o con el menor costo) enlace

De modo que puede elegir entre mini-ITX, nano-ITX, otro factor de forma, bajo consumo de energía de 5W o mayor rendimiento / opciones de 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 todas tienen la capacidad de 512 MBy a varios GBy de DRAM DDRx de rendimiento razonable para software e imágenes. Algunos de los tableros de consumo de tamaño mini ITX comienzan alrededor de $ 79 para la placa base / CPU. Puede iniciar desde la red o desde una unidad flash USB para obtener una buena funcionalidad integrada.

También está el tablero de leopardo o el cigüeñal y esas alternativas a pandaboard si está buscando una tormenta de procesamiento de imágenes más antigua que aún sea razonable.

    
respondido por el whatever102904

Lea otras preguntas en las etiquetas