Forum: Mikrocontroller und Digitale Elektronik Ist Intel HEX universal?


von Hans K. (Gast)


Lesenswert?

Ich arbeite derzeit an einem Projekt in der Arduino IDE, muss aber wegen 
dem Bootloader meines uCs über Atmel Studio hochladen.

Nun meine Frage: Wenn ich von Arduino die .HEX file exportiere, kann 
diese korrekt von Atmel Studio übertragen werden, oder sind .HEX files 
nicht kompatibel.

Ich bin ein blutiger Anfänger, wenn etwas unklar ist bitte nachfragen.

Danke im voraus,
Franz

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Franz M. schrieb:
> Wenn ich von Arduino die .HEX file exportiere, kann diese korrekt von
> Atmel Studio übertragen werden, oder sind .HEX files nicht kompatibel.
Im Intel-Hex File steht ein Inhalt des Flashs. Es ist nicht gesagt, ob 
es der gesamte oder der nötige Inhalt ist. Auf jeden Fall kann aber ein 
Intel-Hex File von anderen Programmern idR. problemlos gelesen und sein 
Inhalt an die entsprechende Stelle im Flash geschrieben werden.

Was du dann noch von Hand machen musst, sind die Fuses und die Lockbits. 
Die sind nämlich nicht im Flash...

> Wenn ich von Arduino die .HEX file exportiere, kann diese korrekt von
> Atmel Studio übertragen werden, oder sind .HEX files nicht kompatibel.
Was ich mich frage: warum probierst du das nicht einfach aus?

> Ich bin ein blutiger Anfänger
Du wirst beim Ausprobieren zwangsweise etwas lernen. Man kann sich 
Intel-Hex Files übrigens auch mit einem Editor anschauen und 
kontrollieren, an welcher Adresse des Datei-Inhalts im Flash gespeichert 
wird.

von W.S. (Gast)


Lesenswert?

Franz M. schrieb:
> Wenn ich von Arduino die .HEX file exportiere, kann
> diese korrekt von Atmel Studio übertragen werden, oder sind .HEX files
> nicht kompatibel.

Intel-Hex-Files, um es konkret zu sagen. Es sind auch Motorola-Hex-Files 
gebräuchlich.

Also, Intel-Hex ist ein Textformat, um Speicherinhalte blockweise mit 
Adresse und Prüfsumme in einer Datei haben zu können. Insofern ist das 
eigentlich kompatibel und unabhängig vom konkreten Programm was das 
liest oder schreibt.

Aber:
1. Intel-Hex wurde anfänglich für maximal 64K Speicherumfang erfunden. 
Um größere Speicher darstellen zu können, gibt es Erweiterungen, und 
zwar mehrere. Eine davon ist die CS:IP Erweiterung für 8086 Systeme, die 
bis 1 MB ausreicht. Eine weitere ist die plain 32 Bit Erweiterung, die 
für alles bis 4 GB ausreicht.

Blöderweise benutzen manche Gcc-Versionen die CS:IP Variante für Zeugs, 
was mit dem 8086 nix am Hut hat, anstatt korrekterweise die 32 Bit 
Variante zu nehmen. Ich hatte das bei meinem STM32Prog gemerkt.

2. Bei manchen Zielplattformen werden Daten auf vereinbarten Adressen im 
Hexfile gehalten, obwohl sie nichts mit dem Code zu tun haben. Beispiel: 
kleine PIC's von MicroChip. Dort steht der Code in 0..1FFFh, die 
Userflags und ID's und Fuses ab 2000h und der EEPROM-Inhalt ab 2100h - 
obwohl alles dreies miteinander nix zu schaffen hat.

Wahrscheinlich sieht das nun konkret bei deinem Arduino ganz entspannt 
aus, da kannst du erwarten, daß sich der Inhalt des Hexfiles nur nach 
dem Chip auf deiner LP richtet und nicht nach irgendwelchen 
PC-Programmen.

W.S.

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.