Forum: Mikrocontroller und Digitale Elektronik Forth für den AVR Atmega


von Matthias Trute (Gast)


Lesenswert?

Hi,

auf http://sourceforge.net/projects/amforth bastele ich an einem
kleinen Forthsystem für den Atmega(32) unter der GNU Public License 
(GPL).

Das System wird in Assembler (avra unter Linux und AVR Studio unter
Windows) programmiert und kommuniziert über die serielle Schnittstelle
mit dem Host-Rechner. Es ist kein Cross-Compiler, der PC wird nur
zur Erstellung der Hexfiles benötigt.

Forth-seitig strebe ich ein ANS94 Core mit einigen Extensions an. Dafür
fallen aber auch einige Core-Worte weg, die IMHO auf dem Atmega keinen
Sinn ergeben. Fernziel ist u.a. ein Forth für den Asuro (wenngleich der
Atmega8 etwas zu klein ist) und den ct-bot.

Gegenwärtig (Version 0.2) läuft der Interpreter und der Colon-Compiler.
Neue Worte werden über den self-programming Mechanismus direkt in den
Flash geschrieben. Voller Zugriff auf Flash (i@, i!), EEPROM (e@, e!)
und RAM (@, !, c@, c!) ist gegeben.

Wer Lust hat und sich nicht von einem frühen Entwicklungsstand
abschrecken läßt, kann es ja mal ausprobieren. Ach, Dokumentation
gibt es natürlich auch keine. Die Wortliste erhält man mit dem
Befehl words, was die Worte im Einzelnen machen, steht in jeder
Forth-Beschreibung.

Matthias

von Stefan (Gast)


Lesenswert?

Spannende Sache!

von TheMason (Gast)


Lesenswert?

auch erstmal : respekt !

hab mir mal den quellcode angeschaut, bin aber nicht so fit in avr-asm, 
sieht aber witzig aus (erst befehlsnamen, daten, dann programmcode und 
am ende immer ein schöner rjmp DO_NEXT :-))

auch mal direkt eine frage dazu :
wie hast du das mit dem dictonary gemacht wenn du neue befehle 
hinzufügst ? hälst du die keywords im RAM (und den entsprechenden 
forth-code dazu) ?
ich bin im moment am überlegen wie man einen kleinen ByteCode 
interpreter selbst schreiben kann mit dem sich unterschiedlichste 
aufgaben programmieren und ausführen lassen kann. Java ist mir zu dick 
(->NanoVM) und forth kenne ich nicht so gut.

von Matthias Trute (Gast)


Lesenswert?

Der Colon-Compiler schreibt direkt (via i!) ins Flash. Eine Zelle nach
der anderen. Der Algorithmus in i! führt aber nur dann ein Erase der
betreffenden Page durch, wenn sich ein Bit von 0 nach 1 ändert.

Im RAM liegt nichts vom Dictionary. Dort sind die diversen Buffer
(TIB, HLD etc). Im EEPROM liegen einige Dictionaryvariable, um einen
Reset zu überstehen.

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.