Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
z9001:erweiterungen:sdcard2 [2024/12/05 09:50] – [Downloads] volkerpz9001:erweiterungen:sdcard2 [2025/02/25 13:58] (aktuell) – [Downloads] volkerp
Zeile 1: Zeile 1:
-====== SD-Karte mit AVR ====== +====== SD-Modul mit AVR ====== 
  
 **SD-Karte am Z9001 - die Lösung von Kingstener 2012** **SD-Karte am Z9001 - die Lösung von Kingstener 2012**
 +
 +**neu 2025: SD-OS**
  
 Dieses kleine Zusatzgerät erlaubt das Laden und Speichern auf SD-Karte. Es sind keine Änderungen am Z9001 nötig! Dieses kleine Zusatzgerät erlaubt das Laden und Speichern auf SD-Karte. Es sind keine Änderungen am Z9001 nötig!
  
-{{:z9001:erweiterungen:msdkc87-g.jpg?0x200|}}{{:z9001:erweiterungen:msd2kc87neu.jpg?0x200|}}\\ Version mit Micro-SD-Card und ATMega328p, links mit Gehäuse (Bilder: Kingstener)+{{:z9001:erweiterungen:sd-module4.jpg?0x200|}}{{:z9001:erweiterungen:sd-module3.jpg?0x200|}}{{:z9001:erweiterungen:msd2kc87neu.jpg?0x200|}}\\ 2024er Version mit Micro-SD-Card und ATMega328p, rechts Version 2013 (re.Bild + Video: Kingstener)
  
 {{:z9001:erweiterungen:sd_tapecon.jpg?200|}}\\ Anschluss Tape-Eingang {{:z9001:erweiterungen:sd_tapecon.jpg?200|}}\\ Anschluss Tape-Eingang
Zeile 13: Zeile 15:
 Von Kingstener habe ich ein fertig aufgebautes SD-CARD-Interface für den Z9001 bekommen.  Von Kingstener habe ich ein fertig aufgebautes SD-CARD-Interface für den Z9001 bekommen. 
  
-Benötigt wird i.W. nur ein Mikrocontroller ATMEGA32 und eine SD-CARD-Fassung (s. Bild). Die Hardware wird am User-Port und anstelle des Kassettenrecorders am Tape-Eingang angeschlossen und fungiert als digitaler Kassettenrecorder. Am Z9001 muss nichts verändert werden! Nach RESET wird automatisch ein kleines Terminalprogramm an den Tape-Eingang gesendet, was auf dem Z9001 gestartet wird und die weitere Kommunikation mit der SD-Karte über den USER-Port übernimmt. Das ganze ist wirklich recht schnell und funktioniert sehr gut! +Benötigt wird i.W. nur ein Mikrocontroller ATMEGA32 und eine SD-CARD-Fassung (s. Bild). Die Hardware wird am User-Port und anstelle des Kassettenrecorders am Tape-Eingang angeschlossen und fungiert als digitaler Kassettenrecorder. Am Z9001 muss nichts verändert werden! Nach RESET wird automatisch ein kleines Terminalprogramm an den Tape-Eingang gesendet, was auf dem Z9001 gestartet wird und die weitere Kommunikation mit der SD-Karte über den USER-Port übernimmt. Im Video ist der Startvorgang bis hin zum Start eines BASIC-Programms zu sehen: 
  
-**Das Termninalprogramm SDX**+{{ :z9001:erweiterungen:sd-modul-87.mp4 |}}
  
-Das Terminalprogramm ist nur wenige Bytes groß. Die ganze Funktionalität steckt im Mikrocontroller. 
- 
-{{z9001:sdcard1.jpg?300}} {{z9001:sdcard3.jpg?300}}\\ links: Kommando-Übersicht, rechts: Verzeichniswechsel, Directory listen, Programm laden 
  
 ===== Downloads ===== ===== Downloads =====
  
