ATmega128, EEProm

25/05/2011 - 09:50 von Stefan Brröring | Report spam
Hallo,

ich hab da ein Geràt mit nem ATmega128, bei dem eine Seriennummer ins
EEProm geschrieben wird. Diese Seriennummer wird von einem PC abgefragt
und wenn die Seriennummer nicht mit der in einer Lizenzdatei
hinterlegten übereinstimmt, gibt es eine Fehlermeldung.

Kommunikation zwischen dem PC und dem AVR erfolgt über die serielle
Schnittstelle. Auf der PC-Seite eventuell über einen USB<->seriell
Wandler. Software ist auf der AVR-Seite GCC (Winavr) und auf der
PC-Seite Delphi 7 unter Windows XP bzw. Windows 7.

Die Seriennummer kann mit Hilfe eines speziellen Kommunikationsprogramm
vom PC aus gesetzt werden. Dazu wird ein Datentelegramm bestehend aus:

1. Byte Startzeichen #02
2. Byte Blocklànge
3. Byte erstes Kommandobyte
4. Byte zweites Kommandobyte
5.-12. Byte Seriennummer
13. Byte Checksumme

gesendet.

Gespeichert wird nur, wenn das 1.,3. und 4. Byte korrekt ist und wenn
die Checksumme stimmt.

Das funktioniert soweit alles. Jetzt haben wir 3 Geràte ausgeliefert und
bei zwei Kunden gab es Probleme, weil sich die Seriennummer geàndert
hatte. War kein großes Problem, die Seriennummer konnten die Kunden mit
unserer Hilfe wieder einstellen. Aber das war eigentlich nicht Sinn der
Sache.

Ich habe jetzt zusàtzliche eine Überprüfung der Blocklànge und der Bytes
5-12 (Char 0-9) eingebaut. Außerdem habe ich eine Wartezeit von 100ms
vor den eigentlichen Schreibbefehl eingebaut.

Ich verstehe momentan nur nicht, wie es zu dem Problem kommen kann. Hier
bei uns und bei dem 3. Kunden ist bisher nichts derartiges passiert.

Ich vermute momentan, dass vom ATmega128 durch irgendwelche
Schrottsignale auf der seriellen Schnittstelle zufàllig ein gültiger
Schreibbefehl empfangen wird woraufhin die Seriennummer überschrieben
wird. Die Fehlerwahrscheinlichkeit versuche ich jetzt wie oben
beschrieben durch eine bessere Plausibilitàtskontrolle zu verringern.

Oder gibt es noch andere Möglichkeiten, wie es zu einem Überschreiben
des internen EEProms kommen kann?

Gruß

Stefan DF9BI
 

Lesen sie die antworten

#1 Christian Zietz
25/05/2011 - 10:35 | Warnen spam
Stefan Brröring schrieb:

Oder gibt es noch andere Möglichkeiten, wie es zu einem Überschreiben
des internen EEProms kommen kann?



Früher hatten Atmel MCUs das Problem, dass das erste Byte (Adresse 0) im
EEPROM manchmal überschrieben wurde. Beim mega128 steht dieser Fehler
allerdings nicht in den Errata.

Christian
Christian Zietz - CHZ-Soft - czietz (at) gmx.net
WWW: http://www.chzsoft.de/
PGP/GnuPG-Key-ID: 0x6DA025CA

Ähnliche fragen