(0 Abstimmungen)

Datenrettung mal anders - Wie ich die Kalibrierdaten
meines Tektronix 2465B sicherte

Was haben ein über 30 Jahre altes Oszilloskop, eine Lithiumbatterie, eine GPIB-Schnittstelle und mein erstes Python-Projekt gemeinsam? Mehr, als ich zunächst vermutet hätte. Ein Gespräch mit einem Amateurfunkkollegen brachte mich auf die Spur eines unscheinbaren Speicherbausteins, dessen Ausfall für mein Tektronix 2465B unangenehme Folgen haben könnte.

Ein unscheinbarer Speicherbaustein mit begrenzter Lebensdauer

Vor einiger Zeit erzählte mir ein Amateurfunkkollege, der ebenfalls ein Tektronix 2465B besitzt, von einer Besonderheit dieses Oszilloskops: Ein Teil der gerätespezifischen Daten wird in einem sogenannten Non-Volatile RAM (NVRAM) gespeichert. Dabei handelt es sich um einen batteriegepufferten SRAM-Baustein, häufig auch als Zero-Power-RAM bezeichnet.

Zu den gespeicherten Informationen gehören Kalibrierdaten, die bei der Erstkalibrierung ermittelt und bei späteren Justierungen aktualisiert werden können. Gerade diese Werte sind für den zuverlässigen Betrieb des Geräts von großer Bedeutung.

Beim verwendeten Speichertyp, beispielsweise dem Dallas DS1225, sind ein statisches RAM (SRAM), eine Lithiumbatterie und die erforderliche Umschaltelektronik in einem Gehäuse untergebracht. Sinkt die externe Versorgungsspannung beim Ausschalten ab, übernimmt die eingebaute Batterie die Versorgung des Speicherinhalts. Gleichzeitig verhindert die Elektronik unerwünschte Schreibzugriffe.

Der DS1225 bietet 8.192 Byte, also 8 kByte, Speicherkapazität. Der Hersteller gibt für entsprechende Varianten eine Datenerhaltung von mindestens zehn Jahren ohne externe Versorgung an. In der Praxis können solche Bausteine erheblich länger funktionieren. Eine unbegrenzte Lebensdauer hat die eingebaute Lithiumzelle allerdings nicht.

Eine tickende Zeitbombe im Oszilloskop?

Das Tektronix 2465B stammt aus der zweiten Hälfte der 1980er-Jahre. Ob der Speicherbaustein meines Geräts irgendwann schon einmal getauscht wurde, ließ sich nicht mehr nachvollziehen. Deshalb musste ich damit rechnen, dass die interne Batterie längst einen beträchtlichen Teil ihrer vorgesehenen Lebensdauer hinter sich hat.

Ein Verlust der Kalibrierdaten wäre ausgesprochen ärgerlich: Ein ansonsten gut erhaltenes Oszilloskop könnte seine korrekte Kalibrierung verlieren und wäre ohne Wiederherstellung oder erneute Justierung nur noch eingeschränkt zuverlässig nutzbar. Da Tektronix für solche Altgeräte keinen regulären Kalibrierservice mehr anbietet, müsste die Wiederherstellung mit geeigneten Messmitteln, Serviceunterlagen und entsprechendem Fachwissen in Eigenregie erfolgen.

Für mich war damit klar: Die Daten sollten gesichert werden, bevor es zu spät ist.

256 Werte – und jede Menge Handarbeit

Mein Funkkollege hatte erfreulicherweise auch gleich einen praktischen Hinweis parat. Mithilfe der Wartungsunterlagen zeigte er mir, wie sich im Servicemodus des Tektronix 2465B über die Readout-Funktion gespeicherte Werte anzeigen lassen.

Also begann ich am nächsten Abend mit der Datensicherung. Die Aufgabe schien zunächst einfach: 256 angezeigte 16-Bit-Werte sollten nacheinander abgefragt und in meinen bevorzugten Hex-Editor übertragen werden.

Während ich die Hexadezimalwerte eintippte, meldeten sich allerdings erste Zweifel: Was, wenn ich mich vertippe, einen Wert überspringe oder beim Übertragen zwei Ziffern vertausche? Ein solches Speicherabbild wäre im Ernstfall womöglich wenig hilfreich.

Ich wiederholte daher die gesamte Prozedur am folgenden Abend und verglich anschließend beide Datensätze im Hex-Editor. Das Resultat war ernüchternd: Die beiden Fassungen stimmten nicht vollständig überein.

Eine dritte manuelle Erfassung hätte zwar bei der Fehlersuche geholfen, die eigentliche Schwachstelle aber nicht beseitigt: das fehleranfällige Abschreiben. Es musste also eine andere Lösung her.

Die GPIB-Schnittstelle als möglicher Ausweg

Mein Tektronix 2465B ist mit einer GPIB-Schnittstelle (General Purpose Interface Bus, IEEE-488) ausgestattet. Damit lag der Gedanke nahe, die benötigten Informationen vom PC aus zu erfassen. Am liebsten hätte ich den gesamten Speicher mit einem einzigen Befehl als Hex-Dump ausgelesen.

