====== So betreibt man das GForth-ec auf dem R8C mit Linux ======
Anleitung für den Betrieb des R8C auf dem [[http://www.elektor.de/Default.aspx?tabid=27&year=2006&month=1&art=5550655&PN=On|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 [[http://www.jwdt.com/~paysan/gforth-r8c.mot|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?200x100|: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 [[http://www.fischl.de/thomas/elektronik/r8c/r8c_flasher.html|R8C Flasher für Linux]] kann nun das Image [[http://www.jwdt.com/~paysan/gforth-r8c.mot|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 =====
* Notepad
* Ultraedit
* Emacs/XEmacs
* UltraEdit32
* MED
* Kate
* uemacs/qemacs
* vim
===== Terminalprogramme für Linux ====
* Screen (sehr minimalistisch)
* C- Kermit, der Klassiker (http://www.columbia.edu/kermit/ck80.html)
* Minicom (http://alioth.debian.org/projects/minicom/)
* Gforth mit "Terminal.fs"