Linker & Overlap

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

Linker & Overlap

1,938 Views
SeanW
Contributor II
I am have CodeWarrior MPC55xx version 2.2, build 71004.
 
I have some warnings which I believe is being caused by the way I set up my interrupt vector table.
 
#pragma section const_type ".isrvectbl"
 
const uint32_t IntcIsrVectorTable[] = {
 /* Interrupt Table */   (uint32_t)&dummy, (uint32_t)&emios_ch0_ISR , /* Rest of ISRs continue on here...
 /* for all 309 ISRs */  
};
 
You can see that all un-used interrupt vectors have a dummy function associated with them. I then compile and get the following:
 
1)
" No liner command file input for section '.isrvectbl' in file '<PATH\IntcIsrVectors.o'
  Output section '.isrvectbl' will be created."
 
2)
"Overlap of the .__bam_botarea section and .isrvectbl section."
"Overlap of the .init section and .isrvectbl section."
"Overlap of the .init_vle section and .isrvectbl section."
 
What am I doin wrong?
 
Labels (1)
0 Kudos
3 Replies

445 Views
SeanW
Contributor II
Thank you.  I don't understand how this linker file works. Would you be more specific?
 
I know that there can be 280 ISR vectors for the MPC5567. How do I allocate the memory for these vectors?
 
Generated Linker File:
 
SECTIONS
{
    .__bam_bootarea LOAD (0x00000000): {} > resetvector
 
/* would I instert here .__IsrVectorTable () */
 
    GROUP : {
      .init LOAD (0x00000020) : {}
      .init_vle (VLECODE) LOAD (_e_init) : {
        *(.init)
        *(.init_vle)
      }
    } > init
   
0 Kudos

445 Views
CrasyCat
Specialist III
Hello
 
Assume you have a block of memory defined as follows in your .lcf  MEMORY block
   exception_table: org = 0x00001000,   len = 0x00001000
and you want to allocate your vector table there.
You need to write
 
SECTIONS
{
    .__bam_bootarea LOAD (0x00000000): {} > resetvector
   .isrvectbl   LOAD (0x00001000): {} > exception_table
 
    GROUP : {
      .init LOAD (0x00000020) : {}
      .init_vle (VLECODE) LOAD (_e_init) : {
        *(.init)
        *(.init_vle)
      }
    } > init
  
CrasyCat
0 Kudos

445 Views
CrasyCat
Specialist III
Hello
 
You need to explicitly place the section .isrvectbl in your application linker command file.
This section should be specified in the SECTIONS block.
 
CrasyCat
0 Kudos