EEPROM-Monitor

Der EEPROM-Monitor ist ein Hilfsprogramm, mit dem EEPROMs mit I2C-Schnittstelle (Speichergröße 1 kBit bis 512 kBit) beschrieben, gelesen, gelöscht, kopiert und getestet werden können. Die Bedienung des Programms erfolgt über den Seriellen Monitor. Die Beschreibung des EEPROMs kann auch mit einem auf SD-Karte gespeichertem Textfile erfolgen. Eine Auswahl von mir getesteter EEPROM-Typen, die mit dem Monitor funktionieren bzw. derzeit nicht funktionieren, habe ich im Text weiter unten angegeben.


Bild: Testaufbau mit IC-Testsockel und Uno mit SD-Shield


Testaufbau:

Verwendete Bauteile:

  • 1 Arudino Uno
  • 1 EEPROM z.B. 64 kBit-EEPROM 24LC64
  • 2 Widerstände 10 kOhm

Optional:

  • 1 EEPROM (Ziel-EEPROM bei EEPROM-kopieren mit identischer EEPROM-Größe zu Quell-EEPROM)
  • 1 SD-Shield oder -Modul
  • eventuell erforderlich: 1 Level Converter 4-fach 5 V - 3,3 V, bidirektional


Getestet wurde das Programm mit folgenden EEPROMs:

  • 1 kBit-EEPROM 24C01C
  • 2 kBit-EEPROM 24C02C
  • 2 kBit-EEPROM 24LC024
  • 32 kBit-EEPROM 24C32
  • 64 kBit-EEPROM 24LC64
  • 256 kBit-EEPROM 24LC256
  • 512 kBit-EEPROM 24LC512

Nicht geeignet sind z.B EEPROMs mit der Bezeichnung:

  • 24LCxxB   (xx .... Speichergröße in kByte)
  • 24AAnn     (nn .... Speichergröße 1 bis 16 kByte)

Diese EEPROMs haben eine andere interne Speicherorganisationen, die von der im Monitor-Programm verwendeten EEPROM-Library nicht unterstützt wird (siehe Hinweise zur Verwendung von EEPROMs in der Beschreibung der Library unter: I2C-EEPROM).


Die I2C-Adresse kann hardwaremäßig an den Adresseingängen A0 - A2 des EEPROMs zwischen 0x50 und 0x57 eingestellte werden, es können also bis zu 8 EEPROMs am gleichen Bus verwendet werden.

Der EEPROM-Monitor nutzt die Adresse 0x50 und bei Kopiervorgängen 0x51 für das Ziel-EEPROM.


Die SD-Karte wird im Programm über die Standard-SPI-Pins (beim Uno Pin 11, 12 und 13) sowie Pin 10 für Chip Select (SD) angesprochen. Sofern auf dem SD-Shield oder -Modul keine Level-Konvertierung der SPI-Signale von 5 V  auf 3,3 V erfolgt, ist dies mit einem zusätzlichem Level-Converter zu bewerkstelligen!


Funktionen

Beim Start des Monitors wird zuerst getestet, ob zwei EEPROMs und eine SD-Karte vorhanden sind, wobei das zweite EEPROM (Ziel-EEPROM) und die SD-Karte nicht zwingend vorhanden sein müssen. Danach ist die EEPROM-Speichergröße anzugeben (0 - 9 für 1 kBIT - 512 kBIT). Wird zum Kopieren von EEPROMs ein Ziel-EEPROM verwendet, muss die Speichergröße identisch sein!

Achtung: Das Programm überprüft nicht, ob die Angabe der Speichergröße richtig ist. Eine falsche Angabe der Speichergröße kann z.B. zu fehlerhaftem Beschreiben des EEPROMs führen oder kann Speicherbereiche doppelt, mehrfach oder gar nicht anzeigen.