- +  * {{:z9001:erweiterungen:sd2kc.zip|}} Software 2008 
-  * {{:z9001:erweiterungen:sd2kc.zip|}} Software +  * {{z9001:plaenesd2kc.zip|}} Schaltung 2008, siehe auch unten!
-  * {{z9001:plaenesd2kc.zip|}} Schaltung, siehe auch unten!+
  
   * {{ :z9001:erweiterungen:msd2kc87_ki_2013.zip |}} komplette Unterlagen von kingstener 2013, ehem. http://www.kingsteners.homepage.t-online.de/, Seite ist seit 2023 nicht mehr online.   * {{ :z9001:erweiterungen:msd2kc87_ki_2013.zip |}} komplette Unterlagen von kingstener 2013, ehem. http://www.kingsteners.homepage.t-online.de/, Seite ist seit 2023 nicht mehr online.
-  * {{ :z9001:erweiterungen:msd2kc87_nano.zip |}} orig. von kingstener Arduino Nano -Anpassung+  * {{ :z9001:erweiterungen:msd2kc87_nano.zip |}} 2024 orig. von kingstenerArduino Nano-Anpassung
  
 +2025: SD-OS
 +  * {{ :z9001:software:sd-os.pdf |}} Handbuch SD-OS
 +  * {{ :z9001:erweiterungen:sdcard.zip |}} Minimale Dateien für SD-Karte, Stand 25.2.2025
 +  * {{ :z9001:software:usb-os-bin.zip |}} USB-OS + SD-OS + Softwarepaket für USB-Stick bzw. SD-Karte, Quellen s. [[z9001:software:usb|]]
 +  * {{ :z9001:erweiterungen:sd2kc_15.zip |}} SD-Modul Unterlagen
  
