Forum: Mikrocontroller und Digitale Elektronik PIC18F24K42 - Bootloader und Applikation verbinden


von Ullrich A. (linde2)


Lesenswert?

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
von Volker S. (vloki)


Lesenswert?

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
von Linde2 (Gast)


Lesenswert?

Leider nicht. Das kannte ich schon. Trotzdem vielen Dank.

von neuer PIC Freund (Gast)


Lesenswert?

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.

von Ullrich A. (linde2)


Lesenswert?

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 ...

von Ullrich A. (linde2)


Lesenswert?

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.

von Volker S. (vloki)


Lesenswert?

Ullrich A. schrieb:
> Die Lösung war, das Remapping der IR-Vektoren aus dem Bootloader zu
> entfernen.

Also Bootloader am Ende des Speichers jetzt?

von Ullrich A. (linde2)


Lesenswert?

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
Noch kein Account? Hier anmelden.