Forum: Compiler & IDEs Atmel Studio 7 - zwei Hex Dateien erzeugen


von Funker (Gast)


Lesenswert?

Hallo,

ich habe ein Projekt, bei dem zwischen zwei Stellen Daten via Funk 
übertragen werden sollen.
Nun bin ich soweit, dass ich mit dem programmieren anfangen kann.

Programmiert werden soll ein AtMega88 mit Atmel Studio 7.

Damit ich keine zwei Software-Projekte pflegen muss, möchte ich gerne 
Atmel Studio so konfigurieren, dass er beim compilieren zwei Hex Dateien 
erzeugt. Eine für die Sender-Platine und eine für die Empfänger-Platine.
Dabei soll mittels #ifdef der jeweilige Quellcode dazu verwendet werden.

Kann mir jemand dabei helfen, wie ich das im Atmel Studio konfigurieren 
muss?

Ich habe schon gegoogelt, aber nichts passendes gefunden.
Vielen Dank.

von Dennis X. (Gast)


Lesenswert?

Schau dir die Pre und Post Compiler commands an. Ich hab so etwas 
ähnliches realisiert wo ich verschiedene Versionen mit einem bootloader 
her file verknüpft hab. Damit kannst du quasi alles realisieren wie du 
es gerade möchtest. Ich hab mir da einfach ein zwei python Skripts 
geschrieben die das machen. Die werden dann nur angestoßen. Um zwei 
Versionen zu erzeugen könntest du ein #ifdef XXX #else #endif einbauen.
Zwei mal compilieren und dazwischen eben die Datei aus dem debug / 
Release Ordner wegsichern (sonst kommt der clean und holt sich die).

-D

von Funker (Gast)


Lesenswert?

Dennis X. schrieb:
> Um zwei
> Versionen zu erzeugen könntest du ein #ifdef XXX #else #endif einbauen.
> Zwei mal compilieren und dazwischen eben die Datei aus dem debug /
> Release Ordner wegsichern (sonst kommt der clean und holt sich die).

Danke für die Antwort.
Ich dachte eher, ob es vielleicht die Möglichkeit gibt, dass er bei 
einem Build gleich beide Varianten kompiliert und mir dann zwei 
verschiedene Hex-Dateien erzeugt.

von nicht"Gast" (Gast)


Lesenswert?

Hallo,

du kannst bei deinem Atmel Studio auch ein externes Makefile benutzen. 
Dort kannst du dann jede Schweinerei treiben, die dir Einfällt^^

von Harry M. (harry4516)


Lesenswert?

nur mal so als weitere Idee:

wenn sich Sender- und Empfängerplatine sehr unterscheiden, wären 2 
Projekte evt die bessere Lösung.

Sind sich die Platinen jedoch sehr ähnlich oder fast identisch, so 
könnte man sie markieren indem man einen Input Pin auf GND legt (am 
Empfänger) bzw auf Vcc legt (am Sender). Anhand dieses Pins kann die 
Software dann die Sende- oder Empfangsfunktion ausführen. Der Vorteil, 
da brauchst nur mehr ein einziges HEX file für alles.

von Sebastian S. (amateur)


Lesenswert?

Es ist auch möglich in der Hauptdatei nur zwei if-Zweige zu 
implementieren und den Rest "auszulagern". Dann wird immer nur der Kram 
bearbeitet, den Du gerade befummeln willst.

von Willi (Gast)


Lesenswert?

... und zwei Konfigurationen kann man auch anlegen, den kann man auch 
unterschiedliche "defines" und Output File Namen mitgeben.

von Peter D. (peda)


Lesenswert?

Harry M. schrieb:
> Sind sich die Platinen jedoch sehr ähnlich oder fast identisch, so
> könnte man sie markieren indem man einen Input Pin auf GND legt (am
> Empfänger) bzw auf Vcc legt (am Sender). Anhand dieses Pins kann die
> Software dann die Sende- oder Empfangsfunktion ausführen. Der Vorteil,
> da brauchst nur mehr ein einziges HEX file für alles.

Genau so habe ich das auch gemacht.
Die meisten Routinen sind gemeinsam verwendbar und nur wenig Code wird 
mehr benötigt gegenüber getrennten Programmen.
Auch ist es für die Fertigung einfacher.

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.