Ist Intel HEX universal?

Gast #4939416
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
Moderator (Firma: Titel) Persönliche Seite #4939479
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.
Gast #4939841
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 9 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.