Hallo zusammen, kann mir einer Info's geben wo ich eine Vorgehensweise oder Methode über eine Machabarkeitsanalyse von Projekten mittels eine Microcontrollers finde? Also im Prinzip brauche ich eine Berechnung, ob mein ausgewählter Controller die Rechenleistung aufbringt, die für mein Projekt benötigt wird. Wie kann ich das berechnen, bzw. wo finde ich eine Vorgehensweise dazu?
Eddi schrieb: > Also im Prinzip brauche ich eine Berechnung, ob mein ausgewählter > Controller die Rechenleistung aufbringt, die für mein Projekt benötigt > wird. Eine Formel für den Taschenrechner gibt es dafür natürlich nicht. Die technische Machbarkeit ist ein Teilbereich der Machbarkeitsstudie. Und wie detailliert die ist, hängt natürlich von den Anforderungen an das Projekt ab. Voraussetzung ist also erstmal, die technischen Anforderungen zu identifizieren und zu bewerten (Nice-to-Have, Must, etc.) Dabei kannst Du z.B. auch wirtschaftliche Anforderungen aufnehmen. Anschließend gilt es, die technische Umsetzung zu recherchieren. Der Bau eines Prototypen kann ein Teil dieser Recherche sein. Aber auch die (ggf. langfristige) Verfügbarkeit von Bauteilen, rechtliche Parameter (z.B. bei der Verwendung von Funkmodulen), fertigungstechnische Hürden (Gehäuse, etc.) und vor allem das benötigte Budget sollten am Ende dabei herauskommen. Desweiteren kannst Du Testszenarien und -abläufe entwickeln, mit denen Du sicherstellen kannst, dass gewählte Bauteile und Komponenten die Anforderungen an Dein Projekt erfüllen. Wenn Du also schreibst, dass Du analysieren willst, ob Dein gewählter Controller ausreicht, bist Du eigentlich schon einen Schritt zu weit. Denn Du hast einen Controller ausgewählt, obwohl Du nicht weisst, ob er ausreicht. Daher: Rückwärtsgang -> Anforderungen aufnehmen -> dann Bauteile auswählen.
Mach doch ein Konzept welche Eingänge habe was müssen diese steuern was soll wie berechnet werden viel Code kann man schon vor Auswahl des uC schreiben Testen. Dann weiss man schon wie schnell der uC sein muss wie viel Speicher man braucht.
Du musst quasi alle relevanten Dinge quantifizieren: Texte, Fonts, Rtos und Bibliotheken könnten relevant für RAM und ROM sein. Bei schnellen Reglern ist oft der Zentrale Algorithmus relevant: 3 floating-points alle 10 us muladd kann man incl Interrupt-overhead abschätzen und sicherstellen, dass >> 100% Reserve bleiben. Wenn Du 3 separate uarts brauchst, dann sollte dein uC 3 haben. Am Ende kommt es bei der Rechenleistung oder Speicher nicht auf Faktor 2 oder 3 an: man nimmt das Flaggschiff mit 10facher Reserve und macht. Dann kann man für Stückzahlen nachher auch den kleinen Bruder nehmen,
naja aber man kann doch bei bestehendem Code eine Analyse machen.. man weiss ja wieviele clockcycles jeder Vorgang braucht (kann es ggf nachlesen) und dann kann man anhand der Prozessorgeschwindigkeit die performance ausreichend gut abschätzen. ADD braucht ein, MUL braucht 2 clockcycles, JMP 3, RET 4 etc.. hat man das dann aufgedröselt (oder besser das kompilat aufdröseln lassen) kennt man die Anzahl an clockcycles pro Aufgabe; und weiss wie schnell der Prozessor sein muss damit die Performance ausreicht. sollte dem enthusiastischen Entwickler ein Leichtes sein 'sid
Eddi schrieb: > Also im Prinzip brauche ich eine Berechnung, ob mein ausgewählter > Controller die Rechenleistung aufbringt, die für mein Projekt benötigt > wird. Du musst 'dein Projekt' erstmal in einer analysefähigen Art und Weise definieren. Also wie in Algebra, vor der eigentlichen Gleichungslösung stellt die Aufstellung der Gleichung.
Eddi schrieb: > Also im Prinzip brauche ich eine Berechnung, ob mein ausgewählter > Controller die Rechenleistung aufbringt, die für mein Projekt benötigt > wird. Nein, nicht immer. Davor sollte die Überlegung stehen, ob die Beantwortung dieser Frage überhaupt einen Sinn hat oder ob es, abhängig von Anforderungen des Projekts nicht geschickter ist, einen Controller zu nehmen, der die Rechenleistung mit Sicherheit aufbringt und wenn es die 100- oder 1000-fache ist. Wenn die Beantwortung dieser Frage 1 Mannwoche kosten würde, die Maximalstückzahl bei 30, der Preisunterschied bei 50Cent zwischen einen "haargenau passenden" und einem der auf jeden Fall ausreicht, ist das Ergebnis mMn klar. Wegen Rechenleistung sollte man sich jedenfalls die Hose nicht unnötig nass machen. (Für Schlaumeier: Dass Performance auch noch andere Effekte als Kosten hat, ist mir klar. Das muss dann eben auch beurteilt werden.)
>und dann kann man anhand der Prozessorgeschwindigkeit die performance >ausreichend gut abschätzen. > >ADD braucht ein, MUL braucht 2 clockcycles, JMP 3, RET 4 etc.. .... Ich staune. Woher hast Du die heisse Info? >sollte dem enthusiastischen Entwickler ein Leichtes sein Ja, ja. Das einzige, was da hilft, ist ein Benchmark, und zwar genau des Codes, der ausgeführt werden soll. Denn man hat ja > .... bestehendem Code eine Wenn nicht, kann man die Kernroutinen ja mal implementieren, wenigstens so weit, dass die Übung eine Aussagekraft bekommt.
Eddi schrieb: > Also im Prinzip brauche ich eine Berechnung, ob mein ausgewählter > Controller die Rechenleistung aufbringt, die für mein Projekt benötigt > wird. > > Wie kann ich das berechnen, bzw. wo finde ich eine Vorgehensweise dazu? Du nimmst für deinen Prototypen den größten, den du findest, setzt damit dein Projekt um und kannst dann abschätzen, wie weit du runter gehen kannst. Damit baust du dann den nächsten Prototyp und schaust, ob es passt. sid schrieb: > man weiss ja wieviele clockcycles jeder Vorgang braucht (kann es ggf > nachlesen) > und dann kann man anhand der Prozessorgeschwindigkeit die performance > ausreichend gut abschätzen. Das funktioniert aber nur bei den ganz einfachen Prozessoren. Wenn die komplexer werden, spielen noch so viele andere Faktoren rein, dass das nicht mehr ohne weiteres geht. Da reicht ggf. schon das Vorhandensein eines Cache.
sid schrieb: > naja aber man kann doch bei bestehendem Code eine > Analyse machen.. Jein. Man kann, wenn der Code schon existiert. Und wenn man sich für eine Architektur entschieden hat. Ich glaube keinen Augenblick, daß der Eddi (Current?) schon so weit ist. > man weiss ja wieviele clockcycles jeder Vorgang braucht (kann es ggf > nachlesen) Wie gesagt: dafür muß man sich für eine konkrete Architektur entschieden haben. Bei einem ARM Cortex zählt dazu auch die Entscheidung, ob es einer mit Hardware Floatingpoint und/oder DSP Erweiterung ist. Andererseits ist rohe CPU-Power nur eines von vielen Kriterien bei der Auswahl.
Eddi schrieb: > Wie kann ich das berechnen Da es Programmierdeppen gibt, die einen Prozessor mir ihren Programmierkenntnissen locker um den Faktor 100000 langsamer machen und das 1000-fache an Speicher verbraten (siehe Windows): Gar nicht. Ich suche den critical path, die Stelle wo ein Prozessor am schnellsten sein muss, und überlege, ob er das schafft. Dann meist noch, ob die Stromaufnahme und Pinanzahl hinkommt. Mit etwas Programmiergeschick geht es dann meistens die verschiedenen Aufgaben für ihn passend zu verweben auch mit Unterstützung der Hardwarefeatures, es ist nur eine Frage, wie lange die geschickte Programmerstellung braucht. Aktuelles Beispiel: multiplexen eines 4-stelligen LCD im 2ms Takt, auslesen eines TSIC306, und erzeugen eines 50%PWM Taktes mit 200kHz-1.2MHz. Geht das mit einem ATmega8 ?
Schnurgrad schrieb: > Ich staune. Woher hast Du die heisse Info? steht im Datenblatt mussu nur im instruction table nachgucken 'sid
Rolf M. schrieb: > Du nimmst für deinen Prototypen den größten, den du findest, setzt damit > dein Projekt um und kannst dann abschätzen, wie weit du runter gehen > kannst. Damit baust du dann den nächsten Prototyp und schaust, ob es > passt. Das gleiche gilt nicht nur für die Performance, sondern auch für FLASH und RAM. Auch sind Überlegungen wichtig, welche Funktionen lege ich in die SW und welche in die HW. Z.B. führe ich Entprellung und Störungsfilterung in der SW durch oder löse ich das Problem mit RC-Filter in der HW.
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.