EasyFlash³ - DIY Tutorial 4/5 - Configure FTDI and CPLD
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 entsprechenden Parameter gespeichert werden. Zur Konfiguration des FTDI Chips gibt es mehrere Herangehensweisen.
Konfiguration unter Windows
Am einfachsten ist es, das fertige Tool von FTDI names FT_Prog unter Windows zu verwenden. Skoe hat dazu eine Anleitung mit der passende XML Datei vorbereitet, die die benötigte Konfiguration enthält. Also im Grunde FT_Prog starten, XML Laden, USB Kabel an EF3 anstecken (Dieser Schritt benötigt keinen C64!), Konfiguration einspielen, fertig.
Dieser Ablauf funktioniert leider nur dann, solange man keinen vorprogrammierten Chip eingekauft hat. Da der Chip relativ teuer 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 andere VENDOR oder PRODUCT Ids, als ein jungfräulicher Chip. Hat man so einen Chip ergattert und bereits verlötet, dann ist es mit FT_PROG nicht mehr möglich den Chip umzuprogrammieren.
Vielen Dank dafür an die Firma FTDI!
Hier ein paar Beispiele von Chips, die ich über ebay eingekauft habe:
usb 3-3.4.4: new full-speed USB device number 10 using xhci_hcd
usb 3-3.4.4: New USB device found, idVendor=1789, idProduct=0016, bcdDevice= 6.00
usb 3-3.4.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 3-3.4.4: Product: TEMS Symphony Phone MIF ACM
usb 3-3.4.4: Manufacturer: FTDI
usb 3-3.4.4: SerialNumber: 30X0U6HT
usb 3-3.4.4: new full-speed USB device number 11 using xhci_hcd
usb 3-3.4.4: New USB device found, idVendor=0403, idProduct=6001, bcdDevice= 6.00
usb 3-3.4.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 3-3.4.4: Product: NCP_PRNT
usb 3-3.4.4: Manufacturer: LAUNCH
usb 3-3.4.4: SerialNumber: 170000E6
usb 3-3.4.4: new full-speed USB device number 10 using xhci_hcd
usb 3-3.4.4: New USB device found, idVendor=0403, idProduct=c76a, bcdDevice= 6.00
usb 3-3.4.4: New USB device strings: Mfr=1, Product=2, SerialNumber=0
usb 3-3.4.4: Product: TITENG TP-9000
usb 3-3.4.4: Manufacturer: TITENG
Schlimmer noch, es gibt hin und wieder auch Händler, die fake Chips verkaufen. Bitte werft unbedingt einen Blick auf die Bewertungen von den Verkäufern oder kauft die Chips bei einem seriösen Elektronikhändler. Wenn ein FTDI Chip für unter 2€ angeboten wird sollte man skeptisch sein.
Konfiguration unter Linux
Eine andere, nicht weniger komfortable Lösung, ist das Tool ftdi_eeprom, das in den meisten Linux Distributionen enthalten ist. Unter Ubuntu / Debian kann man es einfach mit folgenden Kommando installieren:
sudo apt install ftdi-eeprom
ftdi_eeprom ist ein Commandline Tool, mit dem sich auch FTDI Chips umprogrammieren lassen, die bereits vorprogrammiert wurden. 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 für ein EF3
Um zu zu erkennen welche VENDOR und PRODUCT Id in den Chip programmiert wurde, ist der Befehl dmesg sehr praktisch. Mit dmesg wird der Kernel Log des Linux Systems dargestellt. Hier ein Log eines richtig konfigurierten EF3.
dmesg -r
usb 3-3.4.4: USB disconnect, device number 11
usb 3-3.4.4: new full-speed USB device number 12 using xhci_hcd
usb 3-3.4.4: New USB device found, idVendor=0403, idProduct=8738, bcdDevice= 6.00
usb 3-3.4.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 3-3.4.4: Product: EasyFlash 3
usb 3-3.4.4: Manufacturer: skoe
usb 3-3.4.4: SerialNumber: A63702E2
Um nun den Chip unter Linux zu konfigurieren bitte folgender Schritte durchführen:
- Bitte alle anderen FTDI USB Geräte anstecken (z.B. Serial Converter)
- Fertig aufgebautes EF3 anstecken
- mit dmesg die idVendor und idProduct feststellen (siehe Beispiele oben)
- die zwei Dateien in ein Verzeichnis kopieren und entpacken
- Terminalfenster aufmachen und in das Verzeichnis wechseln
Danach folgenden Befehl ausführen:
sudo ftdi_eeprom --flash-eeprom --device i:0x0403:0x8738 easy.conf
- statt 0x0403 bitte die richtige idVendor einsetzen
- statt 0x8738 bitte die richtige idProduct einsetzen
Hat das Umkonfigurieren des FTDI Chips funktioniert, dann sollte mit dmesg nun die Meldung ausgegeben werden:
dmesg -r
usb 3-3.4.4: USB disconnect, device number 11
usb 3-3.4.4: new full-speed USB device number 12 using xhci_hcd
usb 3-3.4.4: New USB device found, idVendor=0403, idProduct=8738, bcdDevice= 6.00
usb 3-3.4.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 3-3.4.4: Product: EasyFlash 3
usb 3-3.4.4: Manufacturer: skoe
usb 3-3.4.4: SerialNumber: A63702E2
Als nächstes kann nun das CPLD mit der benötigten EasyFlash3 Logik geflasht werden.
CPLD
Zum Flashen des CPLDs hat Skoe das Programm easp bereitgestellt. Es ist ein Open Source Tool, das mit Hilfe des FTDI Chips das CPLD via JTAG Schnittstelle programmiert. Es basiert auf dem Programm „prog_cpld“ von Tilmann Hentze.
Weiters benötigt man die Dateien, die die richtige CPLD Logik enthalten. Entweder man verwendet die Dateien von Skoe oder man verwendet die neuere Version von Kim Jorgensen.
Ich persönlich verwende immer die neuere Version von Kim Jorgensen, weil damit auch Final Cartridge III+ unterstützt werden.
Um das CPLD zu flashen müssen folgenden Vorbedingungen erfüllt werden:
- die Jumper des EF3 auf PROG stehen.
- Das EF3 muss in einem C64 stecken und Letzterer muss eingeschaltet sein, damit das EF3 mit Spannung versorgt wird.
- Die benötigte svf Datei sollte ein einem Verzeichnis bereit liegen
CPLD Dann wird das easp gestartet, der Aufruf ist ganz simple:
./easp -p 0x8738 ef3-cpld-1.2.1.svf
Nach der Meldung <<< All TDO outputs matched to the expected values! >>> wurde auch das CPLD erfolgreich programmiert.
Hin und wieder kommt es vor, dass eine gewisse Anzahl an TDO outputs als falsch gekennzeichnet wird. Dann sollte man sich nochmals alle Pins des CPLD ansehen. Manchmal ist ein Pin einfach nicht ordentlich verlötet.
Bekommt man die Meldung <<< 49127 TDO outputs didn't match to the expected values... >>> dann hat man vergessen die 4 Jumper auf PROG zu setzten.
Wenn man großes Pech hat, dann ist das CPLD beschädigt und lässt sich gar nicht programmieren, dann sollte man es mit einer Heißluftstation entlöten und gegen ein Neues tauschen.
Zur Info, während des Flashvorgangs stürzt der C64 ab. Sofern alles gut gelaufen ist, kann man nun die mittlere Taste des EF3 betätigen (SPECIAL) um wieder in den blauen READY Schirm des C64 zu gelangen.
Jetzt fehlt nur noch die Programmierung des EF3 Menüs. Dazu mehr im nächsten Kapitel.