-===== Prinzipbild =====+**Flashen der Firmware: Zum Update der Firmware aus sdcard.zip muss eine SD-Karte mit FAT16 formatiert sein. Am einfachsten geht das mit dem SD-Formatter (https://www.sdcard.org/downloads/formatter/). Auf die SD-Karte muss die Datei SD2KC.BIN geschrieben werden. Nach Reset am Modul muss die LED 1..2 Sekunden lang flackern, wenn nicht, hat das Update nicht funktioniert. Dann sollte man eine andere SD-Karte ausprobieren!** 
 +===== Das Terminalprogramm SDX ===== 
 + 
 +Das Terminalprogramm ist nur wenige Bytes groß. Die ganze Funktionalität steckt im Mikrocontroller. 
 + 
 +{{z9001:sdcard1.jpg?300}} {{z9001:sdcard3.jpg?300}}\\ links: Kommando-Übersicht, rechts: Verzeichniswechsel, Directory listen, Programm laden
  
 Das Terminal-Programm SDX steuert die Kommunikation zwischen SD-Modul und Computer. Das Terminal-Programm SDX steuert die Kommunikation zwischen SD-Modul und Computer.
  
 +Die SD-Karte (keine SDHC!) muss FAT12/FAT16-formatiert sein. Auf ihr sind die Programme „load87“, ggf. "SD2KC.BIN" und beliebige Z9001-Programme im TAP-Format abgelegt. Unterverzeichnisse sind natürlich möglich. Das Modul wird am Userport und am Kassettenrekorderport angeschlossen.
  
-Nach Einschalten (oder bei Reset des SD-Moduls) tippt man am Computer SDX + Enter. Es erscheint "tape load". Man drückt erneut Enter und das Programm wird geladen, indem die Datei "load87" über den tape-Anschluss als Audiosignal gesendet wird. +Nach Einschalten des Z9001 erhält auch das Modul Spannung vom Z9001 und es wird das Programm „load87“ von der SD-Karte an den Kassettenanschluss ausgegeben.  
-Das Terminalprogramm SDX startet nach Ende des Ladeprozesses automatisch. Das SD-Modul meldet sich mit "SD>" und ist bereit für ein Kommando.+Am Z9001 / KC87 tippt man "SDX+ Enter. Es erscheint "tape load". Man drückt erneut Enter und das Programm wird geladen, indem die Datei "load87" über den tape-Anschluss als Audiosignal gesendet wird. Ist man zu langsam und es erscheint „bad record“, muss man am Modul Reset drücken und es halt nochmal versuchen.
  
-<ditaa> +Das Programm SDX - das Terminalprogramm startet automatisch. Das SD-Modul meldet sich mit "SD>" und ist bereit für ein Kommando. Mit H gibt es eine Hilfe, mit L programmname wird ein Programm eingelesen. So einfach ist das!
-                              +-----------+             +
-                              | SDX       |             +
-                     +--------| Terminal- |             +
-                            | Programm  |             +
-  +------------------+---+    +-----------+             +
-  |                      |                              +
-  |      KC87            |        +-----------+   +
-  |                 tape |<-------------|             +
-  |            user-port |<------------>SD-Modul    +
-  +----------------------+              |             +
-                                        +-----------+   +
-                                                        +
-</ditaa>+
  
-===== Bedienung =====+:!: Im Megamodul ist die Terminalsoftware SDX mit enthalten. Damit kann bei Nutzung des Megamoduls das Audiokabel auch komplett entfallen. Auch das Programm „load87“ muss nicht auf der SD-Karte vorhanden sein. 
  
-Die SD-Karte ist FAT32-formatiertAuf ihr sind die Programme "load87" und beliebige Z9001-Programme im TAP-Format abgelegtUnterverzeichnisse sind natürlich möglich.+<a2s> 
 +                              .-----------. 
 +                              | SDX       | 
 +                     .--------| Terminal- | 
 +                            | Programm 
 +  .------------------+---   '-----------' 
 +  |                      | 
 +  |      KC87            |              .-----------. 
 +  |                 tape |<-------------|           | 
 +  |            user-port |<------------>| SD-Modul 
 +  '----------------------'              |           | 
 +                                        '-----------'
  
-Das Modul wird am Userport und am Kassettenrekorderport angeschlossen.+</a2s>
  
-Nach Einschalten des Z9001 erhält auch das Modul Spannung vom Z9001 und es wird das Programm "load87" von der SD-Karte an den Kassettenanschluss ausgegeben. Wenn man schnell ist, kann man beim Booten am Z9001 noch "SDX" <ENTER> eingeben. Ist man zu langsam und es erscheint "bad record", muss man am Modul reset drücken und es halt nochmal versuchen.+===== SD-OS =====
  
-Das Programm SDX - das Terminalprogramm - startet automatischMit H gibt es eine Hilfe, mit L programmname wird ein Programm eingelesenSo einfach ist das!+Januar 2025 habe ich neue Software programmiert.\\ 
 +Das System SD2KC.BIN Version 1.5 oder neuer ist voll kompatibel zu älteren 
 +Versionen. Ein SD-Modul mit dieser Firmware kann weiterhin mit SDX genutzt 
 +werden.
  
-:!: Im [[z9001:module_sonstige:megamodul|]] ist die Terminalsoftware **SDX** mit enthalten. Damit kann bei Nutzung des Megamoduls das Audiokabel auch komplett entfallen.+{{:z9001:erweiterungen:sdos-laden.jpg?400|}}
  
-===== Schaltung =====+Neu sind: 
 +  * Unterstützung des KCC-Formats anstelle des TAP-Formats\\ TAP-Dateien werden dennoch weiterhin unterstützt! Sie können mit L geladen und mit T gespeichert werden. 
 +  * Auch die Load-Datei "load87" kann nun im KCC-Format abgelegt werden 
 +  * Zusätzliche Kommandos zur Fremdsteuerung. Codes >0xF0 werden speziell behandelt\\ s. Beschreibung SD.txt 
 +   
 +Mit dieser neuen Firmware und der KC-seitigen Software SD-OS ist ein nativer 
 +Betrieb des KC möglich, bei dem die normalen Load- und Save-Routinen der einzelnen 
 +Programme genutzt werden. Ein alternatives Laden/Speichern via Terminalprogramm 
 +SDX ist nicht nötig. 
 + 
 +siehe {{ :z9001:software:sd-os.pdf |}} Handbuch SD-OS\\ 
 +vgl. auch [[z9001:software:usb|]]. Die Codebasis für beide Systemerweiterungen und die Anwendungsprogramme sind dieselben! 
 + 
 +Tipp: Nach Reset am KC gleich auch Reset am Modul drücken. Dann wird am KC eine Versionsnummer der Firmware ausgegeben. 
 + 
 +===== Hardware =====
  
 Kingsteners Lösung baut auf dem SD-Interface von Arne Fitzenreiter http://www.fitzenreiter.de/kc85/kc85cf.htm auf; diese wiederum basiert auf dem SD-AVR-FAT-Treibern von Holger Klabunde http://www.holger-klabunde.de/avr/avrboard.htm#cf. Kingsteners Lösung baut auf dem SD-Interface von Arne Fitzenreiter http://www.fitzenreiter.de/kc85/kc85cf.htm auf; diese wiederum basiert auf dem SD-AVR-FAT-Treibern von Holger Klabunde http://www.holger-klabunde.de/avr/avrboard.htm#cf.
  
-Die Schaltungsunterlagen von Kingstener {{z9001:plaenesd2kc.zip|}} sind unverändertWird das Modul nur für den z9001 genutztkann fast alles oberhalb des Mikrocontrollers entfallen (sStromlaufplan). Dann ist ein kompakterer Aufbau möglich.+Erste Versionen des Moduls von 2008 basieren auf einem ATMEGA32, Kingstener hat das Modul dann entfrachtet und kleine Platinen entworfen, die direkt an die Seite des KCs angesteckt werden können. Es gab Module für normale SD-Karten und mit Micro-SD-Slot. 
 + 
 +{{:z9001:erweiterungen:sd_z9001.gif?300|}}\\ abgespeckte Version 2008 für ATMEGA32Die ursprüngliche Version für den KC85/3 hat noch ein LCD-Display. 
 + 
 +{{:z9001:erweiterungen:sd-module1.jpg?600|}}\\ 3 Versionen: normale SD-KarteMicro-SD 2013, Micro-SD 2024 
 + 
 +{{:z9001:erweiterungen:sd-module2.jpg?600|}}\\ Leiterplatte, Gehäuseschale, Kabel Version 2024 
 + 
 +===== Bootloader ===== 
 + 
 +Der AVR-Mikrocontroller enthält einen 2K großen Bootloader.
  
-{{:z9001:erweiterungen:sd_z9001.gif?300|}}+Befindet sich auf der SD-Karte eine Datei SD2KC.BIN mit neuerer Version als im Controller gespeichert, so kopiert der Bootloader diese Datei in den internen Flash als Firmware (= Betriebssystem) für sich und startet dieses. Damit ist auf einfachste Weise ein Update der Firmware möglich. Beim flashen blinkt dann normalerweise die LED
  
-===== Programmierung des Controllers =====+Der hier verwendete Bootloader stammt aus dem mikrocontroller-Forum {{http://www.mikrocontroller.net/articles/MMC/SD_Bootloader_für_AT_Mega}}, sd2iec_Bootloader_2008-02-23.zip. Er wurde minimal angepasst (main.c, makefile).
  
-Initial muss der Controller den Bootloader (bootloader-0x7838434B.hex) einprogrammiert bekommen. Das geht mit einem externen AVR-Programmer oder einer selbstgebauten Lösung, wie etwa unter [[elektronik:usbport|]] beschrieben. Wichtig ist das korrekte Setzen der Fuses: +Initial muss der Controller deshalb den Bootloader (bootloader-0x7838434B.hex) einprogrammiert bekommen. Das geht mit einem externen AVR-Programmer oder einer selbstgebauten Lösung, wie etwa unter [[elektronik:usbport|]] beschrieben. Wichtig ist das korrekte Setzen der Fuses: 
  
 **Fuses**: bootsz1, bootrst, keine crc Kontrolle((manche Brennprogramme bringen durch das nachträgliche Eintragen der CRC einen CRC-Fehler in Bin-File hinein. Wir brauchen aber genau die mit CRCGEN erzeugte CRC oder 00 00)) **Fuses**: bootsz1, bootrst, keine crc Kontrolle((manche Brennprogramme bringen durch das nachträgliche Eintragen der CRC einen CRC-Fehler in Bin-File hinein. Wir brauchen aber genau die mit CRCGEN erzeugte CRC oder 00 00))
Zeile 93: Zeile 128:
 Der Atmega-Microcontroller kann auch später im fertigen Gerät über das SPI-Interface programmiert werden! Der Atmega-Microcontroller kann auch später im fertigen Gerät über das SPI-Interface programmiert werden!
  
-===== Der Bootloader ===== 
  
-Der verwendete Bootloader stammt aus dem mikrocontroller-Forum {{http://www.mikrocontroller.net/articles/MMC/SD_Bootloader_für_AT_Mega}}, sd2iec_Bootloader_2008-02-23.zip. Er wurde minimal angepasst (main.c, makefile).+===== Die SD-Karte =====
  
-Befindet sich auf der SD-Karte eine Datei SD2KC.BIN mit neuerer Version als im Controller gespeichert, so kopiert der Bootloader diese Datei in den internen Flash als Firmware (= Betriebssystem) für sich und startet diesesDamit ist auf einfachste Weise ein Update der Firmware möglich. Beim flashen blinkt dann die LED (normalerweise)+Als SD-Karten kommen normale MMC oder SD-Karten mit max. 2GB Größe in BetrachtGrößere SDHC-Karten werden vom Bootloader nicht unterstützt. 
 +Es reichen bereits Karten mit 16 MB !
  
-:!: Die aktuelle Versionsnummer steckt im Quellfile KCSCF.C (Zeile 43, %%//Kennung für den Bootloader...%%)kann aber auch nachträglich im BIN-File gepatcht werden. +Der Bootlader verarbeitet nur FAT12 oder FAT16Sicher sind aus Erfahrung Karten bis 512MB, darüber hinaus funktionieren verschiedene Karten bis etwa 4GB nur noch teilweise mit oder ohne Tricks oder gar nichtDas SD2KC V1.2 dagegen verarbeitet FAT12/16/32getestet mit diversen Micro-SD, SD und SDHC Karten bis 16GB.
- +
-===== Die SD-Karte =====+
  
-Auf die Mit FAT16 formatierte SD-Karte müssen die beiden Programme +Auf die mit FATxx formatierte SD-Karte müssen die beiden Programme 
   * load87   * load87
   * SD2KC.BIN   * SD2KC.BIN
 ins Root-Verzeichnis. ins Root-Verzeichnis.
  
-Der Bootloader programmiert den AVR beim Start mit SD2KC.BIN, wenn die +Der Bootloader programmiert den AVR beim Start mit SD2KC.BIN, wenn die Version auf der SD-Karte neuer ist als die im AVR befindliche.
-Version auf der SD-Karte neuer ist als die im AVR befindliche.+
  
-Z9001-Programme müssen in TAP-Format vorliegen. Sie können beliebig +Z9001-Programme müssen in TAP-Format vorliegen. Sie können beliebig in Unterverzeichnissen der SD-Karte liegen.
-in Unterverzeichnissen der SD-Karte liegen+
- +
-:!: Da nur 8+3-(DOS)-Filenamen angezeigt werden, sollte man die TAP-Dateien +
-entsprechend umbenennen. Bei längeren Dateinamen wird sonst die Kurzform mit ~ im Namen angzeigt. Das ist problematisch, da der Z9001 keine Tilde auf der Tastatur hat und man so den Dateinamen nicht eingeben kann. Ein kleines Perl-Programm **tap_rename.pl** benennt die TAP-Dateien um in 8.3-Dateinamen: Es wird der originale KC-Programmname aus der TAP-Datei geholt. Bei BASIC wird der Typ weggelassen. +
- +
-Zum Update über SD-Karte nochmals der Hinweis, der Bootlader verarbeitet nur FAT12 oder FAT16! Sicher sind aus Erfahrung Karten bis 512MB, darüber hinaus funktionieren verschiedene Karten bis etwa 4GB nur noch teilweise mit oder ohne Tricks oder gar nicht. Das SD-OS V1.2 dagegen verarbeitet FAT12/16/32, getestet mit diversen Micro-SD, SD und SDHC Karten bis 16GB. +
- +
-===== Die Terminalsoftware ===== +
- +
- +
-Die Verbindung vom Atmega-Port zum User-PIO-Port enthält 1KOhm Schutzwiderstände, um bei der ständigen Umprogrammierung der PIO zwischen Ein-und Ausgabe Kollisionen mit dem Atmega zu vermeiden.  +
- +
-Das File load87 wird immer nach dem Start des Modules automatisch auf der SD-Karte gesucht und als Audio-Tape-File über den Tape-Eingang des KC87/Z9001 eingelesen, nachdem es da mit dem Kommando SDX zum Laden angefordert wurde. Es enthält gleich das komplette Terminalprogramm für den KC87/Z9001. Die weitere Kommunikation erfolgt dann nur noch über den User-PIO-Port. Ein Duplexbetrieb wie bei der V.24-Variante am KC85/2..5 ist hier leider nicht möglich. +
- +
-VP 2012: Ich habe erstmal eine relokatible Version von SDX erstellt, die sich ans vorhandene RAM-Ende stellt. Damit muß man nicht mit verschiedenen Versionen arbeiten.\\ +
-Ich will die Software noch ein wenig ausbauen, mit dem Ziel, dass die Systemfunktionen zur Kassettenarbeit komplett auf die SD-Card umgebogen werden, so dass von jedem Programm aus direkt und schnell auf SD-Karte geschrieben und gelesen werden kann.+
  
 +:!: Da nur 8+3-(DOS)-Filenamen angezeigt werden, sollte man die TAP-Dateien entsprechend umbenennen. Bei längeren Dateinamen wird sonst die Kurzform mit ~ im Namen angezeigt. Da der Z9001 keine Tilde auf der Tastatur hat, dient ^ als Tilden-Ersatz bei der Eingabe.\\
 +Statt der Endung TAP kann auch die originale Z9001-Dateityp genutzt werden. Ein kleines Perl-Programm **tap_rename.pl** benennt die TAP-Dateien um in 8.3-Dateinamen: Es wird der originale KC-Programmname aus der TAP-Datei geholt. Bei BASIC wird der Typ weggelassen.
  
 ===== SD2KC ===== ===== SD2KC =====
Zeile 182: Zeile 200:
 ===== Arduino Nano ===== ===== Arduino Nano =====
  
-2024 hat Kingstener die Software für den Arduino Nano angepasst. Damit ist ein leichter Nachbau möglich:+2024 hat Kingstener die Software für den Arduino Nano angepasst. Damit ist ein Nachbau auch möglich:
  
 {{:z9001:erweiterungen:sdcard_kc87_arduino_1.jpg?400|}} {{:z9001:erweiterungen:sdcard_kc87_arduino_2.jpg?400|}} {{:z9001:erweiterungen:sdcard_kc87_arduino_1.jpg?400|}} {{:z9001:erweiterungen:sdcard_kc87_arduino_2.jpg?400|}}
Zeile 190: Zeile 208:
 https://www.robotrontechnik.de/html/forum/thwb/showtopic.php?threadid=6232 https://www.robotrontechnik.de/html/forum/thwb/showtopic.php?threadid=6232
  
 +===== Historie =====
 +
 +23.01.2025 erste offizielle Version des neuen SD2KC.BIN und SDOS
  
 +20.02.2025 neue SD2KC.BIN V1.5. Nach Laden eines Programms in BASIC hat CD nicht mehr funktioniert. Außerdem Fehler im Laden von TAP-Dateien (SDX) behoben (DL)
  • z9001/erweiterungen/sdcard2.1733392207.txt.gz
  • Zuletzt geändert: 2024/12/05 09:50
  • von volkerp