So finden Sie heraus, ob ein Mikroprozessor leistungsstark genug ist

9

Jeder weiß, dass es einfach ist, einen Proof of Concept für ein eingebettetes Gerät auf einem Rasbperry Pi oder sogar einem PC zu entwickeln. Wenn es jedoch darum geht, einen Mikroprozessor für Ihr Produkt auszuwählen, ist es schwierig, sicher zu sein, dass Ihre Wahl Ihr Konzept zum Funktionieren bringt optimal.

Ich habe derzeit ein Media-Streaming-Projekt, das erfolgreich an dem Himbeer-Pi arbeitet, obwohl der Pi viel zu groß und sperrig ist, als dass er als Endgerät geeignet wäre. Es wird auch angegeben, dass das Endgerät benutzerdefiniert ist. Es fällt mir schwer, Vertrauen in Prozessoren zu finden, die ich verwenden kann.

Was ist ein guter Prozess, um herauszufinden, ob ein Prozessor leistungsfähig genug ist, um meine Anwendung auszuführen?

Grundsätzlich sind meine Anforderungen:

  • USB-Host oder eingebetteter TCP / IP-Stack für den WiFi-Betrieb
  • I2S / PCM-Medienprotokoll
  • I2C für die Peripheriekonfiguration

Das Auffinden von Chips mit diesen Eigenschaften ist sehr, sehr einfach. Einfacher geht es ehrlich gesagt nicht. Das Problem besteht darin, feststellen zu können, ob der Chip in Bezug auf Verarbeitung und Betrieb schnell genug ist.

Ich habe mir den LPC4337 ziemlich genau angesehen und denke, er wäre geeignet, obwohl die Entwicklungsumgebung mir einige Probleme bereitet. Aus diesem Grund schaue ich mich immer noch um, was mich von Texas Instruments zum CC3200 führte , obwohl dieser Controller nur mit 80 MHz läuft und ich nicht sicher bin, ob das stark genug für Echtzeit-Medien-Streaming ist.

Was sind einige Schritte, um sicherzustellen, dass ein Prozessor schnell genug für meine Anwendung ist? Woher weiß ich, ob ein 80-MHz-Prozessor gut genug ist oder ob ich etwas in der Größenordnung von 204 MHz oder noch höher benötige?

Funkyguy
quelle
1
Ich denke, Sie müssen auch den Strombedarf angeben.
Kolosy
Dies beantwortet Ihre Frage nicht, aber Sie könnten sich die neue PIC32MZ-Familie von Mikrocontrollern ansehen , die doppelt so viel Flash (2 MB) und dreimal so viel RAM (512 KB) sowie USB 2.0-Host, I²S und fünf I²C haben Module zum gleichen Preis wie der LPC4337. Die IDE (MPLAB X) und der Compiler können kostenlos ausprobiert werden. Nach einer Testphase müssen Sie jedoch für den optimierten Compiler bezahlen, wenn Sie einen möchten (der nicht optimierte GCC-Compiler bleibt kostenlos). Microchip verfügt über lizenzfreie Bibliotheken für die USB- und TCP / IP-Stacks.
Tcrosley
2
Ich denke, einige vermissen möglicherweise den Punkt der Frage. Ich suche keine Empfehlung für Teile. Es ist einfach sicherzustellen, dass auf dem Chip genügend Platz vorhanden ist oder die richtigen Peripheriegeräte vorhanden sind. Ich bin eher auf der Suche nach Verarbeitungsparametern und -schritten als Leitfaden, um sicherzustellen, dass ich einen ausreichend leistungsstarken Prozessor auswähle. Wie in seiner Geschwindigkeit.
Funkyguy
Wenn Sie anhand der technischen Daten nicht erkennen können, was Sie benötigen, können Sie einfach Muster und Prototypen bestellen?
Roger Rowland
@ RogerRowland Ich könnte, obwohl das ein sehr langwieriger Prozess ist. Sicherlich gibt es eine Möglichkeit, Mindestanforderungen für ein Programm zu finden
Funkyguy

Antworten:

5

Es hängt davon ab, wie sicher Sie sein müssen. Ich arbeite in der Raumfahrtindustrie und dies wird normalerweise über das erreicht, was wir als "CPU-, RAM-, ROM-Budgets" bezeichnen. Ein Budget, sei es Kostenmassenmasse oder irgendetwas anderes, zerlegt Ihren Prozess in überschaubare Elemente, die Sie quantifizieren und alle zusammenfassen können, um den Gesamtbedarf zu ermitteln. Sie nehmen dann einen Sicherheitsfaktor, der von der Reife Ihres Projekts abhängt und mit der Zeit abnimmt, um dem Wachstum der Nachfrage Rechnung zu tragen. Schon früh stützt es sich stark auf Erfahrung und wird dann im Laufe der Zeit bei der Auswahl der Technologien verfeinert.

  • ROM ist relativ einfach. Sie wissen, wie viel ein Stapel / eine Bibliothek / ein Treiber ungefähr im ROM-Speicher beansprucht: entweder vom Autor angegeben oder Sie können ihn kompilieren, ohne ihn hochzuladen. Diese Zahl kann sich jedoch jedes Mal stark ändern, wenn Sie Ihren Code aufgrund von Compiler-Optimierungen ändern.
  • RAM ist viel schwieriger. Einige Tools in speziellen integrierten Entwicklungsumgebungen geben Ihnen Laufzeitschätzungen , und ich kann sehen, wie dies getan werden kann, aber mir sind keine generischen Tools bekannt, die beispielsweise von GCC bereitgestellt werden (weiß jemand etwas anderes?). Leider klingt es so, als ob es darauf ankommt, die größten oder am meisten zugewiesenen Elemente Ihres Codes zu zählen (Berücksichtigung der Lebensdauer der Variablen).
  • Die CPU ist insofern komplexer, als je nach Architektur (CISC oder RISC) die MIPS (Millionen von Anweisungen pro Sekunde, proportional zur CPU-Taktfrequenz) repräsentativ sein können oder nicht. Denn wenn Sie den Code zur Hand haben, können Sie den kritischsten Abschnitt in Anweisungen unterteilen und die erforderlichen MIPS aus dem Zeitbedarf berechnen. Jeder nicht deaktivierte Interrupt sollte an diesem Punkt als ausgelöst angesehen werden - Murphys Gesetz und all das.

