SD2IEC

Aus C64-Wiki
Zur Navigation springenZur Suche springen
disambig 30px.png Dieser Artikel ist ein Überblicksartikel zur SD2IEC-Hardware im allgemeinen. Ein Erfahrungsbericht zur von NKC verkauften Version des SD2IEC findet sich unter SD2IEC/NKC-SD2IEC Erfahrungsbericht. Die von der SD2IEC-Hardware und vom µIEC benutzte Firmware und ihre Funktionalität wird unter sd2iec (Firmware) beschrieben
SD2IEC
SD2IEC 1.2
Typ Steckmodul mit MMC/SD-Karten-Laufwerk
Neupreis <20€ (Materialpreis, kein Display o.ä.)
Erscheinungsjahr 2008
Prozessor ATmega644
Sonstiges Ersatz der 1541; SD-Karten-Laufwerk; spezielles Kabel für serielle Schnittstelle


Das SD2IEC ist ein Massenspeichergerät für Speicherkarten des Typs SD/MMC, das an den seriellen Bus einiger Commodore-Computer angeschlossen werden kann. Es basiert auf dem ATmega644-Microcontroller der Atmel AVR-Familie. Das SD2IEC wird typischerweise als Ersatz der 1541 an einem C64 genutzt. Die Schaltung sowie die benutzte Firmware - siehe Artikel sd2iec (Firmware) - sind im Quelltext verfügbar (Lizenz: GPL).

Geschichte[Bearbeiten | Quelltext bearbeiten]

Das Gerät SD2IEC ist der Nachfolger des Geräts MMC2IEC. Im Gegensatz zum MMC2IEC arbeitet hier ein ATmega644-Mikrocontroller (oder neuer: ATmega1284P) mit mehr RAM und Flash-ROM; der Mikrocontroller wird mit 3 V statt 5 V betrieben; der serielle Bus wird über eine MOSFET-Schaltung angesteuert, die besser mit weiteren am Bus angeschlossenen Laufwerken umgehen kann.

  • 2014 gibt es eine weitere kommerzielle SD2IEC-Version, das thefuturewas8bit SD2IEC. Es sieht einer Mini-1541 ähnlich.
  • Mitte 2012: Eine weitere kommerzielle Variante, das SD2IEC-evo2, ist erhältlich.
  • 2009-02-06: Die SD2IEC-Hardware wird bei NKC kommerziell verfügbar (SD2IEC, Tochterplatine).
  • 2008-03-15: Shadowolf veröffentlicht die SD2IEC 1.2-Platine (Unterschiede zum MMC2IEC 1.9: ATmega644, bessere IEC-Leitungstreiber, Disk-Wechsel-Taster, I/O-Anschlüsse, Befestigungslöcher) - es wurden ungefähr 120 Stück hergestellt.

Eigenschaften[Bearbeiten | Quelltext bearbeiten]

Es ist zu beachten, dass insbesondere von Hobbybastlern meist nicht die SD2IEC-Hardware nachgebaut wird, sondern eine MMC2IEC-Hardware-Variante (weil sie wohl keine MOSFETs benutzt und so etwas einfacher aufzubauen ist) und darauf die sd2iec-Firmware genutzt wird. Ist im Zusammenhang mit der Hardware vom "LarsP-Layout" die Rede oder fehlen die drei/vier IRLML 2402-MOSFETs, handelt es sich nicht um die originale SD2IEC-Hardware, auch wenn das Ergebnis ggf. fälschlich so genannt wird.

  • Kompatibel mit dem C64, C64DTV, C128 (nicht Burst Mode), C16, VIC-20 etc.
  • Stromverbrauch: Leerlauf ~15 mA, im Betrieb 30-80 mA
  • sd2iec_1.2.zip - Schaltplan und Platine (Eagle-Format)
    • R100/R101 fungieren als Platzhalter für einen optionalen Reset-Knopf (AVR Reset-Leitung gegen GND) oder eine optionale Verbindung mit der IEC-Leitung (AVR-Reset via Diode mit der IEC-Reset-Leitung verbunden - die Kathode der Diode muss Richtung IEC zeigen).
    • Hinweise (Juni 2013)
      • Der benutzte SD-Karten-Halter wird nicht mehr hergestellt. Bis jemand eine aktualisierte Platine anbietet, kann man sich behelfen, indem man MicroSD-Karten benutzt und einen MicroSD/SD-Adapter direkt an die Platine lötet.
      • Neuere Firmware unterstützen den größeren ATmega1284P, der entsprechend anstelle des ATmega644 verbaut werden sollte.
      • Das SD2IEC lässt sich gut kombinieren mit Hardware-Modulen, wie etwa dem FC3 oder JiffyDOS, da deren Schnelllader, Funktionstastenbefehle (F-Tasten) und vereinfachte CBM-DOS-Befehle den ganzen Umgang dann enorm erleichtern.

