Forum: Mikrocontroller und Digitale Elektronik Lockbit-Frage trotz Bootloader


von Müller (Gast)


Lesenswert?

Hallo zusammen,

vorweg ich habe schon die Suchfunze benutzt aber bin nicht zum 
gewünschten Ergebnis gekommen.

Folgende Problematik:
Ich habe ein Steuerprogramm für einen ATmega 32 Entwickelt und würde 
dieses gerne "im Chip" weitergeben. Das mit dem Ausleseschutz ist mir 
soweit klar. Ich hoffe ihr haltet mich nicht für einen Egoisten aber in 
das Programm habe ich mehr als 100h Arbeit hineingehängt und möchte 
dieses somit natürlich vor dem Kopieren schützen.
Das Problem ist daß ich ein Programmupdate über einen Bootloader machen 
möchte. Der Bootloader ist in C geschrieben und unterstützt kein Verify 
da dies ja eine möglichkeit zum Auslesen wäre. Die Firmware wird 
verschlüsselt zum AVR übertragen und vom Bootloader entschlüsselt und im 
Flash abgelegt.
Was mir nicht klar ist: Wie muß ich die  Lockbits einstellen, daß das 
auslesen der Firmware aus dem uC mit normalen Mitteln unmöglich ist 
(also kein ISP usw...) der Bootloader aber trotzdem in den 
Speicherbereich reinschreiben kann? Es sollte (muß aber nicht) auch 
möglich sein große Datenfelder die im Flash abgelegt werden in der 
Firmware auszulesen.

Wie gehe ich vor?
Falls was unklar ist, bitte posten ich versuche es dann zu erklären..

MfG
Müller

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Das Bootloader-Schreiben in den Flash hat nichts mit den Lock-Bits für 
den Modus 1-3 zu tun. Wenn Du diese so setzt, daß das Flash über die 
Programminterfaces nicht gelesen werden kann (Mode3: Further programming 
and verification disabled), dann kann der Bootloader trotzdem schreiben 
und lesen. Die Firmware kann nicht ausgelesen werden, es sei denn, Dein 
Bootloader kann a) lesend auf des Flash zugreifen und b) Du erlaubst 
ihm, diese Daten nach außen zu übermitteln. Tust Du dies nicht, ist Dein 
Programm im Chip und auch der Bootloader selbst sicher. Erlauben mußt Du 
SPM in der Applikations-Sektion; wenn Dein Programm Konstanten aus dem 
Flash lesen soll, mußt Du auch LPM in der Applikations-Sektion erlauben. 
Verhindern mußt Du SPM in der Bootloader-Sektion, damit der Bootloader 
durch einen Codefehler nicht selbst abgeschossen werden kann. Braucht 
der Bootloader Konstanten aus dem Flash, muß in der Bootloader-Sektion 
LPM erlaubt werden.

von Johannes M. (johnny-m)


Lesenswert?

Du musst unterscheiden zwischen den Lockbits und den Boot-Lock-Bits. Das 
sind zwei völlig unterschiedliche Dinge. Die Lockbits regeln den Zugriff 
von außen (also über die Programmierschnittstellen ISP und JTAG/dW) und 
die Boot-Lock-Bits den Zugriff über den Bootloader. Du kannst über die 
Lock-Bits einstellen, dass keine Programmierung und Verification über 
die Standard-Programmierschnittstellen möglich sind. Das hat aber keinen 
Einfluss auf die Zugriffsrechte des Bootloaders, die über die 
Boot-Lock-Bits konfiguriert werden können. Schau Dir einfach im 
Datenblatt unter "Memory Programming" die Tabelle an. Die sollte 
eigentlich keinerlei Fragen offen lassen.

von Peter D. (peda)


Lesenswert?

Du setzt die Fuse für JTAG Disable und die Hardware-Lockbits.

Die Bootloaderlockbits setzt du auf Schreibschutz und die 
Applikationslockbits auf ungeschützt.

Damit ist JTAG, ISP und Parallel ausgesperrt und nur der Bootloader darf 
schreiben.


Peter

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.