Comment relocaliser le code d'application

Le code applicatif doit être relocalisé à l'adresse 0x0200 ou 0x0800 dépendamment du modèle et du firmware utilisé. L'adresse de début du code applicatif dépend de la taille du bloc boot. Les premiers modèles PIC18F avaient un bloc boot de 256 octets. La plupart des nouveaux modèles ont un bloc boot de 1024 octets. Pour déterminer la taille du bloc boot de votre microcontrôleur, vous pouvez consulter le fichier PicDevices.properties.

Si vous ne comptez pas protéger le bloc boot, il vous est toujours possible de relocaliser le code applicatif à l'adresse 0x0200 même avec les modèles ayant un bloc boot de 1024 octets, mais il faudra mettre l'entrée appropriée à jour dans le fichier PicDevices.properties et il faudra utiliser le firmware approprié (bootload.hex).

CCS

Ajoutez les directives suivantes dans votre code source .c:

#build(reset=0x200)
#build(interrupt=0x208)
#org 0x0000,0x01ff
void bootloader() {
#asm
nop
#endasm
} // Reserve l'espace pour le bootloader

SDCC

Utilisez la directive du compilateur --ivt-loc 0x200.

PICC-18 d'HI-TECH

Durant l'étape du link, utilisez la directive du linker -a200h.

Microchip C18

Editez le script du Linker 18f452_c.lkr pour ptotéger le secteur boot et rebâtir les objets de démarrage C18 c018.o and c018i.o. Assurez-vous que vous n'avez pas défini d'adresse absolue faisant référence au secteur boot dans votre code d'application. Par exemple:

#pragma code InterruptVectorHigh = 0x08

doit être changé à

#pragma code InterruptVectorHigh = 0x208

PIC est une marque déposée de Microchip Technology Inc.