Eingebettetes System für eine Bildverarbeitungsaufgabe

Ich habe dies ursprünglich auf SuperUser gepostet, aber ich vermute, dass dies ein besserer Ort ist, um dies zu posten (sorry für den Doppelpost!): Ich bin ein ziemlicher Anfänger in eingebetteten Systemen, bin aber gespannt darauf, mehr zu erfahren. Ich habe zuvor einen Arduino verwendet und vor kurzem einen Raspberry Pi gekauft (aber nicht so oft verwendet). Ich habe zahlreiche Fragen, auf die ich bei der Verwendung von Google keine Antworten gefunden habe, daher der Beitrag! Ich würde mich über jeden Einblick freuen (Entschuldigung im Voraus, wenn meine Fragen zu naiv erscheinen!).

Kürzlich habe ich mit einigen Bildverarbeitungsbibliotheken an Bildverarbeitungscode gearbeitet. Mein Code ist mit C++ in Visual Studio unter Windows XP geschrieben. Mein Programm verwendet in verschiedenen Phasen Multithreading-Fähigkeiten, hauptsächlich weil einige der Verarbeitungsaufgaben ziemlich zeitaufwändig sind. Meine Absicht ist es, diesen Arbeitscode zu übertragen und die Backend-Bibliotheken (OpenCV, Boost usw.) auf ein eingebettetes System zu installieren, das lediglich mit einer Kamera verbunden ist.

  1. Aus meiner Suche geht hervor, dass das eingebettete System der Spitzenklasse maximal 500 MHz beträgt ( http://microcontrollershop.com/product_info.php?products_id=3790 ). Das überrascht mich wirklich, wir haben i7 Quadcore-PCs mit 2,5 GHz, die ziemlich häufig für Laptops/Desktops verfügbar sind. Warum haben eingebettete Systeme diesen Anstieg dann nicht aufgeholt? Auch der maximale Speicher, den ich gesehen habe, beträgt 500 MB. Auch hier haben Desktop-PCs im Durchschnitt mindestens 4 bis 8 GB. Bekommen wir Dual-/Quad-Core-Embedded-Systeme? Was ist das derzeit verfügbare Top-of-the-Line-System?
  2. Um einen ersten einfachen Umstieg zu ermöglichen, habe ich gehört, dass XP Embedded oder Windows Embedded 7 Standard (Embedded-Variante von Win 7) Alternativen sind. Hier ist eine Differenztabelle. Allerdings habe ich an einigen Stellen gelesen, dass Windows Embedded 7 mehr RAM-Unterstützung hat und neige schon deshalb dazu. Kann das bitte jemand ergänzen? Ich weiß, dass ich auch Linux Embedded oder VxWorks verwenden könnte, aber an diesem Punkt glaube ich, dass ich mit meinem Code auf zahlreiche Probleme mit dem Betriebssystem stoßen würde, wenn ich fortfahren würde, und vielleicht werden die Bibliotheken möglicherweise nicht unterstützt ...
  3. Bei meinen Recherchen bin ich einige Male auf PC-104-Systeme gestoßen. Wenn man darüber liest, scheint es Standard zu sein. Gibt es bessere Alternativen? Ich bin ein wenig verwirrt über die erstklassigen ARM-Prozessoren, die ich gefunden habe, da ich nicht glaube, dass sie die Mindesthardwareanforderungen zum Ausführen des Betriebssystems erfüllen (1-GHz-x86- oder AMD64-Prozessor).
  4. Mein Hauptgrund für den Übergang dazu ist, etwas Cooles dabei zu lernen und eine dedizierte Lösung zu haben, die kopflos ist und nur eine bestimmte Aufgabe erfüllt (hoffentlich in Echtzeit).
Wenn Sie nach Embedded-Computern der i5- oder i7-Klasse suchen, werfen Sie einen Blick auf Dinge wie die AdvancedTCA- oder CompactPCI-Plattformen. Aber seien Sie auf Preise gefasst, die für die meisten Bastler unerschwinglich sind.
Sie wissen, welche Art von Bildbearbeitung Sie durchführen möchten. Wie viel Platz steht Ihnen zur Verfügung und wie viel Watt ist Ihr Leistungsbudget?
Kaz: Macht und physische Dimensionen interessieren mich im Moment nicht. In Bezug auf Bildverarbeitungsaufgaben: Ich möchte Bilder aufnehmen, diese in Stereo verarbeiten und eine 3D-Punktwolke erzeugen.

Antworten (2)

Sie haben grundsätzlich zwei Möglichkeiten:

  • Gehen Sie für ARM
  • Entscheiden Sie sich für Intel (x86/amd64)

Es hängt davon ab, wie Sie Ihr eingebettetes System definieren. Es sind ARM-Module mit vier Kernen erhältlich, von denen jeder mit 1 GHz+ läuft (z. B. ist die Toradex Apalis-Familie ein Multicore-ARM-Cortex-A9-Modul, aber andere sind ebenfalls erhältlich).

Wenn Sie hohe Anforderungen an RAM und Prozessorgeschwindigkeit haben, ist es wahrscheinlich die bessere Option, einen Core-i7 oder ähnliches zu wählen (sehen Sie sich die COMExpress-Familien von zB Congatec an) und diesen in ein kleineres System einzubauen.

Wie entscheiden Sie sich nun für das richtige Betriebssystem:

  • Windows Embedded läuft nur auf x86/amd64-Architektur; Es gibt keine Unterstützung für ARM-Prozessoren. Dies kann als abgespeckte Version von Windows für PCs betrachtet werden.
  • Windows Embedded Compact ist auch für ARM verfügbar, betrachten Sie es als die typische Plattform für mobile Geräte, die oft für reduzierten Stromverbrauch optimiert ist. Außerdem können Sie ganz einfach Ihre eigenen Treiber hinzufügen. Wenn Sie also wirklich tief in die Tiefe tauchen möchten, ist dies möglicherweise Ihre bevorzugte Wahl.
Vielen Dank für die klare Klassifizierung der beiden Hauptoptionen (ARM/ und Nicht-ARM) und des jeweils unterstützten Betriebssystems. Ich schätze auch die Empfehlung der COMExpress-Familie, die hatte ich noch nicht gesehen ...

Schauen Sie sich die industriellen / "eingebetteten" x86-kompatiblen Motherboards mit AMD APUs an. en.wikipedia.org/wiki/AMD_Accelerated_Processing_Unit en.wikipedia.org/wiki/List_of_AMD_Accelerated_Processing_Unit_microprocessors

Einige Motherboards verfügen über NVIDIA-GPU-Plattformen wie die Ionen.

en.wikipedia.org/wiki/Nvidia_Ion

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

Intel hat einige eingebettete Boards mit Intel-GPUs darauf und verschiedene Prozessoren der ATOM-Serie.

Für die "einfache" Bildverarbeitung können Sie die x86-CPU verwenden, und wenn Sie etwas sehr Paralleles haben, können Sie immer einfache Pixel-/Compute-Shader oder vielleicht OpenCL auf der "GPU" ausführen.

Diese Boards liegen oft im Bereich von 150 $ oder weniger für Consumer-Modelle und unter 600 $ oder so für die industriellen eingebetteten SBC-Einheiten in geringen Mengen, und sie haben in der Regel viel mehr GFLOPS-CPU-Leistung und GFLOPS-Single-Precision-GPU-Leistung als ein konkurrierender Typ von Medien-DSP / SOC-Medienprozessor. Der Stromverbrauch ist normalerweise nicht großartig, da er im Spitzenbereich von 2 bis 6 W liegt, aber das ist völlig ausreichend für so etwas wie einen im Auto montierten PC oder ein großes batteriebetriebenes mobiles Gerät oder ähnliches. Das Schöne daran ist, dass Sie die Software problemlos auf einem generischen Desktop-PC programmieren und testen können, ohne dass ein mühsamer Portierungsaufwand auf ein radikal anderes Embedded-Ziel erforderlich ist.

Wenn Sie wirklich eine kleinere Größe als einen fraktionierten ITX-Formfaktor oder einen geringeren Stromverbrauch benötigen, können Sie sich eine Art "Tablet" -orientiertes Entwicklungsboard ansehen, das über eine Multi-Core-ARM-CORTEX-A-Was-auch-immer- oder ähnliche CPU verfügt, möglicherweise mit einer GPU und welche kann Linux, Android, Tizen oder etwas Praktisches ausführen. Die neuere i.MX-Serie von Freescale oder TI Pandaboard oder so etwas. Wenn Sie die Kamera über einen USB 2 HS-Hostanschluss an eine Webcam oder eine benutzerdefinierte USB-Kamera anschließen, benötigen Sie nicht viele benutzerdefinierte GPIO- / Kameraschnittstellenanschlüsse am SBC, um die Hardwareauswahl zu erweitern und die Belastung durch benutzerdefinierte Software zu verringern. Natürlich werden einige der Geräte auch eine digitale parallele Schnittstelle für einen CMOS-Bildsensor haben, wenn auch nicht alle.

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

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

www.omamappedia.com/wiki/PandaBoard

Bearbeiten – hier ist der nette Leitfaden für eingebettete Lösungen von AMD. http://www.amd.com/us/Documents/AMD_Embedded_Solutions_Guide.pdf

Ein neueres High-End-APU-basiertes Consumer-Board (nicht lüfterlos oder kostengünstig) http://www.legitreviews.com/article/2110/1/

Sie haben also die Wahl zwischen Mini-ITX, Nano-ITX, anderen Formfaktoren, weniger als 5 W Stromverbrauch oder Optionen mit höherer Leistung/Energie oder einigen der ARM-Boards mit geringerer Leistung/Leistung/Größe. Die meisten verfügen über GPUs, die sowohl für die Bildverarbeitung als auch für die CPUs verwendet werden können, und im Allgemeinen haben alle die Kapazität für 512 MByte bis mehrere GByte DDRx-DRAM mit angemessener Leistung für Software und Bilder. Einige der Consumer-Boards im Mini-ITX-Format beginnen bei etwa 79 US-Dollar für Motherboard/CPU. Sie können vom Netzwerk oder von einem USB-Flash-Laufwerk booten, um eine nette eingebettete Funktionalität zu erhalten.

Es gibt auch das Leopardboard oder Craneboard und solche Alternativen zum Pandaboard, wenn Sie nach einer älteren Bildverarbeitungsplattform suchen, die noch vernünftig ist.

Danke für die Antwort, what102904. Ich kannte das Pandaboard, aber nicht die anderen. Im Moment spielt die Größe keine Rolle. Ich habe Ihre Links durchgesehen und die Leistungsdaten scheinen besser zu sein als das, was ich selbst gefunden habe. Leider sind letztere Maschinen ARM-basiert und unterstützen Windows Embedded nicht, daher bin ich an dieser Stelle etwas zögerlich.
Danke für die Bearbeitung. Der Leitfaden für eingebettete Lösungen von AMD war eine äußerst informative Lektüre, und ich habe auch einige E-Mails an einige der Anbieter gesendet ...