djtulan Music, Hackerspace, Retrocomputing

EasyFlash³ - DIY Tutorial 5/5 - Flash Menu

Damit man nun die fertige Hardware am C64 verwenden kann, muss noch die Software für das EF3-Menü eingespielt werden.

Es gibt dafür zwei verschiedene Cartridge Files

  • EF3-Init (EF3 Menü mit inkl verschiedener Kernals und EasyProg)
  • EF3-Menu (nur das EF3 Menü mit EasyProg)

in zwei unterschiedlichen Versionen: (je nachdem welche CPLD Version ihr geflasht habt!!!)

  • Version von Skoe (hier)
  • von Kim Jorgensen (hier)

ACHTUNG!!! Für alle, die Probleme beim Flashen haben. Das kann an einem bereits vorprogrammierten CPLD liegen.

Im Forum64 hat "no parity" eine Version erstellt, die via JTAG Kommando zuerst ein Unlock und Delete auf dem CPLD macht.
Diese Versionen haben bei mir bisher bei allen CPLDs funktioniert:

Skoe Version:

https://www.forum64.de/index.php?thread/87062-easyflash3-per-jtag-programmieren/&postID=1357019#post1357019

Kim Jorgensen:

https://www.forum64.de/index.php?thread/87062-easyflash3-per-jtag-programmieren/&postID=1357022#post1357022

 

Hat man ein komplett neues EF3 gebaut hat, dann sollte man das EF3-Init einspielen.

Am einfachsten geht das, wenn man im Besitz eines SD2IEC Laufwerks ist. Aber es ist auch möglich das EF3-Menü von Diskette aus zu installieren.

Flashen via SD2IEC

Kopiert folgende Dateien auf euere SD2IEC SD-Karte:

  • EasyProg ... Software zum Flashen
  • EF3-Init
  • EF3-Menu

Dann startet euren C64 mit angestecktem EF3. Ist noch keine Software im EF3, dann bekommt ihr einen blauen Screen.

Mit der mittleren Taste (SPECIAL) eures EF3 kommt ihr einfach in das C64 BASIC.

Jetzt lädt ihr EasyProg es sollte folgender Schirm erscheinen:

undefined 

Mit der Taste "M" kommt man in das erste Menü, hier könnt ihr nun "Write CRT to flash" auswählen und das EF3-Init zu flashen.

Bevor man das macht (bei neu gebauter Hardware) sollte man vorher ein "Erase all" durchführen, damit alle Slots sauber gelöscht sind.

Wurde das EF-Init fertig geflasht, kann man einen C64 Neustart durchführen oder die Linke Taste des EF3 (MENU) drücken, dann kommt ihr ins EF-Menü.

undefined

Fertig!

Flashen via Diskette

Eigentlich das gleiche Vorgehen wie für SD2IEC. Mit dem Unterschied, dass auf eine Diskettenseite das EF3-Init nicht Platz findet.

EasyProg und EF-Menu passen aber auf eine Diskettenseite, und man kann sich ein Menü ohne die Kernal und Freezer flashen.

 

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

undefined

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

Hier geht es zum Download

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:

  1. Bitte alle anderen FTDI USB Geräte anstecken (z.B. Serial Converter)
  2. Fertig aufgebautes EF3 anstecken
  3. mit dmesg die idVendor und idProduct feststellen (siehe Beispiele oben)
  4. die zwei Dateien in ein Verzeichnis kopieren und entpacken
  5. Terminalfenster aufmachen und in das Verzeichnis wechseln

 undefined

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

undefined

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

undefined


CPLD Dann wird das easp gestartet, der Aufruf ist ganz simple:

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

undefined

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.

EasyFlash³ - DIY Tutorial 3/5 - THT Parts

THT steht für (engl.: through-hole technology), also all das was durch Löcher in der Platine gesteckt und eingelötet wird. Im Gegensatz dazu werden alle Bauteile, die bisher gelötet wurden, SMT (engl.: surface-mounting technology) oder SMD (engl.: surface-mounting device) genannt.

1. Montage der Stiftleisten

Würde man die Stiftleisten so einlöten wie es eigentlich vorgesehen ist, dann würden die fertigen EasyFlash³ Platinen nicht in ein standard C64 Cartridge Gehäuse passen. Es gibt zwei Möglichkeiten, dieses Problem zu umgehen:

  1. Stiftleisten wie gewohnt einlöten und danach den Kunststoffrahmen entfernen, der die Leiste zusammenhält. Das ist aber recht aufwändig.

  2. Die Stifte der Stiftleiste mit Hilfe einer Zange herausschieben, bis sie bis nur noch auf einer Seite im Rahmen stecken. Und dann die Stiftleiste von hinten durchstecken und oben einlöten. Das ist die einfachere und elegantere Möglichkeit.

 

a.) Stiftleisten vorher:
undefined

b.) Stiftleisten nachher:

undefined

 Die Stiftleisten dann von oben verlöten.

 

