AVR C-Code kompilieren mit Cygwin

#2574041
Lesenswert?

Grüß euch.

Also der Zweck dabei ist, das mit WinAVR eine falsche Dateigröße 
kompiliert. Dadurch wird die Binary vom Bootloader nicht mehr geladen 
bzw. ist zu groß für den Flashspeicher.

Der Code selbst ist nicht von mir. Ich möchte ihn nur kompilieren.
Unter DEBIAN-Linux soll das angeblich korrekt funktionieren. Das zu 
installieren wollte ich mir jetzt allerdings ersparen.

Das Kompilat muß exakt 61440 Bytes groß sein, damit der Bootloader es 
erkennt.
Meines hat mit WinAVR-20100110 eine größe von 62694 Bytes. Anscheinend 
wird da noch irgendein Müll mitreingepackt.

Nun dachte ich vielleicht gehts mit Cygwin.
Gast #2574073
Lesenswert?

Da denkst du falsch, ein avr-gcc erzeugt unter cygwin den selben Code 
wie unter Windows, wenn er die gleiche Versionsnummer hat, und auch die 
gleiche avrlibc-Version benutzt.

Wenn das älterer Sourcecode ist, versuch es mal mit WinAVR-2007xxxx (der 
letzten 2007er). Der darin enthaltene avr-gcc 3.4 (?) erzeugt meistens 
kleineren Code als die neueren WinAVR-Varianten.

Oliver
#2574591
Lesenswert?

Ich habe jetzt die letzte 2007 Version versucht.
Leider läuft der wiederum nicht durch:
1
D:\Downloads\SD2IEC DTV64>make CONFIG=config-larsp
2
  MKDIR  obj-m644p-larsp
3
  CONF2H config-larsp
4
  AS     fastloader-ll.S
5
  CC     buffers.c
6
  CC     d64ops.c
7
cc1.exe: warnings being treated as errors
8
d64ops.c: In function 'd64_open_write':
9
d64ops.c:1307: warning: 's' may be used uninitialized in this function
10
d64ops.c:1307: warning: 't' may be used uninitialized in this function
11
make: *** [obj-m644p-larsp/d64ops.o] Error 1

Was hingegen mit der WinAVR-20100110 problemlos funktioniert hat.
So ein Mist aber auch.

Muß ich mir jetzt extra DEBIAN antun?
#2574634
Lesenswert?

Der Compiler soll laut dem -Werror Flag alle Warnungen als Fehler 
betrachten und das heißt, dass er bei Warnungen den Kompiliervorgang 
abbricht.

Wenn also beim Kompilieren 2 Warnungen auftreten:
> d64ops.c:1307: warning: 's' may be used uninitialized in this function
> d64ops.c:1307: warning: 't' may be used uninitialized in this function

bricht der den Kompiliervorgang mit einem Fehler ab.

Was du tun musst: das -Werror Flag einfach aus dem Makefile entfernen.

Gruß Oliver
#2574645
Lesenswert?

Manfred W. schrieb:
> Bitteschön...

Ich wußte bisher nicht, daß man ganze Romane als Makefile schreiben muß. 
Wer soll denn sowas lesen.

Beim WINAVR kann man einige Schalter ausprobieren, die noch viel 
zusammendampfen. Dazu steht auch was in der Artikelsammlung.

Oder zippe alles zusammen und sende es als Dateianhang. Dann kann Dir 
das bestimmt jemand compilieren.



Peter
#2574664
Lesenswert?

Das kompilieren möchte ich ja gerne selbst übernehmen, da ich noch 
einige Änderungen am Code vornehmen möchte.

Aber,.... jetzt hat es tatsächlich funktioniert und er hat auch die 
korrekte größe kompiliert.
Einige Warnungen wurden ausgegeben aber die werden halt ignoriert. Hoffe 
das hat jetzt keine Auswirkung auf das Kompilat. Aber die neuere WinAVR 
Version zeigt diese ja nicht mal an, also sind die womöglich sowieso zu 
ignorieren.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren