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
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
Ich hab's befürchtet, ich konnte nur eine Datei anhängen. Hier nun also noch 'bad.hex', diejenige, die nicht funktioniert. Gruß, Michael
@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
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
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
Und sonst noch alles klar, Leute! Ist doch wohl so, mit einem gescheiten Compiler passiert sowas nicht; BASTA!
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.
@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.
avr-objcopy -O ihex -j .text -j .data ... oder avr-objccopy -O ihex -R .eeprom Tja, das Makefile hätte dir den Stress erspart...
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
@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
Zum Thema gescheiter Compiler: alle sind besser, ich persönlich bevorzuge allerdings ICCAVR von Imagecraft. Der ist garnicht mal so teuer.
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
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
> 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.
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
> 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)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.