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
keine Ahnung was du mit Interpreter meinst, aber Flashit ist ganz gut. http://www.hse-electronic.de/Deutsch/dDownloads/ddownloads.html Thomas
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
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
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.