*.exe über make ausführen

Gast #1083378
Hi Zusammen!

Ich will über das makefile ein Programm (Windows Rechner, also eine 
*.exe) starten. Ziel soll sein, eine mit dem AVR-GCC erzeugte *.hex 
Datei mit einer anderen *.hex Datei zu mergen.
Also sollen zwei Hexfiles zu einem Hexfile zusammengefügt werden 
(natürlich so, dass die zwei Datein sich adressmäßig nicht überlappen).
Dazu habe ich mir ein Windows Programm geschrieben, dass das mergen 
erledigt.
Ich hätte aber gerne, dass das Programm automatisch nach dem kompilieren 
aufgerufen wird.
Wie stelle ich das an beim WinAVR? Kann ich das dem makefile nicht 
irgendwie sagen?
Gast #1083382
Ganz normal.

1. Ein Target angeben
2. Als Aktion Dein Programm aufrufen

Wie die Syntax genau geht müsste in der Dokumentation zu make stehen.
Schau Dir doch mal das bestehende Makefile an. Da müsstest Du das 
relativ schnelle heraushaben.
Gast #1083386
Hi!
Super schnelle Antwort!

Mein makefile habe ich mir angesehen, aber da werde ich nicht schlau 
draus.

Die Doku finde ich nicht. Wo steht die denn? Ich habe wie gesagt WinAVR 
installiert!

Gruß Tobi
Angehängte Dateien:
Gast #1083449
Make doku steht unter:

http://www.gnu.org/software/make/manual/make.pdf

Linken wird nicht gehen, denn es handelt sich ja nicht um ein 
Object-File sondern ein Hex-File.

In Deinem Makefile siehst Du einen Abschnitt
1
# Create final output files (.hex, .eep) from ELF output file.
2
%.hex: %.elf
3
  @echo
4
  @echo $(MSG_FLASH) $@
5
  $(OBJCOPY) -O $(FORMAT) -R .eeprom -R .Interface -R .Bootsektorram $< $@

Wie die Überschrift schon sagt, wird hier das hex file erzeugt.
Ich vermute, das Du nach der Zeile beginnend mit: "$(OBJCOPY)"
Dein Programm aufrufen solltest. Es wäre nützlihc wenn Dein Programm 
akzeptiert, wenn seine Ausgabedatei identisch mit einer der 
Eingabedateien ist.
Die oberste Zeile enthält die Angabe über das Target "%.hex" und die 
Abhängigen files "%.elf".
Ich würde aber nicht Hex als abhägngig einfügen. Evtl. kann es etwas 
hakelig werden, wenn Target und dependant files vom gleichen Typ sind. 
Musst Du probieren. Es kommt darauf an wie und wozu und wann Du das 
andere Hex-File erzeugst. Vielleicht gibst Du uns ein paar Infos 
darüber.
Gast #1083450
>Es wäre nützlihc wenn Dein Programm
>akzeptiert, wenn seine Ausgabedatei identisch mit einer der
>Eingabedateien ist.
Andernfalls die Datei vorher noch umbenennen.
Gast #1083453
Hi!

Danke!
Ich will das Hexfile auf einen anderen Controller programmieren. Bisher 
lade ich die Daten mit einem Bootloader (der auf dem Master Controller 
läuft) in den Master Controller, der dann damit den Slave programmieren 
kann. Besser wäre es aber, wenn die Daten gleich mit dem 
Kompiliervorgang quasi als "hexbuffer" im Master-Controller landet. So 
spart man sich den extra Ladevorgang.
Gast #1083470
Achso. D.h. also Du hast ein Programm in Hex-Form das vom einem 
Mastercontroller in eine Sklavencontroller geladen werden soll.
Das Hex-File des Masters soll das Hex-File das Sklaven enthalten.

OK. Dann geht der oben beschriebene Weg. Du musst nur noch die Adresse 
des sekundären Hex-Files festlegen.

Es gibt allerdings noch einen zweiten Weg.
Du machst aus dem Hex-File eine Initialisierung eines char Arrays.
A la:
1
char SlavePgm = { 0x89, 0x98, blablabla };
Das kompilierst Du dann ganz normal in den Master-Code.
Für die Umwandlung gibt es fertige Programme.
Eine Änderung des makefiles wird dann unnötig. Du musst nur das C-File 
mit der Initialisierung in das Projekt mit aufnehmen.
Gast #1083493
Genau das will ich machen!

Das mit dem Array hab ich mir auch schon überlegt, finde ich aber 
unschön. Mir ist der andere Weg lieber.

Danke für die Hilfe, ich werds mal so probieren.
Gast #1083688
>Das mit dem Array hab ich mir auch schon überlegt, finde ich aber
>unschön.

Nur interessehalber würde ich gerne mal wissen, was Du daran unschön 
findest.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.