Forum: Mikrocontroller und Digitale Elektronik C18 Linker (Bootloader)


von Daniel T. (Gast)


Lesenswert?

Hallo,

ich möchte einen Bootloader in meinen PIC18F2458 brennen und brauche 
Hilfe bezüglich der Linker Dateien.

Der Bootloader bekommt einen gewissen Speicherbereich und soll ein 
Programm in den folgenden bereich schreiben. Den Bootloader konnte ich 
raufspielen, allerdings habe ich ein Problem jetzt über den Bootloader 
neue Programme in den PIC zu schreiben. Für den Bootloader werden von 
Microchip Linker zur Verfügung gestellt, ich habe aber keine Linker für 
das raufzuspielende Programm gefunden. Deswegen hab mal selber versucht 
den Linker zu schreiben, hab mir ein paar Linker von Sprut und Microchip 
angeguckt und bin jetzt total verwirrt.

In der Datei "18F4550.lkr" steht der Speicherbereich mit dem Namen 
"vectors". In der Datei "18f4550_g" (neuere Version?) steht der Bereich 
"vectors" garnicht drin sondern wird mit in dem Bereich "page" 
aufgenommen. In der "BootModified.18f4550_g.lkr" (die beim Brennen des 
Bootloaders verwendet wird) ist der Bereich "vectors" wiederum 
vorhanden. Dazu ist noch ein Bereich namens "BootPage" hinzugekommen.

Meine Frage:

Was hat es mit den Speicherbereichen auf sich? In der "18f4550.lkr" und 
"rm18f4550.lkr" ist der Speicherbereich "vectors" einfach verschoben 
worden. Aber was mache ich wenn in dem original Linker dieser Bereich 
garnicht angegeben ist?


Ich hoffe jemand von Euch kann mir helfen.

Danke.

von Daniel T. (Gast)


Lesenswert?

Ich habe mich an den Dateien von Sprut orientiert. Die Linkerdatei 
enthält jetzt

CODEPAGE   NAME=boot       START=0x0            END=0x7FF 
PROTECTED
CODEPAGE   NAME=vectors    START=0x800          END=0x0x829 
PROTECTED
CODEPAGE   NAME=page       START=0x82A          END=0x5FFF

Leider funktioniert es nicht :(

von holger (Gast)


Lesenswert?

>CODEPAGE   NAME=vectors    START=0x800          END=0x0x829

Hast du die Vectors im Programm das mit dem Bootloader geladen
wird auch im Programm richtig angegeben?

>Leider funktioniert es nicht :(

Was funktioniert nicht? Der Bootloader oder das Programm das der
Bootloader lädt?

von Daniel T. (Gast)


Angehängte Dateien:

Lesenswert?

Was heißt im Programm richtig angegeben? (Ich bin ganz Frisch in Sachen 
PIC und Linker)

Ich denke mal in den Vectors Bereich werden die Adressen abgespeichert 
die bei einem Interrupt verlassen werden. In meinem Testprogramm werden 
keine Interrupts verwendet.

Das Programm was der Bootloader lädt funktioniert nicht. Der Bootloader 
lässt sich mit MPLAB und "BootModified.18f2458_g.lkr" raufspielen. Ist 
der µC dann am USB angeschlossen wird das Device auch mit der PC 
Software "HIDBootLoader.exe"  angezeigt. Wenn ich mit dem Programm nun 
ein HEX File in den µC schreibe startet das Programm einfach nicht.


Der Bootloader wird ja nur gestartet wenn man beim reset einen 
bestimmten Taster drückt. Diesen habe ich mit einem Pulldown Widerstand 
auf B4 gesetzt.

Komischerweise lässt es sich programmieren obwohl ich den Taster beim 
reset garnicht betätige.

Wenn ich den Taster gedrückt lasse erkennt HIDBootLoader.exe das Device 
erst wenn ich den Taster wieder loslasse....


Sehr merkwürdig...

Ich habe mal die beiden Linker angehängt

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.