Link Error : L1907: Fixup overflow in _InterruptVectorTable

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Link Error : L1907: Fixup overflow in _InterruptVectorTable

2,495 Views
vijay_TEL
Contributor I

Hello All,

 

Iam implementing a CAN Driver in CW5.1. Configured project in Processor Expert .WhenI try to assign canTransmitISR  to  vector number 0x58  as shown below

 

static const tIsrFunc _InterruptVectorTable[] @0xFF10U = { /* Interrupt vector table */
/*lint -restore Enable MISRA rule (1.1) checking. */
  /* ISR name                               No.  Address Pri XGATE Name          Description */
  &Cpu_Interrupt,                       /* 0x08  0xFF10   -   -    ivVsi         unused by PE */
  &Cpu_Interrupt,                       /* 0x09  0xFF12   1   no   ivReserved119 unused by PE */
  &Cpu_Interrupt,                       /* 0x0A  0xFF14   1   no   ivReserved118 unused by PE */
  &Cpu_Interrupt,                       /* 0x0B  0xFF16   1   no   ivReserved117 unused by PE */
  &Cpu_Interrupt,                       /* 0x0C  0xFF18   1   no   ivReserved116 unused by PE */
  &Cpu_Interrupt,                       /* 0x0D  0xFF1A   1   no   ivReserved115 unused by PE */
  &Cpu_Interrupt,                       /* 0x0E  0xFF1C   1   no   ivReserved114 unused by PE */
  &Cpu_Interrupt,                       /* 0x55  0xFFAA   1   no   ivVcan1rx     unused by PE */
  &Cpu_Interrupt,                       /* 0x56  0xFFAC   1   no   ivVcan1err    unused by PE */
  &Cpu_Interrupt,                       /* 0x57  0xFFAE   1   no   ivVcan1wkup   unused by PE */
  &canTransmitISR,                      /* 0x58  0xFFB0   0   no   ivVcan0tx     unused by PE */
  &Cpu_Interrupt,                       /* 0x59  0xFFB2   1   no   ivVcan0rx     unused by PE */
  &Cpu_Interrupt,                       /* 0x5A  0xFFB4   1   no   ivVcan0err    unused by PE */
  &Cpu_Interrupt,                       /* 0x5B  0xFFB6   1   no   ivVcan0wkup   unused by PE */
  &Cpu_Interrupt,                       /* 0x5C  0xFFB8   1   no   ivVflash      unused by PE */
  &Cpu_Interrupt,                       /* 0x5D  0xFFBA   1   no   ivVeeprom     unused by PE */
  &Cpu_Interrupt,                       /* 0x68  0xFFD0   1   no   ivVatd1       unused by PE */
  &Cpu_Interrupt,                       /* 0x69  0xFFD2   1   no   ivVatd0       unused by PE */
  &Cpu_Interrupt,                       /* 0x6A  0xFFD4   1   no   ivVsci1       unused by PE */
  &Cpu_Interrupt,                       /* 0x6B  0xFFD6   1   no   ivVsci0       unused by PE */
  &Cpu_Interrupt,                       /* 0x6C  0xFFD8   1   no   ivVspi0       unused by PE */
  &Cpu_Interrupt,                       /* 0x6D  0xFFDA   1   no   ivVtimpaie    unused by PE */
  &Cpu_Interrupt,                       /* 0x6E  0xFFDC   1   no   ivVtimpaaovf  unused by PE */
  &Cpu_Interrupt,                       /* 0x6F  0xFFDE   1   no   ivVtimovf     unused by PE */
  &Cpu_Interrupt,                       /* 0x70  0xFFE0   1   no   ivVtimch7     unused by PE */
  &Cpu_Interrupt,                       /* 0x71  0xFFE2   1   no   ivVtimch6     unused by PE */
  &Cpu_Interrupt,                       /* 0x72  0xFFE4   1   no   ivVtimch5     unused by PE */
  &Cpu_Interrupt,                       /* 0x73  0xFFE6   1   no   ivVtimch4     unused by PE */
  &Cpu_Interrupt,                       /* 0x74  0xFFE8   1   no   ivVtimch3     unused by PE */
  &Cpu_Interrupt,                       /* 0x75  0xFFEA   1   no   ivVtimch2     unused by PE */
  &Cpu_Interrupt,                       /* 0x76  0xFFEC   1   no   ivVtimch1     unused by PE */
  &Cpu_Interrupt,                       /* 0x77  0xFFEE   1   no   ivVtimch0     unused by PE */
  &Cpu_Interrupt,                       /* 0x78  0xFFF0   1   no   ivVrti        unused by PE */
  &Cpu_Interrupt,                       /* 0x79  0xFFF2   1   no   ivVirq        unused by PE */
  &Cpu_Interrupt,                       /* 0x7A  0xFFF4   -   -    ivVxirq       unused by PE */
  &Cpu_Interrupt,                       /* 0x7B  0xFFF6   -   -    ivVswi        unused by PE */
  &Cpu_Interrupt                        /* 0x7C  0xFFF8   -   -    ivVtrap       unused by PE */
};

 

I get this Linker Error.

 

Link Error : L1907: Fixup overflow in _InterruptVectorTable, to  canTransmitISR  type 1, at offset 0xA0

 

Can anybody suggest a solution for this.

 

Thanks

Vijay

Labels (1)
0 Kudos
2 Replies

671 Views
NavidadRedivivu
Contributor III

Hello Vijay,

 

First, may I suggest including the name of the derivative you are targeting in your messages ? I suspect that your issue is that you are placing canTransmitISR in a banked segment (either explicitly or implicitly by using the banked memory model). For S12/S12X the interrupt vector table contains 16-bit entries. As your routine is placed in banked memory, its address is 24-bit wide, hence it will not fit in the table entry. You should place your function in non-banked memory:

 

#pragma push#pragma CODE_SEG __NEAR_SEG my_near_segment/* code for canTransmitISR */#pragma pop

 

 

Also, make sure you properly place my_near_segment in the PRM file. Something like (just using my very limited memory, I don't have CW installed at this time):

 

PLACEMENT   my_near_segment INTO NON_BANKED;END

 

 

 

0 Kudos

671 Views
vijay_TEL
Contributor I

Hello Navidad,

Thank you for ur reply. I was out of office for a while so could'nt get back to u.

 

I found a solution with which it is working fine.but the problem is; i need to edit in Vectors.c when i open the project next time. It says that Vectors.c is modified and it ask whether to reload it. when I say Ok for loading theres no need to edit but it does'nt go to the ISR. Here is my implementation.:

 

#pragma CODE_SEG __NEAR_SEG NON_BANKED

/* code for canTransmitISR */

#pragma CODE_SEG DEFAULT 

and include  &canTransmitISR,          /* 0x58  0xFFB0   1   no   ivVcan0tx     unused by PE */ in Vectors.c

 

 

2) i tried with ur solution but it shows error as:

 

Error :L1009: Segment Name NON_BANKED unknown

0 Kudos