Das AmigaOS bietet eine Debug-Konsole als einfachen Weg zur Fehlersuche. Log-Daten können über die linkbare Debug.lib geschrieben werden, welche auch von allerlei Tools wie MuForce, Mungwall oder PatchWork genutzt wird. AmigaOS stellt einen einfachen internen Debugger namens ROMWack bereit (der in späteren Versionen durch das noch einfachere SAD ersetzt wurde). Aber auch DiagROM schreibt Diagnosedaten über die serielle Schnittstelle, was praktisch ist, wenn ein RAM-Chip oder etwas im Videobereich defekt ist.
Die Log-Ausgabe wird an die serielle Schnittstelle gesendet und kann von einem daran angeschlossenen Terminal gelesen werden. In den guten alten Zeiten konnten sich nicht so viele Bastler ein echtes Terminal oder einen zweiten Computer dafür leisten, also wurden Tools wie Sushi oder Sashimi genutzt, um die Debug-Ausgabe in ein Shell-Fenster umzuleiten. Das funktionierte gut, solange das System nicht komplett abgestürzt war.
Heute kann man davon ausgehen, dass fast jeder Amiga-Besitzer einen zweiten Computer zu Hause hat, und wenn es nur ein zweiter Amiga ist. 😉 Dieser Blogartikel handelt davon, wie man seinen Amiga mit deinem Linux-PC verbindet und die Debug-Ausgabe erhält.
Hardwareseitig benötigt man einen Adapter mit einem weiblichen DB25-Anschluss an dem einen Ende und einem USB-Stecker an dem anderen Ende. Ich benutze einen dieser USB-zu-Seriell-Konverter, die in Hardware-Shops für wenig Geld zu finden sind. Sie sind oft mit einem männlichen DB9-Stecker ausgestattet, weil sie dafür gedacht sind, an Peripheriegeräte (wie Modems) angeschlossen zu werden. Um sie mit einem Computer zu verbinden, wird ein sogenanntes Nullmodem benötigt. Das ist ein kleiner Adapter, der es ermöglicht, zwei Computer direkt miteinander zu verbinden, indem die Sende- und Empfangsleitungen gekreuzt werden. Zuletzt brauchen wir noch einen DB9-zu-DB25-Stecker, um das andere Ende des Nullmodems mit dem Amiga zu verbinden.
Dieser Hardware-Stack wird auf der einen Seite an die serielle Schnittstelle des Amiga und auf der anderen Seite an einen USB-Anschluss des PCs angeschlossen. Denke daran, den Amiga abzuschalten, bevor du etwas an die serielle Schnittstelle anschließt. Im Gegensatz zu USB sind die Anschlüsse alter Computer nicht dafür ausgelegt, Geräte anzuschließen oder zu trennen, während das System eingeschaltet ist. Das könnte die Hardware beschädigen!
Softwareseitig müssen wir auf dem Amiga keine Treiber installieren. Die Debug- oder Diagnoseausgaben werden einfach an den seriellen Anschluss gesendet. Unter Linux können wir jeden Terminal-Emulator verwenden. Der bekannteste ist sicherlich minicom.
Die Standardeinstellungen für die serielle Schnittstelle sind 9600-8N1 (9.600 bps, 8 Bits pro Zeichen, keine Parität, 1 Stoppbit). Allerdings wird die Debug-Ausgabe einfach direkt an den seriellen Anschluss gesendet. Wenn du die seriellen Parameter auf der Amiga-Seite geändert hast oder das serial.device für etwas anderes verwendest, nutzt die Debug-Ausgabe die aktuellen Einstellungen einfach mit. Der Handshake muss jedoch in jedem Fall abgeschaltet sein.
Der vielleicht einfachste Weg ist, eine Datei namens ~/.minirc.amiga mit folgendem Inhalt zu erstellen (ändere den Wert pu port zu deinem tatsächlichen TTY-USB-Gerät):
pu port /dev/ttyUSB0
pu baudrate 9600
pu bits 8
pu parity N
pu stopbits 1
pu rtscts No
pu xonxoff No
Bei vielen Linux-Distributionen muss der Benutzer außerdem zur Gruppe dialout hinzugefügt werden, um auf ein serielles Gerät zugreifen zu können:
sudo usermod -aG dialout $(whoami)
Starte danach einfach minicom mit dem amiga-Profil:
minicom amiga
Jetzt solltest du die gesamte von AmigaOS erzeugte Debug-Ausgabe in dem minicom-Fenster sehen. Für interaktive Debugger wie ROMWack kannst du außerdem Befehle in die Konsole eingeben.
Um minicom zu verlassen, drücke STRG-A und dann Q. 😉
Amiga CD32
Im Gegensatz zu anderen Amiga-Modellen hat das CD32 keinen dedizierten RS-232-Anschluss. Stattdessen bietet es eine einfache serielle Schnittstelle am Aux-Anschluss, die intern mit Paulas UART-Pins verbunden ist.
Um einen Adapter zu bauen, benötigst du ein PS/2-Kabel (z.B. von einem Verlängerungskabel oder einem alten PS/2-Eingabegerät) und einen auf MAX3232 basierenden TTL-zu-DB9-Pegelwandler. Diese Wandler gibt es für wenige Euro auf Online-Marktplätzen.
Schneide ein Ende des Kabels ab und verbinde die Adern wie folgt mit dem Konverter:
- Pin 2: TXD
- Pin 3 (und die Abschirmung): GND
- Pin 4: VCC
- Pin 6: RXD
Lass die verbleibenden zwei Adern unverbunden und überprüfe die richtige Polarität, bevor du die Adern an den Konverter anschließt!
Das CD32 bietet keine Steuer- und Handshake-Signale, aber glücklicherweise werden diese für Debugging- und Diagnosezwecke nicht benötigt.
Eine schöne Sache an der Android-Plattform ist, dass man auch unter Linux Apps entwickeln kann. Java und die Entwicklungsumgebung Eclipse steht als fertiges Paket zur Verfügung, und bei Google können die Entwicklertools kostenlos heruntergeladen werden.
Das Testen erfolgt entweder über einen Emulator, oder man geht gleich ans Eingemachte und testet seine Anwendung auf echter Hardware. Bevor das möglich ist, muss Fedora das Smartphone bekannt gemacht werden. Dazu wird mit Root-Rechten die Datei /etc/udev/rules.d/51-android.rules angelegt und mit folgendem Inhalt versehen:
SUBSYSTEM=="usb",SYSFS{idVendor}=="0bb4",SYMLINK+="android_adb",MODE="0666"
Unter idVendor wird die jeweilige Hersteller-ID des Smartphone-Herstellers eingetragen. Eine Tabelle der Vendor IDs gibt es ebenfalls bei Google. Wenn mehrere Smartphones verschiedener Hersteller zum Einsatz kommen, können entsprechend weitere Zeilen ergänzt werden.
Als nächstes muss auf dem Android-Phone das USB-Debugging aktiviert werden. Den Menüpunkt findet man unter Einstellungen → Anwendungen → Entwicklung → USB-Debugging aktivieren.
Wenn man nun seinen Androiden per USB anstöpselt und in dem Android-SDK das Kommando
platform-tools/adb devices
aufruft, sollte das Smartphone aufgelistet werden. Es steht dann als Zielplattform für die Entwicklung zur Verfügung.