mikrocontroller.net

Forum: Compiler & IDEs Bootloader mit AVR Studio


Autor: Ulrich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
ich versuche gerade einen Bootloader für einen atmega8 zu bauen.

gcc version 4.1.2 (WinAVR 20070525)
AVR Studio Version 4.14

Zurzeit habe ich ein Program das ist 2048Bytes groß. Als erstes versuche 
ich mal dieses Program an die stelle 0x1800 zu schreiben, aber dann 
läuft es nichtmehr.

Ich habe sowohl -Wl,--section-start=.text=0x1800 und -Ttext=0x1800 
probiert.
Leider funktioniert dann mein Program nichtmehr?
Ich weiß jetzt nicht weiter.

Vor einem Jahr habe ich schonmal einen bootloader programmiert. Im 
Makefile dort habe ich es mit -Wl,--section-start=.text=0x1800 gemacht 
und damals ging es... aber jetzt geht es so nicht mehr. ist meine winavr 
Version dafür zu alt?

Zurzeit wird beim Start nicht direkt der Bootloader angesprungen(Boot 
resetvector enable). Aber das dürfte ja nichts ausmachen. Bisher kenne 
ich das von den avrs so, das sie den code davor einfach als nop 
interpretieren.

Jetzt mal ein Beispiel:

avr-gcc.exe -mmcu=atmega8 -Wl,-section-start=.text=0x1800 
-Wl,-Map=main.map main.o uart.o  -o main.elf

Im *.map File finde ich dann folgendes:

Memory Configuration

Name             Origin             Length             Attributes
text             0x00000000         0x00002000         xr
data             0x00800060         0x0000ffa0         rw !x
eeprom           0x00810000         0x00010000         rw !x
default        0x00000000         0xffffffff

Irgendwie komisch. Warum den bitte schön 0x00000000 ???


weiter unten siehts dann besser aus:

.text           0x00001800      0x7fe
 *(.vectors)
 .vectors       0x00001800       0x26 
c:/programme/winavr/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr4/cr 
tm8.o
                0x00001800                __vectors
                0x00001800                __vector_default
 *(.vectors)
 *(.progmem.gcc*)
 *(.progmem*)
                0x00001826                . = ALIGN (0x2)
                0x00001826                __trampolines_start = .
 *(.trampolines)
 .trampolines   0x00001826        0x0 linker stubs
 *(.trampolines*)
                0x00001826                __trampolines_end = .


Weiß jemand von euch weiter?

Mfg
Ulrich

Autor: Ulrich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wenn ich das Programm aber nur ein kleinwenig vergrößer dann kommt 
folgende Meldung:

c:\programme\winavr\bin\..\lib\gcc\avr\4.1.2\..\..\..\..\avr\bin\ld.exe: 
address 0x2006 of bus-slave.elf section .text is not within region text

passt ja auch den sobald ich mehr als 2048Bytes brauche passt es nimmer 
rein.

Autor: Ulrich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OK ich habs nun ;-)

GICR = 0x01;
GICR = 0x02;

war die Lösung.


Mein Program hat die falschen Inerruptvektoren angesprungen. Deswegen 
hat mein Program immer einen neustart gemacht....*das waren nun 6h für 
den arsch* ankotz

Autor: Aike T. (biertrinker)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ah, gut das du es schon selbst gefunden hast, das mit den 
Interupt-Vektoren wollte ich dir gerade sagen. Da war ich wohl zu 
langsam. Habe da neulich selbst dran gehangen.

viele Grüße

Aike

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.