Forum: Mikrocontroller und Digitale Elektronik Intel-HEX ___HEX-80


von marko (Gast)


Lesenswert?

hi,

bin gerade dabei meine ersten at's zu brennen(at89cx051).
ich habe mir den programmer von batronix nachgebaut.

programmentwicklung geschieht mit µvision2 von Keil in C.
beim compilieren wird auch ein hex-80 file erzeugt.
nur das einbinden des Hex-files in das prog-studio von batronix klappt
wohl nicht richtig.
es werden immer nur 6byte geladen

wenn ich aber ein beispielprogramm von batronix verwende klappts
100pro.


gibts da unterschiede in den hex-files? oder kann mir jemand sagen, was
ich falsch mache?

marko

von Profi (Gast)


Lesenswert?

Dann schau Dir das File doch mal mit einem Editor an.

Es gibt neben Intel-Hex auch Motorola-Hex, also musst Du beim
Generieren schon das Format angeben, das der Progger sehen will, oder
es ins richtige umwandeln (es gibt genug utility-Programme dafür).

Oder Du nimmst das bin-Format, das ist eindeutig.

von Markus_8051 (Gast)


Lesenswert?

Hallo Marko,

ich hatte auch schon diverse Probleme mit dem HEX-Format. Hatte mir
auch mal einen HEX2BIN-Converter geschrieben. Der konnte allerdings
keine "Löcher", sprich wenn im Code ungenutzte Speicherbereiche
waren, diese zu überspringen. Ebenso verhält es sich mit vielen
"preiswerten" Brennern. Vielleicht hat Deiner da auch Probleme.
Wandel die Datei vorher mal mit einem HEX2BIN-Converter um. Dann siehst
Du auch gleich, ob es wirklich eine 6-Byte Datei ist.


@Profi: Ich glaube´, µVision kann keinen BIN-Code ausgeben.

P.S.: HEX2BIN-Converter gibt es hier:
http://www.keil.com/download/docs/hex2bin.zip.asp

von Benedikt (Gast)


Lesenswert?

Schau mal wieviele Zeilen die Hex Datei hat. Damit das HEX2BIN Utility
z.B. mit den AVR Studio Hex Dateien geht muss man die erste Zeile
löschen. Diese ist warscheinlich ein Zusatz um auch >64kB speichern zu
können.

von marko (Gast)


Lesenswert?

@ markus :
stimmt µvisio2 gibt kein .bin file aus
selbst der hex2bin converter akzeptiert das von µvision2 erzeugte
hex-file nicht

ein programm wurde auf zwei unterschiedlichen umgebungen geschrieben
1. µvision2
2. Ride

++ also das von µvisio2 erzeugte hex-file:

:09082A00120833C2967F407E1FC4
:0C083300EF4E6007EF1F70F81E80F522EA
:10080000C29712082FD29712082FC29712082FD220
:10081000977F987E3A12082AD2967F407E1F120850
:0A0820002AD2967F987E3A02083330
:0300000002083FB4
:0C083F00787FE4F6D8FD75810702080000
:00000001FF

++ das von Ride erzeugte hex-file:

:03000000020003F8
:0F000300758108E478FFF6D8FD75A0FF02001E96
:0C001200EE4F6007EF1F70F81E80F52213
:10001E00C2977E1F7F40120012D2977E1F7F401222
:10002E000012C2977E1F7F40120012D2977E3A7F37
:10003E0098120012C2967E1F7F40120012D2967E38
:10004E001F7F40120012C2967E1F7F40120012D2F6
:09005E00967E3A7F9812001222EE
:00000001FF

es sind unterschiede vorhanden bei gleichem code, wobei das von Ride
erzeugte hex-file von batronix's prog-studio akzeptiert wird und die
hardware funktioniert.

nun habe ich echt kein draht ständig mit drei programmen zu arbeiten.
3 programme....da ich gern mit µvision2 die programme entw. + simul.
dann müßte ich den code in Ride übertragen -> hex in prog-studio :(

so genug gejammert

hat jemand ne idee :D

von Markus_8051 (Gast)


Lesenswert?

Hallo Marko,

ich habe Deine Zeilen, die µVision erstellt haben soll, in eine
hex-Datei gepackt und diese mit dem hex2bin von der Keil-Homepage in
eine bin-datei umgewandelt. Klappte problemlos. Heraus kam eine 2123
Bytes große Datei. Ab Adresse 0000 steht ein Sprung auf Adresse 083f.
Dort geht es auch weiter. Ob das sinnvoll ist, was da dann steht war
mir ohne Disassembler etwas mühsam nachzuvollziehen.

Also, warum kann er das bei Dir nicht konvertieren?

Gruß,
Markus

von Markus_8051 (Gast)


Lesenswert?

Habe gerade noch etwas gefunden: Wenn es mit dem Konvertieren nach *.bin
dann klappt kommt das nächste Problem auf Dich zu:

Ich vermute, Du hast eine Demoversion vom Keil-µVision. Diese hat
verschiedene Beschränkungen (siehe Kiel-Homepage). Eine davon ist, daß
der vom C-Compiler erzeugte Code ab Adresse 0x0800 liegt. Das heißt, er
wird auf einem 89C1051 oder 89C2051 nicht laufen. Wenn Du einen 89C4051
zur Hand hast: Bingo, das könnte klappen! Ansonsten schreib Dein
Programm in Assembler!

CU,
Markus

von marko (Gast)


Lesenswert?

ok, danke erst mal.

marko

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.