Forum: Mikrocontroller und Digitale Elektronik [mega644] Platform zu Erstellungszeit erkennen


von Oscar D. (oscard)


Lesenswert?

Hallo,

ich arbeite an einem AVR-Projekt, welches häuig auf verschiedene 
Debug-Platformen umgestellt werden muss. Das ist zum einen JTAGICE mkII 
und zum anderen der AVR Simulator.
Aufgrund der Simulation muss im Projekt ein Define genau dann auf 1 
gesetzt werden, wenn das ganze auf dem Simulator ausgeführt wird, und 
sonst auf 0.

Die Frage ist nun, ob es möglich ist, zur Compilezeit auf ein Define von 
AVR zuzugreifen, aus dem man auf die Platform schließen kann.

Ich stelle mir das etwa so vor:
1
#ifdef __AVR_PLATFORM_SIMULATOR
2
#define SIMULATION 1
3
#else
4
#define SIMULATION 0
5
#endif
Das "__AVR_PLATFORM_SIMULATOR" entspringt hier natürlich meiner 
Phantasie, aber könnte es sein, dass es eine Möglichkeit gibt auf 
soetwas zuzugreifen?

Ich habe schon google und die hiesige Suche gequält, aber gänzlich ohne 
Erfolg. Ich bin für jede Idee dankbar.

Grüße, Oscar

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


Lesenswert?

Nein, so etwas gibt es nicht.  Der Compiler kann ja schließlich nicht
wissen, wofür du das Compilat am Ende einsetzen willst.

Du kannst natürlich zwei völlig verschiedene Build-Umgebungen
benutzen, vielleicht einmal im AVR Studio bauen und dort mit
entsprechenden -D-Optionen anzeigen, dass du jetzt für den Simulator
bauen willst.  Die Version für den AVR wird dann irgendwo anders
gebaut (externes Makefile, aber Vorsicht, dass es nicht durch AVR
Studio gebügelt wird).

von Oscar D. (oscard)


Lesenswert?

Danke für die schnelle Antwort.

Ich wusste nicht, dass man die Compilerdirektiven, die das AVR-Studio 
dem Compiler übergibt beeinflussen kann. Aber das ist in meinem Fall 
auch nicht hilfreich, da es wirklich nur Code bestimmt werden darf.

Eigentlich  hatte ich gehofft, dass AVR-Studio von sich aus irgendwelche 
Direktiven übergibt.

Schade, aber gut, muss das Define eben weiter per Hand gesetzt werden.

Gruß, Oscar

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.