Prozessor-Budgetierung

Wie finde ich heraus, ob ein Mikrocontroller genug Verarbeitungsgeschwindigkeit hat, um besonders "intensive" Aufgaben zu bewältigen?

Insbesondere bin ich ein Universitätsstudent, der einen Roboter entwerfen möchte, der OpenCV und ein LADAR verwendet. Unser Team hat einen ODROID X2. Ich denke, der ARM ist schnell genug, aber wie kann ich das sicherstellen?

Sie finden ein viel schnelleres ARM-System, portieren den Code und finden es heraus.
@IgnacioVazquez-Abrams Ist Ausprobieren wirklich der einzige Weg? Die Zeit ist begrenzt und wenn ich die Voraussicht hätte, nicht einen langen Weg in eine Sackgasse zu gehen, wäre das ideal.
Dieses Board basiert „auf Exynos4412 Prime 1,7 GHz ARM Cortex-A9 Quad Core mit 2 GB Speicher“. Sie können nicht viel besser werden, vielleicht mit einem kleinen Intel i5 / i7-basierten Board.
Wow, ja, das ist ein großes Brett. Ich kann nicht sehen, dass es ein Problem damit gibt, es sei denn, der Code ist schrecklich.
Kann dir keine direkte Antwort geben, nur ein paar Infos. Ich habe OpenCV auf i5 PC und Raspberry Pi (Linux, ca. 850 MHz?) mit USB-Webcam verbunden. Die CPU-Auslastung variiert stark, je nachdem, welche Funktion Sie in OpenCV aufrufen. Ich habe es nicht selbst getan, ich habe Webblogs von Leuten gelesen, die Raspberry Pi getestet und berichtet haben, dass es mit 3 bis 5 Bildern pro Sekunde und einer Auflösung von 640 x 480 arbeitet, mit der typischen Anwendung, einen Farbblock zu finden. PC ist viel schneller. Meinst du Lidar (oder Ladar)?
@Ninja48 Forschen Sie oder studieren Sie? Wenn Sie recherchieren, an vielen Unbekannten arbeiten und Ziel, CPU-Last, Algorithmus bei Projektstart sehr unbekannt sind, ist es vermutlich jetzt August und Sie kaufen ein. Wenn ich Sie wäre, bekomme ich eine sehr leistungsstarke CPU, i5 Quad Core oder höher (oder das ARM-Äquivalent, mit dem ich nicht vertraut bin). Sie können in Betracht ziehen, vorhandene Artikel über frühere Arbeiten zu lesen, die Ihren beabsichtigten Arbeiten am ähnlichsten waren, und sehen, welche CPU sie verwenden. Wenn die Arbeit 1 oder 2 Jahre alt ist, mindestens doppelte oder dreifache CPU-Leistung als frühere Arbeiten, wenn Sie auf Forschungsniveau sind und eine angemessene bis gute Finanzierung haben. Besten Wünsche.

Antworten (2)

Oft wird die Leistung nicht durch die reine Verarbeitungsgeschwindigkeit der CPU begrenzt, sondern durch andere Engpässe im System – RAM, Flash, serielle I/O usw. Dies wird bei komplizierteren Peripheriegeräten zu einem größeren Problem. Sie können zwar theoretisch die Prozessorlast berechnen, aber das ist sehr, sehr schwierig. Der richtige Weg, dies zu tun, ist Benchmarking. Testen Sie, wie viel Ihre LIDAR-Schnittstelle und andere Schnittstellen benötigen, und testen Sie auch (das ist sehr wichtig) während des gesamten Entwicklungsprozesses weiter. Wenn die Prozessorauslastung nach dem Hinzufügen einer bestimmten Funktion ansteigt, können Sie zurückgehen und herausfinden, ob es einen besseren Weg gibt .

Am Ende des Tages ist Hardware aber billig – im Zweifelsfall groß raus.

Stimme der letzten Zeile voll und ganz zu, besonders dann, wenn es sich um universitäre Forschungsarbeiten handelt und man nie weiß, wie sich die Arbeiten entwickeln werden. (OP gibt keinen Grad oder Undergrad an)

Sie können einen Simulator ausführen und Code-Benchmarks auf dem Simulator ausführen. Oder führen Sie Code auf einem Evaluierungsboard mit einem vergleichbaren Prozessor aus und führen Sie dort Benchmarks durch.

Ich weiß nicht, was OpenCV und LADAR sind, aber ich gehe davon aus, dass Sie den Code selbst kompilieren, also sollten Sie denselben Compiler verwenden, den Sie für den Zielprozessor verwenden werden.

Selbst wenn es zu laufen scheint, möchten Sie wirklich wissen, wie viel Spielraum Sie haben, damit eine winzige Änderung den Code nicht beschädigt. Wenn Sie nur Zugriff auf ein Evaluierungsboard haben, können Sie grobe Dinge tun, z. B. einen Ausgangspin umschalten, wenn der Prozessor im Leerlauf ist. In diesem Fall kann die durchschnittliche Ausgangsspannung verwendet werden, um grob zu bestimmen, wie viel Prozessorbandbreite noch verfügbar ist.