Forum: Mikrocontroller und Digitale Elektronik AVR C-Code kompilieren mit Cygwin


von Lokus P. (derschatten)


Lesenswert?

Kann mir vielleicht jemand erklären wie man mit Cygwin kompiliert?
Mit WinAVR habe ich das immer so gemacht: make CONFIG=xxx

Wie funktioniert das unter Cygwin?
Mit gcc beginnts, aber wie gehts weiter?

von Oliver (Gast)


Lesenswert?

???

Unter cygwin geht das genauso, wie unter Windows mit WinAVR. Wenn du ein 
passendes makefile hast, dann nimm das. Eventuell musst du da drin ein 
paar Pfade anpassen.

Manfred W. schrieb:
> Mit gcc beginnts, aber wie gehts weiter?

Das beginnt nicht mit gcc, sondern mit avr-gcc.

Oliver

von Johannes E. (cpt_nemo)


Lesenswert?

Cycwin an sich ist kein Compiler, sondern eine Sammlung von Libraries 
und Tools.
Hast du in Cygwin überhaupt einen passenden Compiler installiert?

von Freddy (Gast)


Lesenswert?

Mich würde es interessieren, warum du cygwin verwenden willst. Welchen 
Zweck soll das erfüllen?

von Lokus P. (derschatten)


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.

von Oliver (Gast)


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

von Freddy (Gast)


Lesenswert?

Welche Compiler Optionen werden benutzt?

von Lokus P. (derschatten)


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?

von Oliver J. (skriptkiddy)


Lesenswert?

Zeig mal das Makefile

von Lokus P. (derschatten)


Angehängte Dateien:

Lesenswert?

Bitteschön...

von Oliver J. (skriptkiddy)


Lesenswert?

1
CFLAGS += -Wall -Wstrict-prototypes -Werror

-Werror:  Make all warnings into errors


Bitteschön

von Lokus P. (derschatten)


Lesenswert?

ähm, das bedeutet was jetzt genau?

von Oliver J. (skriptkiddy)


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

von Peter D. (peda)


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

von Lokus P. (derschatten)


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.

von Oliver J. (skriptkiddy)


Lesenswert?

gern geschehen

von Lokus P. (derschatten)


Lesenswert?

danke, danke! :)

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.