Forum: Compiler & IDEs "binary" im Makefile erzeugt kein bin-datei


von funkker (Gast)


Lesenswert?

Hallo, ich kompiliere ein  Miniprogramm von Winavr mit der Make. Habe 
dort "binary" angegeben. Es wird aber keine "bin" erzeugt, woran liegt 
das?

Danke.

von Hc Z. (mizch)


Lesenswert?

Wo hast Du „binary“ angegeben und wie?  Was heißt „Es wird aber keine 
"bin" erzeugt“?  Erwartest Du, eine Datei mit der Endung .bin zu 
erhalten oder woraus schließt Du das?  Was geschieht stattdessen?  Wie 
compilierst Du?  Was sind die Meldungen des Compilers?

Wieder mal ein Textadventure ohne grundlegende Angaben.

von funkker (Gast)


Lesenswert?

Ein Auszug aus der Make.
Unten ist "binary".
Beim erstellen der Make mit Mfile kann man es ja auswählen.
1
# Hey Emacs, this is a -*- makefile -*-
2
#----------------------------------------------------------------------------
3
# WinAVR Makefile Template written by Eric B. Weddington, Jörg Wunsch, et al.
4
#
5
# Released to the Public Domain
6
#
7
# Additional material for this makefile was written by:
8
# Peter Fleury
9
# Tim Henigan
10
# Colin O'Flynn
11
# Reiner Patommel
12
# Markus Pfaff
13
# Sander Pool
14
# Frederik Rouleau
15
# Carlos Lamas
16
#
17
#----------------------------------------------------------------------------
18
# On command line:
19
#
20
# make all = Make software.
21
#
22
# make clean = Clean out built project files.
23
#
24
# make coff = Convert ELF to AVR COFF.
25
#
26
# make extcoff = Convert ELF to AVR Extended COFF.
27
#
28
# make program = Download the hex file to the device, using avrdude.
29
#                Please customize the avrdude settings below first!
30
#
31
# make debug = Start either simulavr or avarice as specified for debugging, 
32
#              with avr-gdb or avr-insight as the front end for debugging.
33
#
34
# make filename.s = Just compile filename.c into the assembler code only.
35
#
36
# make filename.i = Create a preprocessed source file for use in submitting
37
#                   bug reports to the GCC project.
38
#
39
# To rebuild project do "make clean" then "make all".
40
#----------------------------------------------------------------------------
41
42
43
# MCU name
44
MCU = atmega32
45
46
47
# Processor frequency.
48
#     This will define a symbol, F_CPU, in all source code files equal to the 
49
#     processor frequency. You can then use this symbol in your source code to 
50
#     calculate timings. Do NOT tack on a 'UL' at the end, this will be done
51
#     automatically to create a 32-bit value in your source code.
52
#     Typical values are:
53
#         F_CPU =  1000000
54
#         F_CPU =  1843200
55
#         F_CPU =  2000000
56
#         F_CPU =  3686400
57
#         F_CPU =  4000000
58
#         F_CPU =  7372800
59
#         F_CPU =  8000000
60
#         F_CPU = 11059200
61
#         F_CPU = 14745600
62
F_CPU = 16000000
63
#         F_CPU = 18432000
64
#         F_CPU = 20000000
65
#         F_CPU = 8000000
66
67
68
# Output format. (can be srec, ihex, binary)
69
FORMAT = binary
70
71
72
# Target file name (without extension).
73
TARGET = main
74
75
.....

von funkker (Gast)


Lesenswert?

Ich erwarte eine Datei mit der Endung "bin" bei dieser Einstellung.
Es ist eine hex-datei vorhanden mit der Endung ".hex".

von eklige Tunke (Gast)


Lesenswert?

Öhm, häng mal alles an (als Dateianhang), das wichtigste fehlt imho. 
Wenn das, was fehlt, nur halbwegs so aussieht, wie bei mir, bekommst du 
nie ein *.bin sondern immer ein hex und elf und dann noch eep lss und 
sym. ;-)
Aber lass erst mal dein Makefile anschauen.

funkker schrieb:
> Ich erwarte eine Datei mit der Endung "bin" bei dieser Einstellung.
Du nimmst an , du solltest aber lieber mal das Makefile lesen 
(können). Das FORMAT ändert den Suffix höchstwahrscheinlich überhaupt 
man gar nicht!

Den Unterschied zwischen Formaten kenne ich aber nicht. (Hab im Makefile 
hier im AVR-GCC-Tutorial/Exkurs Makefiles und in meinem 
nachgeschaut, die müssten mehr oder weniger wie deines sein.)

von Hc Z. (mizch)


Lesenswert?

funkker schrieb:
> Ich erwarte eine Datei mit der Endung "bin" bei dieser Einstellung.

Das schien mir auch so, deshalb hatte ich gefragt.  Es gibt aber keine 
Regel, die besagt, dass das so sein muss, und in der Tat haben die 
meisten Binaries andere Endungen oder gar keine.

> Es ist eine hex-datei vorhanden mit der Endung ".hex".

Das ist Dein Binary.  Es gibt auch eine Datei mit der Endung „.elf“, die 
enthält auch Dein Binary, nur in anderer Form.  Welches von beiden Du 
verwendest, hängt von dem Programm ab, das das Binary als Nächstes 
vorgeworfen bekommt.

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


Lesenswert?

funkker schrieb:
> Es ist eine hex-datei vorhanden mit der Endung ".hex".

Und du bist dir ganz sicher, dass das eine Intel-Hex-Datei ist,
oder heißt sie nur so?

Nimm's als Bug in Mfile... sorry, ich bearbeite dafür gerade keine
Bugreports und plane auch kein neues Release. ;-)

von funkker (Gast)


Lesenswert?

Habe die Datei mal umgenannt nach ".bin" und mit dem Progger von Bascom 
geladen, weil der zwischen bin und hex unterscheidet beim laden. es ist 
eine bin-datei die "hex" heisst. Ausserdem ist die bin-hex wesentlich 
kleiner als das ihex-format.

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.