Forum: Mikrocontroller und Digitale Elektronik AT90CAN128 lock bits richtig setzen


von Horst (Gast)


Lesenswert?

Hallo Forum,

ich arbeite mit einem AT90CAN128 und möchte über die Lock bits folgendes 
erreichen:
1. Erneutes Aufspielen eines Bootloaders soll nicht möglich sein
2. Bootloader soll Programm updaten können
3. Programm soll nicht ausgelesen werden können
4. EEPROM soll noch gelesen und geschrieben werden können (geht glaube 
ich nicht)

Gesetzt habe ich im makefile folgendes:
1
set "lock=0b00000100"
2
REM Bit     7       6       5       4       3       2       1       0
3
REM         -       -     BLB12   BLB11   BLB02   BLB01    LB2     LB1
4
REM  1=unprogrammed, 0=programmed
5
REM unused bits 6 and 7 set to 0 to prevent veryfication error

Und nach dem Programmieren der Fuses, des BL und der FW per Batch kommt 
dann noch das Setzen der Lock bits:
1
avrdude -p %controller% -c %programmer% -P %port% -U lock:w:%lock%:m
Entspricht das meinen Forderungen, oder habe ich was übersehen?
Was ist mit dem EEPROM? So wie ich es verstehe, kann ich es nur komplett 
sperren, wenn ich das Auslesen des Flashs verhindern will.

Die Fuses und Lock bits kann ich auslesen und sie stimmen.
Ich kann aber problemlos auch den Flash auslesen.
Sollte hier nicht eine Fehlermeldung kommen?

Wie realisiert man diese Anmerkung aus dem Datenblatt?
1
Notes: 1. Program the Fuse bits and Boot Lock bits before programming the LB1 and LB2.

Danke für eure Hilfe!

von Christian H. (netzwanze) Benutzerseite


Lesenswert?

Horst schrieb:
> Wie realisiert man diese Anmerkung aus dem Datenblatt?Notes: 1. Program the Fuse 
bits and Boot Lock bits before programming the LB1 and LB2.

Gans einfach:
"Program" steht für das setzen eines Bits auf 0.

Du sollst also, bevor Du die Bits LB1 oder LB2 auf 0 setzt, die anderen 
Bits auf 0 setzen (falls erforderlich). Das ganze erfolgt dann im 
mindestens zwei Schritten.

So verstehe ich das jedenfalls.

von Christian H. (netzwanze) Benutzerseite


Lesenswert?

Horst schrieb:
> Ich kann aber problemlos auch den Flash auslesen.
> Sollte hier nicht eine Fehlermeldung kommen?

Kommt da auch der korrekte Flashinhalt oder nur sinnloser Müll?

von Horst (Gast)


Lesenswert?

Wenn ich die Lock bits in zwei Schritten programmiere, was muss ich im 
zweiten Schritt setze? Nur die LB1 und LB2 oder auch die anderen?

Ich vermute so:
1. Schritt: set "lock=0b00000111"
2. Schritt: set "lock=0b00000100"

Ich habe ehrlich gesagt kein verify des ausgelesenen Flash gemacht.
Ich habe mich einfach gewundert, dass überhaupt was ausgelesen wird.
Irgendwie habe ich eine Fehlermeldung erwartet...

von Horst (Gast)


Lesenswert?

Also ich habe es jetzt noch mal mit dem AVR Studio 4 und einem AVRDragon 
ausprobiert.

Chip Erase (setzt lock bits zurück) und Programm aufgespielt. -> verify 
funktioniert
Lock Bits in einem Schritt auf 0xC4 (wie im Post weiter oben) gesetzt -> 
verify schlägt fehl

Heißt das, dass trotz lock bits etwas ausgelesen werden kann, nämlich 
nur Unsinn?!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.