Firmware-Eigenschaften[Bearbeiten | Quelltext bearbeiten]

Für einen Überblick zu den Eigenschaften der Firmware siehe Artikel sd2iec (Firmware).

Was sind die Unterschiede des SD2IEC verglichen mit der 1541-III und der 1541 Ultimate?[Bearbeiten | Quelltext bearbeiten]

  • 1541 Ultimate vs. SD2IEC
    • das SD2IEC ist wesentlich günstiger.
    • die 1541 Ultimate ist wesentlich kompatibler; allerdings gibt es von fast allen Spielen Versionen, die auch mit der sd2iec-Firmware funktionieren.
    • Nachlade-Demos, die so gut wie immer einen speziellen Loader verwenden, funktionieren so gut wie nie mit der sd2iec-Firmware, während sie auf einem 1541-Ultimate alle perfekt laufen.
    • das SD2IEC bietet keinerlei Sonderfunktionen an (Cartridge/Netzwerk/REU-Emulation).
    • die sd2iec-Firmware ist bei KERNAL-Funktionen schneller als die 1541 Ultimate, da die Funktionen auf IEC-Ebene emuliert werden, nicht die komplette 1541 inklusive ihrer langsamen Mechanik.
  • 1541-III vs. SD2IEC
    • die sd2iec-Firmware ist wesentlich kompatibler und hat Unterstützung für einige Schnelllader - 20fach-Geschwindigkeit und mehr!
    • das SD2IEC bietet normalerweise keine Anzeige. Diskettenwechsel sind mit einem Taster jedoch möglich. Eine Anzeige lässt sich nachrüsten, wirklich notwendig ist sie aber eigentlich nicht.
    • die SD2IEC-Platine ist noch kleiner als die 1541-III-DTV-Platine.
    • das SD2IEC bietet einen Bootloader, der die Firmware beim Start von der SD-Karte liest. Entsprechend einfach sind Firmware-Updates.
    • das SD2IEC benutzt einen ATmega-Controller - Open Source-Compiler sind für diese Plattform verfügbar.

Welche SD2IEC-Variante ist empfehlenswert?[Bearbeiten | Quelltext bearbeiten]

Inzwischen werden viele unterschiedliche Hardware-Varianten als "SD2IEC" angeboten. Die meisten davon haben mit der originalen SD2IEC-Hardware wenig zu tun und benutzen lediglich die sd2iec-Firmware. Wenn die drei MOSFET-Treiber für den IEC-Bus fehlen (drei kleine Chips mit drei Pins), sollte man die Finger davon lassen, da der ATmega644/1284 nicht in allen Fällen sicher genug Treiberleistung für den IEC-Bus bringt. Auch Varianten, die noch den ATmega644 benutzen, sind nicht emfehlenswert, da dessen FlashROM knapp ist.[1]

Kann ich mit dem SD2IEC ein Parallelkabel benutzen?[Bearbeiten | Quelltext bearbeiten]

Nein. Die Firmware unterstützt ein Parallelkabel, die SD2IEC-Platine jedoch nicht. Z.B. das arm2iec bietet Anschlüsse für ein Parallelkabel. Der normale CBM-Bus ist jedoch bereits ziemlich schnell, siehe die Geschwindigkeitstests im sd2iec (Firmware)-Artikel.

Software[Bearbeiten | Quelltext bearbeiten]