2. Einlöten der Taster und der LED

3. Reinigung mit Isopropanol

Hat man nun alle Teile eingelötet folgt ein Bad in Isopropanol. Am besten ordentlich einziehen lassen und dann mit einem Pinsel oder einer kleinen Bürste alle Stellen ordentlich schrubben.

Danach mit einem fusselfreien Tuch trockenwischen. Am besten eigenen sich dazu "Clean Room Wipes".

 

Video folgt in Kürze

 

 

EasyFlash³ - DIY Tutorial 2/5 - Small SMD Parts

Kleinvieh macht auch Mist

Im zweiten Teil des EF3 DIY Tutorials zeige ich euch wie die kleinen Bauteile eingelötet werden. Der Vorteil am "Hühnerfütter" - wie die kleinen Teile gerne genannt werden - ist, dass es sehr einfach eingelötet werden kann. Der Nachteil, auf dem EF3 gibt es relativ viel davon. Vor allem von den Stützkondensatoren. Zeitlich gesehen benötigt man für die kleinen Bauteile in etwa genau so lange wie für die ICs.

1. Die 4 x 100Ω Widerstandsnetzwerke (R1, R2)

Bei den Widerstandsnetzwerken gibt es auch ein paar kleine Tricks, wie sie am besten eingelötet werden. Ich habe es mir angewöhnt R2 vor R1 zu löten, weil R1 stört, wenn er fix an seinem Platz ist. Das kommt natürlich auch darauf an, ob man Link- oder Rechtshänder ist. Außerdem sollten die Netzwerke nicht zu grob mit der Pinzette behandeln werden, da sie sehr spröde sind. Es können Teile von der Lackierung oder von den Kontaktflächen abbrechen. Es empfiehlt sich, die Bauteile vorher optisch zu kontrollieren. In seltenen Fällen sind die Kontakte bereits defekt, wenn man sie aus dem Filmstreifen nimmt.

Beim Einlöten wird das Widerstandsnetzwerk seitlich mit der Pinzette ausgerichtet und festgehalten. Dabei werden zwei Kontakte gelötet. Danach mit sanftem Druck das Array von oben fixieren und die restlichen zwei Kontakte löten.

2. Die 4 x 100Ω Widerstandsnetzwerke (R50, R51)

Hier gilt im Grunde das Gleiche wie für R1 und R2.

3. Die Kondensatoren 10uF (C1, C2, C52)

Hier gibt es grundsätzlich nicht viel zu erklären. Den Kondensator mit der Pinzette festhalten und ausrichten. Auf einer Seite anlöten. Dann mit der Pinzette sanften Druck von oben ausüben und Lötstelle nochmals nachlöten. Dadurch wird sichergestellt, dass der kleine Kondensator auch richtig gut auf der Platine aufliegt. Es kann passieren, dass der Kondensator dabei verrutscht. Das ist aber nicht weiter schlimm, dann einfach nochmal seitlich ausrichten.

4. Die Stützkondensatoren 100nF (C3-C15, C50,C51)

Fünfzehn an der Zahl gibt es einzulöten. Gleich an alle Stellen Flussmittel auftragen, dann kann man die Kondensatoren Stück für Stück ganz rasch einlöten.

5. Widerstände 4,7kΩ (R6, R7, R8, R52, R53)

5. Widerstände 100kΩ (R3, R4, R5)

6. Der LED Vorwiderstand 470Ω (R9)

7. Die Ferritperle (FB50)

 

EasyFlash³ - DIY Tutorial 1/5 - ICs und USB Connector

Herzlich willkommen zum DIY Tutorial für das EasyFlash³!

Die EasyFlash³ Hardware wurden von Skoe und der Hilfe vieler anderer Menschen entwickelt und ist eine universelle Speicherkarte für den Commodore 64.

Die EF3 Hardware ist Open Source bzw. Open Hardware und mit einer CC-BY-SA 3.0 Lizenz versehen. Das bedeutet Jeder darf die Hardware nachbauen unter der Bedingung, dass der Entwickler genannt wird. Werden an der Hardware bzw. der Software Modifikationen gemacht, so müssen diese Änderungen ebenfalls mit der gleichen Lizenz veröffentlicht werden.

Zu allererst möchte ich auf ein paar Vorbereitungen eingehen, die für den Bau des EF3 notwendig sind.

Ausrüstung:

  • ESD Matte und Armband (Empfehlung)
  • Lötstation mit SMD Spitze (Empfehlung: 2mm abgeschrägt)
  • feines Lötzinn (0,5mm)
  • Flussmittel (ich verwendet derzeit AMTECH NC 559 - ASM 10cc Paste PCB Flux No-Clean)
  • Lupe, Mikroskop oder Lupenbrille
  • SMD Pinzette
  • Isopropanol mit Schale und Pinsel zur Reinigung der fertigen Karte
  • Mini-USB-Kabel zum Flashen von FTDI und CPLD

