Forum: PC Hard- und Software Intel HEX format


von Igor (Gast)


Lesenswert?

hallo,


gibt es eine möglichkeit daten aus excel in intelhex format zu 
konvertieren? Gibt es da ein Programm, oder ein Weg wie ich mir Daten 
die Hexadezimal in Excel sind in intelhex format konvertiere???


Ich habe paar Programme gefunden aber die erkennnen mir die Daten aus 
Excel als ascii Code und nicht als hexadezimal an.


Danke

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


Lesenswert?

> daten aus excel in intelhex format zu konvertieren?
Sind das in Excel einfach Standard-Zahlen im Bereich von 0-255?
Wie sieht die Tabelle aus?

Ich würde die Zahlen einfach in ein Textfile exportieren und dann kurz 
ein C-Programm schreiben, das mir das Zeug in ein Binärfile konvertiert. 
Und von Binär nach IHex gibt es Konverter wie Sand am Meer...

von Philipp K. (philippk) Benutzerseite


Angehängte Dateien:

Lesenswert?

Ich habe mal ein C-Programm geschrieben, das liest im Moment ein 
Binärfile ein und konvertiert es zu Hex.

Man kann einen beliebigen Array mit 8-Bit Werten füllen, der dann in ein 
Intel HEX-File konvertiert wird. Sollte einfach anpassbar sein.

von Igor (Gast)


Lesenswert?

Waoooo super danke für die Tipps!

Zu den Werten nochmal, ich muss 8400 Werte die 12bit breite sind im 
Flash ablegen. Dann hat sich herausgestellt das mein Flash zwar 16bit 
Datenbusbreite hat aber nur 8 bit am Eval board angelötet sind. Somit 
habe ich die Werte gesplittet und lese zwei Byte aus und gebe sie 
"verklebt" aus. Was dann von 8400 Werten zu 16800 Werten geführt hat.


Also so die zahl 4095 = 0FFF. Im intelhex muss das erste Daten byte 0F 
und das zweite FF sein. Ich lese das 0F aus dann das FF aus und dann 
gebe ich 0FFF aus. Was auch klappt. Mein problem ist das ich ich ca. 800 
Kurven und diese ins intelhex format bringen muss. Ich habe auch 
geschafft Kurven von Excel über Intelhex zu bin2hex im Flash 
abzuspeichern. Das Problem ist aber das er nach 16 bit Adressen wieder 
von vorne anfängt, wo quasi er eignlicht den Code bringen müsste die 
erweiterte Adresseleitung zu machen (Intelhex Type 04) glaub ich. Aber 
da scheitert es, zum einem am Programm zum anderem an meinem Verständiss 
wie ich quasi nach 65535 weiter addressiere.....




Wenn noch paar Tipps kommen wäre ich sehr Dankbar.




gruß

von Igor (Gast)


Lesenswert?

Ich hab mir dein Code angeschaut, bin nicht der C checker aber so wie 
ich das verstanden habe geht er nur bis 10 bit addressen. ich brauchte 
aber 24 bit addressen, könnte man das umändern?

von Duke Scarring (Gast)


Lesenswert?

@Igor:

Für solche Konvertierungsaufgaben (und ähnliches) lohnt es sich, sich 
eine Skriptsprache anzueignen. Ich empfehle Python, aber auch mit Perl 
oder Matlab läßt sich so eine Aufgabe lösen; notfalls auch mit C.

Duke

von excel (Gast)


Angehängte Dateien:

Lesenswert?

ich hab mir jetzt nicht alles durchgelesen, aber evtl. hilft die die 
Funktion DEZINHEX oder DEZINBIN weiter

von Igor (Gast)


Lesenswert?

Jepp das hatt ich schon verwendet, lediglich gab es zwei versionen, die 
eine die nur 16 bit addresse unterstüzt, und die andere die auch die 
erweiterung auf 32 hat. hab die zweite dann gefunden und hat soweit 
geklappt.


Gruß und Danke

von Philipp K. (philippk) Benutzerseite


Lesenswert?

@Igor
Weiss nicht wie du drauf kommst, warum mein Code nur bis 10 Bit 
funktionieren soll. Falls ich dich richtig verstehe und du 24 Bit 
adressieren willst, also 4 MegaByte bezweifle ich eher, dass du das mit 
Excel hinkrigst, nach 65k Zeilen ist da nämlich Schluss.

Wenn du im hexGenerator.c die folgende Zeile so anpasst, dann kommst du 
auf 65 MegaByte (ca. 26Bit), das sollte Reichen.
1
#define MemorySize (65 * 1024 * 1024)

P.S. Bei solch grossen Datenmengen nimmt man normalerweise Binärdateien, 
da die Nutzdaten im Hex-File nur knapp die Hälfte sind.

von Igor (Gast)


Lesenswert?

Hi,


>P.S. Bei solch grossen Datenmengen nimmt man normalerweise Binärdateien,
>da die Nutzdaten im Hex-File nur knapp die Hälfte sind.


Verstehe ich nicht so ganz. Wie gesagt ich muss 800 Kurven mal 16800 
Byte ablegen.

Mein Weg:


EXCEL EXCEL => in HEX EDITOR KOPIEREN       => als file.bin abspeichern
4095  0FFF     0000  0F FF 0F FE 0D DD . . .
4094  0FFE
4093  0DDD
.
.
.

 => BIN2HEX file.bin file.hex


Fertig!

von Vlad T. (vlad_tepesch)


Lesenswert?

Igor schrieb:
>>P.S. Bei solch grossen Datenmengen nimmt man normalerweise Binärdateien,
>>da die Nutzdaten im Hex-File nur knapp die Hälfte sind.
>
>
> Verstehe ich nicht so ganz.
ist doch nicht so schwer.

> Wie gesagt ich muss 800 Kurven mal 16800 Byte ablegen.
hat damit gar nix zu tun

1 Byte (0-255) wird im Intel-Hex-Format durch 2 Bytes (0-F) codiert.
das heißt, dass der Nutzdatenanteil 50% beträgt.
dazu kommen dann noch die Prä- und Postfixe vor/hinter jeder Zeile 
(Startbyte, Coount, Adresse, Typ, Prüfsumme), was je nach länge der 
Datensätze auch noch einen ordentlichen Anteil dazubringt.

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.