Hallo XC8-Gemeinde, habe das Problem, einen Bootloader und die Applikationssoftware zu mergen. Beide Programme laufen alleine ohne Probleme. Beim Einbinden des Bootloaders in die Applikation tritt folgender Fehler auf: (944) data conflict at address 8h between ... (zwischen beiden Programmen) Der Bootloader belegt den Programmspeicherbereich 0 ... 0x7FF, verwendet keine Interrupts. Es werden von ihm die Vectoradressen 0x0 mit 0x800, 0x8 mit 0x808 und 0x18 mit 0x818 richtig beschrieben. Der codeoffset der Applikation ist 0x800. Beim Compilieren der Applikation zusammen mit dem Bootloader kommt es zu der obigen Fehlermeldung, weil der Linker die Interrupt-Vektoren 0x8 und 0x18 von beiden Programmen unterschiedlich überschreiben möchte. Wie kann ich den Linker davon abhalten. Der Programmspeicherbereich 0x800 ... 0x81A sollte eigentlich den Interruptvectoren zur Verfügung stehen, jedoch man findet darin Programm-Code der Applikation. Nach vergeblicher Suche im Netz und vielen erfolglosen Software-Experimenten hoffe ich hier auf Hilfe. Hat jemand eine Idee? Die Randbedingungen: MPLABX 4.05 XC8 2.05 PIC18F24K42 Vielen Dank schon mal im voraus.
:
Bearbeitet durch User
Schau mal da: https://pic-projekte.de/blog/bootloader-fur-pic16-und-pic18/ Vielleicht hilft das weiter. <edit> AN1310? Müsste alles in der entsprechenden Application-Note stehen. Die meisten scheinen aber das Ende des Programmspeichers für den Bootloader zu präferieren, dann ist die Umleitung der IR-Vektoren überflüssig...
:
Bearbeitet durch User
Leider nicht. Das kannte ich schon. Trotzdem vielen Dank.
Hatte mal das Problem, dass MPLABX v5.10 nicht mit XC8-2.05 harmoniert hat. XC8 waren wohl die dfp-sachen des MPLABX zu alt und das Projekt konnte nicht einmal kompiliert werden. Mit v5.20 ging es dann wie erwartet.
neuer PIC Freund schrieb im Beitrag #5899418: > Hatte mal das Problem, dass MPLABX v5.10 nicht mit XC8-2.05 harmoniert > hat. XC8 waren wohl die dfp-sachen des MPLABX zu alt und das Projekt > konnte nicht einmal kompiliert werden. Mit v5.20 ging es dann wie > erwartet. Das hatte ich auch schon mal, hilft bei dem Problem jedoch nicht weiter. vloki, deinen Vorschlag, den BL ans Ende des Programmspeichers zu legen erzeugt die gleiche Fehlermeldung aber für den Reset-Vektor: (944) data conflict at address 0h between ...
Geschafft (aber nicht recht glücklich). Die Lösung war, das Remapping der IR-Vektoren aus dem Bootloader zu entfernen. Weiß nicht, warum der Linker hartnäckig auf den Adressbereich 0 ... 0x18 zugreifen will. Vielen Dank für eure Ideen.
Ullrich A. schrieb: > Die Lösung war, das Remapping der IR-Vektoren aus dem Bootloader zu > entfernen. Also Bootloader am Ende des Speichers jetzt?
Volker S. schrieb: > Ullrich A. schrieb: >> Die Lösung war, das Remapping der IR-Vektoren aus dem Bootloader zu >> entfernen. > > Also Bootloader am Ende des Speichers jetzt? Nein am Anfang. Jedoch habe ich jetzt die Auflösung des Problems gefunden: http://ww1.microchip.com/downloads/en/AppNotes/90003162A.pdf Nach diesem Rezept lassen sich die IR-Vektoren verschieben.
:
Bearbeitet durch User
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.