Angenommen, Sie starten ein eingebettetes Projekt mit bekannten Funktionen. Wie wählen Sie bei der Auswahl eines Mikrocontrollers aus, wie viel RAM Sie benötigen?
Verwenden Sie eine Entwicklerkarte und codieren Sie Ihr Projekt zuerst, und prüfen Sie dann, wie viel Speicher Sie verwendet haben, und wählen Sie dann einen geeigneten Mikrocontroller aus, der zu diesem Speicher passt?
Suchen Sie sich einfach einen leistungsfähigen Mikrocontroller für einen Prototyp aus und verkleinern Sie ihn, nachdem Sie ein funktionsfähiges Produkt haben?
Wählen Sie einfach etwas aus, von dem Sie sicher sind, dass es ausreicht, und wenn Ihnen der Speicherplatz ausgeht, aktualisieren Sie einfach auf eine höhere Speicherdichte, ansonsten behalten Sie einfach den vorhandenen Mikrocontroller bei?
Was ist eine gute Praxis?
quelle
Antworten:
Persönlich verwende ich für Hobbyprojekte eher den leistungsstärksten Mikrocontroller der Familie mit der richtigen Grundfläche. Anschließend entwickle ich die Leiterplatte, schreibe Code und erstelle einen Prototyp.
Dies hat den Vorteil, dass ich die geringe Anzahl von Mikrocontrollern ziemlich gut kenne, sodass ich schnell Prototypen erstellen kann, ohne ein ganzes Datenblatt lesen zu müssen. Ich habe auch Breakout-Boards und Code-Vorlagen für sie.
Wenn es funktioniert und ich mehr als eine Handvoll mache, kaufe ich den billigsten Mikrocontroller, der die richtigen Peripheriegeräte und genügend Speicher für alles hat, was ich zuvor codiert habe. Dies kann ärgerlich sein, wenn sich interne Register ändern (auf dem PIC) oder wenn einer der Mikrocontroller über zusätzliche Peripheriegeräte verfügt, die deaktiviert werden müssen, damit der Code funktioniert.
Für Produktionszwecke können Sie jedoch eine angemessene Menge von jeder Einheit abschneiden.
quelle
Natürlich kann es für einen einzelnen selbstgebauten Prototyp eine gute Empfehlung sein, mit dem leistungsstärksten aller kompatiblen Mikros zu beginnen und anschließend zu verkleinern.
Wenn Sie jedoch ein Angebot gewinnen möchten, müssen Sie Ihrem Kunden einen Preis mitteilen, bevor Sie das Geld haben, um etwas umzusetzen.
Daher empfiehlt es sich, vor Beginn der Programmierung eine Spezifikation aufzuschreiben . Sie wissen, was Sie tun möchten, und Sie sollten aufschreiben, wie Sie es tun werden.
Dieses "Wie" beinhaltet auch das Nachdenken über ein Software-Design und die Beantwortung von Fragen wie:
Wenn Sie all diese Werte zusammenfassen, erhalten Sie eine grobe Schätzung. Wie weit Sie vertrauen können, hängt davon ab, wie detailliert Ihre Analyse ist, und von Ihrer Erfahrung :-) Es
ist sicherlich eine gute Idee, eine Marge von mindestens 30,50% Ihrer Schätzung hinzuzufügen.
Wenn Ihr Produkt fertig ist und Sie ungefähr 80..90% RAM verwenden, können Sie sicher sein, dass Ihre Auswahl richtig war - zumindest in Bezug auf RAM.
quelle
Wenn es nur möglich wäre, zuerst Ihr eingebettetes System zu codieren und dann die Hardware zu erstellen. Das würde jedem das Leben leichter machen. Das bedeutet leider auch, dass Ihre Fristen aus dem Fenster sind. In der Regel muss die Hardware lange vor Fertigstellung der Software entworfen werden, da Hardwareteile häufig lange Vorlaufzeiten haben.
Daher müssen Entwickler von eingebetteten SWs in der Regel den Speicher- und CPU-Bedarf ihres Programms schätzen. Der erste Schritt sollte darin bestehen, die Hardware-Mitarbeiter davon zu überzeugen, Ihnen den leistungsstärksten Mikrocontroller / Prozessor mit dem größtmöglichen Arbeitsspeicher zur Verfügung zu stellen. Das funktioniert selten, weil sie eigene Anforderungsziele haben, aber hin und wieder hat man Glück.
Wenn dies nicht funktioniert, müssen Sie als Nächstes ein Software-Design auf hohem Niveau erstellen und die Module nach Funktionen aufteilen. Sie würden dann Codezeilen für jede Funktion für jedes Modul im System schätzen. Sie können dann eine Formel verwenden, um Codezeilen in eine Ballpark-Schätzung des Codespeichers zu konvertieren. Sie würden auch ungewöhnliche Speicheranforderungen (wie große Arrays) untersuchen und eine Schätzung hinzufügen, um dies zu berücksichtigen. Addieren Sie dann einen Prozentsatz zu dieser Summe, um alles zu decken, was Sie verpasst haben. Verdoppeln Sie dann den Wert, um die typische Auslastung von 50% zu erreichen.
Ja, das braucht Zeit. Ja, es ist notwendig, durch alle Rahmen zu springen, da das Ändern der Hardware nach dem Bau sehr schwierig ist.
quelle
Im Allgemeinen stellen Mikrocontroller-Anbieter eine Reihe von Speichern in ihren Geräten bereit, die für typische Anwendungen geeignet sind. Wenn Sie also nur ein paar I / O-Pins und eine SPI in einem kleinen Gerät benötigen, ist es unwahrscheinlich, dass Sie etwas finden, das mit 500 kByte Flash und 64 kByte RAM geliefert wird. Bei größeren Geräten, die sich näher an SoC-Paketen befinden, ist mit ziemlicher Sicherheit auch das kleinste ausreichend groß, es sei denn, Sie planen eine ernsthafte Zahlenverarbeitung wie die Bildverarbeitung.
In einem professionellen Umfeld besteht der Schlüssel zur Auswahl des richtigen Mikrocontrollers darin, historische Daten zu verwenden. Sie haben eine Aufzeichnung der anderen Projekte, die Sie entwickelt haben, und wissen, welcher Speicher und welche anderen Siliziumressourcen zur Implementierung der einzelnen Funktionen erforderlich sind. Sie wissen, was von dem Produkt erwartet wird, haben also eine gute Funktionsliste und können schnell und genau die Ressourcen berechnen, die der Mikrocontroller bereitstellen muss. Der Versuch, den Ressourcenbedarf anhand einer Entwurfsspezifikation zu erraten (die zu Beginn des Projekts entwickelt wurde, wenn die wenigsten Informationen über das System verfügbar sind), ist im besten Fall unzuverlässig und nur sehr erfahrene Ingenieure, die eine umfassende Spezifikation erstellt haben Datenbank von historischen Daten in ihren eigenen Köpfen, wird jede Art von Erfolg bei der Verwendung dieser Methode haben.
Viele Unternehmen haben einen „agilen“ Ansatz für Software und elektronisches Design gewählt, der den Aufbau einer „Bibliothek“ kleiner Funktionskarten (z. B. RS-485-Karten, ADC-Karten usw.) sowie generischer Plattformkarten umfasst, auf denen sich die Mikrocontroller befinden Ähnlich wie bei der Verwendung eines Entwicklungskits und von Plug-Ins. Ein Produkt kann dann schnell (innerhalb von Stunden) als Prototyp erstellt werden, indem die für die Funktionen erforderlichen Platinensätze ausgewählt und verbunden werden. Die Software setzt sich ebenfalls aus Bibliotheksmodulen zusammen und kann schnell portiert und getestet werden. Sobald die Größe des hardwarespezifischen Teils des Codes bekannt ist, ist es normalerweise ausreichend, den kleinsten Teil auszuwählen, der diesen enthält. Die Ausnahme ist die oben erwähnte, bei der die Funktionalität des Geräts große Datenmengen oder sehr komplexe Algorithmen umfasst. Diese Methode liefert eine genaue,
(Ein weiterer Vorteil des Agile - Ansatzes besteht darin, dass Software - und Elektronikentwicklung parallel durchgeführt werden können. Das Elektronikdesign ist eine Übung zur Integration der Funktionsplatinen und zur gleichzeitigen Durchführung der relevanten EMV - und anderer schwieriger Aufgaben Auf den Protoype-Baugruppen wird Anwendungssoftware entwickelt. Einige Portierungen und Integrationen sind noch erforderlich, dies geschieht jedoch, wenn funktionierende Software und Elektronik verfügbar sind.)
quelle