vector table misplaced

johst wrote on Wednesday, March 04, 2009:

I’ve modified the sources of FreeRTOS to create a port for the AT91SAM7A3.

The vector table is not being placed at 0x00100000, instead it ends up at 0x00101040. 

In the .icf file there is a definition:
define symbol __ICFEDIT_intvec_start__ = 0x00000000; 
but somehow this definition does not seem to produce any result. 

In this way when the instruction SWI is executed by taskYIELD() the processor starts running the wrong code.
(Nevertheless, IAR is able to start the program properly!!!!)

How do I place the vector table at 0x00100000, please? 

/Johan on behalf of eavg

edwards3 wrote on Wednesday, March 04, 2009:

0x100000 is not the normal place for the vector table so I would guess you are trying to do the remapping so part of the RAM code is mapped to 0. Is this correct? If so then are you copying the vector table from 0x00 to 0x100000 before you do the remap? Sometimes this will be done by the debugger macro file that gets called before the debug session commences.

johst wrote on Thursday, March 05, 2009:

there is no remap being made.
the program is being run from Flash so the vector table is at 0x100000 and at 0x0 since after reset Flash is at 0.

I was able to post the same question with an image at AT91 forum.
this is the link:

as you can see the PC is at the vector table but the vector table instead appears (the black shaded area at the bottom) at 0x1040.

any more ideas, please?