Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
Letzte ÜberarbeitungBeide Seiten der Revision
z9001:sdcard [2010/07/17 16:48] – Externe Bearbeitung 127.0.0.1z9001:cpm:sdcard [2010/07/23 11:16] – Links to z9001:sdcard2 changed to z9001:erweiterungen:sdcard2 volkerp
Zeile 1: Zeile 1:
-====== z9001_sdcard.htm ======+====== SD-Card ======
  
-==== Betrieb einer SD-Card unter CP/M mit minimaler Hardware ====+**Betrieb einer SD-Card unter CP/M mit minimaler Hardware**
  
-{{z9001-mmc.jpg?203x217}}+{{z9001:z9001-mmc.jpg?}}
  
 **Hier ist er endlich - mein 1-Euro-SD/MMC-Card-Anschluss!** **Hier ist er endlich - mein 1-Euro-SD/MMC-Card-Anschluss!**
  
-Mein Modul sollte so einfach wie möglich sein und so wenig wie möglich kosten. Bekannte Lösungen enthalten einen zusätzlichen Mikrocontroller (PIC oder AVR) als Vorraussetzung für ein FAT16-Filesystem, damit ist so ein Zusatzmodul eigentlich schon leistungsfähiger als der KC selbst, s. {{z9001_sdcard2.htm|Kingsteners Variante}}.  Letztlich enthalten die MMC- und SD-Karten schon einen eigenen Mikrocontroller, der den Zugriff auf den Kartenspeicher recht einfach macht. Meine Idee war es, die MMC/SD-Karten nur unter CP/M anzusprechen und dessen Filesystem zu nutzen. Damit wird der zusätzliche Mikrocontroller überflüssig.+Mein Modul sollte so einfach wie möglich sein und so wenig wie möglich kosten. Bekannte Lösungen enthalten einen zusätzlichen Mikrocontroller (PIC oder AVR) als Vorraussetzung für ein FAT16-Filesystem, damit ist so ein Zusatzmodul eigentlich schon leistungsfähiger als der KC selbst, s. [[z9001:erweiterungen:sdcard2|]].
  
