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
:
Bearbeitet durch User
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.
Wolfgang schrieb: > > ROM ist seit gefühlt 20 Jahren eine echte Rarität. Wobei es auch nicht an einem Tag erbaut wurde.
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.
Allenfalls sollte man die Funktionalitaet anpassen. Float ohne FPU braucht einges an Resourcen. Ebenso ein printf()
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.
Andras H. schrieb: > Die Taktrate wird ja auch praktisch immer höher je mehr Flash man hat. Aber nicht innerhalb einer Controllerfamilie.
Pedde schrieb: > ich hab ein Programm in C geschrieben Ich hab auch ein Programm in C geschrieben, paßt in einen ATtiny13.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.