BOOTRST Fuse ohne Bootloader

Gast #3059569
Lesenswert?

Hallo,

was passiert bei einem AVR ATmega88, wenn man aus Versehen die BOOTRST 
Fuse programmiert ohne einen Bootloader auf dem Chip zu haben?
Kommt es zu Fehlfunktionen?

Ich habe es aus Versehen in einer Anwendung nämlich getan, aber bisher 
keine Probleme festgestellt. Ändere das natürlich umgehend, aber die 
Grundfrage interessiert mich dennoch.

Danke.
Gast #3059613
Lesenswert?

Nach dem Chip erase steht in allen Speicherstellen 0xFF (= opcode für no 
operation)(wenn ich mich recht erinnere)
Beim Flashen wird der Speicher nur mit dem Programm voll geschrieben, 
der Rest bleibt 0xFF.
Wenn das Programm kleiner ist als die Adresse für den 
Bootloadereinsprung, steht auch dort 0xFF.
Programmzeiger springt dort hin, führt den nop aus... bis zum Ende des 
Speichers. Von dort Überlauf des Programmzeigers -> Sprung an Adresse 
0x0000, wie beim Start ohne bootrst, das Programm wird normal 
ausgeführt.

Anders natürlich, wenn das Programm größer als die Bootrst 
Einsprungadresse. Dann kommt wahrscheinlich Müll raus.
Gast #3059883
Lesenswert?

MWS schrieb:

> NOP = 0x00 <> 0xFF

Wirkt aber trotzdem genau wie ein NOP. Ich habe nie im Detail alle 
undokumentierten Opcodes des AVR untersucht, aber die paar, die ich 
(gezielt) auspobiert habe, tun allesamt nur eins: dasselbe wie NOP.

Vermutlich passiert die Decodierung tabellengetrieben und nicht per 
unvollständiger Klapperlogik wie zu seligen 6502-Zeiten.

Und wenn Atmel weitere Opcodes für Befehlssatzwerweiterungen braucht, 
dann wird $ff mit an Sicherheit grenzender Wahrscheinlichkeit der 
allerletzte sein, den sie verwenden werden...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren