Forum: Mikrocontroller und Digitale Elektronik Kann man ein Arduino-File direkt in ein Hex-File umwandeln?


von FredMa (Gast)


Lesenswert?

Hallo,
kann man ein Arduino-File in ein Hex-File umwandeln, um es direkt, also 
ohne Arduino-Hardware, auf einen AVR-Controller flashen zu können?

Ich habe hier ein .ino-File, dass ich gerne direkt auf einen Atmega 
brennen möchte.
Habe aber nur einen AVRISP MKII und einen Programmieradapter dafür zur 
Hand und würde das erzeugte Hex-File z.B. vom AVR-Studio aus auf den 
Controller flashen.

(Kann die Arduino-IDE alternativ auch Hex-Files zum Flashen ausgeben? 
Wäre zwar etwas umständlicher, aber machbar)

von Chris K. (Gast)


Lesenswert?

http://www.theengineeringprojects.com/2015/10/hex-file-arduino.html

oder eben direkt aus dem Arduino Studio mittels angeschlossenen Debugger 
hochladen, dazu halt die Programmiermethode ändern.

Alles mit ein paar einfachen Worten per Google findbar.

von PittyJ (Gast)


Lesenswert?

Ich dachte immer, ein Ino-File wäre der Sourcecode, den man noch 
compilieren müßte. Also nicht nur gcc objcopy oder ähnliches.

von Chris K (Gast)


Lesenswert?

Kompilieren macht Arduino automatisch vorm hochladen, bzw manuell wenn 
man ein hex File erzeugen lässt.

von Schlaumaier (Gast)


Lesenswert?

FredMa schrieb:
> Kann die Arduino-IDE alternativ auch Hex-Files zum Flashen ausgeben?

Macht sie doch immer. Die legt die im Ordner ab, und schiebt sie dann 
hoch.

Das ist sogar dringend erforderlich weil einige Programmer mit der IDE 
nicht zurecht kommen.

Mach folgendes.

Starte die IDE, klicke auf Einstellungen, Ganz unten findest du den Text 
"Mehr einstellungen können.... " Öffne mit einen EINFACHEN Text-Editor 
die angegebenen Datei.

im 2. Eintrag findest du den Path wo sich das HEX-File befindet. ;)

von Schlaumaier (Gast)


Lesenswert?

PittyJ schrieb:
> Ich dachte immer, ein Ino-File wäre der Sourcecode, den man noch
> compilieren müßte. Also nicht nur gcc objcopy oder ähnliches.

Ist auch richtig. Die INO ist nur eine lausige Text-Datei. Die IDE 
kompiliert die (haut die Libs dazu etc) und erstellt das HEX-File.

Das hochladen macht ein anderer dann. ;)

von Philipp K. (philipp_k59)


Lesenswert?

Schlaumaier schrieb:
> im 2. Eintrag findest du den Path wo sich das HEX-File befindet. ;)

In der neuen IDE gibt es sogar einen Menüeintrag dafür.

von Sebastian W. (wangnick)


Lesenswert?

Philipp K. schrieb:
> In der neuen IDE gibt es sogar einen Menüeintrag dafür.

In der alten auch, nennt sich "Kompilierte Binärdatei exportieren" im 
Menü "Sketch". Dann landet die HEX-Datei (oder bei manchen Boards zwei 
davon, eine ohne Bootloader und eine mit Bootloader) im Sketch-Ordner.

LG, Sebastian

: Bearbeitet durch User
von Schlaumaier (Gast)


Lesenswert?

Sebastian W. schrieb:
> In der alten auch, nennt sich "Kompilierte Binärdatei exportieren" im
> Menü "Sketch".

Habe ich nie benutzt. ;)  Ich habe die preferences.txt einfach von Hand 
angepasst. ;) Damit Ordnung herrscht.

Davon abgesehen macht mein VOR-Compiler das so das er jede HEX in den 
Projekt-Ordner kopiert. ;)

von FredMa (Gast)


Lesenswert?

Vielen Dank, ihr seid super!
Dann weiß ich, was ich wissen muss und mache das Hex mit der 
Arduino-IDE.

von Wolfgang (Gast)


Lesenswert?

Schlaumaier schrieb:
> Die IDE kompiliert die (haut die Libs dazu etc) und erstellt das HEX-File.

Die IDE compiliert überhaupt nichts. Das macht der gcc.

