d3c Romloader


Grundlegendes

Der im d3c verwendete Mikroprozessosystem arbeitet vom Grundprinzip her in etwa so, wie vom PC gewohnt, allerdings nur im 'etwas' kleinerem Massstab.
Das d3c System besteht auch aus einem Mikroprozessor mit internem schnellen Arbeitsspeicher, vergleichbar dem Hauptspeicher im PC, der beim Ausschalten in beiden Fällen verloren geht. Beim PC haben wir es aber hier mit Speichergrössen von mindestens 128/256/512 oder mehr Megabyte (MB) zu tun, beim d3c lediglich mit 8 Kilobyte KB.
Der PC besitzt ein fest eingebautes Minibetriebssystem, das BIOS, dass beim Programmstart 'nachsieht', ob und welches Betriebssystem sich auf der hoffentlich angeschlossenen Festplatte befindet und dies dann gegeb. anfängt  von der Festplatte in den Arbeitsspeicher zu laden und dort zu starten.
Auch d3c funktioniert ähnlich, denn nachdem ein direkt im Prozessor befindliches Minibetriebssystem gestartet wurde, schaut dieses nach, ob sich nun statt der Festplatte ein angeschlossener Flashspeicher (genauer ein EEPROM) im System befindet und ob sich dort eine gültige Kennung in der ersten Speicherzelle befindet. Wenn dies beides der Fall ist, so werden die Daten aus dem Flashspeicher in den Arbeitsspeicher kopiert und dann die hoffentlich sinnvollen Daten als  Programm im Arbeitsspeicher interpretiert und dort gestartet.
Dabei wird allerdings nicht genauer überprüft, ob der Flashspeicher ein wirklich ablauffähiges Programm enthält und somit wird auch ein fehlerbehaftetes oder gänzlich defektes Programm kopiert und gestartet.

Ist jedoch kein Flashspeicher vorhanden oder ist die Kennung am Anfang des Speichers nicht gültig, so läuft das interne Minibetriebssystem weiter und etabliert auf der USB Schnittstelle eine USB-Verbindung.

Diese kann nun mit einem geeigneten Treiber  ezusb.sys  und einem Hilfsprogramm, dass sich dieses Treibers bedient auf einem PC angesprochen werden und somit indirekt auch der Prozessor im d3c.
Dies funktioniert dann auch völlig ohne gültiges Programm im Flashspeicher und stellt somit eine Möglichkeit dar wiederum in den Flashspeicher die gewünschte Betriebssoftware für d3c zu laden.

Der Weg dahin ist vielleicht etwas komplizierter oder mutet technischer an als der normale Updateweg über Midi und SysEx, hat aber natürlich den Vorteil, dass er praktisch immer funktioniert. Auch kann er, falls misslungen, beliebig oft solange wiederholt werden, bis alles geklappt hat.
In sofern kann es sich für den einen oder anderen Benutzer rentrieren sich auch damit vertraut zu machen.

Updaten der Betriebssoftware über den Prozessor USB Mode


Die Grundvorraussetzung ist erst einmal, es muss der Teil des Minibetriebssystems gestartet werden, der die USB-Schnittstelle initialisiert und für den Treiber der dann auf dem PC gestartetet wird vorbereitet.

Dazu gibt es zwei Möglichkeiten:

a) der Prozessor darf den Flashspeicher nicht als angeschlossen erkennen
oder
b) der Prozessor darf  keine gültige Kennung am Speicheranfang des erkannten Flashspeichers lesen.

Da der Flashspeicher fest mit dem Prozessor verbunden ist, muss dieser beim Einschalten für den Fall a) für kurze Zeit 'unsichtbar' gemacht werden.
Die eine Möglichkeit wäre es das Gehäuse zu öffnen und den Flashspeicher aus seiner IC-Fassung zu ziehen.
Die zweite Möglichkeit ist es den Flashspeicher kurzzeitig zu deaktivieren. Dazu muss der Schalter betätigt werden, der sich direkt hinter dem kleinen Loch auf der Geräterückseite über dem USB-Anschluss befindet. Dieser Resettaster muss also, während des Einschaltens gedrückt gehalten werden (mittels eines spitzen Gegenstandes), damit der Prozessor in den internen USB-Modus gelangt.