Leider war meine frühere PCMCIA-GPIB-Karte nicht mehr auffindbar. Vermutlich war sie bei einem Umzug abhandengekommen. Also suchte ich nach Ersatz und entdeckte auf eBay einen angeblich originalen National Instruments USB-GPIB-Adapter für erstaunliche 43 Euro.

Bei einem Preis, der deutlich unter dem vieler vergleichbarer Adapter lag, war zunächst Skepsis angesagt. Handelte es sich tatsächlich um ein Original oder um einen Nachbau mit eingeschränkter Funktionalität? Bekanntlich ist nicht nur Papier, sondern auch das Internet geduldig. Schließlich überwog die Neugier, und ich bestellte das Gerät.

Eine erfreuliche Überraschung

Schon bald traf das Päckchen aus Hongkong ein. Der Adapter war mit „Made in Hungary“ gekennzeichnet; beigelegt waren eine Treiber-DVD und Beispielprogramme, darunter auch Hinweise zur Einbindung in eigene C-Anwendungen.

Bei der Installation gelangte ich außerdem zur Website von National Instruments und konnte das Gerät anhand seiner Seriennummer registrieren. Das war ein erfreuliches Indiz, auch wenn daraus allein noch keine zweifelsfreie Echtheitsprüfung abzuleiten ist.

Nach der Treiberinstallation und der Konfiguration der Schnittstellenparameter beziehungsweise GPIB-Adresse klappte die Kommunikation zwischen PC und Oszilloskop auf Anhieb. Ein erster Erfolg!

Die ursprüngliche Hoffnung auf einen direkten Hex-Dump des gesamten NVRAM erfüllte sich jedoch nicht. Zumindest in den mir vorliegenden Unterlagen fand ich keinen entsprechenden dokumentierten GPIB-Befehl. Die Readout-Anzeigen des Servicemodus ließen sich hingegen übertragen. Und genau das war der entscheidende Ansatzpunkt.

Mein erstes Python-Projekt

Wenn sich die Readout-Anzeigen über GPIB abrufen lassen, müsste es doch möglich sein, die angezeigten Adressen und 16-Bit-Werte mit einem Programm automatisch auszuwerten. Damit war die Idee für mein erstes größeres Python-Projekt geboren.

Nach einigen Versuchen gelang es mir, ein Skript zu entwickeln, das die übertragenen Readout-Daten einliest, die hexadezimal dargestellten Adressen und zugehörigen Werte extrahiert und in einer Datei speichert. Als kleines „Goodie“ kam noch die Möglichkeit hinzu, den erfassten Datenbestand in eine .bin-Datei zu konvertieren.

Die Bedienung blieb einfach: Am Oszilloskop schaltete ich per Tastendruck zum nächsten Eintrag weiter; das Python-Skript übernahm die Übertragung und Speicherung. Vollständig automatisiert war das Verfahren damit zwar noch nicht, aber das lästige und fehleranfällige Abtippen gehörte der Vergangenheit an.

War der Aufwand gerechtfertigt?

Man könnte einwenden, dass der zeitliche Aufwand für eine einmalige Datensicherung unverhältnismäßig hoch war. Dem möchte ich widersprechen.

Zum einen bestätigte der Vergleich mit den programmgesteuert erfassten Daten, dass sich bei der ursprünglichen Handarbeit tatsächlich ein Fehler eingeschlichen hatte. Zum anderen war das Projekt eine ausgezeichnete Gelegenheit, mich intensiver mit Python und der Ansteuerung von Messgeräten über GPIB zu beschäftigen.

Die Lernkurve war anfangs durchaus steil. Die dabei gewonnenen Erfahrungen werden sich aber ganz bestimmt auch bei zukünftigen Projekten auszahlen.

Die nächsten Schritte: Was steckt noch im DS1225?

Mit den 256 erfassten 16-Bit-Werten habe ich zunächst einen Datenbestand von rechnerisch 512 Byte gesichert. Dabei handelt es sich ausdrücklich nicht um ein vollständiges Abbild des DS1225: Dieser besitzt insgesamt 8.192 Byte Speicherplatz und einen Adressbereich von 0x0000 bis 0x1FFF.

Was wird dort außer den Kalibrierinformationen gespeichert? Laut Serviceunterlagen gehören auch die zuletzt stabilen Einstellungen der Frontplatte zu den batteriegepufferten Informationen. Dadurch kann das Oszilloskop nach dem Einschalten wieder mit der vorherigen Konfiguration arbeiten. Auch Informationen über Betriebsstunden und Einschaltvorgänge sind bei der Untersuchung der geräteinternen Daten interessant. Wo diese genau abgelegt werden, möchte ich allerdings erst anhand der Dokumentation beziehungsweise eines vollständigen Speicherauszugs klären.

Natürlich wäre es reizvoll, neben den bereits erfassten Werten auch den gesamten 8 kByte Speicherinhalt auszulesen. Einen dokumentierten Weg, dies über die GPIB-Schnittstelle zu erledigen, habe ich bislang nicht gefunden.

