www.mikrocontroller.net

Forum: Compiler & IDEs Chip45 Bootloader-Debugging, Mega128 mit AVRStudio und JTAG


Autor: Bernhard D. (pc1401)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich möchte den Bootloader von chip45 
(http://www.chip45.com/download/chip45boot_070725.zip) verwenden. Die 
vorgefertigten Images passen nicht zur gegebenen Taktfrequenz, also ist 
Neuübersetzen angesagt.
Meine Version des Ganzen habe ich angehängt.

Erstes Problem: Ich verwende WinAVR 20070525 statt 20060421. Dies führt 
dazu, dass der Code bei eingeschalteter Optimierung (-s) nicht mehr 
vollständig compiliert wird. Die Endlosschleife ab Zeile 279 in 
chip45boot.c wird wegoptimiert, obwohl da wirklich mehr als gar nichts 
passiert. Erst mit OPT=0 ist die Schleife wieder da. Was kann man da 
tun?

Nun bekomme ich den Code zwar übersetzt, doch der Bootloader läuft 
nicht. (Die Fusebits stimmen, auch der Code steht ab F800 im Flash, wo 
er hingehört). Nach Resetten bekomme ich über die RS232 den Prompt und 
die Eingabe eines "f" am Terminalprogramm macht den Loader scharf. Das 
erste gesendete Zeichen eines SRECORDS führt zum Neustart.

Hier im Forum wurde vor einger Zeit schon einmal vermutet, dass die 
Interruptroutine in chip45boot.c fehlerhaft ist, und ich möchte dem auf 
den Grund gehen. Also bemühe ich hierfür AVRStudio (aktuelle Version 
4.13.557) und einen JTAG-Adapter von Olimex. Im Makefile ist als 
Debug-Format dwarf-2 eingestellt.

Nach dem Öffnen von chip45boot_Mega128_16MHz_4k.elf mit AVRStudio 
bekomme ich folgende Warnung:
JTAG ICE: Warning: Boot reset fuses are programmed, but the program 
entry function is located in the application section. Wrong boot reset 
fuses will probably cause erronous execution.

Im Disassembler bzw. Memory Window erscheint der Code denn auch nicht 
wie erwartet an Adresse F800, sondern ab 7C00. Also exakt F800/2. Der 
Code steht im Flash aber tatsächlich ab F800.
Ich dachte zuerst, es handelt sich dabei um folgendes Problem: 
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19087
Das sollte doch behoben sein?
Oder habe ich irgend etwas übersehen?


Etwas ratlose Grüße,
Bernhard

Autor: Ulrich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also ich konnte den bootloader mit dem crumb128 problemlos verwenden. Es 
dauerte halt eine gewissen zeit bis ich alle möglichkeiten durch hatte 
(größe des boolaoderbereichs)

Autor: Bernhard D. (pc1401)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Ulrich,

ja gut, viel einzustellen gibt es ja nicht in dem Makefile. Startadresse 
des Bootloaders, Controllertyp und Taktfrequenz. Das erklärt halt nicht, 
warum ein Teil des Codes bei eingeschalteter Optimierung nicht übersetzt 
wird, eine Endlosschleife, in der einiges passiert.
Womit hast Du denn das Paket übersetzt?

Gruß,
Bernhard

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Dies führt
>dazu, dass der Code bei eingeschalteter Optimierung (-s) nicht mehr
>vollständig compiliert wird. Die Endlosschleife ab Zeile 279 in
>chip45boot.c wird wegoptimiert, obwohl da wirklich mehr als gar nichts
>passiert. Erst mit OPT=0 ist die Schleife wieder da. Was kann man da
>tun?

Nochmal genau nachsehen. Ganz weg kann die Schleife nicht sein.

Oliver

Autor: Erik Lins (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

es gibt einen neuen Bootloader von chip45: chip45boot2. Er ist komplett
überarbeitet und liest nun direkt Intel Hex Files über einen UART ein
(kein SREC Erzeugen mehr notwendig) und stellt seine Baudrate
automatisch ein! Es gibt viele vorkompilierte Hexfiles, die nur vom
Controllertyp und vom UART abhängig sind, ansonsten aber unabhängig von
jeglicher Clock Einstellung laufen!

www.chip45.com/chip45boot2

Viele Grüße,
ER!K

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.