|
|
AVR CP/M(Artikel in Bearbeitung) Im Rahmen dieses kleinen Projektes entsteht ein CP/M System basierend auf einem ATmega88. Die Idee des ersten Software- und Hardwareentwurfes geht auf Sprite_tm: http://spritesmods.com/?art=avrcpm zurück. Diese Idee wurde von Peter aufgegriffen und im Forumsbeitrag: http://www.mikrocontroller.net/topic/177481#new zur Diskussion gestellt. Das Ergebnis seht ihr nun hier.
[Bearbeiten] EinführungDas Projekt realisiert mittels einer Minimalhardware, bestehend aus einem ATmega88, einem 256kx4 DRam und einer SD Karte, einen 8080 Emulator mit zugehörigem CP/M System. Die Ein- und Ausgabe erfolgt derzeit über ein serielles Terminal. [Bearbeiten] HardwareDie Hardwarevariante 1 (Download der Doku) besteht derzeit aus den folgenden Komponenten:
Schaltplan und Layout der Variante 1 als EAGLE-File
Schaltplan und Layout der Variante 2 als EAGLE-File
Schaltplan und Layout der Variante 3 als EAGLE-File
Folgende Bausteine laufen ggf. nicht:
[Bearbeiten] CP/MCP/M ist ein Betriebssystemen, das ab 1974 von Digital Research Inc. unter Gary Kildall für die Prozessoren 8080 von Intel und den Z80 von Zilog entwickelt wurde. CP/M war neben Unix das erste plattformunabhängige Betriebssystem. [Bearbeiten] SystemstartDas Betriebssystem CP/M ist ein diskettenorientiertes System und benötigt deshalb eine Diskette oder Festplatte. Zunächst wird das CP/M von der Systemdiskette in den Arbeitsspeicher gebracht (Bootvorgang oder Kaltstart). Der erfolgreiche Bootvorgang wird durch eine Bildschirmmeldung und der Anzeige des System-Prompts ( A> ) mitgeteilt. Eine genaue Beschreibung sowie die Speicherbelegung von CP/M findet ihr hier. [Bearbeiten] WarmstartDer Warmstart wird durch die Tastatureingabe "Control C" ausgelöst. Das ist u.a. nach einem Diskettenwechsel notwendig. Durch den Austausch einer Diskette wird automatisch ein Schreibschutz aktiviert, so daß ein Versuch auf die Diskette zu schreiben, zu einer Fehlermeldung führt. [Bearbeiten] Bestandteile von CP/MDas Betriebssystem CP/M besteht aus dem eigentlichen System, das sich während der Ausführung im Hauptspeicher befindet, und einer Reihe von Hilfsprogrammen, die zusammen mit dem Betriebssystem auf der Systemdiskette befinden. Das Betriebssystem besteht aus drei Teilen:
Ständig residente Befehle wie DIR, ERA, REN, TYPE, SAVE und USER sind direkt im CCP enthaltenen. [Bearbeiten] SoftwareDie Software besteht aus zwei wesentlichen Komplexen. Der erste Teil betrifft die Z80|8080 spezifische Software für das CP/M System. Der zweite Teil betrifft die Z80|8080 Emulation auf dem AVR. Die aktuellen Projektfiles liegen hier auf dem SVN Server. [Bearbeiten] 8080 / Z80 Software
Obige 8080/Z80 Assemblerdateien lassen sich unter Linux hiermit: http://www.nongnu.org/z80asm/ übersetzen. Unix-Tools für Windows, u.a. DD findet ihr hier: http://sourceforge.net/projects/unxutils/files/unxutils/current/UnxUtils.zip/download Hier ist die aktuelle Softwarevariante zum Erstellen einer eigenen Bootdisk. Dazu muß zunächst erst ein diskimage erzeugt werden, welches später auf die SD Karte geschrieben werden kann. Der entsprechende Aufruf über die cpmtools sieht so aus: mkfs.cpm.exe -f avrcpm -b cpm.bin -L test diskimage Das diskimage kann man dann ebenfalls mit den cpmtools weiter bearbeiten. Aufrufbeispiele: cpmls -f avrcpm diskimage - zeigt Inhaltsverzeichnis an cpmcp -f avrcpm diskimage datei.com 0:datei.com - kopiert datei.com in das image cpmcp -f avrcpm diskimage 0:datei.com datei.com - kopiert datei.com aus dem image cpmrm -f avrcpm datei.com - loescht datei.com aus dem image Die cpmtools gibt es hier: http://www.moria.de/~michael/cpmtools/ Das so erzeugete diskimage wird ROH (ohne Filesystem) mit: dd if=diskimage of=<sd card identifier> bs=512 auf eine SD Karte geschrieben. Achtung! Alle anderen Dateien gehen dabei verloren! Die aktuelle Version unterstützt ebenfalls bis zu 4 primäre CP/M = Typ 52 Partitionen. Diese lassen sich mit einer Linux Live-CD und dem Tool 'cfdisk' anlegen. Da z.Z die virtuellen Disketten nur ca. 250kb 'groß' sind, reicht es entsprechend große Partitionen azulegen (Ich habe trotzdem 8MB große angelegt.. für später). Wichtig dabei ist es den Typ auf 52 = CP/M zu setzen.. und schreiben/speichern nicht vergessen. Die einzelnen Partitionen werden dann ohne zu formattieren wieder mittels 'dd if=diskimage of=[sd card partition] bs=512' gefüllt. Wird also die SD Karte unter Linux z.B als sdh angezeigt, so ist die erste Partition dann sdh1, die zweite sdh2 etc. of= ist dann also /dev/sdh1 /2 /3.. Ich habe übrigens die erste Partition als FAT eingerichtet und entsprechend formattiert. So kann man den großen Bereich weiter unter Windows nutzen. Und dann nur 3 CP/M Partitionen am Ende des Speicherbereiches angelegt..
diskdef avrcpm seclen 128 tracks 77 sectrk 26 blocksize 1024 maxdir 64 skew 1 boottrk 2 os p2dos end [Bearbeiten] AVR SoftwareZum Soforttest gibt hier eine AVR Variante avrcpm.hex für die folgende Testumgebung:
Die aktuelle Software findet ihr immer hier: http://cloudbase.homelinux.net/viewvc/avr-cpm/ [Bearbeiten] BootloaderMCS Bootloader Um bei Programmänderungen den Controller nicht jedes mal über die ISP-Schnittstelle neu programmieren zu müssen, kann der Controller der AVR CM/M Hardware einmalig mit einem Bootloader versehen werden. Damit ist es möglich den Controller über die V24/USB Schnittstelle zu flashen. Prinzipiell kann jeder AVR geeignete Bootloader verwendet werden. Die folgende Beschreibung bezieht sich auf den MCS Bootloader. 1. Einrichten des Bootloaders Der Bootloader läst sich einfach unter BASCOM einrichten. Dazu muss zunächst der Quelltext Bootloader.bas auf die AVR CP/M Hardware angepasst werden.
Im nächsten Schritt ist der Controller über die ISP-Schnittstelle mit dem Bootloader zu flashen. Dazu ist der Bootloader auf 1024 Word einzustellen und zu aktivieren. Achtung! Wer später jedes Byte braucht sollte keinen Bootloader benutzen, denn es fehlen ja später die 1Kbyte.
Das flashen des so programmierten Controllers kann nun mit einem speziellen Bootloader Tool über die V24/USB-Schnittstelle erfolgen. Das Tool kann hier bezogen werden. Unter der Programmoption „Options“ wird zunächst die COM-Schnittstelle der AVR CP/M Hardware eingestellt. Weiterhin die verwendete Baurrate (115200). Anschließend kann unter der Option „File“ das zu flashende Binärfile geladen und mit dem Befehl „Upload“ auf die Hardware übertragen werden. Ein erfolgreicher Upload wird mit dem „Finish code : 0“ quittiert. [Bearbeiten] DownloadsZum ersten Test ist es oft sehr hilfreich ein fertiges Diskimage zu verwenden. So umschifft man zunächst alle Probleme sich ein bootfähiges CP/M- System selbst zu erstellen. Das gewünschte Image einfach auf eine SD-Card kopieren und los geht es. Hinweis: Jedes Imagefile sollte immer 256K groß sein.
[Bearbeiten] ToDo Liste- Break erkennen. - Notwendige und nützliche Tools auf PC als Paket zusammenstellen ("Entwicklungsumgebung") und insbesondere dokumentieren. Möglichst einheitlich für Linux und Windows. - SD-Kartentreiber verbessern. [Bearbeiten] Siehe auch[Bearbeiten] Zum Projekt:
[Bearbeiten] Rund um den 8080 Prozessor:
[Bearbeiten] Rund um den Z80 Prozessor:
[Bearbeiten] Rund um AVR Prozessoren:
[Bearbeiten] Rund um CP/M:
[Bearbeiten] Rund um MMC/SD-Karten:
[Bearbeiten] Rund um (VGA-)Terminals:
[Bearbeiten] Allgemeine Informationen zu Hard- und Software:
[Bearbeiten] Nachricht an den Autor:Der PMD-85 (tchech. Homecomputer der 80er Jahre) - Emulator auf AVR-Basis (http://pmd85.topindex.sk/) emuliert ebenfalls einen 8080-Prozessor. Vielleicht wäre dieses Projekt noch einen Blick wert? |