Bootloader[Bearbeiten | Quelltext bearbeiten]

  • Der Bootloader muss einmalig manuell in den ATmega programmiert werden, wofür ein Programmiergerät nötig ist. Der Bootloader startet die eigentliche Firmware aus dem ATmega-Flash bzw. aktualisiert die Firmware aus einer Datei auf der SD-Karte (FAT16 und FAT12 werden unterstützt), falls dort eine neuere Version als bereits geflasht vorliegt.
  • Beim Einschalten des SD2IEC leuchtet die rote LED. Wenn eine aktualisierte Firmware auf der SD-Karte gefunden wird, blinkt das grüne Licht während des Flashens einige Sekunden lang. Falls keine aktualisierte Firmware vorliegt, blinkt das grüne Licht einmal. Sobald der Vorgang abgeschlossen ist, erlöschen beide LEDs.
  • Die Firmware (.bin) muss sich im Stammverzeichnis der SD-Karte befinden. Nur die Dateigröße und Dateisignatur müssen passen.
  • avrdude-Flash-Befehl: avrdude -p m644 -U flash:w:sd2iec_bootloader.hex:i -U hfuse:w:0xDA:m -U efuse:w:0xFD:m -U lfuse:w:0xE7:m
    • Dadurch werden die Einstellungen für lfuse/clock zuletzt programmiert, sodass eine Programmierung ohne angeschlossenen Quarz möglich ist (einmal!)
    • Programmierung mit 5V ist möglich (dann darf während der Programmierung keine SD-Karte oder IEC-Gerät angeschlossen sein)
  • minipro-Flash-Befehle (u.a. für TL866): minipro -p ATMEGA644A -c code -w sd2iec_bootloader.hex sowie minipro -p ATMEGA644A -c config -w fuses.cfg, wobei die fuses.cfg aus dem Inhalt fuses_hi = 0xda, fuses_ext = 0xfd, fuses_lo = 0xe7, lock_byte = 0xff (in vier Zeilen, ohne Kommata) bestehen muss. Der TL866 kann den den ATMega auch bei auf Quarz eingestellten Fuses ohne angeschlossenen Quarz neu programmieren.
  • Fuse-Settings erklärt...
    • BOOTSZ = 01 (Boot size 2048 Words, Start $7800), BOOTRST = 0 (Boot-Reset-Vektor aktiviert)
    • Quarzoszillator, Start-up 16CLK + 4,1 ms: CKSEL = 0111, SUT = 10
    • CKDIV = 1 (Clock divide by 8 deaktiviert)
  • Download: sd2iec.de-Bootloader-Seite – die richtige Version für die SD2IEC-Platine ist "sw2".

Firmware[Bearbeiten | Quelltext bearbeiten]

Die Firmware - siehe Artikel sd2iec (Firmware) - lässt sich durch Einspielen eines neueren Images auf die SD-Karte auf eine neuere Version aktualisieren. Neue Versionen werden unter sd2iec.de angeboten. Alle Quelltexte sind im Git-Repository[2] zu finden. Um eine neue Firmware-Version einzuspielen, ist das "sd2iec.bin" aus dem ZIP-Archiv auf die oberste Ebene der SD-Karte zu platzieren. Anschließend wird die SD-Karte in das SD2IEC gesteckt und eingeschaltet. Nach dem Starten sollte man anhand der Firmware-Version überprüfen, ob die Aktualisierung erfolgreich war.

Nach Möglichkeit sollten für die Aktualisierung keine SDHC-Karten (Karten in der Größe von 4 bis 32 GByte) benutzt werden, da diese nicht mit jedem Bootloader das Update einspielt. Aus Geschwindigkeitsaspekten sollten kleinere Karten benutzt werden.

  • Firmwareversion abfragen (nur direkt nach dem Einschalten möglich)
10 open1,8,15:input#1,a$,b$,c$,d$ 
20 close1
30 print a$,b$,c$,d$
run
  • beziehungsweise im Direktmodus mit folgendem Einzeiler:
OPEN 1,8,15:FOR I=0 TO 2:POKE 58,1:GET#1,A$:PRINT A$;:I=255 AND ST:NEXT:CLOSE 1

Weitere Bilder[Bearbeiten | Quelltext bearbeiten]

Ähnliche Themen[Bearbeiten | Quelltext bearbeiten]

Weblinks[Bearbeiten | Quelltext bearbeiten]

Quellen[Bearbeiten | Quelltext bearbeiten]

  1. Z.B. thierers Firmware läuft nur auf ATmega1284.
  2. git clone https://sd2iec.de/sd2iec.git, das Verzeichnis ist versteckt, aber lesbar