mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR ATmega1284P Bootloader startet nicht!


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Ole J. (ojepsen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo liebe Leute,

ich habe einen kleinen Bootloader für meinen ATmega1284P (nach den 
Tutorial von mikrocontroller.net) geschrieben. Als ersten Test toggelt 
das Programm nur eine LED. Ich verwende zum programmieren das 
AtmelStudio 7 und einen JTAGICE mkII
Nun zum Problem:
Wenn ich das Programm mit Startaddr = 0x0000 kompiliere und dann flashe, 
startet es ganz normal und die LED blinkt.
Sobald ich allerdings das "offset" auf .text=0xF000 ändere
(Toolchain/AVR/GNU Linker/Memory Settings/FLASH segment).
Die BOOTSZ auf $F000 und die BOOTRST programmiere und anschließend 
flashe, passiert NIX!

Auch das Debuggen funktioniert nicht mehr :(

Was mache ich falsch? Das flashen mache ich sowohl über das Atmel Studio 
als auch via *.bat mit ATPROGRAM

Vielleicht hat jemand von euch eine Idee ?!

Gruß

: Bearbeitet durch User
Autor: Georg G. (df2au)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Code Speicher wird bei Atmel mal in Bytes und mal in Words gezählt. 
Da landet der Code dann schon mal an der falschen Stelle.

Autor: Ole J. (ojepsen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich habe soeben das Problem gelöst :)
Immer das gleiche, sobald man das "Problem" aufschreibt und nochmal 
"anders" drüber nach denkt, bekommt man einen Geistesblitz und zack 
schon behoben!
Das "einfache" toggeln der LED (zum testen) habe ich nicht dirket über 
die Register gemacht, sondern von einem Timer / Interrupt regeln lassen.
Normalerweise funktioniert das auch wunderbar, nur habe ich beim 
Bootloder vergessen, die Interrupt Vektoren zu "verbiegen"...

Nun läuft alles wie gehofft!
unsigned char interruptTemp;    /* Variable */
/* Interrupt Vektoren verbiegen */
interruptTemp = MCUCR;
MCUCR = interruptTemp | (1<<IVCE);
MCUCR = interruptTemp | (1<<IVSEL);  

Autor: Georg G. (df2au)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ole J. schrieb:
> die Interrupt Vektoren zu "verbiegen"

Bist du dir da sicher? Die Fuse "Bootlader benutzen" legt automatisch 
die Interrupt Tabelle an die richtige Stelle.

Autor: Ole J. (ojepsen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe mir das nicht ausgedacht, sondern aus dem Tutorial übernommen 
bzw. kurzzeitig vergessen :(

Hier der Link:
https://www.mikrocontroller.net/articles/AVR_Bootloader_in_C_-_eine_einfache_Anleitung
Zufinden unter Schritt 3 - Programmieren des Bootloaders

Autor: S. Landolt (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
MCUCR.IVSEL muss gesetzt werden.

Autor: Ole J. (ojepsen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
S. Landolt schrieb:
> MCUCR.IVSEL muss gesetzt werden.

Genau dies passiert ja durch das "verbiegen" :) Vielleicht nicht die 
richtige beschreibung dafür, aber in Summe das gleiche Ergebnis ;)
MCUCR = interruptTemp | (1<<IVCE);
MCUCR = interruptTemp | (1<<IVSEL);

Autor: S. Landolt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es sollte ja auch eine Antwort für Georg G. sein, pardon.

Autor: Ole J. (ojepsen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
S. Landolt schrieb:
> Es sollte ja auch eine Antwort für Georg G. sein, pardon.

OKAY ;) Danke euch!

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.