mikrocontroller.net

Forum: Compiler & IDEs Problem mit Segmenten bei WinAVR-20071221


Autor: Ralf Rosenkranz (voltax)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Problem: Nach dem Update von AVRStudio (4.12 SP4 -> 4.13 SP2) und WinAVR 
(WinAVR-20060421 -> WinAVR-20071221) erhalte ich komischerweise beim 
Compilieren eines alten (bisher funktionierenden) Projekts 
Fehlermeldungen, dass sich jetzt Segmente überschneiden würden.

Ich habe zwei eigene Segmente im Flash definiert (Atmega168):
.bootloader 0x1F00
.basflash  0x1C00

Früher passte das, da wurde Segment .text automatisch richtig angepasst, 
jetzt aber offenbar nicht mehr. Wie kann ich das reparieren?

Mit AVRStudio V4.13 SP2 und neuem WinAVR-20071221
-------------------------------------------------

Build started 2.1.2008 at 10:01:35
avr-gcc.exe  -mmcu=atmega168 -Wall -gdwarf-2                                                              -DF_CPU=18432000UL -Os -fsigned-char -MD -MP -MT AVRFlashBasic.o -MF dep/AVRFlashBasic.o.d  -c  ../AVRFlashBasic.c
avr-gcc.exe -mmcu=atmega168 -Wl,-Map=AVRFlashBasic.map -Wl,-section-start=.bootloader=0x3e00 -Wl,-section-start=.basflash=0x3800 AVRFlashBasic.o     -o AVRFlashBasic.elf
c:/atmel/winavr/bin/../lib/gcc/avr/4.2.2/../../../../avr/bin/ld.exe: section .basflash [00003800 -> 00003cff] overlaps section .text [00000000 -> 000039c9]
c:/atmel/winavr/bin/../lib/gcc/avr/4.2.2/../../../../avr/bin/ld.exe: section .data [000039ca -> 000039d1] overlaps section .basflash [00003800 -> 00003cff]
make: *** [AVRFlashBasic.elf] Error 1
Build failed with 2 errors and 0 warnings...



Mit AVRStudio V4.13 SP2 und altem WinAVR-20060421
-------------------------------------------------

Build started 2.1.2008 at 09:57:41
avr-gcc.exe  -mmcu=atmega168 -Wall -gdwarf-2                                                              -DF_CPU=18432000UL -Os -fsigned-char -MD -MP -MT AVRFlashBasic.o -MF dep/AVRFlashBasic.o.d  -c  ../AVRFlashBasic.c
avr-gcc.exe -mmcu=atmega168 -Wl,-Map=AVRFlashBasic.map -Wl,-section-start=.bootloader=0x3e00 -Wl,-section-start=.basflash=0x3800 AVRFlashBasic.o     -o AVRFlashBasic.elf
avr-objcopy -O ihex -R .eeprom  AVRFlashBasic.elf AVRFlashBasic.hex
avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 --no-change-warnings -O ihex AVRFlashBasic.elf AVRFlashBasic.eep || exit 0
avr-objdump -h -S AVRFlashBasic.elf > AVRFlashBasic.lss

AVR Memory Usage
----------------
Device: atmega168

Program:   14132 bytes (86.3% Full)
(.text + .data + .bootloader)

Data:        171 bytes (16.7% Full)
(.data + .bss + .noinit)

EEPROM:      507 bytes (99.0% Full)
(.eeprom)


Build succeeded with 0 Warnings...


Grüße Ralf

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sieht mir so aus, als wäre deine Basisapplikation jetzt einfach zu
groß geworden, sodass sie nicht mehr unterhalb des Bootloaders passt.

Da müsstest du mal die Gründe analysieren.

Autor: Ralf Rosenkranz (voltax)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Jörg,

Ja, das scheint die Lösung zu sein. Wenn ich zum Test einen größeren 
Codeabschnitt auskommentiere, dann gibts das Problem mit den 
überlappenden Segmenten nicht mehr. Muß ich wohl einen anderen 
Controller nehmen.

Grüße Ralf

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ralf Rosenkranz wrote:

> Muß ich wohl einen anderen
> Controller nehmen.

Nö, erstmal nachgucken, wo sich denn der Code so aufgebläht hat.
Vielleicht lässt sich ja noch was optimieren.

Autor: Ralf Rosenkranz (voltax)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Jörg,

nach dem Vergleich des alten und des neuen Map-Files ist mir nicht 
wirklich klar geworden, was sich "aufgebläht" hat, ich sehe nur, dass 
viele Zeilen dazugekommen sind, die mir aber nicht viel sagen. Ab 
*(.trampolines) gehts los. Ich habe die beiden Files mal angehängt. Ist 
das alles so wie es sein soll?

Grüße Ralf

Autor: Der Techniker (_techniker_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Verwendest du float?

Wenn ja: Dort liegt zu 99% der Hund begraben.. ;)
(Version 20071221 hat dort einen Bug)

Gruß,
Techniker

Autor: Zewa (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>(Version 20071221 hat dort einen Bug)

Wann wird das eigentlich gefixt ? Ist doch jetzt schon ne weile bekannt.

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zewa wrote:

>>(Version 20071221 hat dort einen Bug)
>
> Wann wird das eigentlich gefixt ? Ist doch jetzt schon ne weile bekannt.

Der Bug ist noch am gleichen Tag repariert worden, an dem der Bugreport
beim avr-libc-Projekt aufgeschlagen ist.  Dmitry war wirklich schnell
hier.

Nun braucht's aber erstmal eine neue avr-libc-Version (kein großes
Problem), und von da muss das Ganze einen Weg in eine neue WinAVR-
Version finden (was sicher etwas länger dauert).  Außerdem solltest
du dir Eric Weddingtons Ankündigung vom WinAVR 20071221 nochmal
durchlesen, da hat er ausdrücklich darauf verwiesen, dass er das
unmittelbar vor den Weihnachtsferien herausgegeben hat und auf allerlei
Feedback erst nach diesen eingehen kann.  Oder wie stellst du dir so
ein Familienweihnachten mit 3 Kindern vor?

Autor: Zewa (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich wollte hier keinen Angreifen oder so.
Ich habe großen Respekt vor allen die am WinAVR mitwirken und die ganzen 
Sachen kotenlos zu Verfügung stellen.
Leider war mir nicht klar, wieviel Aufwand es ist. So warte ich eben 
geduldig auf die neue Version vom WinAVR ;-)

Autor: Frank B_. (frank_b) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du brauchst nur auf die neue LIBC zu warten, das geht sicherlich 
schneller als Winavr. Den Winavr kannst Du dann selbst mit der neuen 
Libc "versorgen" (=> drüberkopieren)

Frank.

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.