Inhaltsverzeichnis

So betreibt man das GForth-ec auf dem R8C mit Linux

Anleitung für den Betrieb des R8C auf dem Application Board von Elektor

Von Carsten Strotmann; überarbeitet mka

Übersicht

Unter Linux muss zunächst dafür gesorgt werden, das der R8C auf seinem Application Board erkannt wird. Die Verbindung kann über die Schnittstelle oder über USB hergestellt werden.

Wenn USB genommen werden soll, schau das der USB-serial-Wandler PL2303X von Prolific, der auf dem Application Board ist, vom Linux auch als serieller Converter erkannt wird. Lade bei Linux Kernel 2.6.x die Module „usbcore“, „usbserial“, und „pl2303“ dazu. Bei den meisten Linux funkioniert dies automatisch, bei einigen muss manuell nachgeholfen werden.

Sodann kann gforth-r8c.mot in das Flash-ROM des R8C geladen werden. Thomas Fischl hat für den R8C einen Open Source Flasher angepasst, mit dem so ein Image in den R8C gebracht wird. Diese Prozedur ist weiter unten beschrieben.

Da nun das Gforth-ec im R8C ist, kann damit über ein Terminalprogramm interaktiv gearbeitet werden. Ich nehme auch unter Linux das Gforth mit seinem „Terminal.fs“ oder benutze ganz „old-fashioned“ screen /dev/ttyUSB0.

Wir haben leider festgestellt, das die Gforth Pakete einiger Linux Distributionen nicht immer korrekt kompiliert worden sind, speziell fehlt manchen eine Anbindung an die „ffcall“ Bibliothek, welche für die Ausführung von „Terminal.fs“ unbedingt notwendig ist. Sollte Gforth mit „Terminal.fs“ nicht wie gewünscht laufen, empfehlen wir eine Neuübersetzung der aktuellen Gforth Version. Stellen Sie vor der Neuübersetzung sicher, das die „ffcall“ Bibliothek auf Ihrem Linux System installiert ist.

gforth-r8c.mot in den R8C flashen

Zum Programmieren den Jumper JP2 (Prog) schliessen, also auf GND verbinden, um den Bootloader zum Programmieren des R8C zu aktivieren. Nach Reset sollte der Bootloader nun aktiviert sein - in der ersten Zeile des Displays sind schwarze Kästchen zu sehen. Manchmal hilft es, das Application Board kurz mal vom Strom zu trennen.

:projects:r8c:flash-jumper.jpg Jumperstellung bei der Programmierung über USB (auf das Bild klicken für vergösserte Ansicht)

Mit dem von Thomas Fischl angepassten R8C Flasher für Linux kann nun das Image gforth-r8c.mot in den R8C gebracht werden.

Der Flasher wird gestartet:

localhost m16c_flash # ./flash /dev/ttyUSB0 R8C gforth-r8c.mot ff:ff:ff:ff:ff:ff:ff

Folgende Meldungen sollten erscheinen:

M16C/62 Flash Programmer Version 0.0.3


Looking for M16C/R8C...
Confirming...board replied with clock confirm of B0.
Statusregister: 80,  0

Reading boot ROM version info... VER.2.10
Sending ID data FF:FF:FF:FF:FF:FF:FF...OK.
ID verified, additional commands may now be issued.
Erasing block at   E000...OK.
Erasing block at   C000...OK.
Writing page   C000...OK.
Writing page   C100...OK.
[...]
Writing page   FE00...OK.
Writing page   FF00...OK. New ID: FF:FF:FF:FF:FF:FF:FF
finished.

Wird nun der Programmier-Jumper JP2 wieder geöffnet und Reset gedrückt, sollte auf dem LCD-Display die Meldung „Gforth EC R8C“ erscheinen.

Um zu überprüfen ob auch die aktuelle Gforth-Version läuft, kann über ein Terminal mit dem Befehl „cold“ die Einschaltmeldung des GForth-ec angezeigt werden.

   cold Gforth 0.6.2-20060527, Copyright (C) 1995-2006 Free Software Foundation, Inc.
   Gforth comes with ABSOLUTELY NO WARRANTY; for details type `license'

Mit dem Linux Gforth das R8C Gforth-ec bedienen

???

Interaktiv mit dem R8C GForth-ec arbeiten

Ich benutze das Linux-Gforth auch um mit dessen Terminal interaktiv mit dem R8C-Gforth zu arbeiten. Das Gforth samt seinem Terminal wird so aufgerufen:

./gforth arch/r8c/terminal.fs

Über die Tastatur kann nun direkt Forthcode in den r8c eingegeben und ausprobiert werden. Über die Zwischenablage können sogar größere Forth-Quelltexte eingefügt werden. Bequemer ginge es, wenn direkt ganze Programmdateien geladen werden könnten. Mit dem terminal.fs ist das möglich. Es unterstützt das transparente Laden von Quelltexten aus dem Betriebssystem heraus.

Wird auf dem R8C der Befehl include arch/r8c/tt.fs eingegeben, so fordert dieses
R8C-Gforth die Datei tt.fs vom Linux-Gforth an. Es ist, als ob ein Massenspeichergerät direkt am R8C angeschlossen sei.

Wird ein anderes Terminal benutzt, achte darauf eine Verzögerung nach jedem Zeilenende von mindestens 250ms einzustellen. Doch bleibt es mühsam auf diese Weise programmieren zu müssen und ich rate zum Gforth Terminal.

Für Fortgeschrittene: Gforth anpassen und neu übersetzen

mit dem Script „./build-rc r8c“ erzeugen wir ein neues Flash-ROM Image des Gforth-ec mit dem Namen „rom-r8c.mot“ wobei folgendes ablaufen sollte:

 ./build-ec r8c
redefined NIL  Include assembler
redefined O with o
Length of Assembler: 621C Bytes
Include primitives

address-space      Start: 00000  End: 0FFFF  DP: 00000
user-region        Start: 00000  End: 00000  DP: 00000
dictionary         Start: 0C000  End: 10000  DP: 0C000
ram-dictionary     Start: 00400  End: 00800  DP: 00400
return-stack       Start: 00000  End: 00000  DP: 00000
data-stack         Start: 00000  End: 00000  DP: 00000
tib-region         Start: 00000  End: 00000  DP: 00000
Mirrored: ram-dictionary
Setup boot parameters

Unresolved: Nothing!

address-space      Start: 00000  End: 0FFFF  DP: 00000
user-region        Start: 00000  End: 00000  DP: 00000
dictionary         Start: 0C000  End: 10000  DP: 10000
ram-dictionary     Start: 00400  End: 00800  DP: 0046A
return-stack       Start: 00000  End: 00000  DP: 00000
data-stack         Start: 00000  End: 00000  DP: 00000
tib-region         Start: 00000  End: 00000  DP: 00000
Mirrored: ram-dictionary
Saving to kernl-r8c.fi-

Quelltexte editieren

Das R8C Gforth-ec hat keinen eigenen Texteditor. Forth-Quelltexte werden daher mit gängigen Editoren bearbeitet und dann als Datei in den R8C geladen.

Editoren

Terminalprogramme für Linux