-Ich hatte im Netz (b. {{http://www.ulrichradig.de/home/index.php/avr/mmc-sd|Ulrich Radig}}) eine einfache Schaltung mit 6 Widerständen und 2 Dioden gefunden (herabsetzen der 5V auf die erlaubten 3,3V); bei einem Z80F91 -Projekt (Jean-Michel Howland) gab es sogar ein komplettes CP/M mit SD-Einbindung über die im Z80F91 vorhandene serielle Schnittstelle.+Letztlich enthalten die MMC- und SD-Karten schon einen eigenen Mikrocontroller, der den Zugriff auf den Kartenspeicher recht einfach macht. Meine Idee war es, die MMC/SD-Karten nur unter CP/M anzusprechen und dessen Filesystem zu nutzen. Damit wird der zusätzliche Mikrocontroller überflüssig.
  
-Hier ein paar mehr oder weniger bekannte Links zum Thema MMC/SD und Z80: \\ \\ {{http://elm-chan.org/docs/mmc/mmc_e.html| http://elm-chan.org/docs/mmc/mmc_e.html}}\\ {{http://hotbit.blogspot.com/search/label/Leitor%20de%20SD/MMChttp://hotbit.blogspot.com/search/label/Leitor%20de%20SD%2FMMC}}\\ {{http://www.vegeneering.com/eZ80_CPM/index.html| http://www.vegeneering.com/eZ80_CPM/index.html}}\\ {{http://n8vem-sbc.pbwiki.com/browse/#view=ViewFolder&param=Juha SD Interface| Juha SD Interface}}+Ich hatte im Netz bei {{http://www.ulrichradig.de/home/index.php/avr/mmc-sd|Ulrich Radig}} eine einfache Schaltung mit 6 Widerständen und 2 Dioden gefunden (herabsetzen der 5V auf die erlaubten 3,3V); bei einem Z80F91 -Projekt (Jean-Michel Howland) gab es sogar ein komplettes CP/M mit SD-Einbindung über die im Z80F91 vorhandene serielle Schnittstelle.
  
-Es gibt eine Reihe von Implementierungen des FAT-Filesystems für die AVR-Controller, z.B. {{http://www.holger-klabunde.de/avr/avrboard.htm#cf|Holger Klabundes Variante}}. Zuerst plante ich ein spezielles Modul zum Einstecken in den Z9001. Den Userport wollte ich für Soundmodul etc. frei halten. Neben dem AVR hatte ich an einen EPROM mit dem Steuerprogramm gedacht (2008Andere hatten auch diese Idee und das viel besser gelöst -> {{z9001_sdcard2.htm|Kingsteners Variante}}). Dann bin ich später auf den Trichter mit der direkten Hardwareansteuerung gekommen.+Hier ein paar mehr oder weniger bekannte Links zum Thema MMC/SD und Z80:
  
-==== Schaltung ====+  * http://elm-chan.org/docs/mmc/mmc_e.html 
 +  * http://hotbit.blogspot.com/search/label/Leitor%20de%20SD/MMC 
 +  * http://www.vegeneering.com/eZ80_CPM/index.html 
 +  * http://n8vem-sbc.pbwiki.com/browse/#view=ViewFolder&param=Juha%20SD%20Interface
  
-{{MMCSDSCH.jpg| {{MMCSDSCH_small.jpg}}}}Die Minimal-Schaltung von {{http://www.ulrichradig.de/home/index.php/avr/mmc-sd|Ulrich Radig}}. Die Widerstände und die Dioden sind nötig, da SD-Karten mit 3,3V arbeitenDie Schaltung ist wirklich minimal; man sollte besser einen Spannungsregler einsetzen.+Es gibt eine Reihe von Implementierungen des FAT-Filesystems für die AVR-Controller, z.B. {{http://www.holger-klabunde.de/avr/avrboard.htm#cf|Holger Klabundes Variante}}. Zuerst plante ich ein spezielles Modul zum Einstecken in den Z9001. Den Userport wollte ich für Soundmodul etc. frei halten. Neben dem AVR hatte ich an einen EPROM mit dem Steuerprogramm gedacht (2008: Andere hatten auch diese Idee und das viel besser gelöst -> [[z9001:erweiterungen:sdcard2|]])Dann bin ich später auf den Trichter mit der direkten Hardwareansteuerung gekommen.
  
-Der Aufbau erfolgte auf einer Lochrasterplatte 30x45 mm und mit Handverdrahtung (Verowire Fädelstift) und funktionierte auf Anhieb. Gegenüber der Schaltung habe ich drei SAY12-Dioden verwendet, um die Betriebsspannung auf 3,6 V zu senken. Die Ports können beliebig auf die Anschlüsse des USER-Port gelegt werden, die Pins können einfach im Quellcode umdefiniert werden. Ich habe bei meinem Muster die Reihenfolge wie im Bild angegeben übernommen. Als Halterung für die Karte dient ein Stück ISA-Karten-Slot. **Achtung: Die Karte darf nicht im laufenden Betrieb gewechselt werden!!!**+===== Schaltung =====
  
-Wer es richtig professionell haben will, findet z.B bei {{http://www.shop.display3000.com/pi8/pi14/pd102.htmlDISPLAY 3000}} eine LösungAuf dieser Seite gibt es auch ausführliche Erklärungen, warum die Pegelwandlung mit Widerständen nur als Bastellösung anzusehen ist.+{{z9001:MMCSDSCH.jpg?200 |}} Die Minimal-Schaltung von {{http://www.ulrichradig.de/home/index.php/avr/mmc-sd|Ulrich Radig}}. Die Widerstände und die Dioden sind nötig, da SD-Karten mit 3,3V arbeiten. Die Schaltung ist wirklich minimal; man sollte besser einen Spannungsregler einsetzen.
  
-==== Software ====+Der Aufbau erfolgte auf einer Lochrasterplatte 30x45 mm und mit Handverdrahtung (Verowire Fädelstift) und funktionierte auf Anhieb. Gegenüber der Schaltung habe ich drei SAY12-Dioden verwendet, um die Betriebsspannung auf 3,6 V zu senken. Die Ports können beliebig auf die Anschlüsse des USER-Port gelegt werden, die Pins können einfach im Quellcode umdefiniert werden. Ich habe bei meinem Muster die Reihenfolge wie im Bild angegeben übernommen. Als Halterung für die Karte dient ein Stück ISA-Karten-Slot. **Achtung: Die Karte darf nicht im laufenden Betrieb gewechselt werden!!!**
  
-Die Karte wird direkt im SPI-Modus angesteuertDas ganze ist relativ simpel, da der Master (hier der Z9001) den Takt beliebig vorgeben kannIn Rahmen eines Seminars {{http://www.uni-koblenz.de/~physik/informatik/ECC/| ''Machbarkeitsstudie: Einchipcomputer''}} hat Simeon Maxein dieses Vorgehen einsteigerfreundlich {{http://www.uni-koblenz.de/~physik/informatik/ECC/sd.pdfbeschrieben}}.+Wer es richtig professionell haben will, findet z.Bbei {{http://www.shop.display3000.com/pi8/pi14/pd102.html|DISPLAY 3000}} eine Lösung. Auf dieser Seite gibt es auch ausführliche Erklärungen, warum die Pegelwandlung mit Widerständen nur als Bastellösung anzusehen ist.
  
-Den Zugriff auf die MMC bzw. SD erledigt der Dateitreiber von **CP/M**; eine Kompatibilität zu FAT16 ist dabei nicht nötig. Emuliert wird dann auf der Karte eine/zwei CP/M-Festplatten bis 8MB. Wenn diese nicht auf Block 0 auf der MMC anfangen, sondern weiter hinten, kann man hier jedoch sogar noch einen FAT16-Header mit draufschreiben und die CP/M-"Festplatten" direkt am PC und am Stück kopieren: Unter DOS erscheinen 2 8MB große Dateien im Directory!+===== Software =====
  
-{{sd-karte-cpm-bootsektor.jpg?300x225}} Auflisten des BOOT-Sektors der SD-Karte+Die Karte wird direkt im SPI-Modus angesteuertDas ganze ist relativ simpel, da der Master (hier der Z9001) den Takt beliebig vorgeben kann. In Rahmen eines Seminars "Machbarkeitsstudie: Einchipcomputer" an der Uni Koblenz hat Simeon Maxein dieses Vorgehen einsteigerfreundlich beschrieben http://www.uni-koblenz.de/~physik/informatik/ECC/sd.pdf, http://www.uni-koblenz.de/~physik/informatik/ECC/.
  
-Dazu werden im BIOS anstelle des Floppytreibers (oder zusätzlich zu diesem) Treiberroutinen eingebunden, die auf den Quellen von {{http://www.vegeneering.com/eZ80_CPM/index.html|Jean-Michel Howland}} basieren und die 128 Byte-Records direkt auf die Karte referenzieren. Damit kann mit der SD-Karte wie mit einer richtigen "großenFloppy bzw. Festplatte gearbeitet werden. Am ehesten ist das mit einer RAM-Disk vergleichbar. Das Lesen und Schreiben geht leider noch so schnell, dafür rattert im Gegensatz zur Floppy auch nichts :-)+Den Zugriff auf die MMC bzw. SD erledigt der Dateitreiber von **CP/M**; eine Kompatibilität zu FAT16 ist dabei nicht nötigEmuliert wird dann auf der Karte eine/zwei CP/M-Festplatten bis 8MBWenn diese nicht auf Block 0 auf der MMC anfangen, sondern weiter hinten, kann man hier jedoch sogar noch einen FAT16-Header mit draufschreiben und die CP/M-"Festplattendirekt am PC und am Stück kopieren: Unter DOS erscheinen 2 8MB große Dateien im Directory!
  
-**27.02.2010**: Der {{sdc2.zip|aktuelle Treiber SDC2}} wird wie der RAM-Floppy Treiber für die RAF2008 nachgeladen und installiert sich als Laufwerk 'N:'. Der Treiber funktioniert, ist aber noch nicht optimalDas Lesen oder Schreiben von 1K dauert knapp 1 Sekunde (das Lesen eines Bytes erfordert allein 17 In/Out-Befehle. Daraus resultiert die langsame Transferrate). Die Karte wird mit 512 Byte-Blöcken gelesen und beschrieben, davon werden aber nur 128 Byte genutztFür ein 8MB-Laufwerk braucht man damit eine 32MByte-SD-Karte. Der nächste Treiber wird einen Deblocking-Mechanismus enthalten, so dass zum einen auch echte 8MB ausreichen und zum anderen die Transferrate vervierfacht wird.+{{z9001:sd-karte-cpm-bootsektor.jpg?300}}\\ Auflisten des BOOT-Sektors der SD-Karte
  
-Im aktuellen Treiber sind übrigens 2 Tracks (64 Sektorenfür Systemspuren reserviertWenn man eine kleine SD-Karte mit FAT formatiert, steht in Track 0 der FAT-Disk-Header ("MSDOS5.0") und in Track 1 das FAT-InhaltsversichnisAuf Track 2 beginnt die erste Datei. Somit reicht es ausdie im Archiv enthaltene Datei "TEST.CPM" auf die frisch formatierte SD-Karte zu kopieren und schon hat man das CP/M-Filesystem auf der Karte, verpackt in der virtuellen MSDOS-Datei "TEST.CPM":+Dazu werden im BIOS anstelle des Floppytreibers (oder zusätzlich zu diesemTreiberroutinen eingebunden, die auf den Quellen von Jean-Michel Howland basieren und die 128 Byte-Records direkt auf die Karte referenzierenDamit kann mit der SD-Karte wie mit einer richtigen "großenFloppy bzwFestplatte gearbeitet werden. Am ehesten ist das mit einer RAM-Disk vergleichbarDas Lesen und Schreiben geht leider noch so schnelldafür rattert im Gegensatz zur Floppy auch nichts :-)
  
-{{sdc-treiber0.jpg?300x252}} |   | +**27.02.2010**: Der aktuelle Treiber SDC2 {{z9001:sdc2.zip|}} wird wie der RAM-Floppy Treiber für die RAF2008 nachgeladen und installiert sich als Laufwerk 'N:'. Der Treiber funktioniertist aber noch nicht optimal: Das Lesen oder Schreiben von 1K dauert knapp 1 Sekunde (das Lesen eines Bytes erfordert allein 17 In/Out-Befehle. Daraus resultiert die langsame Transferrate). Die Karte wird mit 512 Byte-Blöcken gelesen und beschrieben, davon werden aber nur 128 Byte genutzt. Für ein 8MB-Laufwerk braucht man damit eine 32MByte-SD-Karte. Der nächste Treiber wird einen Deblocking-Mechanismus enthalten, so dass zum einen auch echte 8MB ausreichen und zum anderen die Transferrate vervierfacht wird.
-| Laden des TreibersInitialisieren des SP/M-Filesystems mit ERADIR (Directory löschen) |   | +
-| {{sdc-karte-win.jpg}} | {{sdc-treiber1.jpg?300x239}} | +
-SD-Karte unter Windows | SD-Karte unter CP/M |+
  
- +Im aktuellen Treiber sind übrigens 2 Tracks (64 Sektoren) für Systemspuren reserviert. Wenn man eine kleine SD-Karte mit FAT formatiert, steht in Track 0 der FAT-Disk-Header ("MSDOS5.0") und in Track 1 das FAT-Inhaltsversichnis. Auf Track 2 beginnt die erste Datei. Somit reicht es aus, die im Archiv enthaltene Datei "TEST.CPM" auf die frisch formatierte SD-Karte zu kopieren und schon hat man das CP/M-Filesystem auf der Karte, verpackt in der virtuellen MSDOS-Datei "TEST.CPM":
  
-In Andrew Lynchs N8VEM-Projekt gibt es ebenfalls eine Nutzung einer SD-Karte im CPM incl Unterlagen, das {{http://n8vem-sbc.pbwiki.com/browse/#view=ViewFolder&param=Juha SD InterfaceJuha SD Interface}}.+{{z9001:sdc-treiber0.jpg?300|)}}\\  
 +Laden des Treibers, Initialisieren des SP/M-Filesystems mit ERADIR (Directory löschen)
  
- +{{z9001:sdc-karte-win.jpg?300|}} {{z9001:sdc-treiber1.jpg?300|}}\\  
 +SD-Karte unter Windows; SD-Karte unter CP/M
  
-| Über meine Dokumente:Die großen Bilder sind mit 150 DPI gescannt und als JPEG gespeichert, die Handbücher werden layoutgetreu aufbereitet: die Seiten entsprechen weitgehend dem Original, lediglich die Schrift wurde durch Arial ersetzt und offensichtliche Schreibfehler ausgemerzt. Die Konvertierung erfolgte mit OmniPage 9; es wurde nur Plain Text exportiert und dieser in MS Word neu layoutet. Die Bilder in den Dokumenten stammen auch von Omnipage. Anschließend wurde mittels PDF-Printer eine PDF-Datei erzeugt. | 
  
-|   |   |   |+:!: In Andrew Lynchs N8VEM-Projekt gibt es ebenfalls eine Nutzung einer SD-Karte im CPM incl Unterlagen, das Juha SD Interface (s.o.).
  
  • z9001/cpm/sdcard.txt
  • Zuletzt geändert: 2010/07/22 22:00
  • (Externe Bearbeitung)