Anleitung für den Betrieb des R8C auf dem Application Board von Elektor
Von Carsten Strotmann; überarbeitet mka
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.
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.
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'
???
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.
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-
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.