von Joachim B. (jar)


Lesenswert?

Wolfgang schrieb:
> Das macht der gcc.

und von dem gibts auch verschiedene Versionen, die kann man ja im ino 
Code erfragen
1
#define GCC_DEBUG
2
#ifdef GCC_DEBUG
3
  Serial.print(F("__VERSION__         = ")); Serial.println(__VERSION__); // versio_
4
  Serial.print(F("__GNUC_MINOR__      = ")); Serial.println(__GNUC_MINOR__);
5
  Serial.print(F("__GNUC_PATCHLEVEL__ = ")); Serial.println(__GNUC_PATCHLEVEL__);
6
#endif // #ifdef GCC_DEBUG

von Heinz R. (heijz)


Lesenswert?

FredMa schrieb:
> Habe aber nur einen AVRISP MKII und einen Programmieradapter dafür zur
> Hand und würde das erzeugte Hex-File z.B. vom AVR-Studio aus auf den
> Controller flashen.

Warum flashst Du nicht einfach direkt mit der Arduino IDE?

Du musst nur beim Pfeil "hochladen" die Shift-Taste drücken - dann kommt 
"hochladen mit Programmer"

Vorher musst Du in Werkzeuge - Programmer deinen AVRISP auswählen, 
natürlich noch COM-Port anpassen

von Manfred (Gast)


Lesenswert?

Wolfgang schrieb:
> Schlaumaier schrieb:
>> Die IDE kompiliert die (haut die Libs dazu etc) und erstellt das HEX-File.
> Die IDE compiliert überhaupt nichts. Das macht der gcc.

Du hast ja recht, trotzdem werfe ich Dir Wortklauberei vor. Der Vorteil 
der A*IDE ist ja gerade, die Konfiguriererei des GCC vor dem Benutzer zu 
verbergen.

Heinz R. schrieb:
> Warum flashst Du nicht einfach direkt mit der Arduino IDE?
>
> Du musst nur beim Pfeil "hochladen" die Shift-Taste drücken - dann kommt
> "hochladen mit Programmer"

Interessant, Shift-Hochladen kannte ich noch nicht. Ich nutze ISP nur, 
wenn ich den Bootloader ändern will. Ist ein guter Tip, damit kann man 
also eine blanken AVR ohne USB aus A*IDE bespielen.

> Vorher musst Du in Werkzeuge - Programmer deinen AVRISP auswählen,
> natürlich noch COM-Port anpassen

Das war bei meinem China-Clone eine längere Sucherei, mit welchem 
Programmer der Nachbau kompatibel ist.

von Einer K. (Gast)


Lesenswert?

Manfred schrieb:
> Interessant, Shift-Hochladen kannte ich noch nicht.

Gibt sogar einen Menüpunkt!
Sketch-->>Hochladen mit Programmer

von Heinz R. (heijz)


Lesenswert?

Manfred schrieb:
> Ist ein guter Tip, damit kann man
> also eine blanken AVR ohne USB aus A*IDE bespielen.

ja, ich mache es fast nur noch so - das Bootloader-Rumgekasper ist mir 
zu doof, so werden selbst nackte / fabrikneue Atmels einfach geflasht

Leider kann die Arduino-IDE die Fuses nicht setzen ...

von Einer K. (Gast)


Lesenswert?

Heinz R. schrieb:
> Leider kann die Arduino-IDE die Fuses nicht setzen ...

Das ist nicht ganz richtig!

Es bedarf allerdings einer fremden, eigenen oder modifizierten Board 
Definition dafür.
Über den Menuepunkt "Bootloader brennen" werden dann die Fuses gesetzt.
Auch wenn der Punkt so heißt, kann man doch so auf einen Bootloader 
verzichten, bzw. runter werfen.

Beitrag #6747985 wurde von einem Moderator gelöscht.
von Schlaumaier (Gast)


Lesenswert?

Manfred schrieb:
> Du hast ja recht, trotzdem werfe ich Dir Wortklauberei vor. Der Vorteil
> der A*IDE ist ja gerade, die Konfiguriererei des GCC vor dem Benutzer zu
> verbergen.

O.K.  Aber das macht sie so gut (das verbergen) das ich es nicht einmal 
bemerkt habe. Und solange es funktioniert und das Ergebnis stimmt, stört 
es mich auch eh nicht ;)

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.