AnsweredAssumed Answered

overlap detected by using FILL in PRM file and vector relocation

Question asked by Sebastian Paul on Feb 16, 2012
Latest reply on Feb 21, 2012 by Sebastian Paul

Hi @all,

 

i get this error: Code loading overlap detected in range 0x0000D5C0..0x0000D5F in debugger, when i use FILL  instruction in PRM file (to fill unused FLASH areas with 0xFF) and vector relocation of the interrupt vector table (in MCUinit.c). My application code is at the beginning of the address area 0x7F00 TO 0xD5FF and the relocated vector table at the end of it. When i burn this code anyway in the controller, the vector table became overwritten by 0xFF... and without interrupt vector table the controller crashes.

 

Is there a way to tell the linker that he don't fill / overwrite the vector table?

 

//in MCUinit.c:
/* NVPROT: FPS=56 */const unsigned char NVPROT_INIT @0x0000FFBD = 248;/* NVOPT: KEYEN=0,FNORED=0,SEC1=1,SEC0=0 */const unsigned char NVOPT_INIT @0x0000FFBF = 62;extern near void _Startup(void);/* Interrupt vector table */#ifndef UNASSIGNED_ISR  #define UNASSIGNED_ISR ((void(*near const)(void)) 0xFFFF) /* unassigned interrupt service routine */#endifvoid (* near const _vect[])(void) @0xD5C0 = { /* Interrupt vector table */         UNASSIGNED_ISR,               /* Int.no. 31 Vacmp2 (at D5C0)                Unassigned */         UNASSIGNED_ISR,               /* Int.no. 30 Vacmp1 (at D5C2)                Unassigned */         isrVcantx,                    /* Int.no. 29 Vcantx (at D5C4)                Used */         isrVcanrx, ... //etc. -> Standard code!                //PRM File://1) thats ok:FUNKTIONEN_DELETE =  READ_ONLY    0x7F00 TO 0xD5FF;//2) that don't work:FUNKTIONEN_DELETE =  READ_ONLY    0x7F00 TO 0xD5FF FILL 0xFF;

Outcomes