Forum: Compiler & IDEs bug in winAVR?


von MSE (Gast)


Lesenswert?

Ich arbeite mit:

einem ATmega128,
- WinAVR-20050214,
- AVR Studio 4.11.410 Service Pack 3
- AVRISP.


Nach dem Compilierten erhalte ich mit avr-size folgende Angaben:
text     data      bss      dec      hex  filename
12786     2221      169    15176     3b48  blabla.o

Beim Flash-Versuch mit AVRStudio und AVRISP erhalte ich die
Fehlermeldung:

'The contents of the HEX file does not fit in the selected device'


Nachdem ich versuchweise wieder auf die ältere Version von winAvr
zurückging, läuft wieder alles ohne Fehler:
Von 'WinAVR-20050214' zurück auf 'WinAVR-20040720'.

 text     data      bss      dec      hex  filename
  13020     2221      169    15410     3c32  blabla.o

Das Hex-File läßt sich jetzt wieder flashen. Hab ich was flasch
gemacht, etwas nicht beachtet, das man bei der neueren Version von
winAvr anders machen muß?
Oder liegt hier möglicher Weise irgendwo ein Fehler in der Software?

Gruß, Michael

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

Hi

poste doch einfach mal die betreffende HEX-Datei.

Matthias

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Was passiert denn mit AVRDUDE?

von pebisoft (Gast)


Lesenswert?

bei mir läuft die winavr-c 2005 bestens ohne mängel.
mfg pebisoft

von MSE (Gast)


Angehängte Dateien:

Lesenswert?

Hier hab ich versucht, die beiden hex-en anzuhängen.

good.hex ist die, die mit der älteren winavr-Toolchain erzeugt wurde
(und die funktioniert)

bad.hex ist die, die mit der neueren winavr-Toolchaein erzeugt wurde
und die sich nicht mit dem AVR-Studio und AVRISP flashen läßt.

Gruß, Michael

von MSE (Gast)


Angehängte Dateien:

Lesenswert?

Ich hab's befürchtet, ich konnte nur eine Datei anhängen. Hier nun also
noch 'bad.hex', diejenige, die nicht funktioniert.

Gruß, Michael

von MSE (Gast)


Lesenswert?

@Jörg Wunsch:

Ich habe noch nie mit avrdude gearbeitet. Ich würd's gerne probieren,
habe aber leider im Moment keine Zeit für irgend etwas, das ich nicht
auf Anhieb beherrsche.
Wenn ich ein bisschen mehr Zeit habe, mach ich den Versuch.

Gruß, Michael

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

Hi

Symptom beheben:
wirf mal Zeile 950 (:02000004008179) aus der "schlechten" HEX-Datei
raus.

Ursache beheben:
Zeig mal dein makefile. Da landet nämlich 0x00 an Adresse 0x81000000
was mir irgendwie verdächtig nach der Dauerbelegung der EEPROM-Adresse
0 aussieht.

Matthias

von Hubert (Gast)


Lesenswert?

Ursache beheben:
Benutze einen vernünftigen Compiler.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Ach, hamm die am Wochenende schon wieder die Trolle freigelassen?

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

Hi

ich weiß auch nicht. Irgendwie muß Hubert aus der
Heise-Forum-Troll-Heilanstalt ausgebrochen und zufällig hier
aufgeschlagen sein. Es wird also langsam mal Zeit:

-------------------------------------------------------------
MERKBEFREIUNG - MERKBEFREIUNG - MERKBEFREIUNG - MERKBEFREIUNG


Die nachstehend eindeutig identifizierte Lebensform



Name                 : ___________________________________
        [X] egal

Vorname              : Hubert_______________________________

        [ ] egal

Geburtsdatum         : nicht_vor_1993_______________________
Geburtsort           : ganz_weit_unten_im_Heise-Forum_______
Usenet-Kennzeichen   : entfällt_____________________________


ist hiermit

        (X) für den Zeitraum von
            ( )  2 Sekunden
            (X)  6 Monaten
            ( ) 12 Monaten
            ( ) 24 Monaten
            ( ) 13 Jahren
        ( ) unbefristet

