www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Funktionen im Bootloader werden ohne Aufruf ausgeführt


Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe zwei Funktionen zum schreiben und lesen des Flashspeichers im 
BOOTLOADER eine ATMega128 platziert. Wenn ich nun das Programm mittels 
AVR Studio in den Mikrocontroller lade, werden die Funktionen schon 
einmal ausgeführt ohne das ich das Programm gestartet habe. Die Fuse 
BOOTRST ist aus. Woran könnte das liegen?

Vielen Dank und viele Grüsse

Michael

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael wrote:

> Woran könnte das liegen?

Fehler in Zeile 13 ?


Peter

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Um in Erfahrung zu bringen warum irgendein Code ausgeführt wird, weil er 
im BOOTLOADER steht, bevor das Programm startet, soll ich diesen hier 
hereinstellen oder was meinst du mit dieser Antwort?

Autor: Olaf Stieleke (olaf2001)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael wrote:
> soll ich diesen hier hereinstellen

Gut aufgepaßt. Der µC verhält sich richtig, daran besteht kein Zweifel. 
Das Problem muß in deinem Code liegen - und ohne den zu sehen...

Autor: Michael (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Also, der Code ist im Anhang. Nachdem der Code in den Speicher 
gedownloaded wurde vom AVR Studio steht im Flash an der Stelle 0x0192 
schon der Wert 0xAA.

Diese beiden Funktionen wurden in den BOOTLOADER gelegt.

ReadFlashByte                    CODE      0001DFFE
WriteFlashByte                   CODE      0001E054

Wenn ich die Funktion WriteFlashByte in der main auskommentiere, dann 
wird die Speicherstelle nicht überschrieben.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael wrote:
> Also, der Code ist im Anhang. Nachdem der Code in den Speicher
> gedownloaded wurde vom AVR Studio steht im Flash an der Stelle 0x0192
> schon der Wert 0xAA.

Nein, es steht erst einige ms später drin, nachdem das Programm 
ausgeführt wurde.

Ein MC hat keinen Startbutton, Programme werden ausgeführt, sobald 
Spannung anliegt.
Auch jeder SPI-Zugriff macht implizit einen (externen) Reset.

Wenn Du also Fuse, Lockbits, Flash, EEPROM lesen, schreiben ausführst, 
wird jedesmal das Programm gestartet (= 9 Schreibzyklen verbraucht).

Ein unbedingtes Schreiben nach jedem Reset ist sehr schlecht für den 
Flash (begrenzte Zahl an Schreibzyklen).


Peter

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

die main brauche ich nur zum testen. Später wird das noch anders.
Ich hatte vergessen den Flash vor dem beschreiben zu löschen, deshalb 
stand es noch so drin. Jetzt funktioniert es. Danke

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.