Diagnose

RetroChipTester Firmware-Update

Der RetroChipTester (kurz: RCT) von Stephan Slabihoud ist ein Chip-Tester, der eine riesige Auswahl an RAMs, Logik-Chips und anderen Retro-Komponenten testen kann. Er ist außerdem günstig und der Zusammenbau macht Spaß.

Nachdem ich drei Updates übersprungen hatte, wurde ein Firmware-Upgrade auf die aktuelle v0.26 überfällig. Dieser Artikel ist eher als Anleitung für mich selbst gedacht, aber vielleicht hilft er dir auch. Es geht hier allerdings nur um ein Firmware-Update. Für eine Ersteinrichtung musst du zuerst die Fusemap des ATmega setzen, was nicht Teil dieses Artikels ist.

Um das Update durchzuführen, habe ich ein Fedora Linux mit installiertem avrdude und einen Microchip PICkit 4 verwendet (einfach weil ich gerade einen da hatte). Einige andere Programmer funktionieren ebenfalls (siehe die RCT-Dokumentation), vielleicht geht es sogar mit einem Raspberry Pi.

Zuerst habe ich den PICkit mit dem ISP-Anschluss des RCT verbunden:

1MISOMOSIGNDSCKVcc/RESET23456
SignalPICkitRCT
(NC)⯈ 1
VTG22
GND36
MISO41
SCK53
/RESET65
MOSI74
(NC)8

Bitte überprüfe gründlich, dass alles richtig angeschlossen ist, weil du sonst die Hardware beschädigen kannst. Entferne auch ein eventuell vorhandenes SD-Kartenleser-Modul, da es den ISP-Anschluss blockiert.

Laut der Dokumentation darf der RCT nicht gleichzeitig von einer externen Stromquelle und dem Programmer mit Strom versorgt werden. Die VTG-Leitung des PICkit liefert jedoch keinen Strom, sondern wird als Eingang für die Referenzspannung verwendet. Es ist also weiterhin notwendig, den RCT extern mit Strom zu versorgen (z.B. über USB oder einen Hohlstecker). Bei anderen Programmern kann dies anders aussehen.

Ich habe dann die Firmware heruntergeladen und die Zip-Datei entpackt. Nun brauchte ich nur noch in das Verzeichnis zu wechseln, in dem das Archiv entpackt wurde, und avrdude auszuführen:

avrdude -Cavrdude.conf -v -patmega2560 -cpickit4_isp -Pusb -xmode=avr \
  -Uflash:w:Chip-TesterPro-FW-v0.26.hex:i

(Denke daran, die unterste Zeile an deine Firmware-Version anzupassen.)

Sollte der folgende Fehler auftreten, führe den Befehl einfach noch einmal aus:

avrdude jtag3_open_common() error: PICkit 4 in PIC mode detected
        switching to AVR mode
        please run Avrdude again to continue the session

Wenn der Flash-Vorgang fehlschlägt, kannst du das Problem beheben und dann einen weiteren Flash-Versuch starten.

Amiga mit Linux debuggen

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.