Danach stehen folgende Menüpunkte zur Auswahl:

  • Zeige das Menü (wenn das Menu im Seriellen Monitor nach oben weggescrollt ist)
  • Zeige den Inhalt von EEPROM (Tabellenform)
  • Zeige den Inhalt von EEPROM partiell (Listenform)
  • Wechsle Anzeigemodus (von Ascii auf Zeichen und umgekehrt)
  • Schreibe ein Zeichen auf EEPROM
  • Schreibe eine ASCII-Zahl auf EEPROM
  • Schreibe eine Zeile (max.16 Zeichen) auf EEPROM  1)
  • Schreibe Zufallszahlen oder -zeichen auf EEPROM
  • Kopiere EEPROM auf EEPROM
  • Zeige Inhalt von Ziel-EEPROM
  • Vergleiche EEPROMs (ungleiche Speicherstellen werden angezeigt)
  • Zeige Inhalt von SD-File EEPROM.TXT
  • Schreibe von SD-File EEPROM.TXT auf EEPROM  2)
  • Schreibe Schnellmodus von SD-File EEPROM.TXT auf EEPROM  3)
  • Vergleiche EEPROM mit SD-File EEPROM.TXT (ungleiche Speicherstellen werden angezeigt)
  • Sichere EEPROM auf SD-File SICHERG.TXT  4)
  • Lösche EEPROM gesamt
  • Lösche EEPROM partiell
  • Teste EEPROM (jedes Byte wird 2 mal beschrieben und ausgelesen, der ursprüngliche Inhalt wird danach wieder hergestellt)
  • Setze EEPROM-Speichergröße
  • Initialisiere SD-Karte  5)


1)  Startadresse muss ein ganzzahliges Vielfaches von 16 sein.

2)  Startadresse kann beliebig sein, für große Files allerdings sehr langsam (Beschreiben eines 64 kBit EEPROM dauert ca. 45 Sekunden)

3)  Startadresse muss ein ganzzahliges Vielfaches von 16 sein. Schreibt ca. um den Faktor 10 schneller von SD-Karte auf EEPROM (Beschreiben eines 64 kBit EEPROM dauert ca. 4,5 Sekunden)

4)  Das File SICHERG.TXT wird bei jedem Sicherungsvorgang überschrieben! Da keine RTC (Real Time Clock) installiert ist, wird die Datei allerdings nicht mit der aktuellen Uhrzeit und dem aktuellem Datum gespeichert

5)  Nach einem Wechsel der SD-Karte ist eine Neu-Initialisierung der SD-Karte erforderlich! Dazu muss die Standard-SD-Library oder die von mir verwendete SD-Library von github.com/adafruit/SD allerdings gepatcht werden. Was dabei zu tun ist, ist auf meiner Seite Fremd-Libraries unter SD-Library ersichtlich.



Hier nun das Programm EEPROM_Monitor_x.x.ino als Textfile:

Verwendete Libraries:

Das Programm benötigt neben den Standard-Libraries Wire, SPI und SD noch folgende Libraries:

  • MyEEPROM_I2C: Zur Kommunikation mit den EEPROMs. Meine Library kann hier heruntergeladen werden: I2C-EEPROM
  • MySerialRead: Zur kontrollierten Eingabe von Zahlen über den Seriellen Monitor. Diese Library ist hier zu finden: Serieller Monitor

Achtung: Die SD-Library muss gepatcht werden, wie auf meiner Seite Fremd-Libraries  beschrieben!

Durch den Patch ist es möglich, SD-Karten bei laufendem Programm zu tauschen, ohne dass das Programm danach neu gestartet werden muss (wobei das Ziehen der Karte nicht gerade während eines Schreibzykluses erfolgen sollte).


EEPROM_Monitor_2.7.ino.txt

Leider kann ich hier keine "ino"-Files hochladen, daher zum Verwenden des Programms ".txt" aus dem Dateinamen entfernen und in einem neuen Verzeichnis mit dem Namen "EEPROM_Monitor_2.7" speichern.

ACHTUNG: Zur Ausführung des Programms den Seriellen Monitor auf 115200 Baud einstellen!