Forum: Projekte & Code EMTI (Embedded TINY) Compiler für AVR und mehr.


von Sven K. (oog)


Angehängte Dateien:

Lesenswert?

Ich stelle Euch hier mein neues Projekt vor, an dem ich gerade arbeite. 
Es ist ein Compiler für Mikrocontroller mit einer an BASIC und Pascal 
angelehnten Syntax, der auch Elemente der Sprache C enthält.
Als Vorlage für die ersten Versuche diente das Tutorial "Let's Build a 
Compiler" von Jack Crenshaw (Link: http://compilers.iecc.com/crenshaw/). 
Der Compiler enthält in Grundzügen noch die im Tutorial beschriebenen 
Strukturen.

Derzeit wird der ATmega8 sowie einige weitere AVR-Typen unterstützt.

Der Compiler produziert aus einem Quelltext ein Assembler Programm, das 
sich mit AVR-Studio übersetzen lässt. Man kann es dann im Simulator 
testen oder in die Zielhardware programmieren.

Status der Entwicklung:
Grundlegende Dinge wie Variablendeklaration, Berechnungen, 
Unterprogramme, Portzugriff, Programmschleifen und Verzweigungen 
funktionieren.
Einige Dinge wie beispielsweise Stringverarbeitung sind noch 
experimentell und nicht vollständig implementiert.
Einige hardwarenahe Dinge sind erstmal nur für den ATmega8 umgesetzt, 
beispielsweise die TV-Ausgabe.

Dennoch kann man bereits jetzt einiges damit anfangen, beispielsweise 
gibt es Libraries für die Ansteuerung von LCDs (HD44780 kompatibel im 4 
Bit Mode) oder für die Textausgabe auf TV/Monitor (Benedikt's AVR 
Videogenerator ist integriert, siehe 
Beitrag "AVR Videogenerator, 40x25 Zeichen, nur 60% CPU Auslastung !").

Es gibt ein Beispielprojekt, das zeigt, wie man mit wenig 
Hardware-Aufwand eine "Video-Grußkarte" aufbauen kann, und wie einfach 
die Programmierung ist.

Obwohl der Compiler derzeit noch experimentell und unvollständig ist, 
möchte ich Ihn hier vorstellen, in der Hoffnung, dass ihn jemand mal 
ausprobiert und mir seine Meinung dazu sagt, insbesondere zu Fehlern, 
Problemen oder Verbesserungsvorschläge.

Eine Dokumentation über den Befehlsumfang existiert bereits, jedoch gibt 
es momentan nur wenige praktische Beispiele, so dass sich das Projekt 
derzeit eher an Leute mit Programmiererfahrung und Assembler-Kenntnissen 
richtet. Die Doku ist auch online abrufbar (proog.de, Hauptmenü -> EMTI 
Online Hilfe).
Ein kleines Einstiegs-Tutorial ist gerade fertig geworden (siehe 
Anlage). Das Tutorial erklärt anhand zahlreicher Abbildungen die ersten 
Schritte, über die Installation des AVR-Studios und des EMTI-Compilers 
bis hin zum ersten selbsterstellten Programm.


Voraussetzungen:

(*) Windows Betriebssystem
Der EMTI Compiler liegt als ausführbares Windows Programm vor. Eine 
Linux-Version soll später folgen.

(*) Assembler Kenntnisse
Der Compiler erzeugt als Ausgabe ein Assemblerprogramm. 
Assembler-Kenntnisse und Erfahrung im Umgang mit AVR-Studio sind von 
Vorteil.


Lizenz / Quelltext:
Es ist geplant, den Compiler einschließlich Quelltext unter GPL-Lizenz 
freizugeben, sobald er eine Mindestqualität erreicht hat. Derzeit gibt 
es nur das ausführbare Programm als "Preview" zum Download über die 
Homepage (proog.de).

Sven K. (oog)

von Sven K. (oog)


Angehängte Dateien:

Lesenswert?

Kennt Ihr das auch?
Nichts ahnend wird man morgens wach, doch plötzlich - gänzlich ohne 
Vorwarnung - zeigt der Kalender den 24.12. Man hätte durch den 
Ausverkauf der Schoko-Weihnachtsmänner und Adventskalender zum halben 
Preis stutzig werden können. Auch der Einzug der ersten 
Schoko-Osterhasen in die Supermärkte hätte man als Zeichen deuten 
können, aber wer achtet schon auf solche Nebensächlichkeiten?

Wenn man in letzter Sekunde noch etwas aus dem Ärmel zaubern möchte, ist 
Fantasie gefragt.

Mit einem ATmega8, 16MHz Quarz und ein paar Widerständen lässt sich eine 
kleine Schaltung aufbauen, mit der man eine Video-Grußbotschaft auf dem 
Fernseher abspielen kann. Sie ist klein genug, um in einer 
selbstgebastelten Weihnachtskarte Platz zu finden und läuft mit 
Batterie.

Das Projekt nutzt Benedikt's Schaltung und AVR Videogenerator hier aus 
dem Forum (Beitrag "AVR Videogenerator, 40x25 Zeichen, nur 60% CPU Auslastung !"), welchen ich 
in meinen EMTI-Compiler (Embedded TINY) integriert habe. Mit ein paar 
Print-Befehlen kann man komfortabel jede beliebige Grußbotschaft 
abspielen lassen.

Compiler, Dokumentation sowie den Sourcecode zum Projekt gibt es auf 
proog.de zum Download.

von Sven K. (oog)


Angehängte Dateien:

Lesenswert?

Es gibt eine neue Version des Compilers.
Neben einigen Patches wurde der Funktionsumfang erweitert.

Neu in Version 0.05:

*Diverse Fehlerkorrekturen (siehe Changelog.txt im Download Zip-Archiv).
*Neuer Datentyp Boolean
*Wahlweise 8 oder 16 Bit Speicherzugriff auf RAM, ROM und EEPROM
*Modulo Operator
*Min / Max Funktion
*MaxIndex / MaxEntries Funktion
*True / False Keywords
*Die Subroutine / Methode eines Objekts kann als Timerjob definiert 
werden und wird dann im Hintergrund ausgeführt.

Es gibt ein neues Demoprogramm, welches zeigt, wie man die LED-Matrix 
des Retro Ping Pong Spiels ansteuert (siehe: 
Beitrag "Ping pong retro gesenkt").

Das Demo Zip-Archiv enthält außerdem ein kleines Tool, um eine 
Bitmap-Grafik in EMTI Quellcode passend für die LED-Matrix umzuwandeln.

Alles weitere findet Ihr auf proog.de

von Sven K. (oog)


Angehängte Dateien:

Lesenswert?

Version 0.06 des EMTI Compilers gibt es jetzt inklusive Sourcecode auf 
proog.de.

Was ist neu:
  Diverse Fehlerkorrekturen
  Programmcode bereinigt für erste Veröffentlichung des Sourcecode
  Zip-Archiv enthält alle Quelltexte, inklusive der Dokumentation
  Neue Demoprogramme TV-Pong und TV-Scope

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.