davon befreit, etwas zu merken, d.h. wesentliche
Verhaltensänderungen bei der Interaktion mit denkenden Wesen zu
zeigen. Die Einstufung der o.a. Person nach dem amtlichen Index
für Merkbefreiungen liegt bei dem äquivalent von

        ( ) einem Mensaessen vom Vortag
        ( ) drei Hartkeksen (Werksverkauf Bahlsen) in löslichem
            Kaffee Hag
        ( ) einem Quadratmeterstück Torfmoos während einer
            sechswöchigen Sommerdürre
        ( ) einem Container erodiertem Sandstein [Streusandqualität]
        ( ) einem Mitglied der Bundesregierung
        ( ) einer Drucksache der Senatsplanungskommission der
            Universität Oldenburg (Präsidiumsvorlage)
        (X) einem Kilo Watt (Schlickwatt, Jadebusen)
        ( ) 5 AOL-CDs
        ( ) _____1_____________________________

Die ausgesprochene Merkbefreiung erlischt mit

        (X) dem Ablauf der o.g. Frist, beginnend mit dem
            Zeitpunkt der Ausstellung
        ( ) dem Ablauf des __.__.____
        ( ) der vollständigen Erosion der körperlichen
            Bestandteile der o.a. Lebensform

und gilt, egal ob die o.a. Lebensform durch das nachstehende
Kennzeichen als merkbefreit zu identifizieren ist:

        ( ) schwarze Hose, schwarze Schuhe, weiße Socken
        ( ) eine umgedrehte Baseballkappe
        ( ) olives Stoffstück mit weißem Rand, auf der Schulter
            zu tragen
        (X) eindeutig unbefristet merkbefreiter Gesichtsausdruck

Befund nach Prüfung durch das Bundesamt:

        [ ] kurzzeitiger Aussetzer durch übermüdung des Merkerit-
            deflektionsstudenten. Einstellung eines zweiten solchen
            wird empfohlen.
        ( ) Hohe Konzentrationen an Trollium und Merkerit
        (X) Extrem hohe Konzentrationen an Trollium und Merkerit
        [ ] Alle bekannten Therapien sind wirkungslos
        [X] Einstufung in die Gefahrenklasse
            [ ] ELCH - A I
            [ ] DAU - B II
            [X] TROLL - DO NOT FEED
            [X] KASPER - DANCE FASTER!
        [ ] Paranoia naciformis, Analphabetia semantica
        [X] Microsoftititis

Die o.a. Lebensform ist durch den Erwerb dieses
Merkbefreiungsscheins automatisch für die folgenden Tätigkeiten
qualifiziert:

        [X] Markierungshütchen bei Abmarkierungsarbeiten auf
            Bundesautobahnen
        [X] Pegellatte in Prielen und Sielen
        [ ] Garderobenständer und Regenschirmständer in
            Restaurants bis zu, aber nicht eingeschlossen, 3
            Sterne
        [ ] Regelstab in Schwerwasserreaktoren (Brennelemente
            britischer Herkunft eingeschlossen)
        [ ] Markierungsstab für das Fahrwasser im Nationalpark
            Niedersächsisches Wattenmeer
        [ ] Landschaftsmerkmal/Orientierungshilfe in der Wüste
            Gobi
        [ ] Füllmaterial eines Salzstocks nach dortiger Endlagerung
            von gebrauchten Brennelementen
        [ ] Müllschlucker für hausmüllähnliche Gewerbeabfälle
            in Betrieben des Deichbaus

Die Merkbefreiung für die o.a. Lebensform wurde in einem
öffentlichen Merkbefreiungsverfahren ausgesprochen und ist nach
Ablauf der Einspruchsfrist von 17 Sekunden rechtskräftig.

Weitere Auflagen und Entscheidungen:

[ ] PLONK                        [ ] GEH WEG!
[ ] PLATSCH                      [ ] Get a life!
[ ] PATSCH                       [X] Sie sind raus!
[ ] limmib                       [ ] Geh sterben.
[X] 42                             [ ] _____________
[ ] Erlöse den menschlichen
    Genpool von dir

Weitere Betreuung durch:

[X] /dev/null - QUARANTäNE
[ ] Schwester Johanna
[ ] Die Hilfspfleger

Es wird die/der

(X) vorläufige Aufbewahrung
( ) Zwischenlagerung
( ) Endlagerung
( ) Heilungsversuch

angeordnet.

Weitere Anordnungen:

[X] Froschpillenkur
    ( ) grüne Froschpillen
    ( ) rosa Froschpillen
    (X) gestreifte Froschpillen
    ( ) _________ Froschpillen
