Forum: PC Hard- und Software Hex File Interpreter


von Andreas S. (schunki)


Lesenswert?

Hallo zusammen!

Ich habe hier ein Problem, einen Bootloader vor ein bestehndes Programm 
auf einem XC161 Mikrocontroller zu packen. Allerdings scheint das ganze 
mit der Speicherzuweisung beim Linken nicht zu funktionieren, da ich 
irgendwie immer direkt in das Hauptprogramm wandere. Auch wenn ich die 
Bedingung zum Flashen aus dem StartUp-Code des Bootloaders ganz raus 
nehme lande ich nicht im Bootloader sondern direkt im Hauptprogramm, 
welches eigentlich hinter dem Bootloader liegen müsste.

Daher jetzt meine Frage:
Kennt jemand einen guten Hex-File-Interpreter mit dem ich mir die 
Hex-Files so anzeigen lassen kann, dass mir die jeweilige 
Speicheradresse und der darauf geschriebene Befehl angezeigt wird? Damit 
könnte ich dann überprüfen, ob und was beim Linken falsch läuft!


Gruß
Andreas

von Thomas (Gast)


Lesenswert?

keine Ahnung was du mit Interpreter meinst, aber Flashit ist ganz gut.

http://www.hse-electronic.de/Deutsch/dDownloads/ddownloads.html

Thomas

von Reinhard Kern (Gast)


Lesenswert?

Andreas S. schrieb:
> dass mir die jeweilige
> Speicheradresse und der darauf geschriebene Befehl angezeigt wird?

Das wäre ein Disassembler, der ist natürlich prozessorspezifisch. Das 
Problem beim Linken löst er aber sicher nicht. Für deine gesamte 
Software ist die Startadresse die des Bootloaders, erst der springt zum 
Hauptprogramm - das darf also nicht als Start eingetragen sein.

Gruss Reinhard

von Andreas S. (schunki)


Lesenswert?

Hallo Reinhard!

Zuerst schon mal Danke für die Antwort. Ich werd morgen mal schauen, ob 
ich einen passenden Disassambler finde, der mir weiter helfen kann. Das 
mit der Startadresse ist mir bewusst. Ich hatte eigentlich das 
Hauptprogramm so gelinkt, dass der StartUp-Code hierzu auf C10000 
beginnt und der StartUp-Code des Bootloaders bei 000000 anfängt. Aus dem 
Assembler-SartUp-Code des Bootloaders soll über eine Bedingung 
entschieden werden ob das Hauptprogramm vom Bootloader geflasht oder 
gestartet werden soll. Allerdings wird hier immer mein Hauptprogramm 
gestartet und ich lande nie beim flashen. Auch wenn ich den bedingten 
Sprung zum Flashen raus nehme und ich eigentlich auf jeden Fall beim 
Flashen landen müsste. würde ich eben gerne mein Hex-File einmal zurück 
interpretieren und schauen, ob der Linker auch wirklich alles so gemacht 
hat wie ich es angedacht hatte!


Gruß
Andreas

von Thomas (Gast)


Lesenswert?

dazu brauchst du keinen Disassembler sondern mußt dir einfach nur die 
Linker Reportfiles ansehen (*.m66 bei Keil) Dort stehen die Addressen 
der gelinkten Segmente.
Bei deinem Problem würde ich von einem Fehler im Loader ausgehen und 
weniger von einem Linkerproblem. Deine Runtime FW scheit ja zu laufen.

Thomas

von Reinhard Kern (Gast)


Lesenswert?

Andreas S. schrieb:
> dass der StartUp-Code hierzu auf C10000
> beginnt

Und wie kommt das Programm dahin? Das liegt doch nicht im Adressraum des 
Flash memories, oder doch?

Gruss Reinhard

von Reinhard Kern (Gast)


Lesenswert?

Hallo,

manche Linker setzen in Standard-Einstellung in die ersten Bytes ab 
000000 einen Sprungbefehl zur angegebenen Startadresse. Bei MASM z.B. 
angegeben durch "end startadresse".

Gruss Reinhard

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.