Forum: Mikrocontroller und Digitale Elektronik Code Protection bei Atmel AVR


von hebel23 (Gast)


Lesenswert?

Hallo zusammen,

ich habe ein relativ großes Projekt mit Atmel AVR (AT90S4433) gemacht 
und möchte den Code jetzt natürlich davor schützen, dass ihn irgendwer 
ausließt und einfach die Controller klont. Beim PIC ist das ja kein 
Problem - den setzt man beim Programmieren einfach auf "Code Protect". 
In der Software AVR-Studio 3.54 mit angeschlossenem STK500 habe ich 
schon die Fusebits auf "Mode 3: Further programming and verification 
disabled" gestellt. Ja schön, ich kann den Controller zwar nicht mehr 
neu beschreiben - den Code kann man aber trotzdem auslesen und damit bei 
Bedarf so viele Controller klonen wie man will.
Kennt jemand eine Möglichkeit das Teil zu sichern?
...muss doch irgendwie gehen, oder?

Danke schon mal Gruß
Andreas

von Günter König (Gast)


Lesenswert?

War da nicht mal was mit Lockbits?

Günter

von hebel23 (Gast)


Lesenswert?

Ja, mit den Lockbits kann man den Controller vor neuem Beschreiben 
schützen. Ist zwar auch irgendwie sinnlos, da die durch ein "Erase 
Device" auch gelöscht werden und das fröhliche Beschreiben weitergehen 
kann, aber naja. Ich kann mir einfach nicht vorstellen, das die 
AVR-Controller sich auf dem Markt so verbreiten konnten, wenn man ihren 
Code noch nicht mal schützen kann.

Gruß Andreas

von MNG (Gast)


Lesenswert?

Haste mal probiert ihn wieder auszulesen? Weil, wenn verification 
disabled iss, iss auch kein Auslesen möglich.

MNG

von hebel23 (Gast)


Lesenswert?

Hallo MNG,

das ist ja gerade das Problem. Die Lock-Bits stehen auf "Mode3:Further 
programming and verification disabled" - auch nach dem Abschalten des 
Controllers und Neustart von AVR-Studio, sie sind also wirklich gesetzt. 
Wenn ich dann auf Flash-Read oder EEProm-Read gehe, kann ich das Teil 
aber trotzdem auslesen - ich verstehe es nicht.

Gruß Andreas

von Günter König (Gast)


Lesenswert?

Was benutzt du für einen Programmer?

Günter

von Erwin (Gast)


Lesenswert?

Auslesen kann man sie, aber es steht nur Unsinn im Speicher (FF EE DD CC 
BB usw.), wenn die Lock-bits gesetzt sind.

von hebel23 (Gast)


Lesenswert?

Hallo Erwin,

Du hast Recht. Es steht wirklich nur Unsinn im Speicher und das neue 
Beschreiben geht auch viel schneller, als der normale Flash-Zyklus. Ist 
aber auch ziemlich verwirrend, das die Software so tut, als würde sie 
den Code auslesen/schreiben, obwohl sie das gar nicht tut. Das hat 
Microchip ausnahmsweise mal besser gelöst, da steht dann eben: "Device 
is unreadeble, Device is Code-Protected". Also vielen Dank für Eure 
Antworten...

Gruß Andreas

von MarkusS (Gast)


Lesenswert?

Die ganze Sache ist relativ einfach.
Wenn die Lockbits gesetzt sind, kann man den Flash nicht auslesen, bzw. 
man bekommt nur unsinn.
Der Erasebefehl löscht zwar die Lockbits aber auch gleichzeitig den 
internen EEProm und den Flash.

Der Baustein ist dann für widerbescheiben verfügbar.

Gruß MarkusS

von hebel23 (Gast)


Lesenswert?

Hi nochmal,

also so unsinnig sind die Daten, die man zurückgelesen bekommt beim 
genauen Hinsehen garnicht. Es handelt sich nämlich um das Lowbyte der 
jeweiligen Adresse der Programmspeicherzelle: 
0x01,0x02,0x02,...,0xFE,0xFF. Finde ich zwar trotzdem blöd aber 
Hauptsache niemand kann den Programmcode auslesen.
Gruß Andreas

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.