Dabei ist die USB-Verbindung zum Computer vorher schon hergestellt worden und aktiviert jetzt entweder den USB-Treiber im PC, wenn dieser bereits schon einmal installiert wurde oder beim ersten Mal wird der Installationsvorgang des Treibers gestartet.

Anschliessend steht die Verbindung und nun kann mittels des PC Programms  EzMr.EXE der Prozessor im d3c angesprochen werden.

Ab da gibt es auch wieder verschiedenen Wege / Methoden, wie man mit EzMr ein Update vornehmen kann.

Erstens wird der oben angeführte Fall b) vorbereitet.  Dazu muss die Kennung in der ersten Flashspeicherzelle gelöscht werden.
Daraufhin findet der Prozessor beim nächsten Einschalten zwar den Flashspeicher, kommt aber zu dem Schluss, das kein gültiges Programm enthalten ist.
Die Betriebssoftware kann dann mittels der EEPROM-Brennfunktion des Programms und der Datei d3c.iic vorgenommen werden.

Zweitens kann mit der Software EzMr auch im Falle a)  ( Betätigen des Resettasters über der USB Buchse beim Einschalten) der Flashspeicher beschrieben werden.
Da der Prozessor in diesem Fall ja kein EEPROM gefunden hat, kann dies anschliessend aber nicht mehr direkt von der d3c Betriebssoftware gebrannt werden.
(Der Prozessor geht ja davon aus, das keinFlashspeicher/ EEPROM vorhanden ist und unterbindet daher den Zugriff darauf, damit sich hier keine Fehlfunktionen ergeben.  Das das EEPROM nunmehr doch vorhanden ist - der Taster wurde ja losgelassen - davon bekommt er nichts mit).
Deshalb kann man diese Betriebsart nur dazu benutzen ein Programm direkt vom PC in den internen Arbeitsspeicher von d3c zu laden.
Ein solches Programm kann aber nun sehr wohl auf den Flashspeicher zugreifen und diesen programmieren.
Am einfachsten wird man jetzt die komplette d3c Betriebssoftware in den Arbeitsspeicher laden und nach automatischen Start derselben kann man nun ein erneutes 'normales' Update über Midi - SysEx - SYX/MID File versuchen.

Auch stellt dies eine Möglichkeit dar, eine neue Softwareversion auszutesten ohne die letzte noch im Flashspeicher befindliche Version zu ändern.
Denn nach Aus/einschalten wäre der Arbeitsspeicher ja wiederum gelöscht & es würde dann wieder die alte Version aus dem Flashspeicher geladen werden. 
Diese Variante macht natürlich nur Sinn, wenn man überhaupt die Möglickeit hat erfolgreich ein Update über SYX/MID durchführen zu können.

Wenden wir uns aber jetzt nochmals der Möglichkeit b) im Detail zu.
Dafür müssen 2 Bedingungen erfüllt sein:
Beim Einschalten darf nicht der Resettaster gedrückt sein (wir erinnern uns, anschliessend kann von EzMr kein EEPROM mehr angesprochen werden)  und im Flashspeicher muss die ersten Speicherzelle auf 'ungültig' gesetzt sein.
Dies erreichen wir leicht durch vornagegangene Vorgehensweise a) mit anschliessenden Ausführen eines kleinen Programmes,  welches diese Kennung überschreibt.
Dann kann d3c aus/eingeschaltet werden und man gelangt  automatisch in den Modus, bei dem das Minibetriebssystem den USB Treiber installiert und man  über EzMr die d3c Betriebssoftware direkt in den Flashspeicher (EEPROM) schreiben kann.
Bei Erfolg ist man bei anschliessenden Neustart endlich am Ziel, die Betriebssoftware d3c wird wieder gestartet , denn beim direkten Brennen des Flashspeichers mit der d3c Betriebssoftware wird auch die Kennung am Anfang des Speichers wieder auf gültig gesetzt.
Ansonsten existiert auch noch ein kleines Programm, dessen einzige Aufgabe es ist, diese erste Speicherzelle wieder auf 'gültig' zu setzen.
Letzte Änderung 18.04.06