Forum: Mikrocontroller und Digitale Elektronik AVR Bootloader in C - eine einfache Anleitung


von Tim (Gast)


Lesenswert?

Hi,

ich versuche mich gerade an dem Tutorial:

[[http://www.mikrocontroller.net/articles/AVR_Bootloader_in_C_-_eine_einfache_Anleitung]]

Als Controlller verwende ich ebenfalls den ATMega88 mit dem AVR Studio + 
GCC.

Das Problem scheinen irgendwie die Interruptvektoren zu sein. Wenn ich 
die wie im Programm angegeben verbiege, läuft das Programm gar nicht 
erst los. Lasse die diese raus, läuft das Programm und auch die UART 
Übertragung funktioniert. Jedoch klappt dann das schreiben ins Flash 
nicht.

Weiß jemand Rat?

von Purzel H. (hacky)


Lesenswert?

Ja. Lass die Interrupts im Bootloader weg. Die machen alles 
kompliziterter.

von Thomas E. (thomase)


Lesenswert?

O.. oha Jetzt ! schrieb:
> a. Lass die Interrupts im Bootloader weg. Die machen alles
>
> kompliziterter.

Das ist ja nun keine Lösung.

Tim schrieb:
> Das Problem scheinen irgendwie die Interruptvektoren zu sein.

Bitte etwas genauer.
Welche Adresse? Fuses? Code?

mfg.

von Laszlo H. (mobius)


Lesenswert?

Thomas Eckmann schrieb:
>> a. Lass die Interrupts im Bootloader weg. Die machen alles
>>
>> kompliziterter.
>
> Das ist ja nun keine Lösung

Doch das ist eine ausgesprochen gute Lösung für ein Bootloader (nur halt 
nicht für sein Problem ;) ). Einfach, weil der Bootloader einfach 
gestrickt ist. Auf Daten warten, CRC-check, entschlüsseln, in den 
Flash/EEPROM schreiben, auf Daten warten, usw. bis irgendwann mal kommt 
"und jetzt bitte ein Reset!". Da braucht man einfach keine Interrupts.

Tim schrieb:
> Das Problem scheinen irgendwie die Interruptvektoren zu sein. Wenn ich
> die wie im Programm angegeben verbiege, läuft das Programm gar nicht
> erst los. Lasse die diese raus, läuft das Programm und auch die UART
> Übertragung funktioniert. Jedoch klappt dann das schreiben ins Flash
> nicht.

Könnte es sein, dass du den Bootloader nicht in den Bootloader-Bereich 
programmiert hast? Lies mal den Flash wieder aus und schau ob am Anfang 
der Hex viele 0xFF sind. Wenn nicht, dann hast du Schritt 1 im Tutorial 
nicht befolgt ;).

lg
Mobius

von Thomas E. (thomase)


Lesenswert?

Laszlo H. schrieb:
> Könnte es sein, dass du den Bootloader nicht in den Bootloader-Bereich
>
> programmiert hast? Lies mal den Flash wieder aus und schau ob am Anfang
>
> der Hex viele 0xFF sind. Wenn nicht, dann hast du Schritt 1 im Tutorial
>
> nicht befolgt ;).

Dazu zählt man keine 0xff, sondern guckt ins .lss-File.

mfg.

von Hc Z. (mizch)


Lesenswert?

.lss, also vor dem Linken?  Kaum.  Wenn schon, dann ins .map.

von Thomas E. (thomase)


Lesenswert?

Hc Zimmerer schrieb:
> .lss, also vor dem Linken?  Kaum.  Wenn schon, dann ins .map.

Aber sicher du Schlaumeier.

von Hc Z. (mizch)


Lesenswert?

Thomas Eckmann schrieb:
> Aber sicher du Schlaumeier.

Ja, ich habe mir erlaubt, Deinen Fehler zu korrigieren.  Das ist Dir 
offensichtlich nicht recht.  Also musstest Du Dir mit obigem Satz 
Erleichterung verschaffen.

Eine Methode für Dich, das zu vermeiden, wäre, unfehlbar zu werden.  In 
der gesamten Menschheit findet sich meines Wissens aber bisher nur 
einer, der das für sich in Anspruch nimmt.

Oder aber Du findest Dich einfach damit ab, dass Irren menschlich ist 
und dass Fehler korrigiert werden können.  Das wäre dann deutlich 
konsensfähiger.

Oder kürzer:  Friede, bitte ;).  Ich hatte wirklich nur die Korrektur 
einer technischen Fehlaussage im Auge (mit Begründung: .lss beinhaltet 
nicht, was der Linker macht) und nicht vor, Dich an die Decke zu 
treiben.

von Thomas E. (thomase)


Lesenswert?

Hc Zimmerer schrieb:
> Oder kürzer:  Friede, bitte ;).  Ich hatte wirklich nur die Korrektur
>
> einer technischen Fehlaussage im Auge (mit Begründung: .lss beinhaltet
>
> nicht, was der Linker macht) und nicht vor, Dich an die Decke zu
>
> treiben.

Und wenn du noch so borniert daher kommst: Meine Aussage ist kein 
Fehler.

Wenn du diesem File die Informationen nicht entnehmen kannst, ist das 
dein Problem. Ich kann es!

mfg.

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.