Es ist äußerst schwierig, genau zu bestimmen, wann Scheduler aktiviert werden, sobald Sie Threads (sofern Threads nicht manuell Kernen zugewiesen werden) und Betriebssysteme haben. Es sollte für einfache Mikrocontroller-Codes verwaltbar sein, aber lohnt es sich für Ihre Anwendung?

Dies ist nur meine Teilnahme: Obwohl ich integrierte Systeme entwerfe, war ich nicht für diese speziellen Budgets verantwortlich (die für mich Inputs sind), und ich bin tatsächlich sehr daran interessiert, Expertengeschichten darüber zu erfahren.

Nachtrag: Bei Echtzeitsystemen ist es normalerweise einfacher, die Eignung des Systems für die Aufgabe anhand der maximalen Abtastzeit zu beurteilen, die von der Latenz / Verzögerung bei der Übertragung der Informationen während des gesamten Workflows abhängt, und der jeweils maximal benötigten Zeit Beispiel der Aufgabe.

Herr Mystère
quelle
avrdudekann Schätzungen darüber liefern, wie viel RAM von globalen Variablen belegt wird, aber Sie müssen es mit der Trockenlaufoption ausführen, da es sich im Grunde um ein Upload-Tool handelt.
Felixphew
1
Der schwierigste Teil, IMO zu schätzen, ist die Stapel- und Heap-Nutzung. Auf unserem aktuellen eingebetteten System (proprietäres Betriebssystem), das auf einem PIC32 ausgeführt wird, werden normalerweise über 25 Aufgaben ausgeführt, von denen viele ein paar K Heap oder mehr benötigen, wenn sie aktiv sind. Sie bringen mehrere davon in Gang, plus eine starke Stapelauslastung, und es kann bald sein, dass Ihnen fast der Arbeitsspeicher ausgeht. Ich habe gerade vor ungefähr einer Woche eine rekursive Routine geschrieben und musste sehr vorsichtig mit der Verwendung lokaler variabler Stapel sein (keine Arrays usw.)
tcrosley
Interessant, danke. Schätzen Sie die von Ihrem Code zugewiesene RAM-Größe (Code-Analyse oder bestimmtes Tool) oder messen Sie sie zur Laufzeit? Es scheint mir, dass MIPS etwas schwieriger zu schätzen ist, da es im Gegensatz zur RAM-Nutzung (möglich, nicht einfach) nicht anhand der Analyse des Codes geschätzt werden kann, ohne ihn in Anweisungen zu zerlegen. Threads machen die Aufgabe unglaublich schwieriger, aber es klingt so, als ob die CPU-Analyse immer noch mehr Schritte erfordert - es ist im Allgemeinen einfach weniger ein Problem. Was denken Sie?
Herr Mystère
2

Ich werde Ihre Frage vereinfachen, um herauszufinden, ob ein Mikroprozessor schnell genug ist.
Sie müssen den Prozess / die Prozedur identifizieren, der / die die schnellste Ausführungszeit erfordert. Wenn Ihr Prozessor die erforderlichen Anweisungen in der angegebenen Zeit oder weniger ausführen kann, ist dies schnell genug.
Schauen wir uns ein Beispiel an: Ihre schnellste Anforderung besteht darin, einen Stromausfall zu verarbeiten . Dazu müssen 10.000 Anweisungen in 10 Millisekunden ausgeführt werden. Sie benötigen eine CPU mit mindestens 1 MIP. Um dies in "MHz" umzuwandeln, müssen Sie die Anzahl der Taktzyklen pro Befehl (cci) kennen. Nehmen wir an, es ist 10 cci, Ihre CPU müsste mit 10 MHz oder schneller laufen.

Guill
quelle
0

Wenn Sie die Stücklistenkosten senken möchten, haben diese Hersteller in Shenzhen manchmal überraschende Angebote. Ein Beispiel: Allwinner A10 verfügt über mehr Rechenleistung und Verbindungsoptionen als Raspberry Pi, ist jedoch wahrscheinlich billiger, wenn es in Ihrem Design verwendet wird. Wenn Sie die gleichen Kosten wie der Pi suchen, ist der Allwinner A31s 6-8 mal leistungsstärker.

Maxthon Chan
quelle