Ahoi, folgendes Problem: ist es möglich einen kleinen C-Compiler, auf einem ordentlichen Mikrocontroller unterzubringen (z.B. einem großen Arm)? Die Idee wäre dann eine Kleine Tastatur und ein LED-Display (Mono) samt Treiber ranzuhängen und eine Art Mini-Rechner zu haben. Sinn dieses Gerätes sollte es sein, kleine C-Progs ohne Rechnerhilfe zu Compilieren und dann auszuführen. (Es handelt sich Vorrangig um Berechnungen etc. evtl. noch eine Kleine Realais-Ansteuerung aber das wäre nur aus Spaß) -> Mir wurde gesagt, dass der Speicher des Mikros nach einigen tausend Schreibvorgängen in den A... geht, dass wäre natürlich suboptimal. Daher die Idee: Man schließt einen Externen Flash-Speicher (z.B. SD) an. Nun packt er den geschriebenen Code in eine .c Datei auf den Flash. Dann holt er sie sich in den RAM, compiliert sie und packt sie z.B. als .hex wieder auf die SD-Karte. So kann man jederzeit den Code noch anschauen und der Speicher des Mikros wäre nicht benutzt (ausser für den Compiler/Bootloader). Bleibt nur die Frage, ob der Mikro die compilierte Datei auch direkt in den RAM laden , ausführen und die Ergebnisse Anzeigen kann ohne sie dabei auf dem internen Speicher zwischenzulagern. mfg Pyromane
Das geht. Aber seien wir mal ehrlich, C muss man sich für sowas nicht antun. Ich hab LUA auf einen ARM7 mit FreeRTOS laufen: http://www.lua.org Das ist eine Scriptsprache, die einfach zu erweitern ist.
Nur wen du RAM als externen Speicher dranhängst und ihn soschaltest, das du ihn sowohl als programm als auch als datenspeicher ansprechen kannst. oder du baust neben deinem Bootlader und Compiler noch nen virtuellen Prozessor (oder Interpreter) ein der den assemblierten (oder tokenisierten) Code dann ausführt.
Hallo, ein Arm kann Code aus dem Ram heraus ausführen ohne ihn im Flash zu haben. Dir ist aber schon klar, dass ein Arm-Compiler nur schwierig auf einen Arm draufzubekommen ist. Du musst dafür ja den Compiler als source haben und auf die Zielplattform compilieren. Dann brauchen die Compiler recht viele Funktionen, die normal ein Betriebssystem zur Verfügung stellt. Da gehts beim Dateisystemtreiber los und hört mit den Dispalyausgaben auf. Deine Probleme werden im wesentlichen so aussehen: -Der auf das Arm-Target compilierte Arm-Compiler passt nicht in den Speicher deines Prozessors -Du musst alle Betriebssystemfunktionen zur Verfügung stellen -Du musst dafür sorgen, dass sich der Arm-Compiler überhaupt auf das Target=Arm übersetzen lässt - und das sind viele source-Dateien, die davon betroffen sind. Wenn deine Programme so einfach sind, versuch es doch besser mit einem Basic-Interpreter. Such bei Ebay nach der Basic-Stamp, die kann so etwas. Aber eben nur in Basic und nicht in nativem Maschinencode, sondern als Tokeninterpreter. Was du machen kannst, ist es auf einem System zu versuchen, das bereits ein Betriebssystemgerüst zur Verfügung stellt. Kennst du das ATNGW100 von Atmel? Da ist Linux vorinstalliert, da kannst über RS-232 ein Terminal anschließen, muss man eben selber bauen, ev. mit AVR und Dispaly, alternativ kann die CPU auch schon Displays ansteuern, auch in sehr hoher Auflösung, dafür musst du dann wohl einen Treiber schreiben. Ich könnt mir vorstellen, dass man den entsprechenden Compiler da drauf bringt. Den sourcecode zu bekommen dürfte schwieriger sein, ich weiß nicht, ob Atmel den rausgibt. Die Windows-EXE ist dafür jedenfalls kostenlos, es gibt eine komplette IDE (AVR32-Studio) dazu. Auf jeden Fall brauchst du zum compilieren sehr viel Arbeitsspeicher, besonders dann, wenn der Compiler open source ist, kommerzielle Lösungen sind da meistens sparsamer, die werden dir aber den Quellcode nicht geben. Grüße, Peter
GCC etc. dürften tatsächlich zu groß sein und zu viel Speicher zum kompilieren brauchen. Für x86 gibt allerdings auch einen sehr kleinen und schnellen Compiler: http://bellard.org/tcc/ Allerdings ist es wesentlich einfacher, was anderes als C zu nehmen, wenn man den Compiler dafür selbst schreiben will. Gutes Beispiel sind z.B. die diversen Oberon-Compiler. https://www.oberon.ethz.ch/archives/languagearchive/compilers_new
tcc gibt es auch für ARM. Ich habe ein C-Interpreter, der C-code compiliert/tokenisiert und dann ausführt, aber eigentlich will ich den nicht gratis rausgeben. Trotzdem kann ich sagen, daß sowas sehr kompakt sein kann und wenig Speicher braucht.
Kennst du den TI 89 ? Das ist ein graphischer Taschenrechner. Für den kannst du dir einen C Compiler runterladen. evt. kannst du damit was anfangen..
Vor langer, langer Zeit gab es mal von Sharp einen Taschenrechner, da war auch ein C-Compiler drin. Das Teil hatte eine Z-80 CPU. Die haben das mit 64kByte RAM und 256kByte ROM gemacht. Stephan.
Für den 6809 (einen der schicksten 8-Bit-Prozessoren überhaupt) gab es mit "Introl-C" auch einen nativen C-Compiler. Der lief unter anderem unter Flex und OS-9 (nein, nicht MacOS), auf Maschinen mit weniger als 64 kByte RAM. Dieser Compiler verstand nur "K&R-C", was aber kein Wunder ist, erschien er doch in den frühen 80ern, also lange vor C89. Es sollte also in der Tat möglich sein, auch einem µC einen nativen C-Compiler beizuschnallen, hilfreich allerdings wäre das Vorhandensein eines Betriebssystems mit Dateisystem. Der µC sollte keine Harvard-Architektur aufweisen, da sonst das Ausführen von Code aus dem RAM nur schwer realisierbar ist.
Peter Diener wrote: > Den sourcecode zu bekommen dürfte schwieriger sein, ich weiß > nicht, ob Atmel den rausgibt. Klar, ist doch ein GCC.
Hier noch eine alte Kamelle. :-) http://en.wikipedia.org/wiki/BDS_C Und es gibt sogar den Source.... Olaf
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.