Forum: Mikrocontroller und Digitale Elektronik Abschätzung uC Größe/Performance


von Pedde (Gast)


Lesenswert?

Hallo zusammen,

ich hab ein Programm in C geschrieben und suche jetzt den richtigen uC.
Wie kann ich denn abschätzen was für eine Taktrate, RAM-Größe und 
ROM-Größe ich benötige? Kann mir da jemand helfen?


Viele Grüße,
Pedde

von Keks F. (keksliebhaber)


Lesenswert?

Hallo,

du müsstest dich erstmal entscheiden ob du AVR oder ARM oder STM haben 
willst.
Das ergibt sich eigentlich von deinem Gefühl/wie aufwändig dein Programm 
ist, und was für Laufzeitanforderungen du hast 
(Batterie/Stromverbrauch).

Dann kannst in deiner IDE ein Target auswählen und dafür kompilieren.
Damit bekommst du dann Größe und Speicherverbrauch.

Dann kannst du dich für den passenden Mikrokontroller entscheiden, in 
Anbetracht der zusätzlichen IO Anforderungen.

Mehr ist ohne weitere Informationen nicht empfehlbar.

Grüße

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Pedde schrieb:
> Wie kann ich denn abschätzen was für eine Taktrate, RAM-Größe und
> ROM-Größe ich benötige? Kann mir da jemand helfen?

Am einfachsten, indem du es ausprobiert.

Oder du gibt detaillierte Informationen samt Quelltext Preis, dann 
können dir Leute sagen, worauf es im konkreten Fall ankommt.

von Wolfgang (Gast)


Lesenswert?

Pedde schrieb:
> Wie kann ich denn abschätzen was für eine Taktrate, RAM-Größe und
> ROM-Größe ich benötige?

ROM ist seit gefühlt 20 Jahren eine echte Rarität.

von PittyJ (Gast)


Lesenswert?

Wolfgang schrieb:
>
> ROM ist seit gefühlt 20 Jahren eine echte Rarität.
Wobei es auch nicht an einem Tag erbaut wurde.

von Falk B. (falk)


Lesenswert?

Pedde schrieb:
> ich hab ein Programm in C geschrieben und suche jetzt den richtigen uC.
> Wie kann ich denn abschätzen was für eine Taktrate, RAM-Größe und
> ROM-Größe ich benötige? Kann mir da jemand helfen?

Na dann hilf uns mal. Was macht denn dein Programm? Welche Daten in 
welcher Menge soll es wie schnell verarbeiten? Wo kommen die Daten her, 
wo gehen sie hin?

von Axel S. (a-za-z0-9)


Lesenswert?

Pedde schrieb:
> ich hab ein Programm in C geschrieben und suche jetzt den richtigen uC.
> Wie kann ich denn abschätzen was für eine Taktrate, RAM-Größe und
> ROM-Größe ich benötige? Kann mir da jemand helfen?

Die minimale RAM- und ROM-Größe (wohl eher Flash heutzutage) kannst du 
direkt am Kompilat sehen. Du mußt dich aber zumindest mal für eine 
µC-Familie entscheiden damit du dafür kompilieren kannst.

Wie schnell der µC sein muß, dazu können wir dir gar nichts sagen. Wir 
wissen ja nichtmal ansatzweise, was dein Programm macht und ob das in 
irgendeiner Form zeitkritisch ist.

Wenn du aber anscheinend noch nicht mal ein Eval-Board mit einem µC 
deiner Wahl (z.B. ARM Cortex) hast, dann kann es mit deinem Programm 
nicht weit her sein. Woher weißt du denn überhaupt, daß es funktioniert?

von DerEinzigeBernd (Gast)


Lesenswert?

Was auch noch dazukommt, sind die I/O-Anforderungen. Was soll der µC 
ansteuern, welche Rahmenbedingungen sind dabei einzuhalten?

Schnittstellen wie Ethernet oder USB steigern die Komplexität und 
benötigen einiges mehr an Code als einfache serielle Schnittstellen. Die 
Ansteuerung von Displays ist abhängig von der Art des Displays und den 
Anforderungen an das, was dargestellt werden soll, auch entscheidend.

Etwas Text auf ein simples Textdisplay auszugeben schafft so gut wie 
jeder µC, aber ein hochauflösendes Graphikdisplay kann nicht jeder 
ansteuern ...

von Rudolf Schwenk (Gast)


Lesenswert?

