Hallo!
Vor ein paar Tagen lief mir eine besonders schöne Platine zu: ein M68332-Evaluation-Kit von Motorola aus dem Jahr 1989. Das war wohl die erste Motorola-Embedded-CPU aus der 68k-Reihe. Das Kit besteht aus einem Base Board mit Spannungsversorgung, Sockeln für nachrüstbare SRAMs (2* 32kB) und EPROMs (2* 32kB/64kB), einem Sockel für eine 6888x-FPU, Adapter für Oszi oder Logic Analyzer sowie den Buchsen für die Seriellschnittstellen. Das steckbare CPU-Modul enthält lediglich diese sowie 64kB RAM und 64kB EPROM. Letzteres ist leider eingelötet und enthält die typische Motorola-Basis-Software MxxxBug, hier also M332Bug.
Doku findet sich auf der Web-Seite von Motorola Freescale NXP, nur leider die für eine spätere Version mit anderen Steckbrücken sowie anderer Address Map. Aber so was kann einen 68k-Archäologen fast nicht erschüttern
Diese Platine soll sich nach dem Einschalten mit 9600Baud und 8N1 melden. Das Problem: sie macht das vielleicht. Mein Exemplar läßt sich zunächst etwas bitten. Mehrere manuelle Resets sind nötig, bis seriell was rauskommt. Und das ist nicht das, was ich erwarte, denn die Seriellgeschwindigkeit ist zufallsgetrieben. Beim ersten Anlauf kam nach dem 4. oder 5. Reset der lesbare Text, aber mit 4800Baud. Nach dem nächsten Reset/Einschalten kamen nur noch Hiroglyphen. Ich versuchte es mit zwei Rechnern, drei unterschiedlichen seriellen Schnittstellen und mit allen verfügbaren Seriellgeschwindigkeiten, nur las ich nie wieder was Brauchbares. Ein ähnliches Problem hat übrigens ein Teil meiner MVME177, also 68060 und nur die mit 60MHz und nicht die mit 50MHz. Ob das Problem dieselbe Ursache hat, weiß ich noch nicht.
Hier beim 68332 ergab sich für mich der Verdacht, daß es eine Temperaturabhängigkeit geben könnte. Weil gerade kein Kältespray vorhanden war, wanderte die ganze Platine für 1Stunde in den Kühlschrank zwischen den Käse und das Joghurt. Et voila, während der ersten 30Sekunden nach dem Einschalten kam gar nichts serielles heraus, aber dann mit 9600Baud und das richtige. Weitere 30Sekunden später kamen nach dem nächsten Reset/Einschalten wieder nur Hiroglyphen, d.h. die Seriellgeschwindigkeit stimmte nicht mehr und war auf einen untypischen Wert verbogen.
Nach etlichen Minuten nicht erfolgreicher Versuche besuchte die Platine nochmals den Kühlschrank. Danach brauchte die Platine erneut ein paar Anläufe, bis die Bootmeldung mit 9600Baud erschien. Nur diesmal habe ich auf weitere Neustarts verzichtet und ein paar wichtige Kleinigkeiten erledigt, z.B. Übertragung der EPROM- und RAM-Inhalte via S-Records auf den Wirtsrechner, damit ich das unabhängig von der zickigen Hardware anschauen kann. Einmal "eingerastet" läuft das Board.
Annahme: die Takterzeugung sowie die Einstellung der Seriellgeschwindigkeit ist beim 68332 etwas "merkwürdig". Der CPU-Kern läuft zwar mit rund 16 oder 20MHz, aber der Takt kommt aus einem externen 32kHz-Quarz und einer internen PLL. Der Serielltakt kann völlig frei eingestellt werden, d.h. besonders gerne falsch und mit mehr als der für V.24 zulässigen 3% Abweichung.
Was passiert dort? Kennt jemand die Fiesheiten des 68332-Chips? Oder kennt jemand die Fallen der M332Bug-Software? Der gesamte Aufbau ist ein Evaluation Board, d.h. da haben sich die Entwickler besonders viel Mühe gegeben eine zuverlässige Lösung zu bauen, denn das Board war Werbung für den Chip.
Wenn ich die Hardware betrachte, sehe ich ausschließlich kleine keramische Kondensatoren, kein Tantal und insbesondere keinen Elko. Also dürfte in diesem Bereich kein Verschleiß zu erwarten sein. Ich erkenne den 32,768kHz-Quarz, der die PLL "antreibt". Kann der temperaturabhängig verschleißen? Zwischendrin sind natürlich etliche SMD-Widerstände, auch im Bereich um den Quarz. Könnten die derart temperaturabhängig verschleißen, daß der Quarz erst gar nicht, dann mit falscher Frequenz anläuft? Oder kann der Quarz im laufenden Betrieb mit leicht(!) steigender Temperatur seine Frequenz ändern?
Hier
https://www.nxp.com/docs/en/ap…on-note/M68331_332TUT.pdf
findet sich ab Seite 8 interessanter Text, der hier eine Rolle spielen könnte. Ich kann's nur nicht interpretieren. Dieses Dokument entstand mit den Erfahrungen der Platinengeneration, die vor mir liegt. Vielleicht steht auf Seite 48 unter 5.2.2.1 und 5.2.3 im Prinzip mein Fall. Nur gab's bei Motorola seinerzeit noch keine Langzeiterfahrung über Jahrzehnte.
Letzte Beobachtung nach etlichen Stunden Dauerbetrieb ohne Neustart oder Ausschalten: es läuft mit 9600Baud. Sogar ein Reset ändert nichts daran. Aber ein kurzes Aus- und Einschalten bringt die Takterzeugung aus dem Tritt. Also scheint es an einem Phänomen zu liegen, das einmalig nach dem Einschalten vorkommt.
Aus "ganz tief unten drin in den Registern" vom 68332-Chip: wenn die Seriellgeschwindigkeit mit 9600Baud funktioniert, sehe ich im Baud Rate Register den Wert, der für die 16,78MHz-CPU-Variante vorgesehen ist. D.h. ich habe nicht den 20,97MHz-Chip vor mir. Blöd ist, daß ich diesen Wert nicht nachschauen kann, wenn er vermutlich falsch ist.
Gibt's Ideen? Soll ich zuerst den SMD-Quarz tauschen?
Gruß, Ralf