Forum: Compiler & IDEs IAR: Ein Projekt, vier Output-Files mit unterschiedlichen Optionen


von Jochen (Gast)


Lesenswert?

Hallo!

Habe für 4 Boards eine kleine Firmware in IAR Workbench geschrieben.
Der Code ist Grundlegend gleich, bis auf die ID-Nr. 1, 2, 3 und 4
Leider habe ich keinen Möglichkeit über externe Pins eine Einstellung 
vorzunehmen, also muss es mit der Firmware gemacht werden. Aber ich habe 
auch nicht Lust jedes mal die define-Variable der Adresse zu ändern und 
neu zu kompilieren. Kann man sowas mit den Build-Optionen des Projekts 
machen??

Danke für eure Hilfe.

Gruß
Jochen

von Karl H. (kbuchegg)


Lesenswert?

Jochen schrieb:
> Hallo!
>
> Habe für 4 Boards eine kleine Firmware in IAR Workbench geschrieben.
> Der Code ist Grundlegend gleich, bis auf die ID-Nr. 1, 2, 3 und 4
> Leider habe ich keinen Möglichkeit über externe Pins eine Einstellung
> vorzunehmen, also muss es mit der Firmware gemacht werden. Aber ich habe
> auch nicht Lust jedes mal die define-Variable der Adresse zu ändern und
> neu zu kompilieren. Kann man sowas mit den Build-Optionen des Projekts
> machen??
>

Ich kenn jetzt nicht die IAR Workbench.
Aber so ähnlich geht es fast überall:

So ziemlich jeder Compiler hat eine Möglichkeit, wie man ihm #define von 
aussen vorgeben kann.
Anstelle dass man im Code irgendwo ein

#define CPU_NR  1

hat, kann man dem Compiler beim Aufruf über die Commandline (was anderes 
macht ja auch die IDE nicht, nur das man die Commandline nicht direkt 
sieht) eine entsprechende Option mitgeben

cc test.c  /D CPU_NR=1

(das ist jetzt nur ein konstruiertes Beispiel, die Details werden bei 
deinem Compiler anders sein, aber jetzt gehts es ums Prinzip)

Das ist dann völlig gleichwertig, als wie wenn im Code ganz am Anfange 
das entsprechende #define stehen würde.

Eine IDE wiederrum bietet normalerweise irgendwo an, welche derartige 
Optionen sie beim Compileraufruf mitgeben soll und wenn die IDE das 
Konzept verschiedener benutzererstellter Build-Konfigurationen 
unterstützt (und das tun sie alle), dann kannst du dir natürlich 
verschiedene Konfigurationen machen, die im Prinzip alle gleich sind und 
sich nur in den #define unterscheiden, die dem Compiler beim Aufruf 
mitgegeben werden.

Soweit zum Allgemeinen.
Wie das jetzt konkret in der IAR Workbench gemacht wird, weiß ich nicht. 
Aber irgendwo wird es sicherlich einen Einstelldialog geben, in dem man 
diese #define Sachen für eine bestimmte Build-Konfiguration festlegen 
kann.

von Jochen (Gast)


Lesenswert?

Hallo!

Danke für die Antwort.

Dann muss ich mich wohl erstmal mit den ganzen Befehlen für den Compiler 
beschäftigen ... seufz

Gru0
Jochen

von Karl H. (kbuchegg)


Lesenswert?

Jochen schrieb:
> Hallo!
>
> Danke für die Antwort.
>
> Dann muss ich mich wohl erstmal mit den ganzen Befehlen für den Compiler
> beschäftigen ... *seufz*

Würd ich nicht machen.
Ich würde damit anfangen, alle Dialoge in der IAR Workbench 
abzuklappern, welcher davon in etwa so aussieht bzw die entsprechenden 
Dialogfelder hat, um obiges zu realisieren. Die Chancen stehen nämlich 
gut, dass die Workbench dem Compiler bereits Optionen in Form von 
defines mitgibt. Hint: Was denkst du wie die Workbench den Compiler 
veranlasst einmal ein Debug Exe zu erzeugen und einmal ein Release bzw. 
unterschiedliche Optimierungsstufen einstellt etc.?

Besonderes Augenmerk würde ich auf alle Dialoge legen, die über einen 
Menüpunkt aufgerufen werden, wobei im Menüpunkt die Wörtchen "Project" 
oder "Configuration" oder dergleichen vorkommen. Dort irgendwo wirst du 
fündig werden.

Wenn alle Stricke reissen, kann man immer noch anfangen Helpfiles und 
Doku zu durchforsten. Die Aufgabenstellung "defines an den Compiler 
weitergeben" ist nicht so ungewöhnlich. Die Doku könnte darüber Bescheid 
wissen.

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.