Eeprom-Treiber

EepromTask (EepromHandler)

Die Applikation führt dem EepromHandler die Daten zu, die im Eeprom abgelegt oder daraus gelesen werden sollen. Ausschließlich der EepromHandler hat Zugriff auf das Eeprom. Er kann konkurrierende Zugriffe verhindern oder koordinieren.

Das Schreiben eines Blockes kann einige Millisekunden andauern, sodaß nicht sichergestellt ist, daß im nächsten Programmzyklus die Daten bereits weggeschrieben wurden und der EepromHandler wieder frei ist. Versucht die Applikation erneut zu schreibende Daten zu übergeben, so lehnt dies der EepromHandler ab. Die Applikation muß den Schreibauftrag zunächst zurückstellen.

Das Lesen einzelner Bytes aus dem Eeprom geht schneller von statten. Die in Auftrag gebende Applikation teilt dem EepromHandler mit, welche Objekte gelesen werden sollen, und kann im nächsten Durchgang in der Regel bereits auf diese Daten zugreifen.

Der EepromHandler selbst kennt die Stuktur des von ihm verwalteten Eeprom-Speichers nicht. Hierfür ist die darunter liegende Schicht drv_int eeprom bz.w drv_spi_eeprom zuständig. In dieser wird die Kommunikations zu den Eepromzellen abgehandelt. Hierdurch kann der EepromHandler relativ abstrakt gehalten werden und muss sich nur um die Repräsentation der Daten kümmern.

RAM-Spiegel

Um nicht für jeden Lese- oder Schreibzugriff direkt auf dem (langsamen) Eeprom auszuführen, hält der Eepromhandler die Daten in einem RAM-Spiegel vor. Erst auf spezielle Ereignisse hin werden die Daten tatsächlich weggeschrieben bzw. gelesen. Ein solches Leseergnis ist der Startup (also nach dem Einschalten der Versorgungsspannung bzw. nach Reset) oder ein spezielles Kommando. Um das Schreiben auszulösen ist ein spezielles „Schreiben“-Kommando von außen nötig. Auch der Ablauf einer vollen Stunde löst das Schreiben aus. Dies ist ein Kompromiss zwischen häufigem (und damit abnutzendem Schreiben) und Aktualität der Daten im Eeprom. Bei einem Stromausfall können die in der letzten Stunde veränderten Daten verloren sein.

Hinweis: Nach der Knotenkonfiguration via PC sendet dieser natürlich anschließend das Schreiben-Kommando, um die Daten sofort in den nichtflüchtigen Speicher zu bringen.

Zur Applikation hin stellt sich der RAM-Spiegel wir der echte Eepromspeicher dar. Zugreifende Applikationen bemerken das Cache-Verhalten nicht.

Datenstruktur/Ablagestruktur

Die im Eeprom abzulegenden Daten werden im Kontext bzw. Verantwortungsbereich der jeweiligen Applikation angelegt. Der Eepromhandler wird nur über die Startadresse und Länge des Datensatzes informiert, damit dieser definiert weggeschrieben werden kann. Die Anfangsadressen jedes Blocks werden in einer zentralen Konfigurationsdatei organisiert (eeprom_cfg.h). Diese Datei ist spezifisch für jede Softwarevariante und somit nicht Bestandteil der immer gleichen Grundsoftware.

(In diesem Abschnitt wurden folgende Komponenten angesprochen: eeprom, eeprom_cfg, drv_int_eeprom, drv_spi_eeprom)