Jetzt muss ich Suppe (SOUP) selber auslöffeln
Um dem Thread und meiner Arbeit noch einen sinnvollen Wert zu geben,
habe ich mich entschlossen, die libeeprom-lpc1347.a Version 3
möglichst ausgiebig zu testen.
Dafür habe ich heute Testfunktionen geschrieben.
Es wurde ein RAM Array angelegt, welches das gesamte EEPROM wiederspiegelt,
mit Ausnahme der letzten 64 Bytes, dazu später.
Dieses RAM Array wurde mit definierten Werten beschrieben.
Dann erfolgte ein EEPROM Write mit dem "gesamten" Block.
Dann wurde das RAM Array komplett gelöscht und der Inhalt aus dem
EEPROM wieder als kompletter Block ausgelesen und verglichen.
Das verlief einwandfrei. Dieser Test wird noch mit unterschiedlichsten
Werten und Mustern durchgeführt.
Dann wurden nur einzelne Bytes oder Words ins EEPROM geschrieben
rückgelesen und verglichen. Bisher auch alles einwandfrei.
Zudem wurde nach dem Beschreiben des EEPROMs die Versorgungsspannung über längere Zeit
abgeschaltet um zu prüfen ob die Werte auch wirklich im EEPROM erhalten bleiben.
Dieser Test wurde auch über mehrere Stunden durchgeführt.
Nun wollte ich testen ob der hintere EEPROM Bereich , also die letzen 64 Bytes
tatsächlich nicht beschrieben werden können, wie im Usermanual erwähnt.
Dafür habe ich mir Testfunktionen für die RS232 geschrieben.
Hier kann ich nun mit einem Terminal Programm gezielt auf alle Bereiche zugreifen
und prüfen.
Es bestätigte sich, dass exakt die letzen 64 Bytes des EEPROMs nicht beschrieben werden
können. Das Lesen dieser Speicherstellen ergibt immer 0x00
Morgen gehts es weiter mit dem Tests:
Dazu wird ein höchst priorisierter Interrupt eingestellt,
welche lediglich ein Portbit toggelt.
Hier wird ein Oszilloskop angeschlossen.
Das Hauptprogtramm beschreibt dann sporadisch das EEPROM mit
verschiedenen Werten und Speichergrössen.
Das Testsignal dürfte sich dabei nicht verändern, sofern die EEPROM
Funktionen, wie beschrieben, wirklich keine Interrupts sperren
oder in irgend einer Form die CPU ausbremsen.
Die Versionsnummer der Bibliothek konnte auch ausgelesen werden.
Die Funktion liefert eine "3" zurück.
So kann ich die Bibliothek bzw. deren Funktionen verifizieren
Dann wird für mein Projekt exact DIESE Bibliothek vom Datum xxx
mit abgelegt und die Testreihen dokumentiert.
Ein Update dieser Bibliothek darf dann nicht mehr erfolgen.
Update heute morgen:
Ich stochere grade in der Assembler "Suppe" von NXP
Anhand der EELIB_entry funktion
erkennt man schon, dass viele Programmierer nicht mehr sinnvoll denken.
Sorry für die Kritik, aber es gibt genau 2 Funktionen.
EEPROM schreiben und EEPROM lesen.
In vielen Geräten wird nur einmal ins EEPROM geschrieben zum Beispiel beim Kalibrieren.
Danach wird nur noch gelesen.
Generell ist das Verhältnis von Lesen und Schreiben bei EEPROMs "Lesebetont"
In der Bibliothek konnte ich dem Assemblercode entnehmen, dass
hier zuerst auf Schreiben geprüft wird und damit unnütze Rechenzeit verbraten wird
Generell ist der erzeugt Code recht "suboptimal" wie ich grade feststelle, zumindest wohl ohne Optimierungen compiliert.
Das EEPROM Schreiben habe ich nun grade Zeile für Zeile durchgesteppt, es gibt wirklich keinen Code welcher die Interrupts
des Controllers beeinflusst.
Die Funktionen arbeiten augenscheinlich nur mit Stackvariablen,
es ist also kein zusätzlicher RAM erforderlich
Alles spielt sich irgendwie im Speicherberiech 4003.C000 ab.
Die Versionsnummer liefert in minimalster Weise lediglich eine konstante "3" zurück.
Für die obersten 64 EEPROM Bytes habe ich in meiner Funktion einen entsprechenden Code implementiert,
damit diese nicht beschrieben werden, das existiert aber auch schon in der Library selbst wie ich grade sehe.
Siro
Lesezeichen