mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik C-Compiler ->auf<- einem Mikrocontroller


Autor: Pyromane (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Bri (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Bereits Fort (Firma: D.ade) (bereitsfort)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Peter Diener (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Arc Net (arc)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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/languagearchiv...

Autor: chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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..

Autor: Stephan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter Diener wrote:

> Den sourcecode zu bekommen dürfte schwieriger sein, ich weiß
> nicht, ob Atmel den rausgibt.

Klar, ist doch ein GCC.

Autor: Olaf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier noch eine alte Kamelle. :-)

http://en.wikipedia.org/wiki/BDS_C

Und es gibt sogar den Source....

Olaf

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.