[ ] Einlauf
    [ ] mit Kamillentee°
    [ ] mit Froschpillen
[ ] Tackern
[ ] sonstige Behandlung nach Ermessen der Pfleger

[X] Die sofortige Vollziehbarkeit dieses Bescheids wird
    hiermit angeordnet.

Begründung:

( ) Notstandsmaßnahme
(X) andere
    [X] unmittelbare Gefahr für die geistige Gesundheit von
        Lesern
    [X] ROTFL
    [ ] ___________________________________

Hochachtungsvoll!

Das Bundesamt für die Verwaltung des Nutz-Netzes
Dezernat III - Abteilung für Troll-, DAU-, und FAQ-Sachbearbeitung
Erweiterte Gültigkeit nach §3 Abs. 2 TuDO auch für Webforen.

Datum           Unterschrift    Dienstsiegel


[Poststempel]   [unleserlich]   [Dienstsiegel]


Stirnabdruck des Merkbefreiten




MERKBEFREIUNG - MERKBEFREIUNG - MERKBEFREIUNG - MERKBEFREIUNG
-------------------------------------------------------------

Matthias

von Hubert (Gast)


Lesenswert?

Und sonst noch alles klar, Leute! Ist doch wohl so, mit einem gescheiten
Compiler passiert sowas nicht; BASTA!

von Thomas K. (thkais)


Lesenswert?

Darf ich meine Kontonummer veröffentlichen? Ich möchte auch mit einem
gescheiten Compiler arbeiten. Ich bedanke mich im voraus bei Hubert,
der mir den auch finanziert.
Abgesehen davon wurde bislang auch nicht seitens Hubert bekannt
gegeben, was für einen gescheiten Compiler er meint.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Ist doch egal.  Hauptsache trollen.

von MSE (Gast)


Lesenswert?

@Matt11hias:

Da das ganze nur aus einem *.cpp-File und vielen *.h-Files besteht,
benutze ich kein make-File. Kompilation/Linken und Hex-File generieren
erfolgte so:

avr-gcc -mmcu=atmega128  -O2 -gdwarf-2 -Wall -Wl,-Map,bla.map -o bla.o
bla.cpp

avr-objcopy -I elf32-avr -O ihex bla.o bla.hex


Wie gesagt, mit der vorletzten Version von winAvr funktioniert es.



Gruß, Michael

PS: Wie kannst Du nur (mit bloßem Auge?) aus dem hex-File irgend was
ersehen? Die von Dir genannte Zeile sagt mir leider überhaupt nix.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

avr-objcopy -O ihex -j .text -j .data ...

oder

avr-objccopy -O ihex -R .eeprom

Tja, das Makefile hätte dir den Stress erspart...

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

Hi

ich hab schon HEX-Dateien eingelesen. Da das Format relativ simpel ist
vergisst man das nicht. Die von mir genannte Zeile ist ein extended
Address Record. Die zwei Nutzbyts die dieser enthält werden der
Addresse ab dessen Auftreten hinzuaddiert. Da der GCC (aufgrund dessen
Probleme mit multiplen Adressräumen) die EEPROM-Daten eben bei
0x81000000 ablegt landen die auch im der HEX-Datei bei eben dieser
großen Adresse.

AFAIK wurde mit einer der letzten GCC-Versionen (oder avr-libc
(Linkerscript?), oder binutils Jörg kann das detailierter ausführen)
ein Mechanismus eingeführt der die EEPROM-Adresse 0x00 dauerhaft belegt
(EEPROM überschreib Problem mancher AVRs). Diese Daten landen jetzt also
in deiner HEX-Datei und AVR-Studio beschwert sich zurecht das der AVR
keine 2064MB+1Byte Flash hat :-)

Das "-R .eeprom" an der Kommandozeile von avr-objcopy entfernt jetzt
eben jene EEPROM Sektion beim Kopieren der Binärdaten aus dem elf. Du
kannst diese auch gesondert in eine HEX-Datei schreiben lassen (unter
Berücksichtigung des Offsets) und dann das EEPROM vorbeschreiben
(Initialisierung des EEPROM aus dem Quellcode heraus). Ich nutze das
aber auch nicht sondern beschreibe das EEPROM beim ersten Start des
Systems mit Standardwerten.

Matthias

von MSE (Gast)


Lesenswert?

