====== 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"