Benötigte Bauteile:

Alle benötigten Bauteile findet man auf der EF3 Entwicklerseite von Skoe: [LINK]

Ich empfehle https://aliexpress.com für das Bestellen der Bauteile, das dauert zwar etwas länger, dafür sind die Teile günstiger.

Bauteil Anz. Beschreibung Aliexpress Link
U1 1 3.3V 150mA LDO Voltage Regulator, SOT-23-5 Link
U2 1 CPLD XC95144XL-TQ100 Link
U3 1 HC53 25 MHz Oscillator Link
U4 1 MX29LV Series 3 V 64Mb 70ns Flash - TSOP-48 Link
U5 1 256-kbit (32K x 8) 3.3V 55ns SRAM - sTSOP-28 Link
U6 1 74LVC14 or 74LVX14 Schmitt Trigger SOIC-14 Link
U50 1 FT245RL USB Full Speed to Parallel FIFO - SSOP-28 Link
D1 1 LED red, 2mA, 3mm Link

C3-C15,
C50,C51

15 Ceramic Capacitor 100nF, 0603, X5R/X7R Link
C1, C2, C52 3 Ceramic Capacitor 10uF, 0805, X5R/X7R Link
R1,R2,R50,R51 4 SMD Chip Resistor Network 4 x 100Ohm,
4 x 0603
Link
R3, R4, R5 3 Chip Resistor 100kOhm 0805 Link
R6,R7,R8,R52,R53 5 Chip Resistor 4.7kOhm 0805 Link
R9 1 Chip Resistor 470Ohm 0805 Link
FB50 1 Ferrite Bead 120Ohm 3000mA DCR 0.04Ohm, 0805 Link
J51 1 Socket Right Angle Type B Surface Mount Mini USB Link
P1, P2, P3   2.54 mm Pin Header Link
SW1, SW2, SW3 3 Button Right Angle Through Hole Tactile Switch Link
  4 Jumper, 2.54mm Link

Die Platine:

Die Gerber Files zum Bestellen von Platinen findet man ebenfalls auf der Entwicklerseite von Skoe: [LINK]

Ich bestelle meine Platinen bei ALLPCB. Die Lieferung erfolgt recht schnell (ca. 1 Woche) und die Qualität passt. Außerdem hatte ich noch keine Probleme mit dem Zoll. Man muss dazu nur die Eigenschaften der Platine (62mm * 84mm, Dicke 1.6mm, 2 Layers) angeben und das ZIP File mit den Gerber Dateien hochladen. Als Beschichtung empfehle ich "immerson gold". Ebenso sollte man "Golden Finger Beveling" auf "yes" stellen, das ist die Fase beim Steckkontakt.

undefined

Eine fertig produzierte Platine schaut dann folgendermaßen aus: [LINK]

Hat man alle Teile beisammen, dann kann es mit dem Löten losgehen.

Löten der ICs und USB Buchse:

Nun kommen wir zum Löten der ersten Bauteile. Man sollte immer mit dem schwierigsten Bauteil beginnen und sich zu den leichteren vorarbeiten. Wenn man den schwierigsten Teil geschafft hat, dann schafft man auch die leichteren Teile.

1. Das CPLD (U2)

Das schwierigste bei diesem Bauteil ist die exakte Platzierung. Hat man das Teil erst mal richtig ausgerichtet und diagonal mit Lötstellen angeheftet, dann ist der Rest des Lötens eigentlich recht simpel.

2. Flash (U4)

Der nächste Baustein ist der Flashspeicher.

3. SRAM (U5)

Gefolgt vom SRAM, das lässt sich relativ einfach einlöten.

4. Spannungsregler (U11 bzw. U1)

Beim Spannungsregler muss man besonders auf den mittleren Pin aufpassen, auf der Seite mit den drei Pins. Wenn dieser nicht ordentlich verlötet ist, dann werden die 3,3V nicht korrekt erzeugt.

5. Schmitt Trigger (U6)

Die SMD Chips mit größeren Pins sollten nun eigentlich kein Problem mehr darstellen, wenn man die vorhergehenden bereits erfolgreich eingelötet hat.

6. FTDI (U50)

Der FTDI Chip hat etwas geringere Abstände als der Schmitt Trigger, lässt sich aber trotzdem einfach einlöten.

7. USB Stecker (J51)

Beim Verlöten des USB Steckers sollte man nicht zu viel Lötzinn auf der Spitze haben, sonst bekommt man Lötbrücken, die man nicht mehr so einfach weg bekommt.

8. 25MHz Oszillator (U3)

Der Oszillatorbaustein ist etwas tricky einzulöten, wenn man das noch nie gemacht hat. Bevor man diesen anlötet, ist es empfehlenswert, Lötzinn auf die 4 Pads zu löten, sodass schöne runde Lötstellen entstehen.

Auf diese Stellen setzt man den Baustein und lötet in dann fest.

 

Home