Forum: Compiler & IDEs Warum -mmcu=atmega16 und -D__atmega16__


von Axel G. (axelg) Benutzerseite


Lesenswert?

Warum baut die hier gerne verwendete Makefileform den Prozessor zweimal 
in den gcc Aufruf ein? Die -mmcu Option würde doch reichen? Sie erzeugt 
doch ein _AVR_ATmega16_ das man für #idefs verwenden kann.

avr-gcc -mmcu=atmega16 -I. -gstabs -DF_CPU=14745600UL -D__atmega16__ 
-Os -Wall -Wstrict-prototypes -std=gnu99   anaus.o   --output anaus.elf 
-lm

Ich übersehe etwas, aber was?

Axel

von Stefan E. (sternst)


Lesenswert?

Axel Gartner wrote:
> Warum baut die hier gerne verwendete Makefileform ...

Was ist denn die "hier gerne verwendete Makefileform" genau?
Makefile aus dem Tutorial, oder wo kommt das her?

von Axel G. (axelg) Benutzerseite


Lesenswert?

Stefan Ernst wrote:
> Axel Gartner wrote:
>> Warum baut die hier gerne verwendete Makefileform ...
>
> Was ist denn die "hier gerne verwendete Makefileform" genau?
> Makefile aus dem Tutorial, oder wo kommt das her?

Ich formuliere meine Frage um:
Warum wird in Makefiles häufig -mmcu=atmega16 UND -D__atmega16__ 
verwendet?

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


Lesenswert?

Axel Gartner wrote:

> Warum wird in Makefiles häufig -mmcu=atmega16 UND -D__atmega16__
> verwendet?

Es wird gar nicht ,,häufig'' dort verwendet, und streng genommen ist
es illegal: das Benutzen von Bezeichnern, die mit zwei Unterstrichen
beginnen, ist dem Nutzer nicht gestattet.

von Stefan E. (sternst)


Lesenswert?

Axel Gartner wrote:

> Warum wird in Makefiles häufig -mmcu=atmega16 UND -D__atmega16__
> verwendet?

Und wieder muss ich nachfragen:
Wie kommst du überhaupt auf dieses "häufig"?

Das Beispiel-Makefile im Tutorial enthält das nicht, das vom AVR-Studio 
generierte Makefile enthält das nicht, und das von Jörgs MFile 
generierte Makefile enthält das auch nicht. Damit dürften wohl min 3/4 
der hier verwendeten Makefiles abgedeckt sein.

von Axel G. (axelg) Benutzerseite


Lesenswert?

Jörg Wunsch wrote:
> Axel Gartner wrote:
>
>> Warum wird in Makefiles häufig -mmcu=atmega16 UND -D__atmega16__
>> verwendet?
>
> Es wird gar nicht ,,häufig'' dort verwendet, und streng genommen ist
> es illegal: das Benutzen von Bezeichnern, die mit zwei Unterstrichen
> beginnen, ist dem Nutzer nicht gestattet.

Danke, dann entsorge ich das aus dem nichthäufigen Makefile.

Axel

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


Lesenswert?

Bezüglich deiner einleitenden Frage: ja, es ist OK, für den MCU-
abhängigen Teil auf __AVR_${mcutype}__ zu testen.  Dieser Makro
stellt ein dokumentiertes Interface dar.

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.