Hex File Interpreter

OP #3334593
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
Gast
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
OP
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
Gast
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
Gast
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

Antwort schreiben

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