Axel S. schrieb:
> Die minimale RAM- und ROM-Größe (wohl eher Flash heutzutage) kannst du
> direkt am Kompilat sehen. Du mußt dich aber zumindest mal für eine
> µC-Familie entscheiden damit du dafür kompilieren kannst.

Einfach den dicksten.

Da überhaupt nachzudenken welcher minimal reicht ist halt einfach 
unsinnig.

von MaWin (Gast)


Lesenswert?

Axel S. schrieb:
> Die minimale RAM- und ROM-Größe (wohl eher Flash heutzutage) kannst du
> direkt am Kompilat sehen

Nein.

Wer nicht mikrocontrollerorientiert schreibt, benutzt stack und heap und 
beides kann quasi beliebig wachsen,  eine Rekursion reicht schon

Und wenn er sein Programm z.B. für den AMD64 kompiliert hat, wird das 
Kompilat für einen ATmega328 eine ganz andere Grösse haben.

Wenn man wüsstr, was er programmiert hat und welche Module "TCO/IP 
Stack" er verwendet, könnte man wenigstens eine Grössenordnung nennen.

Manchmal reicht halt nur ein Gaming-PC.

von Purzel H. (hacky)


Lesenswert?

Allenfalls sollte man die Funktionalitaet anpassen. Float ohne FPU 
braucht einges an Resourcen. Ebenso ein printf()

von A. S. (Gast)


Lesenswert?

Pedde schrieb:
> ich hab ein Programm in C geschrieben und suche jetzt den richtigen uC.
> Wie kann ich denn abschätzen was für eine Taktrate, RAM-Größe und
> ROM-Größe ich benötige? Kann mir da jemand helfen?

Bei den meisten gibt es Compiler frei.

Such Dir eine Familie die Du kennst und wähle den kleinsten Typen davon. 
Wenn es (ohne Optimierung) durch Compiler und Linker läuft, dann kaufe 
den an Speicher/Takt größten Vertreter, den Du als DemoBoard bekommst.

von Andras H. (kyrk)


Lesenswert?

Da Flash und RAM grösse mit Taktraten Hand in Hand wachsen wird es nicht 
so schwer sein.

Nimm einen Compiler, für AVR oder PIC32. Lass dein Programm kompilieren 
und gucke es an wie viel an Flash es braucht. Dann kannst du dir einen 
uC dafür aussuchen und schauen, dass du noch bisschen reserve hast. So 
grob 100% Reserve wird schon reichen. Also wenn dein Flash verbraucht ca 
1kByte ist, dann nimm etwas was min. 2kByte hat. Da wirst du auch sehen 
welche Familie für dich passt. Sprich für 2kByte kann der PIC16 passen. 
Der PIC12 wird glaube ich schon bisschen klein. Sonst für 20kByte oder 
mehr würde ich richtung PIC32 gehen.

Die Taktrate wird ja auch praktisch immer höher je mehr Flash man hat. 
Macht ja auch kein Sinn einen 2Mbyte Flash zu haben und 1MHz Taktrate, 
da brauchst du ewig überhaupt den Flash komplett zu lesen. Andersherum, 
wenn man nur 512 Byte Flash hat, da braucht man auch kein 200MHz.

Dann musst du ja auch wissen, wie viel Peripherien du brauchst, USB und 
Ethernet. Wobei dass frisst ja auch Flash. Und wenn du USB hast, dann 
wirst du auch dementsprechend mehr Flash verbrauchen, und damit wird 
dein Auswahl mehr oder weniger automatisch schon auf die Familie 
begrenzt was auch USB und oder Ethernet hat.

von Falk B. (falk)


Lesenswert?

Andras H. schrieb:
> Die Taktrate wird ja auch praktisch immer höher je mehr Flash man hat.

Aber nicht innerhalb einer Controllerfamilie.

von Peter D. (peda)


Lesenswert?

Pedde schrieb:
> ich hab ein Programm in C geschrieben

Ich hab auch ein Programm in C geschrieben, paßt in einen ATtiny13.

von Cyblord -. (cyblord)


Lesenswert?

Pedde schrieb:
> Hallo zusammen,
>
> ich hab ein Programm in C geschrieben und suche jetzt den richtigen uC.
> Wie kann ich denn abschätzen was für eine Taktrate, RAM-Größe und
> ROM-Größe ich benötige? Kann mir da jemand helfen?

Wenn es ein großes Programm ist, dann auf jeden Fall einen Controller 
mit großem Gehäuse wählen. Sonst wirds eng da drin.

: 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
Noch kein Account? Hier anmelden.