Come specificare gli intervalli di indirizzi per il codice PIN?
Domanda
Voglio usare il piccolo bootloader di Claudiu Chiculitas per PIC16 (l'ho modificato per adattarlo al mio chip) ma poiché quel bootloader non sposta il codice per impedire la sovrascrittura del bootloader, devo in qualche modo verificare manualmente che il bootloader non venga sovrascritto. Ho provato a usare l'opzione --rom in questo modo:
--rom=default,-0-4,-3f00-3fff
Quello che voglio è: nessun codice nelle prime 4 parole del memmory del codice, perché è qui che si trova il salto al bootloader e nessun codice nelle ultime 128 parole di memoria perché è lì dove si trova il bootloader effettivo. --da come lo uso non fa nulla. Sto usando HI-TECH PICC STD COMPILER (Microchip PICmicro) V9.60PL3 e il chip è pic16f876A.
Soluzione
Puoi anche farlo con uno script linker personalizzato. Di solito, lo script del tuo linker conterrebbe queste righe per mettere prima i vettori di reset e il codice (nella pagina denominata " page ") dietro di esso:
CODEPAGE NAME=vectors START=0x0 END=0x29 PROTECTED
CODEPAGE NAME=page START=0x2A END=0x7FFF
Per il bootloader utilizzato nella scheda FSDem di Microchip (che occupa l'intervallo 0x0-0x800 e si aspetta che il programma abbia i propri vettori a 0x800), questo viene sostituito dalle righe sottostanti che impediscono al linker di utilizzare qualsiasi valore inferiore a 0x800:
CODEPAGE NAME=boot START=0x0 END=0x7FF PROTECTED
CODEPAGE NAME=vectors START=0x800 END=0x0x829 PROTECTED
CODEPAGE NAME=page START=0x82A END=0x7FFF