Da der alternde Baustein ohnehin irgendwann ersetzt werden soll, bietet sich eine andere Möglichkeit an: Nach dem Ausbau könnte der DS1225 mit einem geeigneten EPROM-/Universal-Programmiergerät vollständig ausgelesen und sein Inhalt als Binärdatei gesichert werden. Idealerweise erfolgt das mehrfach, mit anschließendem Vergleich der ausgelesenen Dateien. So ließe sich zumindest feststellen, ob die Leseergebnisse reproduzierbar sind.

No risk, no fun – aber bitte mit Vorsicht!

Vor dem vollständigen Speicherauszug steht allerdings eine mechanische Herausforderung: Das Auslöten eines 28-poligen DIP-Bausteins aus einer jahrzehntealten Leiterplatte ist kein ganz harmloser Eingriff.

Einerseits dürfen Leiterbahnen, Lötaugen und Durchkontaktierungen nicht beschädigt werden. Andererseits möchte ich den betagten, batteriegepufferten Speicher keinen unnötigen thermischen oder mechanischen Belastungen aussetzen. Denn wenn die interne Lithiumzelle tatsächlich bereits geschwächt ist, wäre jeder zusätzliche Risikofaktor unerwünscht.

Hier gilt daher: sorgfältig arbeiten, geeignete Entlöttechnik verwenden und vor allem vor dem Eingriff alle ohne Ausbau zugänglichen Daten sichern. Für den Ersatzbaustein würde ich eine hochwertige Präzisionsfassung vorsehen. Damit wären spätere Arbeiten am Speicher wesentlich einfacher möglich.

Wieder ein Zero-Power-RAM – oder doch lieber FRAM?

Die naheliegende Lösung wäre, den alten DS1225 vollständig auszulesen und seinen Inhalt auf einen passenden Ersatzbaustein zu übertragen. Bei der Beschaffung ist allerdings Vorsicht angebracht: Besonders bei vermeintlich neuer Ware aus unbekannter Quelle lässt sich das tatsächliche Alter eines batteriegepufferten Speichers oft nicht sicher beurteilen.

Anders als gelegentlich behauptet, ist die DS1225-Familie aber keineswegs pauschal seit 20 Jahren eingestellt: Analog Devices führt Varianten wie den DS1225AB und DS1225AD weiterhin im Produktprogramm. Entscheidend wäre deshalb, eine geeignete Variante aus nachvollziehbarer Bezugsquelle zu beschaffen.

Eine technisch interessante Alternative ist ein FRAM (Ferroelectric Random Access Memory). Im Gegensatz zum batteriegepufferten SRAM benötigt FRAM zur Datenerhaltung keine Lithiumbatterie. Der Speicherinhalt bleibt nach dem Abschalten der Versorgung erhalten; außerdem zeichnet sich die Technologie durch schnelle Schreibzugriffe und eine hohe Anzahl möglicher Schreibzyklen aus.

Als Kandidat kommt beispielsweise der FM18W08 infrage. Er besitzt 32 kByte Speicherkapazität und arbeitet mit einer Versorgungsspannung von 2,7 bis 5,5 Volt. Ein direkter Austausch gegen den DS1225 ist allerdings nicht ohne Weiteres möglich: Der FM18W08 hat eine andere Speicherorganisation und ein anderes Gehäuse. Auch die Pinbelegung, die zusätzlichen Adressleitungen und das zeitliche Verhalten der Steuersignale müssen berücksichtigt werden.

Ein geeigneter Adapter von SOIC-28 auf DIP-28 müsste deshalb mehr leisten als die bloße mechanische Anpassung. Vor einem Umbau wären die elektrische Kompatibilität und das Verhalten im Tektronix 2465B gründlich zu prüfen.

Ob ich letztlich einen neuen DS1225 verwende oder auf FRAM umsteige, ist noch offen. Fest steht aber: Das Thema ist spannend genug für eine Fortsetzung dieses Beitrags.

Fazit – Daten retten, bevor sie verloren gehen

Mein Tektronix 2465B funktioniert nach wie vor einwandfrei. Dieses Projekt hat mir dennoch gezeigt, dass bei älteren Messgeräten nicht nur Elektrolytkondensatoren, Schalter oder Potentiometer zum Problem werden können. Auch ein unscheinbarer Speicherbaustein mit eingebauter Batterie kann darüber entscheiden, ob ein wertvolles Gerät weiterhin zuverlässig nutzbar bleibt.

Mit der Erfassung der über den Servicemodus zugänglichen Werte habe ich einen wichtigen ersten Schritt geschafft. Ein vollständiges, überprüftes 8-kByte-Speicherabbild und der eigentliche Austausch des Bausteins stehen noch aus. Bis dahin bleibt das Restrisiko bestehen – aber ich weiß nun wesentlich besser, wo die Herausforderungen liegen.

Vielleicht steht bei dem einen oder anderen Leser ebenfalls noch ein Tektronix 2465B auf dem Messtisch. Dann lohnt es sich, rechtzeitig über die Datensicherung nachzudenken.

Denn wie so oft in der Elektronik gilt auch hier: Eine Sicherung ist erst dann wirklich wertvoll, wenn man sie angelegt hat, bevor man sie benötigt.

Weiterführende Unterlagen