@Matthias und Jörg:

Millionen Dank Euch beiden, Ihr habt mir sehr geholfen!!!
'-R .eeprom' bringt's zum Funktionieren!


@Hubert:
offenbar lag's nicht am Compiler (ich dachte es mir fast bzw. ich habe
es gehofft), den ich übrigens gar nicht so unvernünftig finde.
Er kostet nix, das ist schon mal eine sehr schöne Eigenschaft.
Was er so produziert ist für meine Zwecke bisher immer sehr brauchbar
gewesen.
Ich sah schon Compiler, die ziemlich teuer waren und trotzdem nicht
fehlerfrei arbeiteten.

Gruß, Michael

von Hubert (Gast)


Lesenswert?

Zum Thema gescheiter Compiler: alle sind besser, ich persönlich
bevorzuge allerdings ICCAVR von Imagecraft. Der ist garnicht mal so
teuer.

von MSE (Gast)


Lesenswert?

Ich habe auch mal mit ICCAVR gearbeitet. Als ich dann auf winAvr stieß,
bin ich umgestiegen. Warum? Weil
1. winAvr auch C++ unterstützt,
2. winAvr nix kostet und trotzdem optimiert
3. winAvr auch dann nix kostet, wenn es sich weiterentwickelt
4. kein Dongle oder eine Dongle-Diskette gebraucht wird
5. ich bisher auf nichts gestoßen bin, das bei winAvr schlechter
gewesen wäre als bei ICCAVR (gegen den ich bis auf das Dongle und dass
er ein reiner C-Compiler ist, der nicht C++ unterstützt nichts sagen
will.)

Gruß, Michael

von Daniel B. (khani)


Lesenswert?

Auch zum Thema "Gescheiter Compiler"

AVR-GCC hat IMHO nur einen wirklich schwerwiegenden Nachteil :
Wenn man damit ein Produkt entwickelt (kommerziell) und muss hinterher
feststellen, dass auf Grund des Compilers das Produkt so nicht
funktioniert, weil die Spezifikation des Compilers Dinge versprach, die
er nicht kann, dann ist man nicht in der Lage irgendjemand dafür zur
Verantwortung zu ziehen.

Beispiel : Wenn ich einen Compiler von Keil kaufe und hinterher kackt
das ganze Projekt ab, weil der Code schlicht und ergreifend nicht
spezifikationsgemäß rauskam, dann werde ich wversuchen Keil eine
saftige Klage anzuhängen.

Außerdem wird es einem schwerfallen, einen GCC-Compiler für
sicherheitskritische Anwendungen zu zertifizieren - dazu braucht man
normalerweise eine Firma als Compilerbauer und dann geht man zusammen
mit dieser Firma und dem eigenen Produkt zum Zertifizierer.

Andererseits bekommt man nirgends so viel kostenlosen Support auch zuu
den internsten Interna eines Compilers wie beim GCC. Dazu kommen noch
die schon angesprochenen Vorteile.

MfG, Daniel

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

> Beispiel : Wenn ich einen Compiler von Keil kaufe und hinterher
> kackt das ganze Projekt ab, weil der Code schlicht und ergreifend
> nicht spezifikationsgemäß rauskam, dann werde ich wversuchen Keil
> eine saftige Klage anzuhängen.

Woraufhin dich das Gericht mit einer saftigen Rechnung belohnen wird
und Herr Dr. Keil dich freundlich auf das Kleingedruckte hinweisen
wird, das eine Haftung mit Ausnahme von Vorsatz oder grober
Fahrlässigkeit ausschließt.

von Daniel B. (khani)


Lesenswert?

Klar Jörg,

ich rede auch von Verstößen, die sich ausdrücklich aus Vorsatz oder
grober Fahrlässigkeit ergeben. Diese Meinung habe ich übrigens von
Gesprächen mit verschiedenen Entwicklern bei Firmen, die
sicherheitsrelevante Anwendungen erstellen (Automobilindustrie).

MfG, Daniel

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

> ich rede auch von Verstößen, die sich ausdrücklich aus Vorsatz oder
> grober Fahrlässigkeit ergeben.

Und wie oft kommt das in der Praxis vor? ;-) (sowohl bei freier als
auch kommerzieller Software)

von Daniel B. (khani)


Lesenswert?

@Jörg : Ich würde sagen, Du hast Recht.

MfG, Daniel

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.