www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Mega644 Bootloader Debuggen


Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich versuche gerade mit avr-gdb & avarice meinen Mega644 zu debuggen. 
Normalerweise klappt auch alles! Nun Versuche ich gerade meinen 
Bootloader zu debuggen, nur leider klappt das nicht.

Als Debugger verwende ich einen JTAG ICE mkII.

Das Phaenomen ist folgendes. Ich kann avarice ganz normal starten und 
will dann mit Eclipse Debugger (wohlgemerkt mit der Normalen Firmware 
klappt auch alles). Das BootRST Flag ist gesetzt und der Code startet 
auch (meine LED blinkt). Sobald ich nun Debugge, steht das Programm auf 
Adresse 0x1FFC0 (ja, ich weiss, die Adresse gibts nicht.). Saemtliche 
Versuche, den Speicher auszulesen schlagen fehl!. (Er liest ueberall 
0xFF).

Als Linker Flag habe ich folgendes
  -Wl,--section-start=.text=0xE000
  Laut DB 0x7000 => 0x7000 * 2 = 0xe000 da WORD Addressen
Meine Fuses 0xF7 0x18 0xFF
                 |-> OCD EN, JTAG EN, SPI EN, Boot Sz 4096 words,
                     Bootrst EN
mein Code
int main(){
  DDRC |= (1 << PC6);
  PORTC ^= (1 << PC6);
  DDRC |= (1 << PC7);
  PORTC ^= (0 << PC7);
  while (1) {
    asm volatile ("nop");
    PORTC ^= ((1 << PC6) | (1 << PC7));
  }
}

Hat irgendjemand schon mal soein Problem gehabt?
avarice 2.10 & 2.7; avr-gdb 6.8

Bzw. kann mir jemand helfen, warum ich das Programm nicht debuggen kann?

Autor: Andreas Vogt (tico)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alex schrieb:
> Hat irgendjemand schon mal soein Problem gehabt?

Ja, ich. Bei mir ist alles wie bei Dir (Controller, Debugger, Eclipse 
incl. der sonstigen Software), und ich habe denselben Effekt.
Meine Vermutung bis jetzt ist, dass avarice/gdb ein Problem haben, wenn 
der Code nicht an der Stelle 0x0000 beginnt.
Ich habe kurz nach einem Kommandozeilenparameter gesucht, mit dem ich 
die Startadresse explizit mitteilen kann, bin aber bis jetzt nicht 
fündig geworden und hatte auch noch keine Zeit, mich ausführlicher mit 
dem Problem zu beschäftigen.
Bei meinen Experimenten hat das Debuggen genau einmal zufällig 
funktioniert, leider war das aber nicht reproduzierbar. Ich denke aber, 
dass es prinzipiell gehen sollte, wenn man avarice/gdb die richtigen 
Parameter mitgibt.
Als Workaround benutze ich das AVR Studio zum debuggen. Allerdings ist 
das ziemlich lästig, weil man ständig die blöde DLL für die 
Kommunikation mit dem JTAG ICE wechseln muss.

Gruss
Andreas

Autor: Hagen Re (hagen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das neuste AVStudio hat einen Bug in seinem FLASH Tool. Wenn du diesem 
ein HEX flashen lässt das nicht an Addrese 0x0000 beginnt so macht es 
garnichts ausser den AVR komplett löschen. Baue in deinem Bootloader 
Source einfach folgendes ein
.org 0
.db 0xFF, 0xFF

ein. Hatte ich hier Beitrag "Re: AVR-Bootloader mit Verschlüsselung" 
bei der Entwicklung meines Bootloaders auch schon.

Gruß Hagen

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo ich hab die Loesung.

Einfach ein
__asm__ volatile ("break");

Am Anfang des Codes einfuegen und fertig. Somit haelt die CPU 
selbstaendig an. Mit der Eclipse Fkt "Resume at Line" im ASM Fenster, 
kann ich das Device dann explizit starten.

mfg Alex

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.