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
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
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.
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.
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?
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?
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 ...
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.
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.
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.
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.
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.