In diesem Teil des Tutorials wird erklärt, wie die Logik in das CPLD eingespielt wird. Um das CPLD zu flashen, ist es zuerst notwendig den FTDI Chip zu konfigurieren. In den folgenden Abschnitten wird erklärt wie man beide Chips programmiert.

FTDI

Der Chip verwendet ein EEPROM, indem die entsprechende Parameter eingetragen werden. Zur Konfiguration des FTDI Chips gibt es mehrere Herangehensweisen.

Konfiguration unter Windows

Am einfachsten ist es, das fertige Tool von FTDI (FT_Prog) unter Windows zu verwenden. Skoe hat dazu eine XML Datei vorbereitet (Anleitung: siehe hier), die die benötigte Konfiguration enthält. Also im Grunde FT_Prog starten, XML Laden, USB Kabel an EF3 anstecken (benötigt keinen C64!), Konfiguration einspielen, fertig.

Dieser Ablauf funktioniert leider nur dann, solange man keinen vorprogrammierten Chip eingekauft hat. Da der Chip der mit Abstand teuerste dem Board ist, werden auf Ebay oder Aliexpress sehr gerne Chips aus Restbeständen einer Produktion angeboten. Diese Chips sind in vielen Fällen bereits vorprogrammiert. Das heißt, sie beinhalten oft eine andere VENDOR oder DEVICE Id, als ein jungfräulicher Chip. Hat man so einen Chip ergattert und bereits verlötet, dann es mit FT_PROG nicht mehr möglich den Chip umzuprogrammieren.

Vielen Dank dafür an die Firma FTDI!

Konfiguration unter Linux

Eine andere, nicht weniger komfortable Lösung, ist das Tool ftdi_eeprom, das in den meisten Linux Distributionen vorhanden ist. Damit lässt sich auch ein FTDI Chip umprogrammieren, der bereits vorprogrammiert wurde. Ich habe dazu ein paar Dateien vorbereitet, die einem dabei helfen werden.

ftdi_eeprom config file … enthält die Configuration
EEPROM File … enthält die EEPROM Daten

Die Files kann man hier downloaden.

Um zu zu erkennen mit welcher VENDOR und DEVICE id in den Chip programmiert wurde, ist der Befehl dmesg sehr praktisch.

$dmesg -T

Meine erworbenen FTDI Chips haben beispielsweise folgende Configs enthalten:

$dmesg -T
[Fr Nov 30 21:24:49 2018] usb 3-3.4.4: new full-speed USB device number 10 using xhci_hcd
[Fr Nov 30 21:24:49 2018] usb 3-3.4.4: New USB device found, idVendor=1789, idProduct=0016, bcdDevice= 6.00
[Fr Nov 30 21:24:49 2018] usb 3-3.4.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[Fr Nov 30 21:24:49 2018] usb 3-3.4.4: Product: TEMS Symphony Phone MIF ACM
[Fr Nov 30 21:24:49 2018] usb 3-3.4.4: Manufacturer: FTDI
[Fr Nov 30 21:24:49 2018] usb 3-3.4.4: SerialNumber: 30X0U6HT

$dmesg -T
[Mi Dez 12 23:24:45 2018] usb 3-3.4.4: new full-speed USB device number 11 using xhci_hcd
[Mi Dez 12 23:24:45 2018] usb 3-3.4.4: New USB device found, idVendor=0403, idProduct=6001, bcdDevice= 6.00
[Mi Dez 12 23:24:45 2018] usb 3-3.4.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[Mi Dez 12 23:24:45 2018] usb 3-3.4.4: Product: NCP_PRNT
[Mi Dez 12 23:24:45 2018] usb 3-3.4.4: Manufacturer: LAUNCH
[Mi Dez 12 23:24:45 2018] usb 3-3.4.4: SerialNumber: 170000E6

$dmesg -T [So Jän 13 22:51:01 2019] usb 3-3.4.4: new full-speed USB device number 10 using xhci_hcd [So Jän 13 22:51:01 2019] usb 3-3.4.4: New USB device found, idVendor=0403, idProduct=c76a, bcdDevice= 6.00 [So Jän 13 22:51:01 2019] usb 3-3.4.4: New USB device strings: Mfr=1, Product=2, SerialNumber=0 [So Jän 13 22:51:01 2019] usb 3-3.4.4: Product: TITENG TP-9000 [So Jän 13 22:51:01 2019] usb 3-3.4.4: Manufacturer: TITENG

Um nun den FTDI Chip richtig zu konfigurieren benötigt man folgendes Commando. Vorher in das Verzeichnis die oben genannten Dateien kopieren und entpacken. Bei Vendor ID 0403 und Product ID c76a:

sudo ftdi_eeprom --flash-eeprom --device i:0x0403:0xc76a easy.conf

bzw. bei Vendor ID 1789 und Product ID 0016:

sudo ftdi_eeprom --flash-eeprom --device i:0x1789:0x0016 easy.conf

Hat das umkonfigurieren des FTDI Chips funktioniert, dann sollte etwa folgende Meldung mit dmesg ausgegeben werden.

[So Jän 20 23:00:17 2019] usb 3-3.4.4: new full-speed USB device number 18 using xhci_hcd
[So Jän 20 23:00:17 2019] usb 3-3.4.4: New USB device found, idVendor=0403, idProduct=8738, bcdDevice= 6.00
[So Jän 20 23:00:17 2019] usb 3-3.4.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[So Jän 20 23:00:17 2019] usb 3-3.4.4: Product: EasyFlash 3
[So Jän 20 23:00:17 2019] usb 3-3.4.4: Manufacturer: skoe
[So Jän 20 23:00:17 2019] usb 3-3.4.4: SerialNumber: A63702E2

Jetzt kann das CPLD mit der benötigten EasyFlash3 Logik geflasht werden.

CPLD

Zum Flashen des CPLDs hat Skoe das Programm easp bereitgestellt. Hier ist eine Anleitung von ihm. Es ist ein Open Source Tool, das mit Hilfe des FTDI Chips CPLDs via JTAG Schnittstelle programmiert. Es basiert auf dem Programm „prog_cpld“ von Tilmann Hentze. Den letzten CPLD Core findet ihr auf Github, dieser hat nun auch Final Cartridge III+ Support.

Um nun das CPLD zu Flaschen, müssen die Jumper des EF3 auf PROG stehen. Das EF3 muss mit einem C64 verbunden sein, damit das EF3 mit Spannung versorgt wird. Dann wird das easp gestartet, der Aufruf ist ganz simple:

easp -p 0x8738 -v ./ef3-cpld-1.2.1/ef3-cpld-1.2.1.svf

Nach der Meldung "<<< ALL TDO outputs matched to be expected values! >>>" wurde auch das CPLD erfolgreich programmiert. Hin und wieder kommt es vor, dass eine Anzahl an Outputs als falsch gekennzeichnet wird. Dann sollte man sich nochmals alle Pins des CPLD ansehen. Manchmal ist ein Pin nicht ordentlich verlötet.

Während des Flashvorgangs hängt sich der C64 auf. Sofern alles glatt gegangen ist, kann man nun den mittleren Taster des EF3 betätigen. Dadurch kommt wieder in den blauen READY Schirm des C64.

Jetzt fehlt nur noch die Programmierung des EF3 Menüs. Dazu mehr im nächsten Kapitel.